Welche Programmiersprache ist ideal?

...komplette Frage anzeigen

6 Antworten

Ob Du es glaubst, oder nicht: auch wenn die meisten Entwickler sich für fortschrittlich und informiert halten, ist es in den meisten Fällen die erste Sprache, die sie gelernt haben, die sie empfehlen würden.
Sie sind also i.A. viel konservativer und voreingenommener als sie selbst zugeben.

Daher sind Antworten auf solche Fragen immer mit Vorsiht zu geniessen.

Ich würde - ganz unabhängig davon, was jemand mal später machen will, immer empfehlen, zu jedem der grundlegenden Paradigmen eine Sprache zu lernen, die dieses konsequent und in Reinstform umsetzt. Damit hat man mal über den Tellerrand geschaut, und es wird Dir im späteren Leben helfen, auch wenn Du dann nicht in diesen Sprachen unterwegs sein wirst. Das Denken wird vom Wissen der Möglichkeiten geprägt. Und: für einen Hammer sieht alles nach Nagel aus; wer nie ein anderes Werkzeug gesehen hat, weiss nicht, was alles möglich ist.

Soviel zur Vorrede; nun ein paar konkrete Empfehlungen:

1) funktionales Programmieren: Scheme, Haskell oder ML (Caml)
2) objektorientiert: Smalltalk, Python oder Ruby
3) metaprogramming: Smalltalk
3) deklarativ: Prolog, CHR, Constraint Programming
3) Low-Level: C, C++

Eine interessante Sprache, die mehrere Paradigmen unterstützt ist OZ/Mozart.

Meine persönliche Erfahrung: wer sich schonmal mit den obigen Sprachen befasst hat, ist spätr auch ein besserer Java, C++, C# usw. Programmierer. Wer nicht, bleibt oft sein Leben lang ein Bastler, der glaubt, ein besserer Compiler würde einen schlechteren Algrithmus kompensieren...

Ob Du es glaubst, oder nicht: auch wenn die meisten Entwickler sich für fortschrittlich und informiert halten, ist es in den meisten Fällen die erste Sprache, die sie gelernt haben, die sie empfehlen würden


Bei mir war das nicht so. Ich hab erst (GW)BASIC gelernt, weil es im Betriebssystem mit drin war.

Aber begeistert vom Programmieren war ich erst, als ich C kennengelernt hab. Es war ein Umstieg wie vom Dreirad aufs Fahrrad. Denn was erst als Erleichterung gedacht war, entpuppt sich bald als Behinderung.

Das Geniale an C ist seine Durchgängigkeit (Regeln,aber kaum Ausnahmen) und seine Transparenz. Ich hab dann auch Assembler gelernt, und kann fast immer vorhersehen, welchen Code der Compiler in etwa machen wird.

Diese Transparenz geht mit C++ wieder verloren, und ich denke, dass das auch der Grund ist, warum in Linux Kernel und Module immer noch in C und nicht in C++ geschrieben werden. 

Objektorientiert kann man auch in purem C und sogar in Assembler schreiben, wenn man verstanden hat, was Strukturen sind. Sogenannte objektorientierte Sprachen machen das nur einfacher, was besonders bei größeren Projekten von Vorteil ist. 

2
@Machtnix53

Nun ja, ich bin selbst seit vielen Jahren in diversen Sprachen unterwegs, und kenne alles von Assembler bis zu Smalltalk (habe von Echtzeitbetriebssystemen, Treibern, Compilern, Widgetlibraries bis hin zu Aktienhandelssystemen, Webserver und IDEs so ziemlich alles entwickelt).

Mein Fazit: Jeder Sprache ihr Einsatzgebiet. Klar kann man OO auch in Assembler/C implementieren (und mit entsprechenden Macros sogar durchaus lesbar machen), aber in der Praxis kommen da noch andere Aspekte ins Spiel: zuallererst die automatische Speicherverwaltung, dann Closures (Lambdas), Metaprogramming und nicht zu vergessen: eine mächtige IDE, die es erlaubt, im Debugger zu programmieren (also uneingeschränkt Änderung im laufenden Programm zu machen).

