Línguas favoritas e línguas assustadoras. Pastagens verdes e campos marrons





Os resultados da pesquisa Stack Overflow são uma ótima fonte de informações sobre o que está acontecendo no mundo do desenvolvimento. Eu estava percorrendo os resultados de 2020 em busca de algumas ideias sobre quais linguagens adicionar à nossa documentação de builds de contêineres e percebi algo interessante sobre os tipos de linguagens. Parece-me que isso não é visto com frequência em várias discussões sobre as preferências do desenvolvedor.



As pesquisas têm a categoria "As linguagens de programação mais terríveis" (de As linguagens de programação mais temidas) e "As linguagens mais favoritas" . Ambas as classificações são baseadas na mesma pergunta:



, ? ( , , ).


"Linguagem assustadora" é aquela com a qual você está trabalhando ativamente este ano, mas não quer continuar a usá-la. Um idioma favorito é aquele que você usa extensivamente e deseja continuar usando. Os resultados são interessantes porque refletem as opiniões das pessoas que usam ativamente cada idioma. Opiniões como “Ouvi dizer que X é legal” não são contadas quando as pessoas valorizam coisas que NÃO usam porque ouviram que essa é uma nova tendência. O inverso também é verdadeiro: as pessoas que expressam aversão a uma determinada língua, na verdade, a usam amplamente. Eles têm medo da linguagem, não porque ouviram falar de sua complexidade, mas porque precisam trabalhar com ela e sentir uma dor real.



As 15 principais linguagens de programação assustadoras:

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



As 15 principais linguagens de programação favoritas:

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



Existe um padrão na lista. Você percebeu?



O pior código é aquele que foi escrito antes de mim



O código antigo é o pior. Se a base de código estiver em desenvolvimento ativo por mais de três anos, ela já é inconsistente. A primeira camada simples é sobreposta com casos especiais e otimizações de desempenho e várias ramificações controladas por parâmetros de configuração. O código real evolui para se ajustar ao seu nicho, ao mesmo tempo que fica cada vez mais difícil de entender. A razão é simples, e ouvi essa frase pela primeira vez de Joel Spolsky.



, [] , , : , .



«, »


Vamos chamá-la de Lei de Joel. Muito se segue dessa premissa. Por que a maioria dos desenvolvedores acha que seu código legado é uma bagunça e quer jogá-lo fora e começar de novo? Porque escrever algo novo é mais fácil para o cérebro do que o trabalho árduo de compreender a base de código existente, pelo menos inicialmente. Por que as tentativas de reescrever o código muitas vezes estão fadadas ao fracasso? Porque muitos artefatos de lixo são pequenas melhorias vitais que se acumulam com o tempo. Sem um plano de refatoração específico, você terminará de volta ao ponto de partida.





Scott Adams Entendido



É fácil entender o código que você escreve. Você faz isso e melhora ao longo do caminho. Mas é difícil entender o código apenas lendo-o após o fato. Se você voltar ao código antigo, poderá descobrir que ele é inconsistente. Talvez você tenha crescido como desenvolvedor e pudesse escrever melhor hoje. Mas as chances são de que o código seja intrinsecamente complexo, e você interpreta sua dor de entender essa complexidade como um problema de qualidade de código. Talvez seja por isso que o volume de RPs não revisados ​​esteja crescendo constantemente? A revisão de solicitações pull é um trabalho somente leitura e é difícil fazer isso bem quando você não tem um modelo de código funcionando em sua cabeça.



É por isso que você tem medo deles.



Se o código antigo real é injustamente considerado uma bagunça, então talvez as linguagens de programação estejam sendo avaliadas de forma injusta? Se você está escrevendo um novo código Go, mas precisa manter uma vasta base de código C ++ com 20 anos de idade, consegue classificá-los de maneira justa? Acho que é isso que a pesquisa realmente mede: linguagens assustadoras provavelmente serão usadas em projetos brownfield existentes. As línguas favoritas são usadas com mais frequência em novos projetos para criar pastagens verdes. Vamos dar uma olhada. 1



Comparação de línguas verdes e marrons



O Índice TIOBE mede "o número de engenheiros qualificados, cursos e empregos em todo o mundo" para linguagens de programação. Provavelmente existem alguns problemas com a metodologia, mas ela é precisa o suficiente para nossos propósitos. Usamos o Índice TIOBE de julho de 2016 , o mais antigo disponível na Wayback Machine, como proxy para identificar as linguagens que acumularam muito código. Se a linguagem era popular em 2016, é provável que as pessoas estejam apoiando o código escrito nela.



