Forum: PC-Programmierung GUI System für einfache Anwendung gesucht.


von Klaus (Gast)


Lesenswert?

Hallo,

ich will ein Programm schreiben das auf WIN  Linux  MAC läuft.

Die Anforderung ist recht simpel:
- Grafische Anzeige (XY Plot)
- einige Tasten
- einige Wertefelder
- Serialschnittstelle
- Daten speichern und wieder einlesen

So nun gibt es aber QT, WxWidgets, JAVA, ...........

Was wäre euer Meinung nach das was man am besten nehmen sollte?
Auch bitte die IDE dazu mir sagen.

C, C++, Pascal, Basic, PHP und Java kann ich.
Python nur schlecht.

Grüsse, Klaus

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
für platformübergreifende Programmierung finde ich Lazarus sehr schön. 
Basiert auf Freepascaal.

Andreas

von Alexander S. (alesi)


Lesenswert?

Fast Light Toolkit    http://www.fltk.org/index.php

von Noch einer (Gast)


Lesenswert?

Als Anwender benutze ich Java GUI nur wenn es absolut keine Alternative 
gibt. Eigentlich benutze ich nur JDownloader und Mplab.

Wenn du dich mit C++ anfreunden kannst, sind Qt und QtCreater durchaus 
brauchbar.

Wenn du ein Opensource Projekt starten willst - je verbreiteter die 
Tools, desto eher findest du Mitstreiter.

Hat eigentlich jemand VisualStudio auf dem Radar? Unter Windows besser 
als alles andere. Aber unter MAC und Linux hat es sich nicht 
durchgesetzt. Warum eigentlich?

von Possetitjel (Gast)


Lesenswert?

Klaus schrieb:

> ich will ein Programm schreiben das auf WIN  Linux  MAC läuft.
>
> Die Anforderung ist recht simpel:
> - Grafische Anzeige (XY Plot)
> - einige Tasten
> - einige Wertefelder
> - Serialschnittstelle
> - Daten speichern und wieder einlesen

Okay.

> Was wäre euer Meinung nach das was man am besten nehmen
> sollte?

Das ist eine komische Frage. Woher soll ICH denn wissen,
was DIR liegt?

Wenn Du eine Scriptsprache bevorzugst, kann ich für das GUI
Tk empfehlen. Ich verwende Tcl/Tk; die gelehrten Bücher
berichten aber, dass es auch Perl/Tk und Python/Tk gibt.

Zu compiliertem Zeugs kann ich nichts sagen; meine Pascal-
programme verwenden noch Kommandozeile.

> Auch bitte die IDE dazu mir sagen.

mcedit
SCNR

von Frank (Gast)


Lesenswert?

Noch einer schrieb:

> Hat eigentlich jemand VisualStudio auf dem Radar? Unter Windows besser
> als alles andere. Aber unter MAC und Linux hat es sich nicht
> durchgesetzt. Warum eigentlich?

Wenn du den Apple Macintosh meinst, dann schreibt man den "Mac". "MAC" 
ist die Abkürzung für media access control, genau genommen eine 
Erweiterung des OSI-Layers 2, landläufig auch einfach Netzwerkadapter.

von Frank (Gast)


Lesenswert?

Nachtrag: Ich verwende für meine Projekte "Xojo" (ehemals RealBasic). 
Das enthält einen Cross-Compiler für Win, Mac und Linux (mit GTK2).

Wenn man keine spezifischen Systemaufrufe macht, einfach per Knopfdruck 
aus dem gleichen Sourcecode compilieren und fertig.

Und das Tolle: Die GUI sieht auf jedem System genau so aus, wie man das 
dort erwartet. ich hasse diese altbackenen "selbstgemalten" Oberflächen, 
wie sie leider viele Java-Tools mitbringen ...

von Manfred M. (bittbeisser)


Lesenswert?

>> So nun gibt es aber QT, WxWidgets, JAVA, ...
Ich hatte seinerzeit ein ähnliches Problem. QT war da mir zu 
umfangreich. Für mich blieben da nur WxWidgets und FLTK übrig. FLTK 
hatte ich zuerst probiert und da ich damit bisher fast alle meine 
Projekte realisieren konnte, bin ich dabei geblieben, gerade auch weil 
ich die grafischen Ausgaben damit recht elegant hinbekommen hatte.

Allerdings ist FLTK nicht sehr weit verbreitet, weswegen die Suche nach 
speziellen Problemen manchmal recht langwierig sein kann. Aber es lohnt 
sich!

Lästige Probleme sind aber immer dann zu erwarten, wen es um BS 
spezifische Dinge geht, also beispielsweise bei der Ausgebe von 
Audiodaten. Da muss dann für alle BSn mittels Compilerswitch 
spezifischer Code selektiert werden. Aber das scheint bei Deiner 
Aufgabenstellung nicht der Fall zu sein.

Ich bin jetzt ein großer Fan von FLTK!

Übrigens, man sollte FLTK immer von den Quelltexten installieren. Nicht 
nur um den Quelltext zu haben, sondern weil man damit auch eine große 
Sammlung von Beispielen bekommt, die einem helfen, zu verstehen, wie 
einzelne Funktionen anzuwenden sind. Das ist aus der Dokumentation nicht 
immer sofort ersichtlich.

von Klaus (Gast)


Lesenswert?

So ich war dann mal fleissig übers WE.

FLTK macht einen guten Eindruck, aber wie Du schon sagst Doku ist nicht 
so gut.

WxWidgets ist auch recht gut, aber die Serialschnittstelle für Mac habe 
ich noch nicht gefunden. Würde mich jetzt aber nicht hindern das zu 
nutzen.

Mit Lazarus hatte ich vor einigen Jahre mal ein altes Pascal Program 
überarbeitet. Die neue Version macht auch einen guten eindruck.

Xojo, ist auch gut, aber Basic kann ich zwar, ist dann nur nicht so 
meine Wunschsprache.

QT mag ich nicht, hatte ich schon mit zu tun und nein!

So nun muss ich mich nur entscheiden.

von Mehmet K. (mkmk)


Lesenswert?


: Bearbeitet durch User
von Stephan G. (Firma: privat) (morob)


Lesenswert?

proccessing

von Manfred M. (bittbeisser)


Lesenswert?

>> FLTK macht einen guten Eindruck, aber wie Du schon sagst Doku ist nicht
 >> so gut.
Die Doku ist schon gut und vollständig. Was fehlt sind Tutorials, die in 
die Tiefe gehen.

Aber viele brauchbare Tips bekommt man auf 
http://seriss.com/people/erco/fltk/

von Sven B. (scummos)


Lesenswert?

Noch einer schrieb:
> Hat eigentlich jemand VisualStudio auf dem Radar? Unter Windows besser
> als alles andere. Aber unter MAC und Linux hat es sich nicht
> durchgesetzt. Warum eigentlich?

Vielleicht weil dort weder der Compiler noch die IDE überhaupt 
funktionieren? :D

von R. M. (Gast)


Lesenswert?

Klaus schrieb:
> FLTK macht einen guten Eindruck, aber wie Du schon sagst Doku ist nicht
> so gut.

Naja, sagen wir mal: gewöhnungsbedürftig, weil automatisch mit Doxygen 
erstellt.
Wenn man aber erstmal den Anfang gefunden hat, findet man sich ganz gut 
zurecht (ich zummindest). Erstmal die Tutorials durchgehen, um die 
grundlegende Idee dahinter zu verstehen. Um die GUI zu bauen, gibt es 
mit FLUID ein nützliches Tool, damit kann man sich die Oberfläche (fast 
Microsoft-mäßig) zusammenklicken.
Habe bei mir festgestellt, das die Beschäftigung mit der Dokumentation 
doch schon sehr den eigenen Programmierstil beeinflusst hat, hab die 
Sache ja auch nie richtig gelernt.
Einige einfache Beispiele (wie man es nicht machen sollte ;-) ) findest 
du z.B. auf meiner Userpage.
mfG

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sven B. schrieb:
> Vielleicht weil dort weder der Compiler noch die IDE überhaupt
> funktionieren?

Das ändert sich.
Es gibt mit "Visual Studio Code" mittlerweile eine Variante, die sowohl 
unter macOS als auch unter Linux läuft.

https://code.visualstudio.com/download

Compiler lassen sich mit Plugins nachrüsten.

von Alexander S. (alesi)


Lesenswert?

Rufus Τ. F. schrieb:
> Es gibt mit "Visual Studio Code" mittlerweile eine Variante, die sowohl
> unter macOS als auch unter Linux läuft.

https://code.visualstudio.com/license

...
DATA. The software may collect information about you and your use of the 
software, and send that to Microsoft. Microsoft may use this information 
to provide services and improve our products and services.
...
UPDATES. The software may install automatic updates. By using the 
software, you agree to receive automatic updates without any additional 
notice, and permit Microsoft to download and install them for you. If 
you do not want automatic updates, you may turn them off by following 
the instructions in the documentation ...

Nicht jeder Linux User will das ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Stephan G. schrieb:
> proccessing

Processing ist ein gutes Lern-Tool, aber es steht mit der GUI auf 
absolutem Kriegsfuß. Buttons sind z.B. lediglich Rechtecke, die auf 
Mausklick reagieren ... System-Guidelines sind völlig fremd.

Oder kennt da jemand eine optisch korrekte GUI-Lib? Würde mich sehr 
glücklich machen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Klaus schrieb:
> So ich war dann mal fleissig übers WE.

> Xojo, ist auch gut, aber Basic kann ich zwar, ist dann nur nicht so
> meine Wunschsprache.

Die Syntax eines modernen Basic unterscheidet sich heutzutage von C++ 
oder Java nur noch - grob vereinfacht - in der Handhabung von Klammern 
(statt dessen "begin" & "end") und dass kein Semikolon am Zeilenende 
steht ...

von Borislav B. (boris_b)


Lesenswert?

Rufus Τ. F. schrieb:
> Das ändert sich.
> Es gibt mit "Visual Studio Code" mittlerweile eine Variante, die sowohl
> unter macOS als auch unter Linux läuft.

Öhhhhh.. es gibt auch ein "richtiges" Visual Studio für Mac:

https://www.visualstudio.com/vs/visual-studio-mac/

von Christian M. (Gast)


Lesenswert?

Klaus schrieb:
> Programm schreiben das auf WIN  Linux  MAC

Antwort ist klar:

http://www.purebasic.com/german/index.php

Gruss Chregu

von Sven B. (scummos)


Lesenswert?

Frank E. schrieb:
> Oder kennt da jemand eine optisch korrekte GUI-Lib? Würde mich sehr
> glücklich machen.

Qt ist da momentan schon das Standard-Tool für 
Crossplatform-Anwendungen.

von Bernd K. (prof7bit)


Lesenswert?

Sven B. schrieb:
> Qt ist da momentan schon das Standard-Tool für
> Crossplatform-Anwendungen.

Es gibt in dieser Kategorie auch noch WxWidgets, das ist etwas 
leichtgewichtiger als Qt.

von Legacy is simple (Gast)


Lesenswert?

Klaus schrieb:
> Was wäre euer Meinung nach das was man am besten nehmen sollte?
> Auch bitte die IDE dazu mir sagen.

DOSBox mit Turbopascal:
http://www.angryflo.de/dosbox.htm

von Andreas B. (bitverdreher)


Lesenswert?

Legacy is simple schrieb:
>
> DOSBox mit Turbopascal:
> http://www.angryflo.de/dosbox.htm

Wir schreiben das Jahr 2017.

Nur mal so .....

von Legacy is simple (Gast)


Lesenswert?

Andreas B. schrieb:
> Legacy is simple schrieb:
>>
>> DOSBox mit Turbopascal:
>> http://www.angryflo.de/dosbox.htm
>
> Wir schreiben das Jahr 2017.
>
> Nur mal so .....

Früher war auch nicht alles schlecht ... nur mal so

oder

auch im Zeitalter der Computer lernt man Rechnen mit den 10 Fingern  ... 
nur mal so

oder

ein RasPi kostet keine 50€  ... nur mal so

von heinz (Gast)


Lesenswert?

Schau dir mal iup an
http://webserver2.tecgraf.puc-rio.br/iup/

etwas gewöhnungsbedürftig, aber gibt schlanke Runtimes

von Lars R. (lrs)


Lesenswert?

QT: +1

von Dennis X. (Gast)


Lesenswert?

Noch einer schrieb:
> Wenn du dich mit C++ anfreunden kannst, sind Qt und QtCreater durchaus
> brauchbar.

Mach das! Schau dir das echt mal an. Lohnt sich

von Matt (Gast)


Lesenswert?

Qt ist eine echte Empfehlung!

von Momo (Gast)


Lesenswert?

Denk doch mal über Mono nach, empfiehlt auch MS und geht auf Mac und 
Linux.
Die geben sich mit MonoDevelop viel Mühe und läuft bald schon perfekt.

von W.S. (Gast)


Lesenswert?

Klaus schrieb:
> So nun gibt es aber QT, WxWidgets, JAVA, ...........

Guck bei embarcadero nach, die Grundversion vom "RAD Studio 10.2 Tokyo" 
gibt es derzeit kostenlos. Und da ist dabei: Windows, Apple, Android und 
evtl. auch Linux.

