Langues préférées et langues effrayantes. Pùturages verts et champs bruns





Les rĂ©sultats de l'enquĂȘte Stack Overflow sont une excellente source d'informations sur ce qui se passe dans le monde du dĂ©veloppement. Je faisais dĂ©filer les rĂ©sultats de 2020 Ă  la recherche d'idĂ©es sur les langues Ă  ajouter Ă  la documentation de notre conteneur et j'ai remarquĂ© quelque chose d'intĂ©ressant sur les types de langues. Il me semble que cela n'est pas souvent vu dans diverses discussions sur les prĂ©fĂ©rences des dĂ©veloppeurs.



Les sondages ont la catĂ©gorie "Les langages de programmation les plus terribles" (des Langages de programmation les plus redoutĂ©s) et "Les langages les plus prĂ©fĂ©rĂ©s" . Les deux classements sont basĂ©s sur la mĂȘme question:



, ? ( , , ).


Le "langage effrayant" est celui avec lequel vous travaillez activement cette année, mais vous ne voulez pas continuer à l'utiliser. Une langue préférée est celle que vous utilisez beaucoup et que vous souhaitez continuer à utiliser. Les résultats sont intéressants car ils reflÚtent les opinions des personnes qui utilisent activement chaque langue. Les opinions telles que «J'ai entendu dire que X est cool» ne sont pas prises en compte lorsque les gens apprécient les choses qu'ils n'utilisent PAS parce qu'ils ont entendu dire qu'il s'agissait d'une nouvelle tendance. L'inverse est également vrai: les personnes qui expriment une aversion pour une langue particuliÚre l'utilisent en fait largement. Ils ont peur de la langue, non pas parce qu'ils ont entendu parler de sa complexité, mais parce qu'ils doivent travailler avec et éprouver une vraie douleur.



Top 15 des langages de programmation effrayants:

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



Top 15 des langages de programmation préférés:

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



Il y a un modÚle dans la liste. As-tu remarqué?



Le pire code est celui qui a été écrit avant moi



L'ancien code est le pire. Si la base de code est en développement actif depuis plus de trois ans, alors elle est déjà incohérente. La premiÚre couche simple est recouverte de cas spéciaux et d'optimisations de performances, ainsi que de diverses branches contrÎlées par des paramÚtres de configuration. Le code réel évolue pour s'adapter à son créneau, tout en devenant de plus en plus difficile à comprendre. La raison est simple, et j'ai entendu pour la premiÚre fois cette phrase de Joel Spolsky.



, [] , , : , .



— «, »


Appelons cela la loi de Joel. Beaucoup dĂ©coule de cette prĂ©misse. Pourquoi la plupart des dĂ©veloppeurs pensent-ils que leur ancien code est un gĂąchis et veulent le jeter et recommencer? Parce qu'Ă©crire quelque chose de nouveau est plus facile pour le cerveau que le travail acharnĂ© de comprendre la base de code existante, du moins au dĂ©but. Pourquoi les tentatives de réécriture du code sont-elles souvent vouĂ©es Ă  l'Ă©chec? Parce que de nombreux artefacts indĂ©sirables sont de petites amĂ©liorations vitales qui s'accumulent avec le temps. Sans un plan de refactoring spĂ©cifique, vous reviendrez lĂ  oĂč vous avez commencĂ©.





Scott Adams a compris



Il est facile de comprendre le code que vous Ă©crivez. Vous le faites et vous l'amĂ©liorez en cours de route. Mais il est difficile de comprendre le code simplement en le lisant aprĂšs coup. Si vous revenez Ă  votre ancien code, vous constaterez peut-ĂȘtre qu'il est incohĂ©rent. Peut-ĂȘtre avez-vous grandi en tant que dĂ©veloppeur et Ă©cririez-vous mieux aujourd'hui. Mais il y a de fortes chances que le code soit intrinsĂšquement complexe et que vous interprĂ©tez votre douleur Ă  comprendre cette complexitĂ© comme un problĂšme de qualitĂ© du code. C'est peut-ĂȘtre pour cela que le volume de PR non rĂ©visĂ©s augmente constamment? L'examen des demandes d'extraction est un travail en lecture seule, et il est difficile de le faire correctement lorsque vous n'avez pas de modĂšle de code fonctionnel dans votre tĂȘte.



