Recentemente, eu estava lendo uma resposta para essa pergunta e fiquei impressionado com a afirmação "A linguagem está madura".
Então, eu queria saber o que realmente queremos dizer quando dizemos que "uma linguagem de programação está madura"? Normalmente, uma linguagem de programação é desenvolvida inicialmente a partir de uma necessidade, por exemplo
- Experimente / implemente um novo paradigma de programação ou uma nova combinação de recursos que não podem ser encontrados nas linguagens existentes.
- Tente resolver um problema ou superar uma limitação de um idioma existente.
- Crie um idioma para o ensino de programação.
- Crie uma linguagem que resolva uma classe específica de problemas (por exemplo, simultaneidade).
- Crie uma linguagem e uma API para um campo de aplicativo especial, por exemplo, a web (nesse caso, a linguagem pode reutilizar um paradigma conhecido, mas toda a API deve ser nova).
- Crie uma linguagem para empurrar seu concorrente para fora do mercado (nesse caso, o criador pode querer que a nova linguagem seja muito semelhante à existente, para atrair desenvolvedores para a nova linguagem e plataforma de programação).
Independentemente da motivação e do cenário originais em que um idioma foi criado, eventualmente, alguns idiomas são considerados maduros . Na minha intuição, isso significa que a linguagem alcançou (pelo menos um de) seus objetivos, por exemplo: "Agora podemos usar a linguagem X como uma ferramenta confiável para escrever aplicativos da Web".
No entanto, isso é um pouco vago, então eu queria perguntar o que você considera os critérios mais importantes (se houver) aplicados ao dizer que um idioma é maduro.
NOTA IMPORTANTE
Esta questão é agnóstica (de propósito), porque eu só estou interessada em critérios gerais. Por favor, escreva apenas respostas e comentários independentes de idioma! Não estou perguntando se alguma "linguagem X está madura" ou "quais linguagens de programação podem ser consideradas maduras" ou se "a linguagem X é mais madura que a linguagem Y": evite postar opiniões ou referências sobre linguagens específicas, porque essas estão fora do escopo desta questão.
EDITAR
Para tornar a pergunta mais precisa, por critérios quero dizer coisas como "suporte a ferramentas", "adoção pelo setor", "estabilidade", "API rica", "grande comunidade de usuários", "registro de aplicativos bem-sucedido", "padronização" , "semântica limpa e uniforme" e assim por diante.
fonte
Respostas:
Fatores de aceitação
Eu diria uma combinação de várias coisas, mas acho que não são todas necessárias. Alguns idiomas considerados maduros hoje em dia claramente não satisfazem alguns deles.
Eu diria uma combinação de:
Sobre Fama, Reconhecimento e Maturidade
Observe que o diferencial aqui é ter validadores de critérios fortes e ativos, não grandes ou numerosos. Para esclarecer, considere estes exemplos muito diferentes:
Por muito tempo, Ruby era uma linguagem com um grande apoio da comunidade, uma implementação de referência oficial e assim por diante, mas dificilmente poderia ser considerada madura até que resolvesse algumas de suas arestas. Era famoso antes de ser maduro.
Por outro lado, algumas linguagens outrora muito usadas (COBOL, FORTRAN ...) agora são menos visíveis, mas ainda maduras em todos os sentidos possíveis. Eles já foram famosos e maduros.
Além disso, algumas linguagens de nicho estão definitivamente maduras, apesar de sua pequena (mas estabelecida) penetração no mercado. Considere Oberon ou Limbo. Eles são maduros, mas nunca ficaram famosos. Outros, como R, são relativamente famosos porque seus "nichos" não são realmente nichos (me incomoda quando as pessoas chamam coisas como Scala ou Clojure de "línguas de nicho", que definitivamente não são), embora seu campo de aplicações não seja exatamente o que você chamaria de mainstream.
Sobre estabilidade
O que é estável de qualquer maneira? É bastante relativo ...
Em geral, estabilidade significa simplesmente que não me surpreendo diariamente ao realizar meu trabalho comum usando o kit de ferramentas do idioma, e posso obter respostas definitivas sobre o que deve ou não acontecer quando tento fazer algo com o idioma e seu kit de ferramentas, seja no tempo de compilação ou no tempo de execução dos meus programas.
Mas a estabilidade para quem escreve aplicativos para smartphone e a estabilidade para quem escreve sistemas médicos ou aviônicos é um tipo diferente de pássaro.
fonte
Na verdade, tive a mesma dúvida há alguns anos. Naquela época, decidi que um idioma era maduro (ou seja, bom para resolver problemas do tipo x) se tivesse a maioria dos recursos necessários para solucionar esse problema. Em outras palavras, quanto das ferramentas específicas de resolução de problemas que tenho para me criar versus quantas já vêm com o idioma. Conforme seu comentário, estou removendo o exemplo específico do idioma e substituindo-o por um independente de idioma:
Eu basicamente pensei que uma linguagem com muitas bibliotecas "auxiliares" e "utilitárias" incorporadas é mais madura do que aquela em que algumas delas não existiam (e na qual eu teria que escrevê-las - ou algo semelhante a eles - eu)
Eu estou falando sobre tudo isso no passado, porque hoje em dia eu me esquivei desse modo de pensar e penso na maturidade de uma linguagem mais ou menos assim:
quão forte é a comunidade para esse idioma. Quantos documentos, livros, exemplos pertinentes existem. Isso é importante, porque você pode ter idiomas muito agradáveis e que podem ser mais adequados para uma tarefa específica do que outros, mas que são mal documentados, para que você nunca veja suas vantagens.
desempenho. Para uma determinada tarefa e uma determinada implementação x, o idioma em que essa implementação será executada mais rapidamente é mais maduro. Sim, essa é uma área muito cinzenta e, para a maioria dos idiomas e plataformas, é difícil fazer a comparação. No entanto, para certos idiomas e plataformas, é bastante simples ver qual deles supera qual. Para certos tipos de problemas, isso é muito importante.
insetos. Ai sim. Eu nunca teria pensado nisso até ver com meus próprios olhos. Não vou dar exemplos, porque não quero parecer que estou usando um idioma ou outro, mas existem idiomas por aí (bem, mais precisamente, ambientes de compilação e tempo de execução para determinados idiomas) que são muito buggy, ao ponto em que você não pode mais confiar e estimar como algo funcionará. Para mim, a maturidade de uma língua cai pesadamente quando esse é o caso.
As razões pelas quais mudei a maneira como considero uma linguagem mais madura são:
primeiro, o fato de uma linguagem ter uma tonelada de bibliotecas e utilitários auxiliares nem sempre significa que são realmente úteis. Essas bibliotecas ainda são genéricas e podem estar muito distantes de alguma necessidade específica que você tenha, de modo que, no final, tento me reescrever parte delas para ter uma solução mais eficiente e específica de problemas.
além disso, coisas como linguagem e desempenho de plataforma e documentação são coisas pelas quais é mais difícil compensar do que com falta de bibliotecas. Se o código que você escreveu no idioma x e na plataforma y for lento, otimizá-lo sozinho nunca será tão bom quanto substituí-lo pelo idioma x2 e pela plataforma y2, para os quais uma coorte de pessoas (provavelmente mais inteligentes) do que eu fez otimizações. O mesmo vale para a documentação, a falta dela se traduz em mais tempo gasto na realização de provas de conceitos, tentativas e erros, exploração de código de teste de origem e de unidade para ver como algo deve ser feito. E mesmo se você passar por tudo isso, ainda não sabe se a solução que você escolheu é a mais adequada, pois os criadores de idiomas pretendiam que ela funcionasse.
fonte