andy_m4 schrieb:
Das gilt aber nur für grundlegende Konzepte (und selbst da stimmt es nur zum Teil).
Das Know-How erstreckt sich nicht nur auf die Programmiersprache, sondern auch auf die verwendeten Bibliotheken und Frameworks. Hier steckt oft der meiste Lernaufwand drin.
In der Berufspraxis lerne ich jede Woche ein Anderes Framework kennen und nutze täglich abertausende von Bibliotheken. Man kann das unmöglich alles lernen und auch noch dran bleiben. Die verändern sich ja auch ständig. Nach einem Jahr hat sich ein Framework oft soweit weiterentwickelt, dass man im Grunde Alles neu lernen muss. Statt zu versuchen alles zu verinnerlichen, sollte man besser lernen mit der Dokumentation zu arbeiten. Habe ich ein neues mir bisher unbekanntes oder ein weiterentwickeltes Framework vor mir interessieren mich die Grundkonzepte und am aller wichtigsten die API-Dokumentation und eventuell schaue ich mir ein Paar Beispiele an. Bei der Anwendung schlage ich in der Dokumentation nach wie ich die einzelnen Komponenten, Schnittstellen, Klassen und Datentypen zu verwenden habe. Programmieren ist immer auch eine Arbeit mit der Dokumentation, man macht nicht Alles aus dem Kopf heraus.
andy_m4 schrieb:
Versuch die Aussage mal auf Smalltalk, Lisp und Prolog anzuwenden. :-)
Diese Exoten sind in der Praxis für mich jedenfalls noch nie relevant gewesen. Heutzutage sind die am weitesten verbreiteten vor Allem C# und Java. Das sind so die größten Platzhirsche. Damit beschäftigt sich ein Softwareentwickler heutzutage zu 80-90% bei der Entwicklungsarbeit. Von Scriptsprachen vor Allem javascript, nicht nur in der Webentwicklung. Auch kommen relativ oft zum Einsatz groovy, ruby, python. Alles Andere sind eher Exoten und kommen nur ganz selten in bestimmten Nischenbereichen zum Einsatz.
andy_m4 schrieb:
Das Problem ist: Zwischen grundlegend können und beherrschen gibt es einen Unterschied. Der sich dann auch in der Qualität der Software bemerkbar macht.
Vor Allem die Methodik und automatisierte Tests machen die Qualität. Wie gesagt in der Praxis habe ich fast jeden Tag mit einer neuen Technologie zutun. Die Qualität muss trotzdem stimmen, da kommt man nicht drum herum testgetrieben und mit der Dokumentation zu arbeiten, dann stimmt auch die Qualität. Und anders herum, wenn man alles aus dem Kopf macht und die Tests vernachlässigt, wird die Qualität mit zunehmender Komplexität der Software trotzdem sehr mies sein egal wieviel Erfahrung du mit einer bestimmten Technologie hast. Du kannst nicht Alles überblicken. Dafür ist die Software heutzutage viel zu komplex.
andy_m4 schrieb:
Grundsätzlich ist es nicht verkehrt sich mit unterschiedlichen Programmiersprachen zu beschäftigen. Weil man damit teilweise auch Sachen lernt die sich auf andere Sprache übertragen lassen.
Ja sich mit verschiedenen Syntaxen vertraut zu machen, macht schon sinn. Aber was ich sagen wollte - Programmiersprachen sind nicht wie verbale Sprachen, man lernt sie anders. Man muss keine Vokabeln pauken oder sowas. Die Syntax ist nicht wirklich wichtig, die schlägt man in der Dokumentation nach. Man beherrscht eine Programmiersprache nicht unbedingt besser wenn man Alle Schlüsselwörter und die Syntax auswendig gelernt hat. Selbst wenn man die Syntax auswendig lernt, kann man eigentlich immer noch nichts gescheites aus dem Ärmel schütteln.
Man beherrscht eine beliebige Programmiersprache, auch solche die man zum ersten mal kennenlernt viel besser wenn man die Entwurfsmuster kennt und Erfahrungen damit in verschiedensten Sprachen gesammelt hat. Entwurfsmuster sind viel wichtiger als die Syntax einer bestimmten Sprache.
andy_m4 schrieb:
Man sollte es nur nicht so weit ausufern lassen dann irgendwie für jedes Projekt eine andere Sprache zu wählen nur weil die dann ein klein wenig besser passt als das was man schon beherrscht.
Also zumindest nicht, wenn es um Software geht die gewissen Qualitätsansprüchen genügen soll.
In der Praxis kommst du gar nicht drum herum verschiedenste Sprachen und Technologien gleichzeitig einzusetzen, du hast auch oft gar nicht die freie Auswahl. Komplexe Problemstellungen erfordern nicht selten den Einsatz mehrerer Programmier- und Scriptsprachen, Standards, Frameworks, APIs usw... Das ist immer ein Mix aus Technologien. Es gibt keine Programmiersprache welche Alles kann was man für die Umsetzung komplexer Problemstellungen benötigt.
Qualität ergibt sich wie gesagt vor Allem durch die richtige Methodik und vor Allem automatisiertes Testen. Du kannst 20 Jahre Erfahrung mit einer bestimmten Programmiersprache haben, aber du kommst ohne Tests mit zunehmender Komplexität auf JEDEN Fall in die Teufelsküche.
andy_m4 schrieb:
Ähm C kennt keine Objektorientierung in der Sprache. C ist eine klassisch prozedurale Sprache.
Ja streng genommen schon, dennoch ist objektorientierte Programmierung mit C durchaus möglich und in der Regel lernt man C kennen gerade für den Einstieg in die objektorientierte Programmierung.
https://www.embedded-software-engineering.de/objektorientierte-programmierung-mit-c-a-619620/
C spielt in der Praxis heutzutage praktisch gar keine Rolle mehr, außer vielleicht bei der Anbindung ganz uralter Software. C++ auch nicht mehr außer in bestimmten Nischenbereichen. Als nächstes nach C würd ich Java empfehlen. Und später dann C#. Besser zuerst Java vor C#. Sie sind sich sehr ähnlich, aber Java ist für Anfänger leichter. Der Umstieg von Java auf C# ist kein großer Umstieg sie ähneln sich sehr stark.
Will man Webentwicklung machen kann auch nicht schaden sich mit Scriptsprachen wie Javascript, Tools wie jquery, Technologien wie AJAX und REST, Formaten JSON, HTML, XML und CSS, sowie Buildtools wie maven vertraut zu machen.