Welche Programmiersprache ist wofür am besten (Java, C/++/#, Python)? Bezogen auf C und C++: Würdet ihr überhaupt raten damit zu beginnen oder seht ihr diese als Zeitverschwendung an? Habe mit C begonnen.
Welche Programmiersprache ist wofür am besten (Java,C/++/#, Python)?
Alle Sprachen sind Multiple-Purpose… die Frage ist also eher andersrum zu stellen: Welche Sprache schränkt mich wo ein?
Python ist grottenlahm, hat aber eine schicke Syntax. Als einzige hier genannte Sprache hier ist sie nicht statisch typgebunden. Das ist, was die schicke Syntax ausmacht: Wo weniger Information, da behindert auch nicht soviel die Übersicht. Damit disqualifiziert sich Python allerdings im professionellen Umfeld, da auch der Interpreter jetzt viel interpretieren kann, was die Sprache zum einen langsam, zum anderen unzuverlässig macht. Hier gehen Meinungen auseinander, aber ich habe auch kein Problem damit, Leute, die dynmische Typisierung als gut bezeichnen ebenfalls nicht als Professionelle anzusehen. Jeder, der etwas professionell macht, hat in der Regel mindestens ein Sicherungsseil.
Java und C# sind als Sprachen sauberer als C++, aber auch in der Semantik nicht so stark. Ich vergleiche das gerne mit einer Schaufel: Damit kann man alles machen, das Konzept einer Schaufel ist leicht zu lernen, aber wenn ich einen Keller ausheben will, dann nehme ich einen Bagger. Da gibt's ein Handbuch zu und man muss Diesel statt Benzin tanken, sonst funktioniert es nicht und die Kabine wurde seit dem letzten Einsatz auch nicht ausgefegt. Aber mit Bagger bekommt man den Keller ausgehoben, mit der Schaufel bricht zwischendrin die Schaufel und der Keller ist am Ende doch was improvisierter, weil man irgendwann auch keinen Bock mehr hat. Java und C# begeistern durch ihre Frameworks. Die Sprachen begeistern nicht durch ihre Sprache, sondern sind quasi nur die Schalthebel um die Frameworks so konfigurieren zu können, dass sie das tun, was man gerne hätte. Manche beschreiben das als den modernen Weg der Programmierung.
C ist einfach. Das ist der grundlegende Vorteil von C. Man kann alles damit machen, man kann damit auch Baggern, aber der Bagger wird halt in Einzelteilen geliefert. C++ bringt den Bagger mit und ist dabei teilweise sogar schneller als C, weil der Compilerbauer besser über die Bedeutung des Codes informiert werden kann, also auch besser optimieren kann.
C++ ist quasi das dreckigste Werkzeug von allen. Es ist am ältesten, es ist schon zig mal überarbeitet worden, nicht alles lässt sich mit Logik erklären, manches ist eher traditionell und für manches ist selbst das ein Euphemismus, aber es ist ein kompromisloses Arbeitstier. Es ist die schnellste der genannten Sprachen. Es ist die Sprache, die die brachialste Gewalt auslösen kann, aber gleichzeitig kannst Du dich in Details vertiefen, die in den anderen Sprachen so gar nicht denkbar sind. Du bekommst einen gigantischen Schaufelradbagger, den Du so fein kontrollieren kannst, dass Du die Präzision für eine archäologische Ausgrabung erreichst. Aber um das zu kontrollieren, reicht es nicht eine Library-Funktion zu rufen. Plötzlich ist nicht mehr alles eine Liste oder ArrayList, sondern es gibt unterschiedliche Arraytypen und Vektoren und Listen in unterschiedlichsten Geschmacksrichtungen. Und was da eine Referenz ist, hat jetzt zwei oder drei Dutzend Nuancen, die alle Vor- und Nachteile haben können.
Bezogen auf C und C++: Würdet ihr überhaupt raten damit zu beginnen, oder seht ihr diese als Zeitverschwendung an? Habe mit C begonnen.
Sagen wir mal so… ich verdiene mein Geld als C++-Entwickler und gelegentlich auch etwas Python. Ich war mal Java und C# Entwickler und vermeide beide Sprachen. Bei Python klappt das derzeit nicht ganz so gut. Ich programmiere auch privat und da kann ich mir das alles so aussuchen, wie mir das Spaß macht. Da kommen Python, Java und C# nicht vor, aber sehr viel C++.
Die Frage ist eher, was möchtest Du erreichen. Ich programmiere >25 Jahre C++, ich würde mich als ambitionierten Fortgeschrittenen sehen. Vor 15 Jahren reichte das, um den Java-Code von professionellen Java-Entwicklern zu debuggen. Und nebenher ohne relevante Java Erfahrung - einem Java-Entwickler den Job wegzunehmen, obwohl der billiger gewesen wäre. Der Projektleiter meinte später mal zu mir auf die Frage, warum man sich für mich entschieden hätte "C++-Entwickler wissen, was sie tun."
Wenn Du Experte werden willst, bist Du mit Python, Java oder C# schneller am Ziel. Bjarne Stroustrup beschrieb seine C++-Expertise mal auf einer Skala von 0 bis 10 bei 7. Er hat's erfunden. Als C++-Entwickler sollte man also vielleicht ein anderes Mindset mitbringen. Man wird nie der Experte sein. Ich sehe das als Vorteil. Ich sehe auf jeder Konferenz, was andere mit C++ machen können, woran ich noch gar nicht gedacht habe, dass man das programmieren kann. Die Chance, dass C++ meine Kreativität ausbremst, scheint sich also in Grenzen zu halten. Früher habe ich Sprachen gewechselt, weil meine Projekte über die Möglichkeiten der Sprachen hinauswuchsen.
Ich habe vor 25 Jahren mit C++ angefangen und musste bisher nicht mehr wechseln. Ich lerne gelegentlich neue Sprachen, um mich inspirieren zu lassen. Darunter auch ~2000 Java, eine Sprache, die ich mir habe beibringen lassen, weil es damals der neue heiße Scheiß war. (Antwort von Sascha Atrops auf Wie kam Java bei C++-Entwicklern an, als es zum ersten Mal veröffentlicht wurde?)
Bei machen Trends habe ich teils Jahre gebraucht, zu verstehen, dass ich die Magie, die die neue Sprache so besonders macht, nicht finde, weil ich zu blöd bin, sondern C++ das Konzept seit dutzenden Jahren unter einem anderen Namen anbietet. Es gibt also nix Neues zu entdecken. Es steht dort aber in Konkurrenz zu anderen Konzepten steht und daher eben nicht immer die eine geniale Antwort auf alle Fragen ist… weil es halt auch andere Antworten gibt. Genauso wie OOP in Java immer die richtige Antwort ist, egal welche Frage gestellt wurde. Notfalls muss man halt das Problem auf die Fähigkeiten der Sprache anpassen - und das ist bei C++ eben nicht so. C++ kann man deutlich vielseitiger auf das Problem anpassen, was man eigentlich lösen möchte.
Gewechselt habe ich seitdem nicht mehr, sondern lebe davon. War wohl keine Zeitverschwendung. :-)