welche programmiersprache für Programme benutzen?



  • 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 cocoa

    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.



  • 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 cocoa

    SWT 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


  • Administrator

    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.



  • wxSkip schrieb:

    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).

    Da muss ich massiv widersprechen. Ich bastle an einem größeren Projekt mit der WinAPI, es klappt ziemlich gut. Manchmal muss ich etwas suchen, aber am Ende habe ich immer die entsprechende Funktion gefunden.

    Dann wollte ich es nach Linux portieren. Alles ist gut modularisiert, man muss nur eine handvoll Funktionen finden die ein Fenster aufmachen und Text malen. Ich habe es mit QT versucht und habe es aufgegeben, wegen C++. Man findet nichts. Mein Versuch mit GTK ist daran gescheitert, dass es keine Dokumentation gibt, nur für die C++ Bindings. Ich suche gezielt nach C-Bibliotheken weil die so einfach zu benutzen sind und meide C++ Bibliotheken weil man da überhaupt nicht durchsehen kann.



  • nwp2 schrieb:

    Ich habe es mit QT versucht und habe es aufgegeben, wegen C++.

    Wenn du Qt nicht benutzen kannst, dann solltest du das Programmieren vielleicht ganz sein lassen. Qt ist mit Abstand die am einfachsten zu benutzende Bibliothek mit der besten Dokumentation.

    Tausend mal besser als die ganzen C Bibliotheken mit kryptischen Namen, Void-Zeigern und endlos vielen unnötigen Strukturen.


Anmelden zum Antworten