Idiomas favoritos e idiomas aterradores. Pastos verdes y campos marrones





Los resultados de la encuesta de Stack Overflow son una gran fuente de información sobre lo que está sucediendo en el mundo del desarrollo. Estaba desplazándome por los resultados de 2020 en busca de algunas ideas sobre qué idiomas agregar a nuestra documentación de compilaciones de contenedores y noté algo interesante sobre los tipos de idiomas. Me parece que esto no se ve a menudo en varias discusiones sobre las preferencias de los desarrolladores.



Las encuestas tienen la categoría "Los lenguajes de programación más terribles" (de Los lenguajes de programación más temidos) y "Los lenguajes más favoritos" . Ambas clasificaciones se basan en la misma pregunta:



, ? ( , , ).


El "lenguaje aterrador" es uno con el que está trabajando activamente este año, pero no quiere seguir usándolo. Un idioma favorito es el que usa mucho y desea seguir usando. Los resultados son interesantes porque reflejan las opiniones de las personas que utilizan activamente cada idioma. Las opiniones como “Escuché que X es genial” no se cuentan cuando las personas valoran las cosas que NO usan porque escucharon que se trata de una nueva tendencia. Lo contrario también es cierto: las personas que expresan aversión a un idioma en particular lo usan ampliamente. Le tienen miedo al lenguaje, no porque hayan oído hablar de su complejidad, sino porque tienen que trabajar con él y experimentar un dolor real.



Los 15 lenguajes de programación más terroríficos:

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



Los 15 lenguajes de programación favoritos principales:

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



Hay un patrón en la lista. ¿Has notado?



El peor código es el que escribí antes que yo.



El código antiguo es el peor. Si el código base ha estado en desarrollo activo durante más de tres años, entonces ya es inconsistente. La primera capa simple se superpone con casos especiales y optimizaciones de rendimiento, y varias ramas controladas por parámetros de configuración. El código real evoluciona para adaptarse a su nicho, mientras que al mismo tiempo se vuelve cada vez más difícil de entender. La razón es simple, y escuché por primera vez esta frase de Joel Spolsky.



, [] , , : , .



«, »


Llamémosla Ley de Joel. Mucho se sigue de esta premisa. ¿Por qué la mayoría de los desarrolladores piensan que su código heredado es un desastre y quieren deshacerse de él y empezar de nuevo? Porque escribir algo nuevo es más fácil para el cerebro que el arduo trabajo de comprender el código base existente, al menos inicialmente. ¿Por qué los intentos de reescribir el código a menudo están condenados al fracaso? Porque muchos artefactos basura son pequeñas mejoras vitales que se acumulan con el tiempo. Sin un plan de refactorización específico, terminará de nuevo donde comenzó.





Scott Adams entendido



Es fácil entender el código que escribe. Lo haces y lo mejoras a lo largo del camino. Pero es difícil entender el código con solo leerlo después del hecho. Si vuelve a su código anterior, es posible que descubra que no es coherente. Quizás creciste como desarrollador y escribirías mejor hoy. Pero lo más probable es que el código sea intrínsecamente complejo y usted interprete su dolor de entender esta complejidad como un problema de calidad del código. ¿Quizás es por eso que el volumen de relaciones públicas no revisadas crece constantemente? Revisar las solicitudes de extracción es un trabajo de solo lectura y es difícil hacerlo bien cuando no tienes un modelo de código que funcione en tu cabeza.



Por eso les tienes miedo.



Si el código antiguo real se considera injustamente un desastre, entonces ¿tal vez los lenguajes de programación están siendo evaluados injustamente? Si está escribiendo un nuevo código Go pero tiene que mantener una amplia base de código C ++ de 20 años de antigüedad, ¿puede clasificarlos de manera justa? Creo que esto es lo que realmente mide la encuesta: es probable que se utilicen lenguajes aterradores en los proyectos industriales existentes. Los idiomas favoritos se utilizan con más frecuencia en nuevos proyectos para crear pastos verdes. Vamos a ver. uno



Comparación de lenguajes verdes y marrones



El índice TIOBE mide "la cantidad de ingenieros, cursos y trabajos calificados en todo el mundo" para lenguajes de programación. Probablemente haya algunos problemas con la metodología, pero es lo suficientemente precisa para nuestros propósitos. Usamos el índice TIOBE de julio de 2016 , el más antiguo disponible en Wayback Machine, como un proxy para identificar los idiomas que han acumulado mucho código. Si el lenguaje fue popular en 2016, es probable que la gente esté apoyando el código escrito en él.