Das sollte für deine Zwecke ausreichen - und das ganze teure Zeug, wo ne 
Masse von Datenbank-Sachen dabei sind, wirst du wohl nicht brauchen.

W.S.

von Bullshit Detector (Gast)


Lesenswert?

W.S. schrieb:
> Guck bei embarcadero nach, die Grundversion vom "RAD Studio 10.2 Tokyo"
> gibt es derzeit kostenlos. Und da ist dabei: Windows, Apple, Android und
> evtl. auch Linux.

Ja, für nur €5,771.50 gibt es sogar Linux-Unterstützung.

> Das sollte für deine Zwecke ausreichen - und das ganze teure Zeug, wo ne
> Masse von Datenbank-Sachen dabei sind, wirst du wohl nicht brauchen.

Offenbar sind aber die "Datenbank-Sachen" mehr oder weniger das Einzige, 
was unter Linux überhaupt verfügbar ist:

"Linux compiler is for Delphi only, Linux does not include the FMX 
framework"

Und wie entwickele ich mit diesem hoffnungslos überteuerten Zeug jetzt 
eine GUI-Anwendung, die auch unter Linux läuft?

von Bernd K. (prof7bit)


Lesenswert?

W.S. schrieb:
> Guck bei embarcadero nach,

Nein, wenn er sich auf Object Pascal einlassen will dann sollte er 
gleich zu Lazarus greifen statt erst den Umweg über diese sterbende 
Firma zu gehen und sich dabei noch irgendwelches Vendor-Lock-In 
einzufangen das er später nicht mehr los wird.

Für schnelle schlanke native cross platform GUI Apps ohne jegliche 
Laufzeitabhängigkeiten gibts IMHO im Moment kaum was das Lazarus das 
Wasser reichen könnte.

von Sven B. (scummos)


Lesenswert?

Kein Userspace-Programm hat Laufzeitabhängigkeiten wenn man alle 
Laufzeitabhängigkeiten mit in's Archiv wirft. Das ganze "keine 
Abhängigkeiten"-Konzept ist als Argument sehr komisch.

: Bearbeitet durch User
von Bernd K. (prof7bit)


Lesenswert?

Sven B. schrieb:
> Kein Userspace-Programm hat Laufzeitabhängigkeiten wenn man alle
> Laufzeitabhängigkeiten mit in's Archiv wirft. Das ganze "keine
> Abhängigkeiten"-Konzept ist als Argument sehr komisch.

Ja klar, man kann sich auch theoretisch einen Knopf an den Bauch nähen 
und ein Klavier dranhängen und damit spielend durch die Stadt 
marschieren.

Ich finde es komisch daß Du es komisch findest daß manche Leute auf ein 
Klavier am Bauch lieber verzichten würden.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

So nach weiteren Tests schwanke ich nur noch zwischen Wxwidgets mit 
CodeBlocks als IDE und Lazarus.

Da ich aber dann doch mehr C++ bevorzugen würde, bräuchte ich noch eine 
hübsche XY Dastellung.
http://plplot.sourceforge.net/
http://wxmathplot.sourceforge.net/

Scheinen da die besten dafür zu sein.

VG, Klaus

von Sven B. (scummos)


Lesenswert?

Bernd K. schrieb:
> Sven B. schrieb:
>> Kein Userspace-Programm hat Laufzeitabhängigkeiten wenn man alle
>> Laufzeitabhängigkeiten mit in's Archiv wirft. Das ganze "keine
>> Abhängigkeiten"-Konzept ist als Argument sehr komisch.
>
> Ja klar, man kann sich auch theoretisch einen Knopf an den Bauch nähen
> und ein Klavier dranhängen und damit spielend durch die Stadt
> marschieren.

Das ist ein lustiger Spruch, aber es ist keinerlei Argument darin 
enthalten warum meine Aussage irgendwie falsch sein sollte.

von Mastaben (Gast)


Lesenswert?

R hat einfach die besten freien Werkzeuge um fast alles Vorstellbare 
darzustellen, und wenn eine Library die deine speziellen Anforderungen 
erfüllt nicht verfügbar ist, kannst du deine eigene erstellen. Ich kann 
keine kommerzielle Software finden die vergleichbar ist, außer du 
erstellst einfache Graphen und willst keine 1-2 Tage damit verbringen zu 
lernen wie das in R gemacht wird.

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
wenn es um die graphische Darstellung geht, würde ich mir mal den Weg 
über gnuplot überlegen.
Daten erstellen, auf Textdatei rausbringen und gnuplot aufrufen. Das 
dürfte das einfachste sein und sieht auch ansprechend aus. (Wenn man 
sich an den unterschiedlichen Design der Ausgabe von gnuplot nicht 
stört)

Gruß
Andreas

von Sheeva P. (sheevaplug)


Lesenswert?

Klaus schrieb:
> ich will ein Programm schreiben das auf WIN  Linux  MAC läuft.
>
> Die Anforderung ist recht simpel:
> - Grafische Anzeige (XY Plot)
> - einige Tasten
> - einige Wertefelder
> - Serialschnittstelle
> - Daten speichern und wieder einlesen
>
> So nun gibt es aber QT, WxWidgets, JAVA, ...

Neben diesen Toolkits gibt es auch noch eine Möglichkeit, die ich 
persönlich für wesentlich flexibler und moderner halte: nämlich einen 
kleinen Webserver, der sich um die serielle Kommunikation kümmert und 
eine schicke Webseite mit dem oder den Plot(s) ausliefert. In Python 
würde ich dazu ein Mikroframework wie Flask benutzen (Ähnliches gibt es 
auch für andere Sprachen) und für die Darstellung auf der Website etwas 
JavaScript-basiertes wie Flot, jqPlot oder jqWidgets. Neben der 
Plattformunabhängigkeit kann man so auch Gerätegrenzen überwinden -- und 
solange man nicht schon Erfahrung mit einem GUI-Toolkit hat, ist da im 
Vergleich zu einer klassischen GUI-Applikation eher weniger Lern- und 
Programmieraufwand zu bewältigen.

von Klaus (Gast)


Lesenswert?

Spinnen wir mal die Idee mit dem Web Server weiter.

Ich habe einen kleinen AVR am Rechner dran der mir seriel Daten liefert.
Die empfange ich und will die Darstellen.
Es gibt einige Parameter die eingestellt werden sollen,
sowie einige Knöpfe die Funktionen auf dem AVR starten.
Ausserdem gibt es noch Status Informationen vom AVR.

So wo kommt nun der WEB Kram hin, damit es auf allen System läuft?
Und vorallendingen Wie & Was?

Ich bin da ganz offen für neues, was WEB gesteuertes wäre mir auch fast 
lieber da ich mir dann über die Plattform keine grossen Gedanken machen 
müsste.

Viele Grüsse
Klaus

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
ja dann: Schmeiss das ganze Gelumpe weg und mach das auf einem ESP8266.
Notfalls Raspi falls der ESP nicht reicht.

Gruß
Andreas

von Klaus (Gast)


Lesenswert?

Sorry aber um wenige AD Werte und IO Kram mit einem Raspi zu machen 
halte ich für vollkommen daneben und ist für mich ein Zeichen von 
totaler unkenntnis in dem aktuell beschriebenen Bereich.

Aber das man einen WEB Server auf einem ESP oder Raspi leicht zum laufen 
bingen kann ist was anderes und da hast Du dann wohl wieder Erfahrung.

Ich übrigens auch aber das ist was anderes!

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
Du sprachest von einem AVR an einem PC.
Der ESP oder ein Raspi soll auch den PC ersetzen. So und nicht anders 
war das gemeint!


Gruß
Andreas

von Klaus (Gast)


Lesenswert?

Habe ich dann falsch verstanden.

Aber "Schmeiss das ganze Gelumpe weg" wenn ich von AVR rede ist halt 
leicht falsch zu verstehen.

Klaus

von Sheeva P. (sheevaplug)


Lesenswert?

Klaus schrieb:
> Spinnen wir mal die Idee mit dem Web Server weiter.
>
> Ich habe einen kleinen AVR am Rechner dran der mir seriel Daten liefert.
> Die empfange ich und will die Darstellen.
> Es gibt einige Parameter die eingestellt werden sollen,
> sowie einige Knöpfe die Funktionen auf dem AVR starten.
> Ausserdem gibt es noch Status Informationen vom AVR.
>
> So wo kommt nun der WEB Kram hin, damit es auf allen System läuft?

Der "Web-Kram" kommt dann auf den Rechner, an dem der AVR hängt.

> Und vorallendingen Wie & Was?

Entschuldige bitte, aber ich verstehe die Frage nicht.

von Lothar (Gast)


Lesenswert?

Klaus schrieb:
> Sorry aber um wenige AD Werte und IO Kram mit einem Raspi zu machen
> halte ich für vollkommen daneben und ist für mich ein Zeichen von
> totaler unkenntnis in dem aktuell beschriebenen Bereich

Wenn man sich den Preis von einem Pi Zero ansieht kann es manchmal 
durchaus Sinn machen das anstelle eines uC zu verwenden. Man muss ja 
kein Raspbian drauf machen es gibt z.B. BBC BASIC das ist ähnlich wie 
BASCOM und echtzeitfähig.

von Oliver S. (phetty)


Lesenswert?

Webserver mit html5 Ausgabe.
Sonst musst Du deine Software alle 2 Jahre für neue Betriebssysteme 
kompilieren.

von Andreas B. (bitverdreher)


Lesenswert?

Oliver S. schrieb:
> Webserver mit html5 Ausgabe.
> Sonst musst Du deine Software alle 2 Jahre für neue Betriebssysteme
> kompilieren.

Für Windows mag das zutreffen...;-)
Aber prinzipiell sehe ich das genauso. Als pure Webanwendung ist das am 
einfachsten Betriebsystemunabhängig zu realisieren.

Gruß
Andreas

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Frank E. schrieb:
> Processing ist ein gutes Lern-Tool, aber es steht mit der GUI auf
> absolutem Kriegsfuß.

Kommt auf die konkrete Anwendung an. Ich persönlich benutze Processing 
sehr gerne, insbesondere, wenn ich nicht nur buttons brauche, sondern 
vielleicht auch noch grafische Ausgaben wie x/y-Koordinaten oder ein 
Oszillogram oder ein 3D-Objekt oder was auch immer. Die normalen 
Elemente per lib wie Knöpfe und Textfelder haben mir dabei immer völlig 
gereicht.

von Klaus (Gast)


Lesenswert?

Da ich mich nicht so mit solchen  WEB Anwendungen auskenne.

Wie kann man einen einfachen WEB Server auf einem AVR über Serial (USB 
SIO) bauen.
Gehen muss das ja, ein Akustikkoppler war ja nichts anders, aber nur 
wie?

Was dann an HTML und JAVA Code zum PC gesendet wird ist dann der 2. 
Schritt.
Wenn ich die Anbindung hätte und mal eine einfache HTML Seite Betreiben 
könnte wäre mir schon geholfen.

Viele Grüsse,
Klaus

von Andreas B. (bitverdreher)


Lesenswert?

Hi,
der Webserver selbst läuft natürlich auf dem PC.
Aber am besten finde ich wenn Du jetzt mal genau erzählst was Du da 
vorhast.
Soll die Anwendung 24/7 laufen und Du willst jederzeit mit einem 
beliebigen PC drauf?
Wenn ja, dann macht man das am einfachsten mit einem Raspi oder einem 
ESP. Da braucht es keinen AVR und auch keinen PC für den eigentlichen 
Webserver.

Falls man eine  Webserver auf den AVR laufen lassen will, binden man 
diesen mit einem Adapter direkt an das Netz an.
Schau mal hier: www.ulrichradig.de/home/index.php/avr/webserver  mit 
einer Netzwerkkarte oder den Net-IO von Pollin mit einem ENC28J60.

Gruß
Andreas

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Das mit dem WEB Server kommt ja nicht von mir, ich würde es aber gerne 
umsetzen. Dann aber nur wenn ich keine Hardwareänderung machen müsste.

Sonnst kann ich auch gleich einen CORTEX M3,M4 oder M7 mit ETH nehmen 
und ich könnte die Software fertig aus einem anderen Projekt kopieren. 
So etwas habe ich erst vor einigen Monaten gebaut.

NEIN es bleibt bei einem AVR mit USB SIO dran!!!!!

WEB Interface wäre super, weil ich es auch sehe das ich damit am 
zukunftssichersten wäre. Hätte ich auch richtig Lust drauf das zum 
laufen zu bringen.
Aber ein normales Programm tut es letztlich auch, wenn der WEB Kram 
nicht geht.

Das ist ein Hobby System und nichts womit man Geld macht, also gönne ich 
mir den Spaß es so minimalistisch wie möglich zu machen.
Aber es soll trotzdem was sein wo ich auch noch was lerne.

VG, Klaus

von Klaus (Gast)


Lesenswert?

Achso, das Teil wird möglicherweise nur Stundenweise laufen.
Aber ich kann ja niemanden verbieten es 24/7 laufen zu lassen.

WEB Server auf dem PC klingt nach Aufgabe verfehlt.

Entweder der läuft auf dem AVR oder WEB ist bei dem Projekt nicht drin.

Ich denke das ich niemanden dazu bringe einen WEB Server mit zig Paketen 
zu installieren nur um einige Daten von einem AVR anzuzeigen.

