Lieblingssprachen und gruselige Sprachen. Grüne Weiden und braune Felder





Die Ergebnisse der Stack Overflow-Umfrage sind eine hervorragende Informationsquelle über die Entwicklungen in der Entwicklungswelt. Ich habe die Ergebnisse für 2020 durchgeblättert und nach Ideen gesucht, welche Sprachen zu unserer Dokumentation zu Container-Builds hinzugefügt werden sollen, und dabei etwas Interessantes über die Arten von Sprachen festgestellt. Es scheint mir, dass dies nicht oft in verschiedenen Diskussionen über Entwicklerpräferenzen gesehen wird.



Die Umfragen haben die Kategorien "Die schrecklichsten Programmiersprachen" (der am meisten gefürchteten Programmiersprachen) und "Die beliebtesten Sprachen" . Beide Rankings basieren auf der gleichen Frage:



, ? ( , , ).


"Scary Language" ist eine Sprache, mit der Sie dieses Jahr aktiv arbeiten, die Sie aber nicht weiter verwenden möchten. Eine Lieblingssprache ist eine, die Sie häufig verwenden und weiterhin verwenden möchten. Die Ergebnisse sind interessant, weil sie die Meinungen von Menschen widerspiegeln, die jede Sprache aktiv verwenden. Meinungen wie „Ich habe gehört, dass X cool ist“ werden nicht gezählt, wenn Menschen Dinge schätzen, die sie NICHT verwenden, weil sie gehört haben, dass dies ein neuer Trend ist. Das Gegenteil ist auch der Fall: Menschen, die eine Abneigung gegen eine bestimmte Sprache ausdrücken, verwenden sie tatsächlich weit verbreitet. Sie haben Angst vor der Sprache, nicht weil sie von ihrer Komplexität gehört haben, sondern weil sie damit arbeiten und echten Schmerz erfahren müssen.



Top 15 gruselige Programmiersprachen:

VBA, Objective-C, Perl, Assembly, C, PHP, Ruby, C ++, Java, R, Haskell, Scala, HTML, Shell und SQL.



Die 15 beliebtesten Programmiersprachen:

Rust, TypeScript, Python, Kotlin, Go, Julia, Dart, C #, Swift, JavaScript, SQL, Shell, HTML, Scala und Haskell.



Die Liste enthält ein Muster. Hast du bemerkt?



Der schlechteste Code ist der, der vor mir geschrieben wurde



Alter Code ist das Schlimmste. Wenn sich die Codebasis seit mehr als drei Jahren in der aktiven Entwicklung befindet, ist sie bereits inkonsistent. Die einfache erste Schicht wird mit Sonderfällen und Leistungsoptimierungen sowie verschiedenen Zweigen überlagert, die durch Konfigurationsparameter gesteuert werden. Echter Code entwickelt sich, um in seine Nische zu passen, während es gleichzeitig immer schwieriger wird, ihn zu verstehen. Der Grund ist einfach, und ich habe diesen Satz zum ersten Mal von Joel Spolsky gehört.



, [] , , : , .



«, »


Nennen wir es Joels Gesetz. Aus dieser Prämisse folgt viel. Warum halten die meisten Entwickler ihren Legacy-Code für ein Chaos und möchten ihn wegwerfen und von vorne beginnen? Weil das Schreiben von etwas Neuem für das Gehirn einfacher ist als die harte Arbeit, die vorhandene Codebasis zu verstehen, zumindest anfangs. Warum sind Versuche, Code neu zu schreiben, oft zum Scheitern verurteilt? Weil viele Junk-Artefakte wichtige kleine Verbesserungen sind, die sich im Laufe der Zeit ansammeln. Ohne einen bestimmten Refactoring-Plan landen Sie wieder dort, wo Sie begonnen haben.





Scott Adams verstanden