C'est pourquoi vous en avez peur.



Si le vrai vieux code est injustement considĂ©rĂ© comme un gĂąchis, alors peut-ĂȘtre que les langages de programmation sont Ă©valuĂ©s injustement? Si vous Ă©crivez un nouveau code Go mais que vous devez maintenir une vaste base de code C ++ vieille de 20 ans, pouvez-vous les classer Ă©quitablement? Je pense que c'est ce que l'enquĂȘte mesure rĂ©ellement: des langages effrayants sont susceptibles d'ĂȘtre utilisĂ©s dans les projets de friches industrielles existants. Les langues prĂ©fĂ©rĂ©es sont plus souvent utilisĂ©es dans les nouveaux projets pour crĂ©er des pĂąturages verts. Regardons ça. une



Comparaison des langues vertes et brunes



L'indice TIOBE mesure «le nombre d'ingénieurs qualifiés, de cours et d'emplois dans le monde» pour les langages de programmation. Il y a probablement des problÚmes avec la méthodologie, mais elle est suffisamment précise pour nos besoins. Nous utilisons l'indice TIOBE de juillet 2016 , le plus ancien disponible sur Wayback Machine, comme proxy pour identifier les langues qui ont accumulé beaucoup de code. Si le langage était populaire en 2016, il y a de fortes chances que les gens soutiennent le code qui y est écrit.



Top 20 des langages de programmation sur la liste TIOBE en juillet 2016: Java, C, C ++, Python, C #, PHP, JavaScript, VB.NET, Perl, assembleur, Ruby, Pascal, Swift, Objective-C, MATLAB, R, SQL, COBOL et Groovy. Nous pouvons l'utiliser comme notre liste de langages qui sont plus susceptibles d'ĂȘtre utilisĂ©s dans les projets de support de code. Appelons-les langues brunes. Les langues qui ne figuraient pas dans le top 20 en 2016 sont plus susceptibles d'ĂȘtre utilisĂ©es dans de nouveaux projets. Ce sont des langues vertes.





Sur les 22 langues de la liste combinée effrayante / préférée, 63% sont brunes



Langue brune: la langue que vous ĂȘtes le plus susceptible d'utiliser dans le cadre du support logiciel.



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




Green: le langage que vous ĂȘtes le plus susceptible d'utiliser dans un nouveau projet.



Go, Rust, TypeScript, Kotlin, Julia, Dart, Scala et Haskell


TIOBE et StackOverflow ont des idées différentes sur ce qu'est un langage de programmation. Pour surmonter cela, nous devons normaliser les deux listes en supprimant HTML / CSS, les scripts shell et VBA. 2



Bien sûr, une simple division en verts et bruns manque beaucoup de nuances, y compris dans la taille des champs. Je pense qu'il devrait y avoir plus de pùturages verts à Swift qu'Objective-C, mais la technique actuelle semble couvrir tout ce dont nous avons besoin. Il y a beaucoup plus de langues brunes sur cette liste que de langues vertes, mais c'est tout à fait normal, car relativement peu de nouvelles langues apparaissent chaque année.



Maintenant, nous pouvons répondre à la question: les gens ont-ils vraiment peur des langues, ou ont-ils simplement peur du vieux code? Ou pour le dire autrement: si Java et Ruby étaient apparus aujourd'hui, sans une pile d'anciennes applications Rails et d'anciennes applications Java d'entreprise à prendre en charge, seraient-ils encore redoutés? Ou seraient-ils plus susceptibles d'apparaßtre sur votre liste de favoris?