Los 20 principales lenguajes de programación en la lista TIOBE a julio de 2016: Java, C, C ++, Python, C #, PHP, JavaScript, VB.NET, Perl, ensamblador, Ruby, Pascal, Swift, Objective-C, MATLAB, R, SQL, COBOL y Groovy. Podemos usar esto como nuestra lista de lenguajes que es más probable que se usen en proyectos de soporte de código. Llamémoslos lenguas marrones. Los idiomas que no se encontraban entre los 20 primeros en 2016 tienen más probabilidades de utilizarse en nuevos proyectos. Estas son lenguas verdes.





De los 22 idiomas en la lista combinada de miedo / favoritos, el 63% son marrones



Idioma marrón: el idioma que es más probable que utilice en el soporte de software.



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




Lenguaje verde: el lenguaje que es más probable que utilice en un nuevo proyecto.



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


TIOBE y StackOverflow tienen diferentes ideas sobre qué es un lenguaje de programación. Para superar esto, tenemos que normalizar las dos listas eliminando HTML / CSS, scripts de shell y VBA. 2



Por supuesto, una simple división en verdes y marrones pierde muchos matices, incluso en el tamaño de los campos. Supongo que debería haber más pastos verdes en Swift que en Objective-C, pero la técnica actual parece cubrir todo lo que necesitamos. Hay muchos más idiomas marrones en esta lista que verdes, pero esto es bastante esperado, ya que aparecen relativamente pocos idiomas nuevos cada año.



Ahora podemos responder a la pregunta: ¿la gente realmente le teme a los lenguajes o simplemente le teme al código antiguo? O para decirlo de otra manera: si Java y Ruby hubieran aparecido hoy, sin un montón de viejas aplicaciones Rails y viejas aplicaciones empresariales Java para soportar, ¿seguirían siendo temidas? ¿O es más probable que aparezcan en su lista de favoritos?



Lenguas marrones aterradoras





Lenguajes de miedo 83% marrón Los



principales lenguajes de miedo son casi en su totalidad marrón: 83% marrón. Esto es más alto que el 68% de los idiomas marrones en la lista completa.



Idiomas verdes favoritos





Mis



idiomas favoritos son 54% verdes. Entre mis idiomas favoritos, 54% son verdes. Al mismo tiempo, en la lista completa, solo el 36% de los idiomas son verdes. Y cada idioma verde está en algún lugar de la lista de favoritos.



Otro defecto humano es que todo el mundo quiere construir y nadie quiere hacer mantenimiento.



- Kurt Vonnegut


Esto no es suficiente para decir con certeza que la necesidad de utilizar el lenguaje en un proyecto de apoyo es temible. Pero es muy probable que esta sea al menos una de las razones. Muchos de los lenguajes "favoritos" son demasiado nuevos o demasiado impopulares para acumular muchos proyectos grandes y sucios.



En otras palabras, Rust, Kotlin y otros lenguajes verdes todavía están en su etapa de luna de miel. El amor por ellos puede explicarse por el hecho de que los programadores no necesitan lidiar con bases de código de hace 20 años.



Elimina el sesgo







Algunos lenguajes de programación más nuevos o históricamente menos populares pueden ser mejores que los lenguajes más antiguos o más convencionales, pero nuestra capacidad para juzgarlos parece bastante sesgada. En particular, si el lenguaje es nuevo o no se ha utilizado antes, entonces tiene una cierta imagen angelical. Y cuanto más se usa un lenguaje, más diabólico se vuelve a los ojos de los desarrolladores. Supongo que la razón es que a nadie le gusta mantener el código de otra persona. Y también por la Ley de Joel: es muy difícil leer en el mundo real. Crear algo nuevo es divertido y los nuevos lenguajes se utilizan con más frecuencia.



El ciclo exagerado de los lenguajes de programación



Inicialmente, comencé a profundizar en estas calificaciones para resaltar una lista de idiomas de uso común y al mismo tiempo favoritos, para obtener ejemplos adicionales en nuestra documentación y ejemplos de ensamblaje . En cambio, surgió la idea del ciclo de vida del lenguaje de programación: los lenguajes de programación favoritos se usan a menudo, esto conduce al mantenimiento del código, lo que hace que a la gente no le gusten, lo que, a su vez, lleva a que las personas busquen pastos más verdes. - y probando un nuevo idioma ... Probablemente, los marcos populares siguen el mismo ciclo de vida.





El ciclo exagerado de los lenguajes de programación



No tengo los datos a mano, pero recuerdo vívidamente que Ruby fue el idioma más popular en 2007. Aunque hoy tiene más competidores, Ruby es mejor hoy que entonces. Sin embargo, ahora le tienen miedo. Creo que la gente ahora tiene aplicaciones Rails de 14 años en sus manos que necesitan mantenimiento. Esto disminuye enormemente el atractivo de Ruby en comparación con los días en que solo había proyectos nuevos. Así que ten cuidado, Rust, Kotlin, Julia y Go: al final, tú también perderás tus alas de ángel. 3






1. . , .



, .



TIOBE, , … Wayback Machine. []



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



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



All Articles