welche programmiersprache für Programme benutzen?
-
Die Frage ist zu allgemein. Aber ja, wenn du wirklich schöne Benutzeroberflächen bauen willst (und mehr nicht), dann würde ich dir zu XAML mit WPF raten :p
-
shisha schrieb:
also meine erfahrungen zu gui:
c++ + qt = sehr schöne kombi
java + swing = sehr schön
Java + SWT = auch schön, natives Design, Viele Internet-Programme.
Noch ein Vorteil von Java: Eclipse! :p
shisha schrieb:
.NET boykottiere ich !
Warum?
BTW: Was ist mit JavaScript?
-
wxSkip schrieb:
Java + SWT = auch schön, natives Design, Viele Internet-Programme.
Glaubt ihr das eigentlich? Die Userinterfaces sind in jedem OS anders. Das gleiche Interface für mehrere Betriebsystem ist einfach sinnlos und hässlich. Ich gehe so Programmen immer aus dem Weg. Gute Programme wie Transmission haben die core engine in einer Sprache und dann verschiedenen Guis darauf die verschiedene Sprachen nutzen für die verschiedenen System (gtk/cocoa/web).
Ich würde nehmen:
Linux: Zeitkritisches in C Gui in Python oder Ruby.
Windows: c# wpf
Mac OS X: objective-c mit cocoaBTW: Was ist mit JavaScript?
Das Problem ist das es von Programmen und nicht Webseiten spricht. Für den Desktop gibt es nicht wirklich sinnvolle Frameworks.
-
IPH schrieb:
wxSkip schrieb:
Java + SWT = auch schön, natives Design, Viele Internet-Programme.
Glaubt ihr das eigentlich? Die Userinterfaces sind in jedem OS anders. Das gleiche Interface für mehrere Betriebsystem ist einfach sinnlos und hässlich. Ich gehe so Programmen immer aus dem Weg. Gute Programme wie Transmission haben die core engine in einer Sprache und dann verschiedenen Guis darauf die verschiedene Sprachen nutzen für die verschiedenen System (gtk/cocoa/web).
Ich würde nehmen:
Linux: Zeitkritisches in C Gui in Python oder Ruby.
Windows: c# wpf
Mac OS X: objective-c mit cocoaSWT ist ja nativ, du hast vielleicht ein paar Möglichkeiten weniger als wenn du ein speziell zugeschnittenes plattformabhängiges Toolkit nimmst. (SWT musst du halt für jedes OS neu ausliefern, weil es nicht wie Swing bei der JRE dabei ist)
-
HTML5/CSS/JavaScript
-
asdafh89zgfasfi schrieb:
HTML5/CSS/JavaScript
IPH schrieb:
wxSkip schrieb:
BTW: Was ist mit JavaScript?
Das Problem ist das es von Programmen und nicht Webseiten spricht. Für den Desktop gibt es nicht wirklich sinnvolle Frameworks.
-
wxSkip schrieb:
asdafh89zgfasfi schrieb:
HTML5/CSS/JavaScript
IPH schrieb:
wxSkip schrieb:
BTW: Was ist mit JavaScript?
Das Problem ist das es von Programmen und nicht Webseiten spricht. Für den Desktop gibt es nicht wirklich sinnvolle Frameworks.
Im Ausgangsposting steht was von graphischen Programmen. Wie kommst du darauf dass sich das auf Desktop Software beschränkt? Oder inwiefern sind Web Applikationen keine Programme???
-
asdafh89zgfasfi schrieb:
Im Ausgangsposting steht was von graphischen Programmen. Wie kommst du darauf dass sich das auf Desktop Software beschränkt? Oder inwiefern sind Web Applikationen keine Programme???
War ja nich meine Idee. Aber ungesehen dessen wird der TO wohl eher weniger Unterstützung für HTML5 finden, da es noch in der Entwicklung ist und jeder Browser andere Features implementiert.
-
toilettenpapier schrieb:
In wo?
Es heißt worin.
Fragewörter sterben leider auch aus.Ich versuche mal eine halbwegs objektive Zusammenfassung zu geben:
C ist eine maschinennahe und sehr einfache Sprache mit sehr einfacher Syntax. Schon nach einer Woche kannst du auf praktisch beliebigen C-Code sehen und weißt was dort passiert. Nicht was es bedeutet, aber was es tut. C überlässt es dir deinen Code zu strukturieren und du musst dich generell um alles selbst kümmern, sehr effizient aber umständlich.
C++ ist eine Erweiterung von C. C++ hilft dir deinen Code zu organisieren. Du kannst immernoch C-Code schreiben, aber zusätzlich unterstützt es Klassen und Vererbung. In C musst du Vererbung selbst organisieren, in C++ gibt es vorgefertigte Ausdrücke um es zu machen. Gleichzeitig geht aber damit auch Übersicht verloren. "i++;" ist ein Ausdruck der in C bedeutet, dass i um eins hochgezählt wird. In C++ er auch k um 1 verringern. Oder ein Fenster aufmachen. Oder sonst irgendwas tun. Und um das herauszufinden musst du eventuell viele Klassen und Elternklassen durchsuchen. C++ funktioniert mehr nach dem Prinzip "du musst es nicht verstehen, es reicht wenn du es benutzen kannst".
Java ist "objektorientiert". Das heißt im Prinzip "alles ist ein Objekt" und du musst für alles Klassen und Methoden schreiben. Damit zwingt es dich deinen Code zu organisieren. Während man in C und C++ allen möglichen Blödsinn schreiben kann, gibt es in Java weniger Möglichkeiten dazu. Java kümmert sich um deinen Speicher, weniger effizient als du es könntest, aber schon nett. Ich mag Java allerdings nicht, denn die Vereinfachung die man sich durch Performanceverluste erkauft hat, bedeutet nicht weniger Entwicklungsaufwand, sondern mehr.
Python ist so nah an der menschlichen Sprache, dass es kinderleicht ist darin Programme zu schreiben. Du kannst dich voll auf das eigentliche Programm konzentrieren, organisatorischer Krimskrams wie Variablentypen macht Python für dich. In den vorherigen Sprachen hatten zum Beispiel Zahlen (ints) einen gewissen Speicher und damit einen Wertebereich. Wenn dieser überläuft kommt Blödsinn raus. In Python nicht, der Speicher den eine Variable beansprucht wird automatisch angepasst. Diese automatische Anpassung sorgt dafür dass die Operationen immer funktionieren, es macht sie aber auch langsam.
Du solltest dich nicht für eine Sprache entscheiden, sondern dir überlegen worauf du Wert legst. Ausführungsgeschwindigkeit? Entwicklungsgeschwindigkeit? Organisierst du deinen Code selbst oder soll das die Sprache machen? Bist du bereit CPU-Zyklen zu opfern damit du dich nicht um Speicher kümmern musst?
Sollten sich deine Prioritäten irgendwann ändern ist es relativ leicht auf eine andere Srache zu wechseln.
-
nwp2 schrieb:
C++ ist eine Erweiterung von C. C++ hilft dir deinen Code zu organisieren. Du kannst immernoch C-Code schreiben, aber zusätzlich unterstützt es Klassen und Vererbung. In C musst du Vererbung selbst organisieren, in C++ gibt es vorgefertigte Ausdrücke um es zu machen. Gleichzeitig geht aber damit auch Übersicht verloren. "i++;" ist ein Ausdruck der in C bedeutet, dass i um eins hochgezählt wird. In C++ er auch k um 1 verringern. Oder ein Fenster aufmachen. Oder sonst irgendwas tun. Und um das herauszufinden musst du eventuell viele Klassen und Elternklassen durchsuchen. C++ funktioniert mehr nach dem Prinzip "du musst es nicht verstehen, es reicht wenn du es benutzen kannst".
Das tut ja schon beim lesen weh, Autsch...
-
Janjan schrieb:
Das tut ja schon beim lesen weh, Autsch...
Absolut nicht. nwp2 hat nichts falsches geschrieben.
-
Es wurden allgemeine Behauptungen aufgestellt und mit eher Kleinigkeiten untermauert. Von objektiv kann da auch nicht die Rede sein. Natuerlich kann "i++" viel bedeuten, aber: Wenn ich "Buch" sage, dann kann das auch was anderes fuer mich bedeuten (gerade die Bedeutung, die ich ihm gebe). Aber es gibt einen allgemeinen Konsens, was "Buch" in Deutschland bedeutet. Genauso gibt es einen allgemeinen Konsens, was "i++" bedeutet. Es wird kein Fenster aufmachen. Und ich werde auch nicht in der Klassenhierarchie danach suchen. Zu Python: Ich fand es ganz und gar nicht nah an der menschlichen Sprache.
-
nwp2 schrieb:
Bist du bereit CPU-Zyklen zu opfern damit du dich nicht um Speicher kümmern musst?
kommt von jemandem der seinen code mit malloc spickt
nwp2 schrieb:
Schon nach einer Woche kannst du auf praktisch beliebigen C-Code sehen und weißt was dort passiert. Nicht was es bedeutet, aber was es tut.
frag mich was ich hier die ganze zeit im forum mach und mir bei 500 seiten C99 standard immer noch ein paar sachen "unklar" sind.
und um nicht total zum troll zu mutieren kann ich nur den vorschlag machen, ein möglichst schönes framework mit gui-editor zu nehmen da sparst dir ne ganze menge getippe. gui code von hand zu schreiben ist einfach nicht lustig...
lg lolo
-
veritySeeker schrieb:
Janjan schrieb:
Das tut ja schon beim lesen weh, Autsch...
Absolut nicht. nwp2 hat nichts falsches geschrieben.
Bereits der erste Satz zu C++ ist falsch. C++ ist keine Erweiterung von C, sondern eine eigenständige Sprache. Wenn es eine Erweiterung wäre, müsste es ja zum Beispiel rückwärtskompatibel zu C99 sein, ist es aber nicht!
Es ist unteranderem aus C heraus entstanden, dass wäre richtig. Heutzutage ist es aber eine vollständig eigenständige Sprache.Und auch die restliche Argumentation ist ziemlicher Murks. Es wird kein vernünftiger Mensch darauf kommen, dass i++ eine Reduzierung der Variable auslöst. Man kann es zwar machen, aber es tut keiner, weil es einfach nur verwirrend und unlogisch wäre. Also wozu sowas unsinnges aufführen?
Aber naja ... bevor es noch wie in den anderen Threads endet, höre ich besser auf.
nwp2 schrieb:
Du solltest dich nicht für eine Sprache entscheiden, sondern dir überlegen worauf du Wert legst. Ausführungsgeschwindigkeit? Entwicklungsgeschwindigkeit? Organisierst du deinen Code selbst oder soll das die Sprache machen? Bist du bereit CPU-Zyklen zu opfern damit du dich nicht um Speicher kümmern musst?
Sollten sich deine Prioritäten irgendwann ändern ist es relativ leicht auf eine andere Srache zu wechseln.Der erste Satz ist absolut richtig. Aber danach wird es recht sinnlos. Wie willst du die Auführungsgeschwindigkeit bewerten? Wie willst du die Entwicklungsgeschwindigkeit bewerten? Nach welchen Kriterien? Sowas ist vielfach nur sehr schwer definierbar.
Man sollte vielmehr bewerten, in welche Richtung man eigentlich möchte, was einem interessiert. Will man im Low-Level Bereich Programmieren, zum Beispiel Treiberprogrammierung, Betriebsysteme, usw.? Oder vielleicht lieber Business-Software? Vielleicht Monitoringwerkzeuge für einen bestimmten Bereich? Usw. usf.
Auch in diesen Fällen gibt es dann immer noch mehrere Sprachen zur Auswahl, aber man kann es zumindest ein wenig eingrenzen. Zum Beispiel wirst du für die Treiberprogrammierung eher C# nicht verwenden.
Wie man dann aus den noch übrigbleibenden Sprachen aussucht, läuft dann am Ende oft einfach nur auf den Geschmack hinaus.Grüssli
-
Zu C++: Klassen und Vererbung sind zwar das, was man an C++ vielleicht am meisten spürt, aber Prozentual ist das halt trotzdem nicht so viel. Außerdem bringen diese kleinen "Erweiterungen" sehr viel für das Programmieren von Bibliotheken, vergleiche halt mal WinAPI mit einem modernen GUI-Toolkit (auch wenn so was wie wxWidgets auch nicht modernstens programmiert ist).
@Dravere: Ich denke schon, dass man die Ausführungsgeschwindigkeit bewerten kann, deshalb nimmt man ja kein C# für Treiber usw. Bei GUI-Programmen ist der Umfang hingegen relativ groß, von C bis zu den ganzen Skriptsprachen.
-
Wer sich gern an C++ vs. alle anderen beteiligen will, der hat hier im Kommentarbereich wieder gute Chancen: http://www.heise.de/newsticker/meldung/iX-Workshops-mit-C-Guru-Scott-Meyers-979060.html
-
Dravere schrieb:
C++ ist keine Erweiterung von C, sondern eine eigenständige Sprache. Wenn es eine Erweiterung wäre, müsste es ja zum Beispiel rückwärtskompatibel zu C99 sein, ist es aber nicht!
Eine ganz schlechte Begründung.
C++ war bei seiner Geburt ein Spin-Off von C. Daß C inzwischen eigene Wege ging und C++ hinter sich lies (durch C99), heißt nicht, daß man C++ nicht auch als Erweiterung von C ansehen kann. Stroustrup selbst sagte einst während eines Interviews: "C++ is a better C".
-
veritySeeker schrieb:
Daß C inzwischen eigene Wege ging und C++ hinter sich ließ (durch C99)...
Und jetzt versucht C++0x, wieder C99-Konform zu werden.
-
Stroustrup selbst sagte einst während eines Interviews: "C++ is a better C".
Ja und? Ueber Java sagt man, es sei ein besseres C++. Dennoch ist Java keine Erweiterung von C++. Alles Bullshit.
-
Bestes Beispiel das C++ keine Erweiterung von C ist:
int *a = malloc(sizeof(int));
In C legal, in C++ nicht.