Der von Ihnen geschriebene Code ist leicht zu verstehen. Sie tun es und verbessern es auf dem Weg. Aber es ist schwer, den Code zu verstehen, wenn man ihn nur nachträglich liest. Wenn Sie zu Ihrem alten Code zurückkehren, stellen Sie möglicherweise fest, dass dieser inkonsistent ist. Vielleicht sind Sie als Entwickler aufgewachsen und würden heute besser schreiben. Es besteht jedoch die Möglichkeit, dass der Code an sich komplex ist, und Sie interpretieren Ihren Schmerz, diese Komplexität zu verstehen, als ein Problem der Codequalität. Vielleicht wächst deshalb das Volumen nicht überprüfter PRs ständig? Das Überprüfen von Pull-Anforderungen ist schreibgeschützt und schwierig, wenn Sie kein funktionierendes Codemodell im Kopf haben.



Deshalb hast du Angst vor ihnen.



Wenn der echte alte Code zu Unrecht als Chaos angesehen wird, werden Programmiersprachen dann möglicherweise zu Unrecht bewertet? Wenn Sie neuen Go-Code schreiben, aber eine riesige 20 Jahre alte C ++ - Codebasis pflegen müssen, können Sie diese dann fair einordnen? Ich denke, das ist es, was die Umfrage tatsächlich misst: Gruselige Sprachen werden wahrscheinlich in bestehenden Industriebrachenprojekten verwendet. Lieblingssprachen werden in neuen Projekten häufiger verwendet, um grüne Weiden zu schaffen. Lass es uns überprüfen. einer



Vergleich von grünen und braunen Sprachen



Der TIOBE-Index misst "die Anzahl qualifizierter Ingenieure, Kurse und Jobs weltweit" für Programmiersprachen. Es gibt wahrscheinlich einige Probleme mit der Methodik, aber sie ist für unsere Zwecke genau genug. Wir verwenden den TIOBE-Index vom Juli 2016 , den ältesten auf der Wayback-Maschine verfügbaren, als Proxy, um Sprachen zu identifizieren, in denen sich viel Code angesammelt hat. Wenn die Sprache im Jahr 2016 populär war, unterstützen die Leute wahrscheinlich den darin geschriebenen Code.



Top 20 Programmiersprachen auf der TIOBE-Liste ab Juli 2016: Java, C, C ++, Python, C #, PHP, JavaScript, VB.NET, Perl, Assembler, Ruby, Pascal, Swift, Objective-C, MATLAB, R, SQL, COBOL und Groovy. Wir können dies als unsere Liste von Sprachen verwenden, die eher in Code-Support-Projekten verwendet werden. Nennen wir sie braune Zungen. Sprachen, die 2016 nicht unter den Top 20 waren, werden eher in neuen Projekten verwendet. Das sind grüne Zungen.





Von den 22 Sprachen auf der kombinierten Grusel- / Favoritenliste sind 63% braun



Braune Sprache: Die Sprache, die Sie am wahrscheinlichsten im Software-Support verwenden.



Java, C, C ++, C #, Python, PHP, JavaScript, Swift, Perl, Ruby, Assembly, R, Objective-C, SQL




Grüne Sprache: Die Sprache, die Sie mit größerer Wahrscheinlichkeit in einem neuen Projekt verwenden.



Gehen Sie, Rost, TypeScript, Kotlin, Julia, Dart, Scala und Haskell


TIOBE und StackOverflow haben unterschiedliche Vorstellungen davon, was eine Programmiersprache ist. Um dies zu überwinden, müssen wir die beiden Listen normalisieren, indem wir HTML / CSS, Shell-Skripte und VBA entfernen. 2



Natürlich fehlen bei einer einfachen Unterteilung in Grün und Braun viele Nuancen, auch in der Größe der Felder. Ich gehe davon aus, dass es in Swift mehr grüne Weiden geben sollte als in Objective-C, aber die derzeitige Technik scheint alles abzudecken, was wir brauchen. Es gibt viel mehr braune Sprachen auf dieser Liste als grüne, aber dies ist durchaus zu erwarten, da jedes Jahr relativ wenige neue Sprachen erscheinen.



Jetzt können wir die Frage beantworten: Haben die Leute wirklich Angst vor Sprachen oder haben sie nur Angst vor altem Code? Oder anders ausgedrückt: Wenn Java und Ruby heute erschienen wären, ohne dass ein Stapel alter Rails-Anwendungen und alter Java-Unternehmensanwendungen unterstützt werden müsste, wären sie dann immer noch gefürchtet? Oder würden sie eher in Ihrer Favoritenliste erscheinen?