Komplexe Programme sind ab einer gewissen Größe (und insbes. wenn mehrere Programmierer zusammenarbeiten) schlicht nicht mehr vernünftig zu managen. Insbesondere bei C/C++ gab es in allen Projekten in denen ich in den vergangenen Jahrzehnten unterwegs war immer Speicherprobleme (memory leaks). Wie schwer das ist sehe ich täglich in meinem firefox ;-(

0

Ideal kann eine Programmiersprache allein für sich nicht sein. Sie kann nur ideal sein für ein bestimmtes Projekt (bzw. für das Erstellen von Anwendung einer bestimmten Charakteristik).

Zudem solltest du wissen:

Java und (das davon nicht wesentlich verschiedene C#) arbeiten auf einer ganz anderen Abstraktionsebene als alle Sprachen, die es vor ihnen gab. Es gibt da i.W. zwei Unterschiede, die zählen:

  • Wenn in einem erstellten Programm Fehler auftreten, muss man nach ihrer Ursache suchen. Bei Verwendung von Java oder C# wird man jene Ursache sehr viel schneller finden als bei Verwendung irgend einer der älteren Programmiersprachen.
  • Die mit Java oder C# kommenden Code-Bibliotheken sind sehr viel umfangreicher und nützlicher als jene, die mit anderen Sprachen kamen. Dies hat zur Folge, dass sehr viel Code für immer wieder benötigte Hilfsfunktionalität heute - ganz anders als früher - nicht ständig neu geschrieben werden muss. [ Unter Hilfsfunktionalität in diesem Sinne verstehe ich Funktionalität, die nicht anwendungsspezifisch ist. ]

Zu bedenken ist aber auch:

Wenn deine Anwendung vor allem Text zu analysieren (oder neu zu generieren) hat, wird dir das mit Hilfe von C/C++ (bzw. einem kleinen Subset von C++, das kaum umfangreicher als C sein muss) sehr viel besser gelingen als mit Hilfe von Java oder C#. Das liegt einfach daran, dass man mit C/C++ sehr viel direkteren Zugriff auf den virtuellen Speicher hat als mit Java oder C#.

Perfekt aufgestellt scheint mir heute jemand, der mit C/C++, Java (und/oder C#), aber auch JavaScript gleichermaßen gut umgehen kann.

Zur GUI-Programmierung würde ich heute - wo immer möglich - nur noch HTML5, CSS und JavaScript verwenden. Die klassischen Plattformen für GUI-Programmierung haben keine Zukunft mehr.

C++ ist die Sprache für eine gute Kombination aus Performance (schnelle Anwendungen dank gut optimierten Maschinencode), mächtigen Sprach-Elementen (zügige Resultate mit sauberem Programm-Code), großer Community (viele Hilfen & Bibliotheken) und Akzeptanz (gerne bei Unternehmen und zukunftstauglich).

Desweitern bietet sich unter den Skriptsprachen Python an, dessen leichte Erlernbarkeit und große Unterstützung sie immer beliebter auch in Industrie und Wissenschaft macht.

C# und Java haben sich über die letzten Jahre zwar gesteigert was neben leichten Spracherweiterungen und Compiler-Optimierungen auch dessen weiteren Nutzen bei vielen Unternehmen erklärt, haben jedoch auch ihre deutlichen Nachteile mit Plattformabhängigkeit, Low-Level Beschränkungen und Langsamkeit in einigen Bereichen.

Für Web-Entwicklung ist HTML (Layout & Inhalt) & CSS (Styling) ein Muss, allerdings wird Dynamik und Generierung durch Skriptsprachen (clientseitig: Javascript; serverseitig: PHP, Python, Ruby, ...) auch fast immer erwartet.

Dazu sei noch zu erwähnen, dass eine Sprache nicht gleich grafische Oberflächen, Audio-Ausgabe, extrem hohe Performance usw. unterstützt, es sind auch massig andere Dinge zu lernen nebenbei. Geld verdient sich schlecht mit Grundlagen-Wissen in dieser Branche, gehe lieber andernweits jobben, denn deine Formulierung der Frage lässt mich bereits auf einige Lücken schließen.

Für *.exe eindeutig C++ (vllt. auch zusätzlich C). Für Online reichen Kenntnisse in HTML, CSS und Php.

C++, C# + Silverlight, HTML und XML Kenntnisse vorteilhaft (z.B. für Webservices)

C++ oder C# würde ich lernen.

Was möchtest Du wissen?