Hi,
also zu deinen C# Vermutungen kann ich eigentlich nichts sagen, da ich C# selber nicht wirklich kenne. Ich meide C# und .NET allerdings auch, und werde mich damit auch nicht auseinandersetzen, es sei denn ich sollte eines Tages mal wirklich dazu gezwungen werden (und dann wuerde ich erstmal reiflich ueber eine Kuendigung nachdenken).
Denn .NET wird schliesslich exklusiv fuer Windows entwickelt. Natuerlich weiss ich dass es Mono gibt, aber das aendert nichts daran dass das Original allein fuer Windows entwickelt wird. Und ich mag keine Sprachen die mich an eine Plattform binden.
Deine gegebenen Anforderungen geben keinen Grund zum Anlass dass du unbedingt C++ benutzen musst. Programm nr. 1 wuerde ich wahrscheinlich in Perl oder Python schreiben, Programm nr. 2 in Java, Perl oder Python. Was du konkret benutzt ist auch immer Geschmacksfrage. Wenn viel Textmanipulation noetig ist, nehme ich gerne Perl, aber ich habe noch nie mit GUIs in Perl gearbeitet.
Ich an deiner Stelle wuerde dafuer jedenfalls auf keinen Fall C++ benutzen, es sei denn du willst dir das Leben unnoetig schwer machen.
Ach ja, noch eine Anmerkung zur "guten Performance". "Gute Performance" erreichst du heutzutage mit so ziemlich jeder Sprache, selbst interpretierte Sprachen sind fuer die allermeisten Dinge schnell genug. Anders sieht die Sache aus, wenn du sehr viele spezielle Berechnungen durchfuehren musst, z.B. wenn du eine Simulation mit vielen grossen Matrizen schreibst. Da mag der Einsatz von C oder C++ sinnvoll sein, wobei ich dafuer vielleicht lieber Matlab nehmen wuerde. Matlab ist kompiliert auch ziemlich performant.
ncurses scheint Anbindungen zu den gaengigsten Sprachen zu haben, laut Wikipedia u.a. Python, Ruby, php, Lisp, ...
Stimmt es, dass die in C++ geschriebenen Programme die beste Performance haben?
C++ gibt es schon ziemlich lange und entsprechend gut sind die heutigen Compiler. Die meisten anderen populaeren Sprachen sind byte-kompiliert oder interpretiert, und auch wenn dort im Performance Bereich immer groessere Fortschritte gemacht werden, ist kompilierter Code immer noch einen Tick schneller, ja.
Ist es nicht sinnvoll, gleich C++ zu lernen, da es Zukunftsicher ist?
Jetzt wird es mystisch.
Der Trend geht heutzutage eher dahin dem Programmierer die Arbeit zu erleichtern. Computer werden immer schneller und leistungsfaehiger, aber deswegen koennen Programmierer nicht ploetzlich schneller programmieren, d.h. Firmen steigern lieber die Produktivitaet der Programmierer, und nehmen dafuer minimale Leistungseinbussen bei der Programmgeschwindigkeit in Kauf. Monetaer ist das ein "no-brainer".
Dementsprechend wird C++ in Zukunft wahrscheinlich immer weiter an Bedeutung verlieren.
Allerdings glaube ich auch, dass C++ die naechsten 50 Jahre weiterhin einen festen Platz im Computerbereich haben wird. Erstens schon allein wegen dem ganzen legacy code. Zweitens weil C++ fuer maschinennahe Programmierung nach wie vor eine gute Wahl ist.
Deswegen kann ich eigentlich nur nochmal wiederholen was ich weiter oben schonmal gesagt habe: Fuer fast alle Anwendungsprogramme ist C++ die falsche Sprache, aber im maschinennahen Bereich ist es zusammen mit C immer noch die Nummer 1.
Es gibt ja noch C. Was ist der Unterschied zwischen C und C++? Kann man auch unter Windows mit C programmieren?
Der Hauptunterschied ist, wie Supervisor schon sagte, dass C++ objektorientiertes Programmieren unterstuetzt, und C nicht. Syntaktisch sind sich beide Sprachen sehr aehnlich weil C++ auf C aufbaut, aber von der dahinterstehenden Logik her sind das zwei voellig verschiedene Welten.
Ja, die Win32 API ist reines C, aber ich kenne eigentlich niemanden der noch Programme fuer Windows in reinem C schreibt.
Edit:
2. Hm, zumindest zukunftssicherer als c#, und es ist sicher nie falsch, c++ zu lernen
Ah, Moment, da moechte ich doch nochmal kurz widersprechen. Meiner Meinung nach kann es falsch sein C++ zu lernen. Naemlich dann, wenn der Lernende vorher noch keine Erfahrung mit gutem OO Design hat.
Ich muss im Augenblick fuer die Uni ein Programm weiterentwickeln, das jemand anderes in Java geschrieben hat. Allerdings hatte der gute Mensch vorher nur in C++ programmiert und so sah dann auch sein Java Code aus. Ich habe ziemlich lange gebraucht um das Design zu begreifen, erst als ich mich mit dem urspruenglichen Entwickler getroffen hab und er sagte, dass er damals einige elementare Java Features noch nicht kannte, ging mir ein Licht auf. Da stehen zum Beispiel so tolle Sachen drin wie abstrakte Klassen ohne Implementierung, und andere voellig sinnfreie Dinge. Klar, so macht man das in C++, schliesslich kennt C++ keine Interfaces.
mfg,
bytepool