Langues brunes effrayantes





Langues effrayantes 83% brunes Les



principales langues effrayantes sont presque entiĂšrement brunes: 83% brunes. C'est plus que les 68% de langues brunes sur la liste complĂšte.



Langues vertes préférées





Mes



langues prĂ©fĂ©rĂ©es sont 54% vertes, 54% de mes langues prĂ©fĂ©rĂ©es sont vertes. Dans le mĂȘme temps, dans la liste complĂšte, seulement 36% des langues sont vertes. Et chaque langue verte est quelque part dans la liste des favoris.



Un autre défaut humain est que tout le monde veut construire et personne ne veut faire de maintenance.



- Kurt Vonnegut


Cela ne suffit pas pour dire avec certitude que la nécessité d'utiliser la langue dans un projet de soutien est redoutable. Mais il est trÚs probable que ce soit au moins une des raisons. Beaucoup de langages "préférés" sont trop nouveaux ou trop impopulaires pour amasser de nombreux gros projets sales.



En d'autres termes, Rust, Kotlin et d'autres langues vertes sont toujours sur la scÚne de leur lune de miel. L'amour pour eux peut s'expliquer par le fait que les programmeurs n'ont pas besoin de gérer des bases de code vieilles de 20 ans.



Éliminer les prĂ©jugĂ©s







Certains langages de programmation plus rĂ©cents ou historiquement moins populaires peuvent ĂȘtre meilleurs que les langages plus anciens ou plus courants, mais notre capacitĂ© Ă  les juger semble plutĂŽt biaisĂ©e. En particulier, si la langue est nouvelle ou n'a pas Ă©tĂ© utilisĂ©e auparavant, alors elle a une certaine image angĂ©lique. Et plus un langage est utilisĂ© longtemps, plus il devient diabolique aux yeux des dĂ©veloppeurs. Je suppose que la raison est que personne n'aime maintenir le code de quelqu'un d'autre. Et aussi Ă  cause de la loi de Joel: c'est trĂšs difficile Ă  lire dans le monde rĂ©el. CrĂ©er quelque chose de nouveau est amusant et de nouvelles langues sont utilisĂ©es plus souvent.



Le cycle de battage médiatique des langages de programmation



Au dĂ©part, j'ai commencĂ© Ă  fouiller dans ces classements pour mettre en Ă©vidence une liste de langues couramment utilisĂ©es et en mĂȘme temps prĂ©fĂ©rĂ©es - pour des exemples supplĂ©mentaires dans notre documentation et des exemples d'assemblage . Au lieu de cela, l'idĂ©e du cycle de vie du langage de programmation est venue: les langages de programmation prĂ©fĂ©rĂ©s sont souvent utilisĂ©s, cela conduit Ă  la maintenance du code, ce qui fait que les gens ne les aiment pas, ce qui conduit Ă  leur tour les gens Ă  rechercher des pĂąturages plus verts - et essayer une nouvelle langue ... Les cadres probablement populaires suivent le mĂȘme cycle de vie.





Le cycle de battage médiatique des langages de programmation



Je n'ai pas les donnĂ©es sous la main, mais je me souviens trĂšs bien que Ruby Ă©tait la langue la plus populaire en 2007. Bien qu'aujourd'hui il ait plus de concurrents, Ruby est meilleur aujourd'hui qu'il ne l'Ă©tait alors. Cependant, maintenant ils ont peur de lui. Je pense que les gens ont maintenant entre les mains des applications Rails vieilles de 14 ans qui doivent ĂȘtre maintenues. Cela diminue considĂ©rablement l'attractivitĂ© de Ruby par rapport Ă  l'Ă©poque oĂč il n'y avait que de nouveaux projets. Alors attention, Rust, Kotlin, Julia et Go: Ă  la fin, vous perdrez vous aussi vos ailes d'ange. 3






1. . , .



, .



TIOBE, , 
 Wayback Machine. []



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



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



All Articles