von Sven B. (scummos)


Lesenswert?

Wenn dein Controller kein Ethernet kann und du den Webserver nicht auf 
dem Benutzerrechner installieren willst, ist die Webserver-Idee 
Schwachsinn.

von Lothar (Gast)


Lesenswert?

Klaus schrieb:
> WEB Server auf dem PC

Da Dein AVR an einem COM Port hängt brauchst Du keinen WEB Server. Du 
kannst auch eine lokale HTML Seite machen und mit einem Javascript Timer 
refreshen. Dann machst Du ein include auf eine weitere lokale HTML Datei 
mit Platzhaltern für Deine Daten. Und dann machst Du noch ein C Programm 
das diese HTML Datei im Hintergrund regelmäßig mit neuen Daten vom COM 
Port bestückt.

Also zusammen wären das dann zwei HTML Dateien gleich für Win Linux Mac 
und ein jeweils verschiedenes EXE

Abgesehen davon ist das aber Dein eigentliches Problem :-)

> NEIN es bleibt bei einem AVR mit USB SIO dran

von Klaus (Gast)


Lesenswert?

Wenn ich für jedes System eine EXE brauche bin ich wieder bei meinem 1. 
Eintrag. So wollte ich ja das ganze machen.
Die ganze WEB Idee war nicht von mir!

Ja mein Problem ist das ich an der Hardware nichts ändern will, aber 
entweder es geht oder halt nicht!


Eine HTML Seite über die SIO raus zusenden ist ja nicht schwer, auch 
wenn da genug CSS & JAVA drin ist. POST & GET an den AVR bekommt man 
dann auch noch geregelt.

Aber die eigentliche Frage dabei ist doch wie teile ich WIN/ Linux mit 
das die Ethernetschnittstelle eigentlich eine Serialschnittstelle ist 
und was für ein Protokoll muss ich da fahren damit das dann läuft.
Und gibt es so was schon fertig zum abschreiben.

Viele Güße, Klaus

von Sven B. (scummos)


Lesenswert?

Du kannst dir sicherlich was bauen, was eine Bridge zwischen der 
seriellen Schnittstelle und einem TCP-Socket baut. Auf Linux ist das 
wahrscheinlich sogar relativ einfach, geht vermutlich mit 2 Zeilen 
Shell. Ohne Software auf dem Rechner wird das aber nix.

Ich finde das ganze Thema hat sich in eine ziemlich komische Richtung 
verrannt. Schreib' ein 20-Zeilen Python-Skript mit serial und PyQt5, 
oder das äquivalente C++-Programm, oder was auch immer und gut ist. 
Irgendwelche Bridges von USB auf Serial und dann auf TCP zu bauen und 
dann irgendwelche Webserver drankleben um JS/HTML benutzen zu können 
wird weder einfacher zu benutzen noch übersichtlicher werden. Das ist 
wieder einer dieser Threads die versuchen ein wirr generalisiertes 
Problem zu lösen und dabei den Pragmatismus völlig aus den Augen 
verlieren. Überleg nochmal was du eigentlich real erreichen willst und 
dann nimm die Technologie mit der das am einfachsten machbar ist.

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Klaus schrieb:
> Wie kann man einen einfachen WEB Server auf einem AVR über Serial (USB
> SIO) bauen.

Für Arduinos gibt es spezielle Ethernet-Shields, für AVRs könnte man 
etwas wie einen XPort benutzen.

> Was dann an HTML und JAVA Code zum PC gesendet wird ist dann der 2.
> Schritt.

Nicht Java, sondern JavaScript. Obwohl es ähnlich klingt und in 
mancherlei Hinsicht sogar ähnlich aussieht, ist das ein gewaltiger 
Unterschied. Bitte versteh' mich nicht falsch, es geht hier nicht ums 
Klugscheißen -- aber wenn Du Java in die Suchmaschine Deiner Wahl 
eingibst, obwohl Du eigentlich nach JavaScript suchen willst, wirst Du 
mit den Ergebnissen nicht glücklich. ;-)

von Gogo (Gast)


Lesenswert?

Sven B. schrieb:
> Ich finde das ganze Thema hat sich in eine ziemlich komische Richtung
> verrannt. Schreib' ein 20-Zeilen Python-Skript mit serial und PyQt5,
> oder das äquivalente C++-Programm, oder was auch immer und gut ist.
> Irgendwelche Bridges von USB auf Serial und dann auf TCP zu bauen und
> dann irgendwelche Webserver drankleben um JS/HTML benutzen zu können
> wird weder einfacher zu benutzen noch übersichtlicher werden. Das ist
> wieder einer dieser Threads die versuchen ein wirr generalisiertes
> Problem zu lösen und dabei den Pragmatismus völlig aus den Augen
> verlieren. Überleg nochmal was du eigentlich real erreichen willst und
> dann nimm die Technologie mit der das am einfachsten machbar ist.

+1

Würde sagen die einfachste Lösung. Python läuft ja auf jeder Plattform 
und hat und GUI ist kein Hexenwerk. Stimme meinem Vorredner zu, die 
Diskussion geht in die falsche Richtung.

Have Fun

von Peter II (Gast)


Lesenswert?

Gogo schrieb:
> +1
>
> Würde sagen die einfachste Lösung. Python läuft ja auf jeder Plattform

-1

Was heißt es läuft auf jeder Plattform? Klar kann man es überall 
installieren aber unter Windows läuft ist es kein Standard.

Java, Mono, Perl usw. läuft nach der Definition auch auf jeder 
Plattform.

Abgesehen davon, finde ich Scriptsprachen nur für Quickie brauchbar. Ich 
bin zumindest schneller mit Sprachen die übersetzt werden.

von Gogo (Gast)


Lesenswert?

Peter II schrieb:
> Abgesehen davon, finde ich Scriptsprachen nur für Quickie brauchbar. Ich
> bin zumindest schneller mit Sprachen die übersetzt werden.

Soll ja einer werden, ist ja nix kommerzielles. Und Klaus geht es 
ähnlich wie vielen HobbyBastlern.

Viele Ideen, wenig Zeit;-)

Sicher, viele Wege führen nach Rom. Schlussendlich kommt es auch darauf 
an, welche Favoriten und Kenntnisse der TO hat. Python is imho der 
einfachste Weg für MICH.Zufrieden? :-)

von Klaus I. (klauspi)


Lesenswert?

Klaus schrieb:
> ich will ein Programm schreiben das auf WIN  Linux  MAC läuft.

Ich würde auch Purebasic empfehlen, schneller wird man nicht zu einem 
brauchbaren Ergebnis kommen. Kostenlose Demo-Version ist u.a. auf 800 
Code-Zeilen beschränkt, dass sollte aber kein Problem werden.

von Sven B. (scummos)


Lesenswert?

Klaus I. schrieb:
> Klaus schrieb:
>> ich will ein Programm schreiben das auf WIN  Linux  MAC läuft.
>
> Ich würde auch Purebasic empfehlen, schneller wird man nicht zu einem
> brauchbaren Ergebnis kommen. Kostenlose Demo-Version ist u.a. auf 800
> Code-Zeilen beschränkt, dass sollte aber kein Problem werden.

Ich würde empfehlen irgendwas zu benutzen, was es a) in fünf Jahren auch 
noch gibt und keine Ein-Mann-Aktion, b) was nicht kommerziell ist, c) 
was schonmal ein anderer Mensch auf der Welt benutzt hat und was d) 
ordentlich getestet ist.

Nehmt doch gebräuchliche Tools für alltägliche Aufgaben. Die sind schon 
okay. Jede Aufgabe mit einer anderen kommerziellen Hipster-Skriptsprache 
zu erschlagen die noch nie jemand gehört hat hilft einfach nichts -- vor 
allem nicht dem Lernenden, weil er kein Tool lernt, was er irgendwo 
sonst realistisch benutzen kann.

Klar kann man PureBasic nehmen, aber ist das jetzt wirklich so viel 
einfacher als Python, um statt der Sprache die halt jeder für alles 
nimmt eine zu benutzen die noch nie irgendwer vorher dafür verwendet 
hat?

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

Peter II schrieb:
> Was heißt es läuft auf jeder Plattform? Klar kann man es überall
> installieren aber unter Windows läuft ist es kein Standard.

Nichts läuft unter Windows als Standard. Selbst für C++ musst du die 
typischerweise die aktuelle Standardbibliothek von MS nachinstallieren. 
Dieses Argument hilft einfach nix. Wenn man alles in einen Installer 
wirft läuft jedes Programm auf jeder unterstützten Plattform "direkt"™, 
wenn man es nicht tut gibt es außer Konsolen-Programmen in C so gut wie 
gar nix. Das ist kein Kriterium, anhand dessen man Optionen 
gegeneinander abwägen kann -- zumindest kein binäres.

: Bearbeitet durch User
von Borislav B. (boris_b)


Lesenswert?

Sven B. schrieb:
> Nichts läuft unter Windows als Standard

Möööp!

PowerShell, Visual Basic Script, Batch-Files und .NET Anwendungen laufen 
unter Windows sehr wohl ohne weiteres Zutun.

von Peter II (Gast)


Lesenswert?

Sven B. schrieb:
> Nichts läuft unter Windows als Standard.

.net läuft auf jedem (aktuellen) Windows

>  Selbst für C++ musst du die
> typischerweise die aktuelle Standardbibliothek von MS nachinstallieren.
nur wenn man nicht statisch linkt. Es gibt mehr als genug "exen" die man 
im Internet laden kann und die sofort laufen.

von Borislav B. (boris_b)


Lesenswert?

Ach ja: Und UWP-Apps sowie Web(HTML/JS)-Apps natürlich auch.

von Sven B. (scummos)


Lesenswert?

Borislav B. schrieb:
> Sven B. schrieb:
>> Nichts läuft unter Windows als Standard
>
> Möööp!
>
> PowerShell, Visual Basic Script, Batch-Files und .NET Anwendungen laufen
> unter Windows sehr wohl ohne weiteres Zutun.

Ja toll, aber die laufen halt auf jeder anderen Plattform nicht! Darum 
ging es doch.

von Peter II (Gast)


Lesenswert?

Sven B. schrieb:
> Ja toll, aber die laufen halt auf jeder anderen Plattform nicht! Darum
> ging es doch.

hier ging es erst mal um dein Kommentar das unter Windows nichts als 
Standard läuft. Was so nicht stimmt.

von Sven B. (scummos)


Lesenswert?

Peter II schrieb:
> Sven B. schrieb:
>> Ja toll, aber die laufen halt auf jeder anderen Plattform nicht! Darum
>> ging es doch.
>
> hier ging es erst mal um dein Kommentar das unter Windows nichts als
> Standard läuft. Was so nicht stimmt.

Ich wusste ja nicht, dass ich für jede Aussage nochmal alle im Thread 
bisher gegebenen Vorbedingungen wiederholen muss ...
Das Statement find ich auch nicht so falsch, auf vielen anderen 
Plattformen ist z.B. Python (was ja crossplatform ist) standardmäßig 
verfügbar. Nur Windows hat nichts, was sich mit irgendeiner der anderen 
Plattformen überschneiden würde.

>>  Selbst für C++ musst du die
>> typischerweise die aktuelle Standardbibliothek von MS nachinstallieren.
> nur wenn man nicht statisch linkt. Es gibt mehr als genug "exen" die man
> im Internet laden kann und die sofort laufen.

Ja. Weil das dann da drin ist. Ich kann aber genauso gut auch den 
Python-Interpreter mit in die exe reinpacken. Dann läuft das auch 
direkt. Das ist 100% genau dieselbe Situation. Trotzdem wird immer 
Erbsen gezählt dass das irgendwie was fundamental anderes sei, weil 
"aber dazu brauch ich ja Python". Stimmt, aber bei C++ brauche ich halt 
die C++-Standardbibliothek. Beides ist einfach nur Bytecode den man in's 
exe werfen oder sonstwie installieren kann bzw. muss ...

von Daniel A. (daniel-a)


Lesenswert?

Borislav B. schrieb:
> Sven B. schrieb:
>> Nichts läuft unter Windows als Standard
>
> Möööp!
>
> PowerShell, Visual Basic Script, Batch-Files und .NET Anwendungen laufen
> unter Windows sehr wohl ohne weiteres Zutun.

Und wieso will dann jedes Programm ein neues .NET Framework 
installieren, wie z.B. 
https://www.microsoft.com/en-us/download/details.aspx?id=22808 ?

Das einzige was unter Windows immer forhanden ist ist die WinAPI, und 
damit GUIs zu erstellen ist wahnsinn.

Ich empfehle die Anwendung unter Linux in C++ zu entwickeln und QT zu 
verwenden. Danach kann man es einfach für Windows mit MinGW 
Cross-Kompilieren, und muss das Windows nichteinmahl mehr starten. Dabei 
entfallen auch gleich noch diese "Redistributable" libraries die man 
sich unter MSVC einfängt. Bei Mac kommt man dann vermutlich aber nicht 
um XCode herum.

von Peter II (Gast)


Lesenswert?

Daniel A. schrieb:
> Und wieso will dann jedes Programm ein neues .NET Framework
> installieren, wie z.B.
> https://www.microsoft.com/en-us/download/details.aspx?id=22808 ?

