Ja gerne, aber das nützt mir wenig wenn ich das in der Hauptsprache dann nicht nutzen kann.
Das halte ich für kurzsichtig. Gibt es in Python Zeiger? Nö. Ist es relevant für einen Entwickler - allgemein, nicht nur Python - das Konzept Zeiger zu verstehen? (Aus meiner Sicht: ) Absolut!
Würde ich wegen der fehlenden Konzepte sofort die Sprache wechseln ?
- Nein, nicht wenn ich 20 Jahre Erfahrung mit einem System habe.
- Bin ich frisch von der Uni, dann kann ich erstmal Alles (den letzten heissen Sch...) ausprobieren
Das war doch auch nicht die Prämisse, oder? Quasi der neuesten durch's Dorf getriebenen Sau hinterherlaufen.
Die Syntax einer Sprache ist schnell gelernt. Relevant sind aber die die verfügbaren Bibliotheken und Frameworks. Da geht sehr schnell sehr viel auseinander, gerade in dem von Dir von mir zitierten Fall Windows/Delphi und Python/Linux.
Bei Lua finde ich bspw. die Bibliotheken nicht so maßgeblich wie bei C# oder Java (oder eben Python). Und die
VCL ist für Delphi ja auch in gewisser Weise konstituierend.
Das ist nicht wirklich miteinander vereinbar, und ich ertappte mich gerade im ersten Jahr des Python Lernens und Anwendens immer wieder dabei in Delphi Dinge tun zu wollen, die zwar in Python gehen, aber nicht in Delphi - allein schon deswegen, daß Python im Grundsatz eine interpretierte Scriptsprache ist und nicht kompiliert werden muß, was manche lustige Sachen ermöglicht, die mir als Delphientwickler aber die Haare zu Berge stehen lassen, oder zum Ausruf verleiten "das habe ich schon immer gebraucht!" Beispiele
hier.
Diese Verwechslungen sind mir bei natürlichen Sprachen schon passiert, aber bisher noch nicht bei Programmiersprachen. Danke für den Link. 5 und 10 kannte ich noch nicht. Wobei ich bei 10 wohl ein set() erstellt mit List Comprehension genommen hätte.
Das Debakel mit dem Python 2 zu 3 Sprung hat bei mir nicht gerade für Liebe gesorgt, einige der von mir benötigten Libs (allen voran matplotlib) taten sich sehr schwer auf 3 zu migrieren.
Ging mir anfangs auch so. Aber wenn man sich anschaut wie lang eigentlich die Übergangsfrist war, ist das schon üppig.
Klar kann ich auch Fortran77, Basic und verlerne gerade massiv CoffeeScript und Assembler aber wozu soll ich mir das alles merken, wenn ich mit meinen beiden aktiv genutzten Sprachen glücklich werden kann?
Verlernst du es, oder "schläft" dieses Wissen vielleicht nur? Sowohl bei Programmiersprachen als auch bei natürlichen Sprachen bin ich recht flott immer wieder drin, sobald ich mich dem - auch nach längeren Pausen - aussetze.
Denn wie gesagt, mit der Sprache alleine ist es nicht getan. Bei Java kommt man ohne J2EE, JDK oder sonstigen Framworks/Toolkits auch nicht sonderlich weit.
Genau, erwähnte ich ja. Bei C# ist das ja auch so und auch in Python nutzt man ganz schnell Funktionen der Standardbibliothek.
Sollte ich den Arbeitgeber wechseln, lerne ich eben das was dort gefordert ist. Aber eben erst dann, ich gebe mir nicht freiwillig eine babylonische Sprachverwirrung.
Also wenn ich dich richtig verstehe sparst du Energie (und Hirn-Speicher), weil du für dich keinen Nutzen siehst, richtig?
Diese scheint im übrigen, jetzt da ich darüber nachdenke, dazu zu führen, daß manche Entwickler aus ihrem Wirrwarr nicht herausfinden und darum das eine oder andere "unverzichtbare" Sprachfeature in Delphi fordern, damit sie nix mehr durcheinanderbringen. Letzteres ist eine absolut haltlose Spaßbehauptung.
Kannst du mal ein Beispiel für ein solches gefordertes Feature geben?
(Basic,
COM,
COM+, VB, Excel-VBA,
Access, FoxPro, Objective-C, ...)
Man lernt um zu Vergessen
Also erstens nutze ich
COM nach wie vor und die Kenntnis der Interna hat mir schon mehrfach den A.... gerettet und zweitens nehme ich meist mehr aus einer Sprache mit als rein die Syntax. Diverse Konzepte aus
COM helfen eben auch beim
API-Design oder begegnen einem in ähnlicher Form in anderen Umgebungen. Aber gut, vielleicht bin ich ja wirklich einfach nur "anders". Ich kann mich zum Beispiel durchaus noch an VBA-Code erinnern den ich 2002 geschrieben hab, obwohl ich den lieber vergessen würde.
IIRC kann man auch in VisualStudio ein .net Projekt quer durch VB, C#, J# und F# mischen. Macht das alles in Codereviews und ähnlichen übergeordneten Prozessen aber auch nicht wirklich einfacher.
Aber allein die Abstraktion führt zu eigenen Erkenntnissen, finde ich. Beispiel. Wenn du C-Code hast der auf Windows, Linux, AIX, FreeBSD, Solaris usw. laufen soll: nimmst du dann WCHAR (WideChar) oder definierst du nen eigenen Typ? Wie abstrahierst du das Ermitteln von Verzeichniseinträgen über die Betriebssysteme hinweg? Wie definierst du "Pfadnamen" wenn auf Windows UTF-16 gemeint ist und auf den anderen allenfalls UTF-8? Ich habe bspw. schon mehrfach Code von anderen Entwicklern übernommen, die sich nen Ast abgebrochen haben um die Unterschiede zwischen den Betriebssystemen zu betonen. Der Code ist durchsetzt mit #ifdef und alles andere als wartungsfreundlich.