Beängstigende braune Zungen





Gruselsprachen 83% braun Die



gruseligsten Sprachen sind fast vollständig braun: 83% braun. Dies ist höher als die 68% der braunen Sprachen in der vollständigen Liste.



Grüne Lieblingssprachen





Meine



Lieblingssprachen sind 54% grün. Unter meinen Lieblingssprachen sind 54% grün. Gleichzeitig sind in der vollständigen Liste nur 36% der Sprachen grün. Und jede grüne Sprache steht irgendwo auf der Favoritenliste.



Ein weiterer menschlicher Fehler ist, dass jeder bauen möchte und niemand Wartungsarbeiten durchführen möchte.



- Kurt Vonnegut


Dies reicht nicht aus, um mit Sicherheit zu sagen, dass die Notwendigkeit, Sprache in einem Unterstützungsprojekt zu verwenden, furchterregend ist. Es ist jedoch sehr wahrscheinlich, dass dies zumindest einer der Gründe ist. Viele der "Lieblingssprachen" sind zu neu oder zu unbeliebt, um viele große, schmutzige Projekte anzuhäufen.



Mit anderen Worten, Rust, Kotlin und andere grüne Sprachen befinden sich noch auf ihrer Flitterwochenbühne. Die Liebe zu ihnen kann durch die Tatsache erklärt werden, dass Programmierer sich nicht mit 20 Jahre alten Codebasen befassen müssen.



Beseitigen Sie Voreingenommenheit







Einige neuere oder historisch weniger beliebte Programmiersprachen sind möglicherweise besser als ältere oder allgemeinere Sprachen, aber unsere Fähigkeit, sie zu beurteilen, scheint eher voreingenommen zu sein. Insbesondere wenn die Sprache neu ist oder noch nicht verwendet wurde, hat sie ein bestimmtes Engelsbild. Und je länger eine Sprache verwendet wird, desto teuflischer wird sie in den Augen der Entwickler. Ich denke, der Grund ist, dass niemand gerne den Code eines anderen pflegt. Und auch wegen Joels Gesetz: In der realen Welt ist es sehr schwer zu lesen. Es macht Spaß, etwas Neues zu erstellen, und neue Sprachen werden häufiger verwendet.



Der Hype-Zyklus der Programmiersprachen



Zunächst begann ich, mich mit diesen Bewertungen zu befassen, um eine Liste häufig verwendeter und gleichzeitig bevorzugter Sprachen hervorzuheben - für zusätzliche Beispiele in unserer Dokumentation und für Baugruppenbeispiele . Stattdessen kam die Idee des Lebenszyklus der Programmiersprache auf: Oft werden bevorzugte Programmiersprachen verwendet. Dies führt zur Pflege des Codes, was dazu führt, dass die Leute sie nicht mögen, was wiederum dazu führt, dass die Leute nach grüneren Weiden suchen - und eine neue Sprache ausprobieren ... Wahrscheinlich folgen beliebte Frameworks demselben Lebenszyklus.





Der Hype-Zyklus der Programmiersprachen



Ich habe die Daten nicht zur Hand, aber ich erinnere mich lebhaft daran, dass Ruby 2007 die beliebteste Sprache war. Obwohl es heute mehr Konkurrenten gibt, ist Ruby heute besser als damals. Jetzt haben sie jedoch Angst vor ihm. Ich denke, die Leute haben jetzt 14 Jahre alte Rails-Anwendungen in der Hand, die gewartet werden müssen. Dies verringert die Attraktivität von Ruby im Vergleich zu den Tagen, als es nur neue Projekte gab, erheblich. Also pass auf, Rust, Kotlin, Julia und Go: Am Ende wirst auch du deine Engelsflügel verlieren. 3






1. . , .



, .



TIOBE, , … Wayback Machine. []



2. HTML/CSS - , TIOBE . - , VBA , . []



3. : Python, C#, Swift, JavaScript SQL . - . , Scala Haskell — ,  — . - ??? []



All Articles