schon mal auf den Link geklickt?

> Windows CE .NET, Windows Mobile 2003 software for Pocket PCs

Man sollte halt nicht auf die neuste Version immer setzen. Ein .net 3.5 
muss nicht nachinstalliert werden.

> Ich empfehle die Anwendung unter Linux in C++ zu entwickeln und QT zu
> verwenden. Danach kann man es einfach für Windows mit MinGW
> Cross-Kompilieren, und muss das Windows nicht einmal mehr starten.
die Wahrscheinlichkeit das es ohne Probleme unter Windows stabil läuft 
geht wohl gegen 0 - das schaffen ja nicht mal die Java-Programm die 
angeblich Plattformunabhängig sind.

von Klaus (Gast)


Lesenswert?

Ja ich muss auch sagen das hier läuft in eine falsche Richtung.

Ich mache es jetzt so wie ich es zu erst geplant hatte.

HTML & Javascript wäre zwar nett aber ist nicht so leicht umzusetzen.
An ncurses dachte ich auch schon mal kurz, aber da fehlt mir die Grafik.

Python mit den entsprechenden Erweiterungen schaue ich mir noch an und 
dann wird das Teil gebaut.
Ich muss damit auch mal so langsam fertig werden und will nicht noch 
Monate damit verbringen über die verteile von verschiedenen System zu 
diskutieren.

VG, Klaus

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> Abgesehen davon, finde ich Scriptsprachen nur für Quickie brauchbar. Ich
> bin zumindest schneller mit Sprachen die übersetzt werden.

Letztlich geht es um Entwicklungs- versus Laufzeitperformanz. Mit 
modernen Skriptsprachen kann man etwa bis zu zehnmal (zB. Python vs. 
Java) so schnell entwickeln, aber dafür sind Skriptsprachen meistens 
nicht so performant wie kompilierter Code. Bei Programmen, die ohnehin 
99% ihrer Laufzeit auf eine Benutzereingabe oder die auf Datenbank, 
Netzwerk- oder Datei-I/O (oder hier Serial-I/O) warten und mit 
überschaubaren Datenmengen arbeiten, reicht die Performanz von modernen 
Skriptsprachen meist völlig aus.

Wobei Skriptsprachen mit kompilierten Erweiterungen wie Pythons numpy 
oder mit einem verteilten Backend wie Apache Spark auch dort genutzt 
werden, wo große Datenmengen dynamisch verarbeitet oder analysiert 
werden müssen. Mit kompilierten Erweiterungen ist die Skriptsprache dann 
in den kritischen Codeteilen ebenso schnell wie eine kompilierte, mit 
Erweiterungen wie Spark wird die prinzipbedingt geringere Performanz der 
Sprache durch entsprechend größer dimensionierte Hardware egalisiert.

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> hier ging es erst mal um dein Kommentar das unter Windows nichts als
> Standard läuft. Was so nicht stimmt.

Ok: unter Windows läuft als Standard nichts plattformunabhängiges. (*) 
Honi soit qui mal y pense.

(*) Obwohl MS ja langsam klüger wird und in den neuesten 
Windows-Versionen sogar ELF-Binaries aus den Ubuntu-Repositories 
ausführen kann.

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> Daniel A. schrieb:
>> Ich empfehle die Anwendung unter Linux in C++ zu entwickeln und QT zu
>> verwenden. Danach kann man es einfach für Windows mit MinGW
>> Cross-Kompilieren, und muss das Windows nicht einmal mehr starten.
>
> die Wahrscheinlichkeit das es ohne Probleme unter Windows stabil läuft
> geht wohl gegen 0 - das schaffen ja nicht mal die Java-Programm die
> angeblich Plattformunabhängig sind.

Das stimmt nicht. Wenn man es richtig macht, laufen MingW- und 
Java-Software vollkommen problemlos, auch unter Windows.

von Sven B. (scummos)


Lesenswert?

Sheeva P. schrieb:
>> die Wahrscheinlichkeit das es ohne Probleme unter Windows stabil läuft
>> geht wohl gegen 0 - das schaffen ja nicht mal die Java-Programm die
>> angeblich Plattformunabhängig sind.
>
> Das stimmt nicht. Wenn man es richtig macht, laufen MingW- und
> Java-Software vollkommen problemlos, auch unter Windows.

Wenn man es richtig macht läuft Software vollkommen problemlos überall. 
Das ist die Definition von "richtig macht". Die Frage ist ja wie schwer 
das ist.

von Peter II (Gast)


Lesenswert?

Sheeva P. schrieb:
> Letztlich geht es um Entwicklungs- versus Laufzeitperformanz. Mit
> modernen Skriptsprachen kann man etwa bis zu zehnmal (zB. Python vs.
> Java) so schnell entwickeln,

das ist Unsinn.

Wenn beide sprachen die gleichen Möglichkeiten bieten dann unterscheiden 
es sich nur der Zeitdauern vom Compilieren und das macht niemals 90% der 
Zeit aus.

Der Vorteil vom Compilieren ist sogar das Schreibfehler bei Variabel und 
Funktionen sofort auffallen, bei Scripsprachen erst zur Laufzeit (wobei 
ich Python nicht kenne)

von Daniel A. (daniel-a)


Lesenswert?

Sven B. schrieb:
> Sheeva P. schrieb:
>>> die Wahrscheinlichkeit das es ohne Probleme unter Windows stabil läuft
>>> geht wohl gegen 0 - das schaffen ja nicht mal die Java-Programm die
>>> angeblich Plattformunabhängig sind.
>>
>> Das stimmt nicht. Wenn man es richtig macht, laufen MingW- und
>> Java-Software vollkommen problemlos, auch unter Windows.
>
> Wenn man es richtig macht läuft Software vollkommen problemlos überall.
> Das ist die Definition von "richtig macht". Die Frage ist ja wie schwer
> das ist.

Das ist wirklich ganz einfach, man richtet sich die build Umgebung 
einfach so ein, dass das Buildscript von anfang an immer gleich für 
beide Platformen kompiliert. Bei jedem Kompiliervorgang sieht man dann, 
ob man etwas bei einer oder beiden davon kaput gemacht hat, und kann es 
korrigieren.

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> Sheeva P. schrieb:
>> Letztlich geht es um Entwicklungs- versus Laufzeitperformanz. Mit
>> modernen Skriptsprachen kann man etwa bis zu zehnmal (zB. Python vs.
>> Java) so schnell entwickeln,
>
> das ist Unsinn.

Nein, Peter, das ist es erfreulicherweise nicht. Wenn das "Unsinn" wäre, 
wie Du behauptest, dann würde niemand Skriptsprachen benutzen. Fakt ist 
jedoch, daß Skriptsprachen heutzutage ganz weit vorne liegen: bei TIOBE 
liegt Python auf Rang 4 hinter Java, C und C++ [1], bei PYPL auf Rang 2 
hinter Java [2] und RedMonk [3] auf Rang 3 hinter JavaScript und Java.

> Wenn beide sprachen die gleichen Möglichkeiten bieten dann unterscheiden
> es sich nur der Zeitdauern vom Compilieren und das macht niemals 90% der
> Zeit aus.

Softwareentwicklung ist aber doch nicht nur Schreiben und Kompilieren, 
sondern auch Testing, Debugging, Profiling, Qualitätssicherung und ein 
paar anderen Aufgaben. In vielen dieser Bereiche haben Skriptsprachen 
ein paar klare Performanzvorteile in der Entwicklung.

Hinzu kommt, daß es zum Beispiel für Perl und Python eine riesige 
Vielzahl an fertigen Bibliotheken und Modulen gibt. Ja, die gibt es auch 
für Java, C# und C++, aber die Skriptleute haben dafür zum Teil riesige 
Repositories mit schlüssenfertigen, sofort benutzbaren, ausgetesteten, 
stabilen Moduken und Bibliotheken, wie etwa in Perl das Comprehensive 
Perl Archive Network (CPAN) mit seinem Modul zur Softwareinstallation 
oder in Python den Python Package Index mit einem Programm namens pip. 
Außerdem haben Skriptsprachen meistens bereits etliche Bibliotheken und 
Module dabei, für die man sich in kompilierten Sprachen erst einmal 
zeitaufwändig was zusammensuchen (und oft ausprobieren) muß -- alleine 
Ubuntu-Linux führt aktuell 4474 Pythonmodule in seinen Repositories, die 
nicht zur Standarddistribution von Python gehören.

> Der Vorteil vom Compilieren ist sogar das Schreibfehler bei Variabel und
> Funktionen sofort auffallen, bei Scripsprachen erst zur Laufzeit (wobei
> ich Python nicht kenne)

Ja, richtig. Dein Compiler warnt Dich sogar vor Typfehlern, wenn Du etwa 
einer Funktion, die einen String erwartet, ein Integer übergibst. Vor 
Schreibfehlern warnt mich schon mein Editor (GNU Emacs), wie trivial.

Das kann man in den aktuellen Versionen von Python3 mit sogenannten Type 
Hints (ähnelt "Option Explicit" in VB) erzwingen, ist aber nicht Usus.
Üblicherweise wird der Typ einer Variablen in Python durch vom Typ ihres 
Werts bestimmt. Damit kann sich ebenso böse in den Fuß schießen wie mit 
Typecasts in kompilierten Sprachen... ;-)

Aber schau einfach mal in diese (unvollständige) Liste [4], um eine 
grobe Vorstellung davon zu bekommen, was mit Python alles möglich ist.


[1] https://www.tiobe.com/tiobe-index/
[2] http://pypl.github.io/PYPL.html
[3] http://redmonk.com/sogrady/2017/03/17/language-rankings-1-17/
[4] https://en.wikipedia.org/wiki/List_of_Python_software

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Sven B. schrieb:
> Wenn man es richtig macht läuft Software vollkommen problemlos überall.
> Das ist die Definition von "richtig macht". Die Frage ist ja wie schwer
> das ist.

Nein, eben nicht. Man kann eine MFC-Anwendung in jedem Sinne von 
"richtig" machen, und sie wird trotzdem nur unter Windows laufen. Man 
kann eine WPF-Anwendung in jedem Sinne von "richtig" machen, und sie 
wird trotzdem nur unter Windows laufen. Ähnliches gilt für WCF, ASP, und 
XML.

von Peter II (Gast)


Lesenswert?

Sheeva P. schrieb:
> Softwareentwicklung ist aber doch nicht nur Schreiben und Kompilieren,
> sondern auch Testing, Debugging, Profiling, Qualitätssicherung und ein
> paar anderen Aufgaben. In vielen dieser Bereiche haben Skriptsprachen
> ein paar klare Performanzvorteile in der Entwicklung.

welche Vorteile sollen das sein? Ich kann an den IDEs mit Debugging und 
Profiling von C# und C++ nichts sehen was besser einer Scriptsprache 
gehen würde?

> Hinzu kommt, daß es zum Beispiel für Perl und Python eine riesige
> Vielzahl an fertigen Bibliotheken und Modulen gibt. Ja, die gibt es auch
> für Java, C# und C++, aber die Skriptleute haben dafür zum Teil riesige
> Repositories mit schlüssenfertigen, sofort benutzbaren, ausgetesteten,
> stabilen Moduken und Bibliotheken, wie etwa in Perl das Comprehensive
>Perl Archive Network (CPAN)
und hast du sie mal verwendet? Versuche mal mit Perl eine Excel zu 
erzeugen. Ja es gibt viele Module - jedes hat andere Macken und die Doku 
ist schrecklich. Die Qualität ist dabei nicht immer gegeben.

> Aber schau einfach mal in diese (unvollständige) Liste [4], um eine
> grobe Vorstellung davon zu bekommen, was mit Python alles möglich ist.
es behauptet niemand das mit Python etwas nicht möglich ist. Aber das 
man damit 10fach schneller ist als mit Java oder C# ist einfach 
unrealistisch.

von knallbär (Gast)


Lesenswert?

Peter II schrieb:
> welche Vorteile sollen das sein? Ich kann an den IDEs mit Debugging und
> Profiling von C# und C++ nichts sehen was besser einer Scriptsprache
> gehen würde?

Ich glaube nicht das du jemals in einer Skriptsprache programmiert hast, 
sonst würdest du so einen Unsinn hier nicht schreiben.


> es behauptet niemand das mit Python etwas nicht möglich ist. Aber das
> man damit 10fach schneller ist als mit Java oder C# ist einfach
> unrealistisch.

Ob das jetzt 10 mal sind weiß ich auch nicht. Auf jedenfall sehr, sehr 
viel schneller.

Schon alleine eine Funktion aus einer Bib kurz testen um zu sehen ob sie 
meinen Anforderungen genügt ist in Python wirklich kurz mit 
Beispieldaten eingehackt.

von Sven B. (scummos)


Lesenswert?

Peter II schrieb:
>> Aber schau einfach mal in diese (unvollständige) Liste [4], um eine
>> grobe Vorstellung davon zu bekommen, was mit Python alles möglich ist.
> es behauptet niemand das mit Python etwas nicht möglich ist. Aber das
> man damit 10fach schneller ist als mit Java oder C# ist einfach
> unrealistisch.