As 20 principais linguagens de programação na lista TIOBE em julho de 2016: Java, C, C ++, Python, C #, PHP, JavaScript, VB.NET, Perl, assembler, Ruby, Pascal, Swift, Objective-C, MATLAB, R, SQL, COBOL e Groovy. Podemos usar isso como nossa lista de idiomas com maior probabilidade de serem usados ​​em projetos de suporte a código. Vamos chamá-los de línguas marrons. Idiomas que não estavam entre os 20 primeiros em 2016 têm maior probabilidade de serem usados ​​em novos projetos. Estas são línguas verdes.





Dos 22 idiomas na lista combinada de assustador / favorito, 63% são marrons



Idioma marrom: o idioma que você provavelmente usará no suporte de software.



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




Green language: a linguagem que você provavelmente usará em um novo projeto.



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


TIOBE e StackOverflow têm ideias diferentes sobre o que é uma linguagem de programação. Para superar isso, temos que normalizar as duas listas removendo HTML / CSS, scripts de shell e VBA. 2



Claro, uma divisão simples em verdes e marrons perde muitas nuances, inclusive no tamanho dos campos. Eu espero que deva haver mais pastos verdes em Swift do que em Objective-C, mas a técnica atual parece cobrir tudo de que precisamos. Existem muito mais línguas castanhas nesta lista do que verdes, mas isto é bastante esperado, uma vez que relativamente poucas novas línguas aparecem todos os anos.



Agora podemos responder à pergunta: as pessoas realmente têm medo de linguagens ou estão apenas com medo de códigos antigos? Ou, colocando de outra forma: se Java e Ruby tivessem surgido hoje, sem uma pilha de aplicativos Rails antigos e aplicativos Java corporativos antigos para suportar, eles ainda seriam temidos? Ou seria mais provável que apareçam na sua lista de favoritos?



Línguas marrons assustadoras





Línguas assustadoras: 83% castanhas As



principais línguas assustadoras são quase inteiramente castanhas: 83% castanhas. Isso é mais alto do que 68% de línguas marrons na lista completa.



Línguas verdes favoritas





Meus



idiomas favoritos são 54% verdes. Entre meus idiomas favoritos, 54% são verdes. Ao mesmo tempo, na lista completa, apenas 36% dos idiomas são verdes. E todas as línguas verdes estão em algum lugar na lista de favoritos.



Outra falha humana é que todo mundo quer construir e ninguém quer fazer manutenção.



- Kurt Vonnegut


Isso não é suficiente para dizer com certeza que a necessidade de usar a linguagem em um projeto de apoio é assustadora. Mas é muito provável que este seja pelo menos um dos motivos. Muitas das linguagens "favoritas" são muito novas ou impopulares para acumular muitos projetos grandes e sujos.



Em outras palavras, Rust, Kotlin e outras línguas verdes ainda estão em fase de lua de mel. O amor por eles pode ser explicado pelo fato de que os programadores não precisam lidar com bases de código de 20 anos.



Elimine o preconceito







Algumas linguagens de programação mais novas ou historicamente menos populares podem ser melhores do que as linguagens mais antigas ou convencionais, mas nossa capacidade de julgá-las parece um tanto tendenciosa. Em particular, se a linguagem é nova ou nunca foi usada antes, então ela tem uma certa imagem angelical. E quanto mais uma linguagem é usada, mais diabólica ela se torna aos olhos dos desenvolvedores. Acho que a razão é que ninguém gosta de manter o código de outra pessoa. E também por causa da Lei de Joel: É muito difícil ler no mundo real. Criar algo novo é divertido e novas linguagens são usadas com mais frequência.



O Hype Cycle das Linguagens de Programação



Inicialmente, comecei a me aprofundar nessas classificações para destacar uma lista de linguagens comumente usadas e, ao mesmo tempo, favoritas - para exemplos adicionais em nossa documentação e para exemplos de montagem . Em vez disso, surgiu a ideia do ciclo de vida da linguagem de programação: muitas vezes são utilizadas linguagens de programação favoritas, o que leva à manutenção do código, o que faz com que as pessoas não gostem delas, o que, por sua vez, leva as pessoas a procurarem pastos mais verdes - e tentando um novo idioma ... Provavelmente, frameworks populares seguem o mesmo ciclo de vida.





O Hype Cycle das Linguagens de Programação



Não tenho os dados em mãos, mas me lembro claramente que Ruby era a linguagem mais popular em 2007. Embora hoje tenha mais concorrentes, Ruby está melhor hoje do que era antes. No entanto, agora eles estão com medo dele. Eu acho que as pessoas agora têm aplicativos Rails de 14 anos em suas mãos que precisam ser mantidos. Isso diminui muito a atratividade do Ruby em comparação com os dias em que havia apenas novos projetos. Portanto, cuidado, Rust, Kotlin, Julia e Go: no final, você também perderá suas asas de anjo. 3






1. . , .



, .



TIOBE, , … Wayback Machine. []



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



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



All Articles