Für bestimmte Scopes ist Python wegen der Interpretierbarkeit, aber 
insbesondere wegen den verbreiteten und gut verfügbaren Bibliotheken 
viel besser geeignet als C++. In Python kann ich in weniger als zwei 
Minuten aus dem interaktiven Interpreter eine CSV-Datei einlesen, die 
enthaltenen Daten fouriertransformieren, und das Betragsquadrat in einem 
beschrifteten Diagramm in ein PDF malen, das man so in jedem Paper 
veröffentlichen könnte. In der Zeit hab ich in C++ noch nicht mal 
angefangen zu fluchen wie unlesbar die fftw3-Doku ist ;)

von knallbär (Gast)


Lesenswert?

Sven B. schrieb:
>
> Für bestimmte Scopes ist Python wegen der Interpretierbarkeit, aber
> insbesondere wegen den verbreiteten und gut verfügbaren Bibliotheken
> viel besser geeignet als C++. In Python kann ich in weniger als zwei
> Minuten aus dem interaktiven Interpreter eine CSV-Datei einlesen, die
> enthaltenen Daten fouriertransformieren, und das Betragsquadrat in einem
> beschrifteten Diagramm in ein PDF malen, das man so in jedem Paper
> veröffentlichen könnte. In der Zeit hab ich in C++ noch nicht mal
> angefangen zu fluchen wie unlesbar die fftw3-Doku ist ;)

This

von Peter II (Gast)


Lesenswert?

knallbär schrieb:
> Peter II schrieb:
>> welche Vorteile sollen das sein? Ich kann an den IDEs mit Debugging und
>> Profiling von C# und C++ nichts sehen was besser einer Scriptsprache
>> gehen würde?
>
> Ich glaube nicht das du jemals in einer Skriptsprache programmiert hast,
> sonst würdest du so einen Unsinn hier nicht schreiben.

da irrst du dich, sind schon einige 1000 Zeilen Perl gewesen. Aus dem 
Grund kann ich für mich aus Erfahrung sagen, das Perl nur für kleine 
dinge gut ist, sobald es größer wird gehen ich lieber auf C# einsetze.

Sven B. schrieb:
> Peter II schrieb:
>>> Aber schau einfach mal in diese (unvollständige) Liste [4], um eine
>>> grobe Vorstellung davon zu bekommen, was mit Python alles möglich ist.
>> es behauptet niemand das mit Python etwas nicht möglich ist. Aber das
>> man damit 10fach schneller ist als mit Java oder C# ist einfach
>> unrealistisch.
>
> Für bestimmte Scopes ist Python wegen der Interpretierbarkeit, aber
> insbesondere wegen den verbreiteten und gut verfügbaren Bibliotheken
> viel besser geeignet als C++. In Python kann ich in weniger als zwei
> Minuten aus dem interaktiven Interpreter eine CSV-Datei einlesen, die
> enthaltenen Daten fouriertransformieren, und das Betragsquadrat in einem
> beschrifteten Diagramm in ein PDF malen, das man so in jedem Paper
> veröffentlichen könnte. In der Zeit hab ich in C++ noch nicht mal
> angefangen zu fluchen wie unlesbar die fftw3-Doku ist ;)

hier wird aber wieder Sprache und Funktiosumfang vermischt. Wenn ich in 
C# ein Klasse habe die genau das macht muss ich auch nur 1 Zeile code 
schreiben.

von Vincent H. (vinci)


Lesenswert?

Peter II schrieb:
> hier wird aber wieder Sprache und Funktiosumfang vermischt. Wenn ich in
> C# ein Klasse habe die genau das macht muss ich auch nur 1 Zeile code
> schreiben.

Niemand hat behauptet, dass man auf Grund von Sprach-Features schneller 
wäre... Es geht einzig und allein um den "Funktionsumfang" (in Form von 
Bibliotheken). Und grad was Visualisierung und Datenbearbeitung angeht 
ist Python schlichtweg konkurrenzlos.

Du behauptest ja selbst du kennst Python nicht. Vielleicht siehst du 
jene Diskussion ja als Grund es dir mal anzusehen.

von Sven B. (scummos)


Lesenswert?

Peter II schrieb:
> hier wird aber wieder Sprache und Funktiosumfang vermischt. Wenn ich in
> C# ein Klasse habe die genau das macht muss ich auch nur 1 Zeile code
> schreiben.

Ja, hast du aber nicht. Formal gesehen ist das natürlich völlig korrekt. 
aber in der Praxis ist es halt einfach nicht so. Das macht halt den 
Unterschied. In Python ist das Teil der, naja, nicht Standardbibliothek 
aber Teil einer Bibliothek die so verbreitet ist dass sie immer überall 
verfügbar ist und jeder sie benutzt, also quasi-Standard.

von Peter II (Gast)


Lesenswert?

Vincent H. schrieb:
> Niemand hat behauptet, dass man auf Grund von Sprach-Features schneller
> wäre... Es geht einzig und allein um den "Funktionsumfang" (in Form von
> Bibliotheken).

das habe ich hier aber anders gelesen

>> Wenn beide sprachen die gleichen Möglichkeiten bieten dann unterscheiden
>> es sich nur der Zeitdauern vom Compilieren und das macht niemals 90% der
>> Zeit aus.
> Softwareentwicklung ist aber doch nicht nur Schreiben und Kompilieren,
> sondern auch Testing, Debugging, Profiling, Qualitätssicherung und ein
> paar anderen Aufgaben. In vielen dieser Bereiche haben Skriptsprachen
> ein paar klare Performanzvorteile in der Entwicklung.

von tom (Gast)


Lesenswert?

Schau Dir mal "TCP/IP Lean" von Jeremy Bentham an.
Zugriff vom PC aus über eine SLIP Verbindung, Darstellung Deiner Daten 
im Web-Browser.
Das Buch gibt es gebraucht für wenig Knete und ne CD mit allen 
Beispielen ist mit dabei. Und es ist gut zum Lernen geschrieben.


Gutt Lack, Tom.

von knallbär (Gast)


Lesenswert?

Peter II schrieb:
> Vincent H. schrieb:
>> Niemand hat behauptet, dass man auf Grund von Sprach-Features schneller
>> wäre... Es geht einzig und allein um den "Funktionsumfang" (in Form von
>> Bibliotheken).
>
> das habe ich hier aber anders gelesen
>
>>> Wenn beide sprachen die gleichen Möglichkeiten bieten dann unterscheiden
>>> es sich nur der Zeitdauern vom Compilieren und das macht niemals 90% der
>>> Zeit aus.
>> Softwareentwicklung ist aber doch nicht nur Schreiben und Kompilieren,
>> sondern auch Testing, Debugging, Profiling, Qualitätssicherung und ein
>> paar anderen Aufgaben. In vielen dieser Bereiche haben Skriptsprachen
>> ein paar klare Performanzvorteile in der Entwicklung.

Hast du schonmal mit Matlab debugged? (Auch eine Skriptsprache, aber 
properitär)

Vergleiche das mit debugging mit einer beliebigen C++ IDE.

Außerdem war der Diskussionspunkt eben folgender:

Sheeva P. schrieb:
> Peter II schrieb:
>> Sheeva P. schrieb:
>>> Letztlich geht es um Entwicklungs- versus Laufzeitperformanz. Mit
>>> modernen Skriptsprachen kann man etwa bis zu zehnmal (zB. Python vs.
>>> Java) so schnell entwickeln,
>>
>> das ist Unsinn.
>
> Nein, Peter, das ist es erfreulicherweise nicht. [...]

Und für Entwicklungszeit spielt der Funktionsumfang eben die wesentlich 
Rolle.

von S. R. (svenska)


Lesenswert?

Peter II schrieb:
> da irrst du dich, sind schon einige 1000 Zeilen Perl gewesen.

Dann solltest du wissen, dass nicht deklarierte Variablen in Perl schon 
zur Compilezeit - ja, Perl hat eine Compilezeit! - abgefangen werden.

Man muss nur "use strict" oben hinschreiben, bevorzugt auch "use 
warnings".

von Peter II (Gast)


Lesenswert?

S. R. schrieb:
> Dann solltest du wissen, dass nicht deklarierte Variablen in Perl schon
> zur Compilezeit - ja, Perl hat eine Compilezeit! - abgefangen werden.
>
> Man muss nur "use strict" oben hinschreiben, bevorzugt auch "use
> warnings".

das hilft nur nicht bei Schreibfehler von Funktionsname.
1
use strict;
2
3
sub test($)
4
{
5
}
6
7
if ( $ARGV[1] eq "x" )
8
{
9
   test2();
10
}

von Sheeva P. (sheevaplug)


Lesenswert?

Vincent H. schrieb:
> Niemand hat behauptet, dass man auf Grund von Sprach-Features schneller
> wäre... Es geht einzig und allein um den "Funktionsumfang" (in Form von
> Bibliotheken).

Ich hatte das gesagt, und es ist so. Dynamisches versus Strict Typing, 
Speicherverwaltung, Metaprogrammierung... das sind alles Sprachfeatures, 
die erheblichen Einfluß auf die Entwicklerperformance haben. Mag sein, 
daß das alles zunächst nur Kleinigkeiten sind, aber die Summe macht's. 
Zusätzlich dazu spielt auch, ganz richtig, der Funktionsumfang der 
vorgefertigten Bibliotheken eine wichtige Rolle.

Als Lektüre empfehle ich zum Einstieg folgende Artikel:

[1] https://www.python.org/doc/essays/omg-darpa-mcc-position/
[2] http://www.linuxjournal.com/article/3882
[3] 
https://pythonconquerstheuniverse.wordpress.com/2009/10/03/python-java-a-side-by-side-comparison/
[4] 
http://www.programcreek.com/2012/04/java-vs-python-why-python-can-be-more-productive/

Wobei der letzte Artikel noch ein paar weitere Kürzungsmöglichkeiten 
unterschlägt, die Python bietet, zum Beispiel in "6. Collections". Da 
wird eine Java-ArrayList wie folgt erzeugt:
1
ArrayList<String> al = new ArrayList<String>();
2
al.add("a");
3
al.add("b");
4
al.add("c");

In Python ist das eine Zeile:
1
al = ["a", "b", "c"]

Man kann die Liste in Python sogar dynamisch erzeugen, ohne sie einer 
Variablen zuzuweisen (das nutze ich ziemlich oft bei der Verarbeitung 
von Daten in Dictionaries):
1
for i in ["a", "b", "c"]:
2
  # do sth with i

Tatsächlich funktioniert letzteres sogar mit einem String, denn Strings 
sind in Python einfache Iterables:
1
for i in "abc":
2
  # do sth with i

Und dazu kommen dann noch Builtin-Funktionen wie map(), zip(), filter(), 
List- und Dict-Comprehensions... Das sind alles Features aus dem Kern 
der Sprache, die zur hohen Ausdrucksstärke von Python beitragen und bei 
der Verarbeitung von Listen und Dictionaries zu einem Kinderspiel 
machen.

von Sheeva P. (sheevaplug)


Lesenswert?

knallbär schrieb:
> Hast du schonmal mit Matlab debugged? (Auch eine Skriptsprache, aber
> properitär)

Nein, habe ich nicht. Aber Ausnahmen bestätigen bekanntlich die Regel, 
und eine proprietäre Sprache macht natürlich das was jede proprietäre 
Software macht: ihre Geschäftsgeheimnisse schützen.

> Und für Entwicklungszeit spielt der Funktionsumfang eben die wesentlich
> Rolle.

Was meinst Du mit "Funktionsumfang". Gehören Dynamic Typing, List- und 
Dict-Comprehensions zum Funktionsumfang? Builtin-Funktionen? Lambdas? 
Generatoren, Iteratoren? Gehört alles zum Sprachkern. Aber was ist mit 
Standardmodulen wie csv oder argparse? ...Am Ende läuft das auf eine 
kindisch-akademische Debatte hinaus wie die Frage, ob die 
C-Standardbibliothek zum Sprachkern von C gehört oder ob das wie eine 
externe Bibliothek anzusehen ist.

Fakt ist: es gibt eine Vielzahl an Features im Python-Interpreter 
selbst, aber auch in den standardmäßig mitgelieferten Modulen, die die 
Entwicklung von Software erheblich beschleunigen. Und die riesige 
Vielzahl an fertigen externen Modulen beschleunigt die Sache nochmals 
zusätzlich.

von Peter II (Gast)


Lesenswert?

Sheeva P. schrieb:
> Man kann die Liste in Python sogar dynamisch erzeugen, ohne sie einer
> Variablen zuzuweisen (das nutze ich ziemlich oft bei der Verarbeitung
> von Daten in Dictionaries):
> for i in ["a", "b", "c"]:
>   # do sth with i

und was soll daran besonders sein, was nur in scriptsprachen geht?

C#
1
foreach (var x in new int[] { 1, 3, 5, 7, 9 } ) 
2
{
3
}

> Tatsächlich funktioniert letzteres sogar mit einem String, denn Strings
> sind in Python einfache Iterables:
auch nichts besonders
1
foreach (var x in "abc") {
2
  System.Diagnostics.Debug.Write(x);
3
}

also nichts was irgendwie nur ein Scripsprachen geht.

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> knallbär schrieb:
>> Ich glaube nicht das du jemals in einer Skriptsprache programmiert hast,
>> sonst würdest du so einen Unsinn hier nicht schreiben.
>
> da irrst du dich, sind schon einige 1000 Zeilen Perl gewesen. Aus dem
> Grund kann ich für mich aus Erfahrung sagen, das Perl nur für kleine
> dinge gut ist, sobald es größer wird gehen ich lieber auf C# einsetze.

Perl ist tatsächlich auch für größere Dinge gut, und das sagt Dir 
jemand, der Perl über fünfzehn Jahre als Feld-, Wald- und Wiesensprache 
für alles inkl. GUI-Software mit Qt benutzt und sicherlich einige 100 
kLOC in Perl geschrieben hat. Für Python, das Perl in dieser Rolle bei 
mir vor etwas über zehn Jahren abgelöst hat und das ein wesentlich 
saubereres OO-Design besitzt, gilt das noch mehr.

Schau doch einfach mal auf die oben verlinkte Liste von 
Python-Programmen, da sind viele riesige Projekte dabei: IDEs, 
Videospiele, wissenschaftliche und mathematische Software, Instant 
Messenger, Spreadsheet-Applikationen, Machine Learning, um nur ein paar 
zu nennen.

Und dann stell' Dir doch bitte einfach mal selbst die Frage, warum 
Python erfolgreicher und weiter verbreitet ist als C# -- übrigens nicht 
zuletzt auch in der Wissenschaft, wo es oft um die Analyse und 
Visualisierung von riesigen Datenmengen und -Strukturen geht. Sind die 
Nutzer alle dumm, daß sie die Vorzüge von C# nicht sehen, wenn das doch 
die perfekte und allein seligmachende Sprache ist?

> hier wird aber wieder Sprache und Funktiosumfang vermischt. Wenn ich in
> C# ein Klasse habe die genau das macht muss ich auch nur 1 Zeile code
> schreiben.

Wenn Du immer eine Klasse hast, die genau das macht was Du willst, dann 
brauchst Du keine Entwickler mehr.

Nein, im Ernst: wir können gerne diskutieren, wenn Du mal mehr als nur 
ein paar kLOC in einer Skriptsprache gehackt hast. Dann weißt Du nämlich 
erst, wovon ich rede -- obwohl: dann wirst Du es wirklich wissen, und 
die ganze Diskussion wird sich damit komplett erübrigt haben. ;-)

Am Ende noch ein Tipp: auch wenn man sich bereits in seiner persönlichen 
Wohlfühlzone wähnt und glaubt, daß man für sich selbst die ideale 
Sprache gefunden hat, lohnt es sich immer, über den eigenen Tellerrand 
zu schauen. Ich persönlich habe mit jeder neuen Sprache, die ich gelernt 
habe, einige neue Tricks und Kniffe kennengelernt, die ich dann auch in 
meinen anderen Sprachen gewinnbringend einsetzen konnte. YMMV.

von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> und was soll daran besonders sein, was nur in scriptsprachen geht?

Wir reden weiter, wenn Du es wirklich verstehen willst -- anstatt 
ständig immer nur beweisen zu wollen, was mit Deinem geliebten C# alles 
geht.

von Daniel A. (daniel-a)


Lesenswert?

Peter II schrieb:
> C#
> foreach (var x in new int[] { 1, 3, 5, 7, 9 } )
> {
> }

C
1
for( const char*const* it=(const char*const[]){"a","b","c",0}; *it; it++ ){
2
}

C++11:
1
for( auto it : {"a","b","c"} ){
2
}

von Peter II (Gast)


Lesenswert?

Sheeva P. schrieb:
> Und dann stell' Dir doch bitte einfach mal selbst die Frage, warum
> Python erfolgreicher und weiter verbreitet ist als C# -- übrigens nicht
> zuletzt auch in der Wissenschaft, wo es oft um die Analyse und
> Visualisierung von riesigen Datenmengen und -Strukturen geht. Sind die
> Nutzer alle dumm, daß sie die Vorzüge von C# nicht sehen, wenn das doch
> die perfekte und allein seligmachende Sprache ist?

dann lebst du auf einen anderen Teller als ich. Bei uns in der 
Entwicklung können von 20 Leute nur einer Python die anderen C# oder 
C++.

In meinen Umfeld habe ich kein Python script am laufen, dafür viele C# 
und C++ Programme. Das es in andere Firmen anders ist kann durchaus 
sein, ich würde zumindest nicht behaupten das C# deswegen 
erfolgreicherer als Python ist.

Bis jetzt hast du immer noch kein Argument gebracht, warum man mit 
Python 10mal schneller sein sollte also mit einer kompilierten Sprache.

Und für riesigen Datenmengen verwenden wir Datenbankserver und keine 
Skripte.

von Sheeva P. (sheevaplug)


Lesenswert?

Daniel A. schrieb:
> [...C und C++-Code...]

Jungs, vielleicht habt Ihr meine Beiträge nicht so aufmerksam gelesen, 
aber meine Vergleiche bezog ich eigentlich ausschließlich auf Java -- 
weil das nämlich eine automatische Speicherverwaltung hat und darum die 
kompilierte Sprache ist, die ich am Ehesten mit Python vergleichen kann. 
C und C++ haben keine automatische Speicherverwaltung (und bevor jetzt 
wieder einer klugscheißt: ja, ich kenne Smartpointer und auch den 
Boehm-GC), und C# kenne ich nicht gut genug für einen solchen Vergleich. 
Deswegen rede ich bei so etwas lieber über Dinge, von denen ich was 
verstehe -- und die sich auch halbwegs seriös und sinnvoll miteinander 
vergleichen lassen.

Ansonsten kommt Ihr vielleicht auf die Idee, was gemeint ist, wenn Ihr 
den kompakten, leicht und mit einem Blick erkennbaren Python-Code mit 
den von Euch produzierten Sonderzeichenwüsten vergleicht. Natürlich 
wirkt sich auch die Les- und Schreibbarkeit von Code auf die 
Entwicklerperformance aus. Die beiden Python-Beispiele enthalten 15 bzw. 
25 Zeichen, Peters C#-Beispiel kommt auf 47 Zeichen, Dein C++11-Beispiel 
kommt auf 31 und Dein C-Beispiel sogar auf 75 Zeichen.

Geübte Zehn-Finger-Tipper kommen auf 200 bis 400 Anschläge pro Minute, 
im Mittelwert also 5 Anschläge pro Sekunde. Umgerechnet auf Eure 
Beispiele heißt das, daß der Python-Code in 3 bis 5 eingegeben werden 
kann, während der C#-Code etwa 9,4, das C++11-Beispiel 6,2 und das 
C-Beispiel sogar 15 Sekunden für die reine Eingabe des Code benötigt. 
Und dabei habe ich noch kein Wort die Eingabe von Sonderzeichen wie "{" 
und "[" gesagt, die ja zumindest auf deutschen Tastaturen nur mit 
Tastenkombinationen erreicht werden können. Und ich habe, vor allem, 
kein Wort über die Lesbarkeit verloren. Schon an diesem popeligen 
Minimalstbeispiel könnt Ihr einen wichtigen Grund sehen, warum die 
Entwicklerperformanz in Skriptsprachen deutlich höher ist: der Code ist 
einfach viel kürzer, und dabei haben wir echte 
Kompaktheits-Killerfeatures wie List- und Dict-Comprehensions noch gar 
nicht angeschaut. Damit kann man Dinge in ein, zwei Zeilen machen, 
welche in Java locker eine Bildschirmseite Code brauchen würden.

Außerdem haben wir dabei noch nicht einmal über Dynamic Typing geredet 
-- in Python können Listen und Tupel nämlich Elemente unterschiedlicher 
Datentypen enthalten:
1
for i in ["a", 10, 10.1, dict()]:
2
  # do sth with i

Bildet das doch mal in C#, C oder C++ ab -- ohne Tricks und Libraries, 
nur mit den Features im Sprachkern. ;-)

von Possetitjel (Gast)


Lesenswert?

Sheeva P. schrieb:

> Schon an diesem popeligen Minimalstbeispiel könnt
> Ihr einen wichtigen Grund sehen, warum die
> Entwicklerperformanz in Skriptsprachen deutlich höher
> ist: der Code ist einfach viel kürzer, [...]

Naja, ich denke, Du machst einen wesentlichen Fehler: Du
betrachtest die Entwicklerperformanz völlig losgelöst
von der Projektgröße und von der Erfahrung des Entwicklers.

Das muss mMn schiefgehen.

von Daniel A. (daniel-a)


Lesenswert?

Sheeva P. schrieb:
> Die beiden Python-Beispiele enthalten 15 bzw.
> 25 Zeichen, Peters C#-Beispiel kommt auf 47 Zeichen, Dein C++11-Beispiel
> kommt auf 31

Das C++11 Beispiel entsprach nicht dem "15" Zeichen python ausschnit. 
Ausserdem war der python ausschnitt syntaktisch unvolständig, und die 
Abstände hätte man bei C auch nicht mitzählen müssen, da die anders als 
in python meist optional sind.

Leere schleife über die Zeichen a, b und c, in C++11, 18 Zeichen:
1
for(auto i:"abc");

Leere schleife über die Zeichen a, b und c, in python 22 Zeichen:
1
for i in "abc":
2
 pass

Jedes dieser Zeichen ist notwendig, bei python auch die 2 newlines und 
dass pass, denn eine python schleife braucht einen inhalt. Das python 
Beispiel ist also sogar 4 Zeichen länger!
Wo wir schon bei abständen sind, python ist wirklich Produktiv wenn man 
mal ein paar abstände durcheinander bringt oder einen tab erwischt, und 
von den typos, die erst zur laufzeit auffallen, will ich garnicht erst 
anfangen...

: Bearbeitet durch User
von Sheeva P. (sheevaplug)


Lesenswert?

Peter II schrieb:
> Sheeva P. schrieb:
>> Und dann stell' Dir doch bitte einfach mal selbst die Frage, warum
>> Python erfolgreicher und weiter verbreitet ist als C# -- übrigens nicht
>> zuletzt auch in der Wissenschaft, wo es oft um die Analyse und
>> Visualisierung von riesigen Datenmengen und -Strukturen geht. Sind die
>> Nutzer alle dumm, daß sie die Vorzüge von C# nicht sehen, wenn das doch
>> die perfekte und allein seligmachende Sprache ist?
>
> dann lebst du auf einen anderen Teller als ich. Bei uns in der
> Entwicklung können von 20 Leute nur einer Python die anderen C# oder
> C++.

Natürlich, Du Genie, weil Ihr Euch die so ausgesucht habt.

> In meinen Umfeld habe ich kein Python script am laufen

Hatte ich nicht oben auf renommierte Indizes wie TIOBE, RedMonk und PYPL 
verwiesen? Wenn Du die Links nicht liest, die ich Dir gebe, bestätigt 
das meinen Verdacht, daß es Dir hier nicht um den Erkenntnisgewinn geht.

> Bis jetzt hast du immer noch kein Argument gebracht, warum man mit
> Python 10mal schneller sein sollte also mit einer kompilierten Sprache.

Dann solltest Du meine Beiträge noch einmal lesen, diesmal vielleicht 
der Abwechslung halber auch mal mit dem Ziel, sie zu verstehen.

> Und für riesigen Datenmengen verwenden wir Datenbankserver und keine
> Skripte.

Tja, wer nur einen Hammer hat... Abgesehen davon fürchte ich, daß ich 
unter "riesige Datenmengen" etwas ganz anderes verstehe als Du, nämlich 
BigData.

von Sheeva P. (sheevaplug)


Lesenswert?

Possetitjel schrieb:
> Naja, ich denke, Du machst einen wesentlichen Fehler: Du
> betrachtest die Entwicklerperformanz völlig losgelöst
> von der Projektgröße und von der Erfahrung des Entwicklers.
>
> Das muss mMn schiefgehen.

Warum sollte das schiefgehen? Nichts davon hat mit den Eigenschaften 
einer Programmiersprache zu tun, und die inhärenten Stärken von 
Skriptsprachen kommen in jeder Projektgröße zum Tragen und sind gänzlich 
unabhängig von der Erfahrung des Entwicklers.

von Sheeva P. (sheevaplug)


Lesenswert?

Daniel A. schrieb:
> Leere schleife über die Zeichen a, b und c, in python 22 Zeichen:
>
1
> for i in "abc":
2
>  pass
3
>
>
> Jedes dieser Zeichen ist notwendig, bei python auch die 2 newlines und
> dass pass, denn eine python schleife braucht einen inhalt. Das python
> Beispiel ist also sogar 4 Zeichen länger!

Den Newline hinter dem ":" kannst Du weglassen und das "pass" einfach 
durch einen Dummy ersetzen, schon sind's wieder 16 Zeichen -- also 
wieder zwei Zeichen kürzer als Dein maximal eingedampfter C++-Code.
1
for i in "abc":1

> Wo wir schon bei abständen sind, python ist wirklich Produktiv wenn man
> mal ein paar abstände durcheinander bringt oder einen tab erwischt, und
> von den typos, die erst zur laufzeit auffallen, will ich garnicht erst
> anfangen...

Hast Du praktische Erfahrung mit Python? In meiner Praxis habe ich 
solche Probleme nämlich nicht und kenne solche Aussagen auch eigentlich 
nur von Leuten, die keine bis wenig Erfahrung mit der Sprache haben.

von Lothar (Gast)


Lesenswert?

Sheeva P. schrieb:
> renommierte Indizes wie TIOBE

Dort wo BASIC (VB .net 3% und VB 2% zusammen) mit 5% deutlichst vor 
Python mit 3.5% liegt was dazu jeden Monat immer weiter verliert :-)

von Rolf M. (rmagnus)


Lesenswert?

Sheeva P. schrieb:
> Die beiden Python-Beispiele enthalten 15 bzw. 25 Zeichen, Peters C#-
> Beispiel kommt auf 47 Zeichen, Dein C++11-Beispiel kommt auf 31 und Dein
> C-Beispiel sogar auf 75 Zeichen.
>
> Geübte Zehn-Finger-Tipper kommen auf 200 bis 400 Anschläge pro Minute,
> im Mittelwert also 5 Anschläge pro Sekunde. Umgerechnet auf Eure
> Beispiele heißt das, daß der Python-Code in 3 bis 5 eingegeben werden
> kann, während der C#-Code etwa 9,4, das C++11-Beispiel 6,2 und das
> C-Beispiel sogar 15 Sekunden für die reine Eingabe des Code benötigt.

Um ehrlich zu sein, lässt diese Aussage nicht unbedingt den Rückschluss 
auf eine umfangreiche Erfahrung im Bereich der Software-Entwicklung zu. 
Du solltest sonst eigentlich wissen, dass die reine Zahl der Zeichen und 
die Sekunden, die man zum Eintippen braucht, recht unerheblich sind im 
Vergleich zu der Zeit, die man für die anderen Teile der Entwicklung wie 
Design, Kommunikation, Issue Tracking, Doku lesen, Testen, Debuggen, ... 
braucht.
Man rechnet üblicherweise damit, dass ein durchschnittlicher Entwickler 
pro Tag eine Codzeilenzahl im unteren zweistelligen Bereich produziert.
Da ist es völlig egal, ob der jetzt für eine davon 5 oder 15 Sekunden 
zum hinschreiben braucht.
Das gilt natürlich nur für richtige Software-Entwicklung. Bei einem 
Wegwerfskript für den einmaligen Gebrauch mag das etwas anders sein. Da 
interessiert aber auch die Lesbarkeit keinen.

> Und ich habe, vor allem, kein Wort über die Lesbarkeit verloren. Schon an
> diesem popeligen Minimalstbeispiel könnt Ihr einen wichtigen Grund sehen,
> warum die Entwicklerperformanz in Skriptsprachen deutlich höher ist: der
> Code ist einfach viel kürzer,

Code wird nicht automatisch lesbarer, nur weil er in ein paar Zeichen 
weniger getippt werden kann.

> und dabei haben wir echte Kompaktheits-Killerfeatures wie List- und Dict-
> Comprehensions noch gar nicht angeschaut. Damit kann man Dinge in ein,
> zwei Zeilen machen, welche in Java locker eine Bildschirmseite Code
> brauchen würden.

Da kommen wir schon eher in einen Bereich, wo es einen signifikanten 
Unterschied machen kann. Ob ich einen Algorithmus in wenigen Zeilen 
statt einer ganzen Seite formulieren kann, wäre für mich eher ein 
Kriterium als die Zahl ein Zeichen, die man für eine for-Schleife 
eingeben muss.

Sheeva P. schrieb:
> Den Newline hinter dem ":" kannst Du weglassen und das "pass" einfach
> durch einen Dummy ersetzen, schon sind's wieder 16 Zeichen -- also
> wieder zwei Zeichen kürzer als Dein maximal eingedampfter C++-Code.
> for i in "abc":1

Also hier wird's ja nun wirklich albern. Ob eine auf ein eher 
unleserliches Minimum zusammengeschrumpfte nutzlose leere Schleife nun 
in zwei Zeichen mehr oder weniger hingeschrieben werden kann, das ist 
dein Kriterium für die Effizienz, mit der man in der Sprache entwickeln 
kann? Ernsthaft?

von Sheeva P. (sheevaplug)


Lesenswert?

Rolf M. schrieb:
> Du solltest sonst eigentlich wissen, dass die reine Zahl der Zeichen und
> die Sekunden, die man zum Eintippen braucht, recht unerheblich sind im
> Vergleich zu der Zeit, die man für die anderen Teile der Entwicklung wie
> Design, Kommunikation, Issue Tracking, Doku lesen, Testen, Debuggen, ...
> braucht.

Natürlich weiß ich das, und in meinen vorherigen Beiträgen steht das 
auch ziemlich genau so drin. Dabei ging es mir nur um ein möglichst 
einfaches, nachvollziehbares und vergleichbares Beispiel. Andererseits 
weiß ich aus meinen Erfahrungen mit Java und C++ aber auch, daß das 
reine Eingeben des Code eben auch einen gewissen Anteil hat.

> Code wird nicht automatisch lesbarer, nur weil er in ein paar Zeichen
> weniger getippt werden kann.

Nicht automatisch, natürlich. Aber kürzerer Code kann gemeinhin 
schneller gelesen und erfaßt werden, und die vielfache Verwendung von 
Sonderzeichen macht Code ebenfalls nicht besser lesbar, oder?

>> und dabei haben wir echte Kompaktheits-Killerfeatures wie List- und
>> Dict-Comprehensions noch gar nicht angeschaut.
>
> Da kommen wir schon eher in einen Bereich, wo es einen signifikanten
> Unterschied machen kann. Ob ich einen Algorithmus in wenigen Zeilen
> statt einer ganzen Seite formulieren kann, wäre für mich eher ein
> Kriterium als die Zahl ein Zeichen, die man für eine for-Schleife
> eingeben muss.

Deswegen bezeichne ich diese Dinge ja auch als "Killerfeature". Nochmal: 
die Zeichenanzahl war nur ein Beispiel, um zu zeigen, warum Python-Code 
bereits bei so einfachen Beispielen kompakter und sowohl deswegen als 
auch aufgrund der geringeren Anzahl an Sonderzeichen, mit denen er 
auskommt, erheblich besser und schneller lesbar ist. Bei so einem 
Vergleich kommt es ja immer auch auf Vergleichbarkeit an -- deswegen 
habe ich erstens völlig bewußt ein möglichst einfaches Beispiel gewählt, 
für das es zweitens auch in kompilierten Sprachen ein Äquivalent gibt.

Wir können stattdessen aber auch gerne eine List-Comprehension benutzen. 
Etwa ein Fragment aus aktuellem Code, das Daten der NICB ([1]) in einen 
Elasticsearch-Cluster füttert und Namen wie "SANCHEZ, JORGE" und "jorge 
sanchez " in einheitliche Tupel wie ("Jorge", "Sanchez") normalisiert:
1
(m.capitalize() for m in (' '.join(
2
    (n.strip() for n in reversed(name.split(','))) ).split()
3
) if m.strip() != '')

Ja, da muß man sich schon ein bisschen Zeit nehmen, um das zu verstehen, 
aber ich bezweifle, daß entsprechender Code in C, C++, C# oder Java 
(auch bei entsprechender Erfahrung) schneller gelesen und verstanden 
werden kann.

> Sheeva P. schrieb:
>> Den Newline hinter dem ":" kannst Du weglassen und das "pass" einfach
>> durch einen Dummy ersetzen, schon sind's wieder 16 Zeichen -- also
>> wieder zwei Zeichen kürzer als Dein maximal eingedampfter C++-Code.
>> for i in "abc":1
>
> Also hier wird's ja nun wirklich albern. Ob eine auf ein eher
> unleserliches Minimum zusammengeschrumpfte nutzlose leere Schleife nun
> in zwei Zeichen mehr oder weniger hingeschrieben werden kann, das ist
> dein Kriterium für die Effizienz, mit der man in der Sprache entwickeln
> kann? Ernsthaft?

Entschuldige, aber das Beispiel mit der auf ein unleserliches Minimum 
eingedampften, nutzlosen leeren Schleife war nicht von mir, sondern von 
Daniel Albrecht. Darauf bin ich lediglich eingegangen und habe gezeigt, 
warum sogar dieses sein Beispiel einen -- wenngleich winzigen -- Vorteil 
für Python bietet, im Gegensatz zu seiner vorherigen Behauptung. 
Insofern hast Du zwar vollkommen Recht, daß das albern ist, aber 
diesbezüglich bin ich zum Glück nicht der richtige Adressat für Deine 
Beschwerde.

[1] http://www.nicb.org/

von Sheeva P. (sheevaplug)


Lesenswert?

Lothar schrieb:
> Sheeva P. schrieb:
>> renommierte Indizes wie TIOBE
>
> Dort wo BASIC (VB .net 3% und VB 2% zusammen) mit 5% deutlichst vor
> Python mit 3.5% liegt was dazu jeden Monat immer weiter verliert :-)

Ehrlich gesagt verstehe ich leider nicht, was Du mir damit sagen 
möchtest. Visual Basic wird gerne und oft benutzt, niemand bestreitet 
das, aber hier ging und geht es doch gar nicht um Visual Basic?!

Zudem kommt Visual Basic in den Indizes von RedMonk nicht einmal unter 
die ersten zwanzig, und liegt bei PyPL lediglich auf Platz 14.

Außerdem kannst Du bei TIOBE die betreffenden Sprachen anklicken und 
bekommst dann einen hübschen Verlauf über die letzten Jahre angezeigt. 
Dort kannst Du sehen, daß Python im Februar 2011 einen Höhepunkt von 
guten 7%, im April 2014 einen Tiefpunkt von knapp 2% hatte und dann in 
den letzten zwei Jahren stetig zwischen 3,3 und 4,5 % gelegen hat. Wie 
Du angesichts dessen zu der Aussage kommst, daß Python "jeden Monat 
immer weiter verlieren" würde, ist mir daher einigermaßen schleierhaft. 
Ich lese aus den Daten von TIOBE eher, daß Python in den letzten beiden 
Jahren bei ungefähr 3,9% stagniert.

von Rolf M. (rmagnus)


Lesenswert?

Sheeva P. schrieb:
> Wir können stattdessen aber auch gerne eine List-Comprehension benutzen.
> Etwa ein Fragment aus aktuellem Code, das Daten der NICB ([1]) in einen
> Elasticsearch-Cluster füttert und Namen wie "SANCHEZ, JORGE" und "jorge
> sanchez " in einheitliche Tupel wie ("Jorge", "Sanchez") normalisiert:
> (m.capitalize() for m in (' '.join(
>     (n.strip() for n in reversed(name.split(','))) ).split()
> ) if m.strip() != '')
>
> Ja, da muß man sich schon ein bisschen Zeit nehmen, um das zu verstehen,

Damit sagst du es ja selber: Der Code ist schlecht lesbar. Und in dem 
Fall ist das tatsächlich gerade deshalb so, weil er so kurz ist. Würde 
man das alles auseinanderziehen, wäre sehr viel leichter zu erkennen, 
was da passiert. Hier sind dazu viel zu viele Verschachtelungen und 
Klammerungen vorhanden.

> aber ich bezweifle, daß entsprechender Code in C, C++, C# oder Java
> (auch bei entsprechender Erfahrung) schneller gelesen und verstanden
> werden kann.

Ich glaube, dass er auch in Python schneller gelesen und verstanden 
werden könnte, wenn man nicht an jeder Stelle auf Biegen und Brechen 
versucht hätte, es möglichst "pythonesque" zu machen.

> Entschuldige, aber das Beispiel mit der auf ein unleserliches Minimum
> eingedampften, nutzlosen leeren Schleife war nicht von mir, sondern von
> Daniel Albrecht.

Es ist eigentlich egal, wer damit nun angefangen hat. Du hast recht, das 
er bei diesem "Wettrüsten" darüber, wer den kleinsten hat (also, Code 
meine ich) genauso mitgemacht hat. Also geht meine Kritik an euch beide 
gleichermaßen.

von Possetitjel (Gast)


Lesenswert?

Sheeva P. schrieb:

> die inhärenten Stärken von Skriptsprachen

Programmiersprachen sind ein Hilfmittel für MENSCHEN,
nicht für Computer. Der Computer ist mit Brainfuck
genauso zufrieden.

Die von Dir behaupteten inhärenten Stärken von Script-
sprachen gelten daher immer nur für bestimmte Klassen
von Menschen mit bestimmten Fähigkeiten und Vorkenntnissen.

Deine Argumentation läuft darauf hinaus, dass Englisch
"inhärent besser" als Russisch ist, weil die mittlere
Wortlänge im Englischen kleiner ist als im Russischen
(das ist tatsächlich so).

Du hast keine Vorstellung, warum das ein in Russland
aufgewachsener Dichter mit Muttersprache Russisch
anders sieht?

von Sheeva P. (sheevaplug)


Lesenswert?

Possetitjel schrieb:
> Sheeva P. schrieb:
>> die inhärenten Stärken von Skriptsprachen
>
> Programmiersprachen sind ein Hilfmittel für MENSCHEN,
> nicht für Computer.

Programmiersprachen sind ein Hilfsmittel für Menschen, um dem Computer 
zu sagen, wie er bestimmte Probleme lösen soll. Einige davon sind 
besonders gut für die Formulierung von bestimmten Problemlösungen 
geeignet, andere sind eher Allrounder und zur Lösung verschiedener 
Probleme geeignet.

Ganz allgemein sind Programmiersprachen aber stark formalisiert, damit 
der Computer -- der ja nur eine blöde Rechenmaschine ohne Intuition, 
Fantasie und Kreativität ist -- sie überhaupt verstehen kann. Und im 
Prinzip sind die Mittel und Möglichkeiten der verbreitetsten 
Programmiersprachen im Grunde ja dann auch ziemlich ähnlich -- weil sie 
nämlich das, und nur das abbilden müssen und können, was der Computer 
verstehen und umsetzen kann.

Insofern sind Programmiersprachen ein Hilfsmittel für beide, den 
Menschen und den Computer. Für den Menschen, um seine Probleme 
computerkompatibel zu formulieren, und für den Computer, um zur 
Kompilier- oder Laufzeit daraus Maschinencode zu erzeugen und 
auszuführen.

> Der Computer ist mit Brainfuck genauso zufrieden.

Das ist natürlich richtig, aber gerade dieses Beispiel zeigt, daß die 
verschiedenen Sprachen jeweils ihre eigenen Vorzüge und eben auch ihre 
eigenen Nachteile haben. Brainfuck, zum Beispiel, hat ein extrem simples 
Sprachkonzept und ist gut geeignet, die Grundlagen der Computertechnik 
zu erlernen. Andererseits ist es umständlich und ineffizient zu 
benutzen, weswegen niemand diese Sprache ernsthaft in der Praxis 
einsetzt.

Deswegen kann man generell sagen, daß Programmiersprachen, die in 
nativen Maschinencode kompiliert werden, besonders gut für Probleme 
geeignet sind, bei denen es auf eine besonders hohe Performanz und / 
oder einen besonders geringen Ressourcenverbrauch ankommt.

Interpretierte Sprachen -- also: Skriptsprachen -- sind meistens weniger 
performant und benötigen mehr Ressourcen für den Interpreter und dessen 
zur Laufzeit stattfindende Übersetzung, vereinfachen und beschleunigen 
aber die Programmierung und sind daher besonders gut geeignet, wenn der 
Programmcode besonders schnell erstellt oder oft an neue Anforderungen 
angepaßt werden muß.

Insofern geht es um eine Abwägung von Entwicklungszeit zu Laufzeit, und 
wie immer sind die Hintergründe am Ende ökonomische. Mit entsprechendem 
Aufwand an Hardwareressourcen kann ich auch eine Skriptsprache schnell 
machen, und mit entsprechendem Aufwand an Entwicklerressourcen auch in 
kompilierten Sprachen schnell entwickeln. Die Frage ist unterm Strich 
immer, was preiswerter, was effizienter ist: große Hardware oder viele 
Entwickler.

Erschwerend kommt da aber noch ein Aspekt hinzu: mit zunehmender Größe 
des Entwicklungsteams oder der Hardwareressourcen steigen die Aufwände 
für die Koordination und Kommunikation, dementsprechend sinkt die 
Effizienz -- und zwar üblicherweise nicht linear, sondern exponentiell. 
Sinkende Effizienz bedeutet aber wiederum steigende Kosten.

Deswegen werden bestimmte Problemfelder eindeutig die Domäne bestimmter 
Sprachfamilien bleiben, jedenfalls auf absehbare Zeit. Webentwicklung 
zum Beispiel wird auch weiterhin meist mit Skriptsprachen gemacht, 
Embedded-Software überwiegend mit kompilierten Sprachen. In anderen 
Bereichen wie Datenanalyse und -visualisierung und Machine Learning 
werden allerdings heute schon beide Sprachfamilien eingesetzt. Zum Teil 
verschwimmen die Grenzen auch, weil neue Tools verfügbar werden -- so 
gibt es mittlerweile Embedded-Geräte, die in Micropython programmiert 
werden können, und weil Compiler wie nuitka, der Python in C++ 
übersetzen und so zumindest einen Teil der Laufzeitnachteile egalisieren 
kann.

> Die von Dir behaupteten inhärenten Stärken von Script-
> sprachen gelten daher immer nur für bestimmte Klassen
> von Menschen mit bestimmten Fähigkeiten und Vorkenntnissen.

Nein, eben nicht. Bestimmte Sprachen und Sprachfamilien haben bestimmte 
Stärken und bestimmte Schwächen, genau wie andere Werkzeuge auch. Einen 
etwas älteren Artikel aus Dr. Dobbs dazu findest Du hier: [1]. Ja, es 
gibt Gründe, warum man mit klassischem ASP (das leider die einzige 
halbwegs echte Skriptsprache in diesem Vergleich ist) und VB (das 
ebenfalls einige Eigenschaften von Skriptsprachen hat) deutlich 
schneller entwickeln kann, als mit Java, C++, C und C#. Wobei mich das 
schlechte Abschneiden von C# ein wenig verwundert, aber ok, der Artikel 
ist schon alt und seine wahren Stärken spielt C# wohl erst mit dem 
.NET-Framework aus, das damals noch ziemlich in den Kinderschuhen 
steckte.

All das hat zunächst nichts mit Menschen, ihren Fähigkeiten oder ihren 
Kenntnissen zu tun. Zwar wird ein Entwickler, der eine Sprache besser 
beherrscht als eine andere, in der besser beherrschten Sprache schneller 
zum Ziel kommen als mit der anderen Sprache. Aber ein solcher Vergleich 
würde nichts über die beiden Sprachen, sondern höchstens über die Skills 
des Entwicklers in diesen Sprachen aussagen. Um die Vor- und Nachteile 
bestimmter Sprachfamilien zu beleuchten, ist das ziemlich irrelevant.

> Deine Argumentation läuft darauf hinaus, dass Englisch
> "inhärent besser" als Russisch ist, weil die mittlere
> Wortlänge im Englischen kleiner ist als im Russischen
> (das ist tatsächlich so).
>
> Du hast keine Vorstellung, warum das ein in Russland
> aufgewachsener Dichter mit Muttersprache Russisch
> anders sieht?

Englisch und Russisch sind Sprachen, die der Kommunikation unter 
Menschen dienen. Im Gegensatz zu Programmiersprachen sind die 
natürlichen Sprachen im Allgemeinen viel weniger formalisiert und sind 
schon deswegen weniger gut für die Mensch-Maschine-Kommunikation 
geeignet. Wenn es nicht so wäre, könnten wir unsere Computer nämlich per 
Freitext in unserer Muttersprache programmieren.

Aber Menschen haben Intuition, Kreativität, und Fantasie, und sie sind 
im Gegensatz zu Computern fehlertolerant. Wenn Du Dir alleine mal 
anschauen magst, wie kompliziert phonetische Suchen mit Algorithmen wie 
Soundex-, Metaphone- oder Beider-Morse-Algorithmen sind, oder wie 
rechenaufwändig Wortabstände nach Levenshtein oder Damerau-Levenshtein 
berechnet werden, und das einmal kurz damit vergleichst, wie 
selbstverständlich wir beide über Tipp- und andere Fehler hinweglesen -- 
oft bemerken wir sie nicht einmal, weil unser Gehirn den Fehler schon 
korrigiert hat, bevor er im Gehirn angekommen ist -- dann bekommst Du 
eine grobe Idee, wie dämlich Computer im Vergleich zu einem menschlichen 
Gehirn sind.

Man kann auch kaum sagen, daß eine natürliche Sprache in irgendeinem 
Punkt "besser" oder "schlechter" wäre, sondern nur, daß man eine Sprache 
besser und die andere schlechter beherrscht. Dasselbe kann man natürlich 
auch über Programmiersprachen sagen, aber dann gibt es ja noch einen 
Dritten, einen ziemlichen Dummbeutel, der die Sprache verstehen muß: 
nämlich den Computer. Deswegen sind -- das hatte ich ja oben schon 
angedeutet -- die meisten Programmiersprachen in ihren fundamentalen 
Konzepten relativ ähnlich: Bedingungen und Schleifen in Java 
unterscheiden sich nicht wesentlich von denen in Python, C++ oder C#.

Die Unterschiede von Programmiersprachen liegen daher insbesondere 
darin, wann der Quellcode in Maschinencode übersetzt wird: in einem 
separaten Kompilationsschritt wie in kompilierten Sprachen, bei welchem 
dann auch Vorberechnungen ausgeführt, Typen überprüft und auch sehr 
umfangreiche Optimierungen durchgeführt werden können, oder eben zur 
Laufzeit, wo einige dieser Schritte nur mit großen Einschränkungen 
gemacht werden können. All das sind aber rein technische Aspekte, haben 
mit Menschen und ihren Fähigkeiten nichts zu tun, und können daher ohne 
irgendeinen Bezug auf Menschen und ihre Fähigkeiten diskutiert werden.

[1] 
http://www.drdobbs.com/jvm/the-comparative-productivity-of-programm/240005881

von Personalvorstand a.D. (Gast)


Lesenswert?

Sheeva P. schrieb:
> renommierte Indizes wie TIOBE, RedMonk und PYPL
BRUAHAHAHA!

Der aussagenlose Müll von Tiobe (die anderen sagen mir nix, vermutlich 
noch schlimmer), solche Rankings und vor allem die Weissagungen die 
daraus gezogen werden sind fast ausnahmslos für die Tonne. Mein 
Morgenschissbild im Email ist vermutlich aussagekräftiger als diese 
Indices. Die Wurst lag gekrümt in der Schüssel, also ist C der Favorit.

von knallbär (Gast)


Lesenswert?

Sheeva P. schrieb:
> knallbär schrieb:
>> Hast du schonmal mit Matlab debugged? (Auch eine Skriptsprache, aber
>> properitär)
>
> Nein, habe ich nicht. Aber Ausnahmen bestätigen bekanntlich die [...]

Nun du wirst es nicht bemerkt haben, aber ich bin in dieser Diskussion 
ganz auf deiner Seite :)

von knallbär (Gast)


Lesenswert?

Sheeva P. schrieb:
> Possetitjel schrieb:
>> Sheeva P. schrieb:
>>> die inhärenten Stärken von Skriptsprachen
>>
>> Programmiersprachen sind ein Hilfmittel für MENSCHEN,
>> nicht für Computer.
>
>
> Deswegen kann man generell sagen, daß Programmiersprachen, die in
> nativen Maschinencode kompiliert werden, [...]
>
> Interpretierte Sprachen -- also: Skriptsprachen -- sind [...]

Der Beitrag trifft es genau.

Danke für die Mühe.

von Arc N. (arc)


Lesenswert?

Sheeva P. schrieb:
>> Der Computer ist mit Brainfuck genauso zufrieden.
>
> Das ist natürlich richtig, aber gerade dieses Beispiel zeigt, daß die
> verschiedenen Sprachen jeweils ihre eigenen Vorzüge und eben auch ihre
> eigenen Nachteile haben. Brainfuck, zum Beispiel, hat ein extrem simples
> Sprachkonzept und ist gut geeignet, die Grundlagen der Computertechnik
> zu erlernen. Andererseits ist es umständlich und ineffizient zu
> benutzen, weswegen niemand diese Sprache ernsthaft in der Praxis
> einsetzt.

Oder (typisiertes) Lambda-Kalkül scnr ;)

> Die Unterschiede von Programmiersprachen liegen daher insbesondere
> darin, wann der Quellcode in Maschinencode übersetzt wird: in einem
> separaten Kompilationsschritt wie in kompilierten Sprachen, bei welchem
> dann auch Vorberechnungen ausgeführt, Typen überprüft und auch sehr
> umfangreiche Optimierungen durchgeführt werden können, oder eben zur
> Laufzeit, wo einige dieser Schritte nur mit großen Einschränkungen
> gemacht werden können.

Das ist eher der Unterschied zw. dynamisch und statisch typisierten 
Sprachen. Letztlich eine Design-Entscheidung, die unabhängig davon ist, 
ob das nachher interpretiert/JITed wird oder nicht.
Siehe bspw. die ganzen REPLs (Read-Evaluate-Print-Loops) für u.a. C++ 
1), C# 2), F# 3) mit denen die Code-Entwicklung wie bei Skriptsprachen 
läuft.
Andersherum ging's auch mal vor langer Zeit: StrongTalk, ein Smalltalk 
mit statischer Typisierung (irgendwann Ende der 1990er von Sun gekauft, 
getötet und in Java/JVM verwurstet). Mypy wäre sowas für Python.
Die "Umständlichkeit" (viel zu Tippen, Lesbarkeit) einiger statisch 
typisierter Sprachen liegt u.a. auch daran, dass sie keine Typinferenz 
kennen (C z.B.) im Gegensatz zu C++ ab C++11, C# ab V3, F#, ML, Swift, 
Scala, Haskell oder Rust.

1) Cling 
https://cdn.rawgit.com/root-project/cling/master/www/index.html, 
C++-Interpreter, der, wie der Name schon andeutet, auf Clang und LLVM 
basiert
2) C# Interactive ab afair VS2015, gibt's auch in Mono
3) F# Interactive ab afair 2005, ebenso in Mono

von Klaus (Gast)


Lesenswert?

Manchmal frage ich mich warum manche Fragen so eine lange Diskusion um 
das falsche Thema nach sich ziehen.

Ich benutze nun WxWidgets also C++.

Bis auf die XY Darstellung geht auch schon alles.

VG, Klaus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.