Por que existem tantas linguagens de programação? Por que novos idiomas ainda estão sendo criados? [fechadas]


51

Por que existem tantas linguagens de programação?

E o que leva alguém a criar uma linguagem de programação, apesar de outras línguas já existirem?


um divertido vídeo sobre este tema é "A última linguagem de programação" por Uncle Bob Martin ( skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera

Porque programadores gostam de ferramentas.
haylem



É difícil justificar isso, acho que cada idioma tem uma história. A maioria das línguas não beneficiou muito o criador. A maioria dos idiomas gira em torno dos mesmos conceitos e raramente resolve problemas reais ou fornece bons ambientes. Eu acho que quando eles o criam, eles se sentem cansados ​​de tudo e talvez vejam como desperdiçaram sua vida ... Pense em ksh ou JavaScript ..... Ferramentas simplesmente horríveis e prejudiciais.
NoChance

Respostas:


36

Linguagens de programação evoluem

Novas linguagens de programação geralmente aprendem com as línguas existentes e adicionam, removem e combinam recursos de uma nova maneira. Existem alguns paradigmas diferentes, como orientado a objetos e funcionais, e muitas linguagens modernas tentam misturar recursos dos dois.

Há também novos problemas que precisam ser resolvidos, por exemplo, o aumento de CPUs com vários núcleos. A solução mais comum para isso foram os threads, mas algumas linguagens de programação tentam resolver o problema de concorrência de uma maneira diferente, por exemplo, o modelo do ator. Veja Erlang - Software para um mundo simultâneo


10
O interessante de Erlang é que é uma "reinvenção da sala limpa" do modelo do ator. Quando Armstrong e seus amigos desenvolveram Erlang, eles não sabiam sobre o trabalho de Hewitt et al no modelo de ator!
precisa saber é o seguinte

@ Frank: Isso é interessante. Eu não sabia disso, obrigado.
Jonas

2
+1 para evolução. Uma pergunta análoga pode ser "Por que existem tantas espécies de animais e plantas? Por que novas ainda aparecem?"
Gyan aka Gary Buyn

11
@GaryBuyn é apenas um "+1 para evolução" se você se inscrever nesse ponto de vista. Para muitos, a analogia animal é um pouco longe demais.
Darknight

@ GaryBuyn, Uhm ... isso é tão análogo quanto "hamlet" é "hamster".
Pacerier

22

É um ciclo. Você inicia um novo idioma e fica livre para se livrar de todas as más sintaxes e más escolhas de seus antecessores. Na versão 1, o idioma parece ótimo porque não possui essa bagagem e faz o trabalho. Então, nas versões mais recentes, você começa a experimentar recursos que podem não funcionar, ou traz recursos de outros idiomas mais novos que fazem com que sua sintaxe fique um pouco desagradável. Eis que, depois de mais algumas versões, você percebe que seu idioma agora é tão complicado quanto o que você substituiu, com problemas de sintaxe boba e bagagem herdada. E de repente, você percebe que, se você criar um novo idioma, poderá consertar tudo isso ...


2
Definitivamente, isso é verdade para bibliotecas, estruturas e software, mas eu pessoalmente não conheço um idioma ao qual isso se aplica. Você tem exemplos?
set2

16
Bem, acho que o C # e o Java foram introduzidos, pelo menos em parte, para resolver complexidades com o C ++. E agora, se você olhar para esses dois idiomas várias versões depois, seus conjuntos de sintaxe e recursos estão ficando complexos o suficiente para que as pessoas estejam começando a falar sobre eles estarem "além do limite". Apenas a minha opinião sobre isso, embora eu não possa provar nada. :-)
RationalGeek

2
Bom ponto, mas acho que outro fato está em jogo com o C # - é um produto comercial que não existe por motivos de caridade e para aceitação do mercado / manutenção dos produtos de seus clientes deve ser "aprimorado" para novos lançamentos etc.
gf

11
Isso é verdade. O desejo de adicionar novos recursos para obter mais dinheiro do mercado certamente não pode ser ignorado. No entanto, é uma faca de dois gumes. Você pode esperar novos recursos de um produto com suporte comercial por esse motivo exato. Mas, a partir de um produto de código aberto, você só obtém novos recursos enquanto o exército de voluntários permanecer interessado, e há alguém com habilidade para comandar os gatos.
RationalGeek

O C # possui muitos recursos, mas ainda é uma linguagem mais limpa que o C ++. Adições mais recentes, como LINQ, permitem que você faça coisas limpas que não podem ser feitas facilmente em C ++. Acho que é mais provável que haja dois tipos de conservação da complexidade - um em que um pouco de complexidade é inerente a um problema e outro em que, quando você elimina um tipo de complexidade redundante de seus programas, os requisitos ficam mais complexos - complexidade, como dados, expande para preencher o "espaço" disponível.
Steve314

11

Pela mesma razão, existem martelos, chaves de fenda, serras de mão, serras de fita, britadeiras, pés de cabra e uma série de outras ferramentas: nem todo idioma é perfeito para todas as tarefas. Algumas linguagens são direcionadas a domínios de problemas específicos: R é particularmente bom para análise estatística, C é particularmente bom para escrever kernels de sistema operacional, Haskell é particularmente bom para cálculos financeiros ou matemáticos, Erlang é particularmente bom em programação simultânea etc.

Além disso, pela mesma razão que as camisas têm cores diferentes: algumas pessoas gostam do "estilo" de um idioma em detrimento de outro.

E, é claro, muitos programadores acham divertido inventar uma nova linguagem, apenas para ver o que acontece, ou talvez porque tenham algum conhecimento sobre linguagens e queiram coçar ou experimentar algumas idéias.


Não apenas existem todas essas ferramentas de construção, mas também existem muitos tipos diferentes de martelos e martelos que parecem semelhantes, mas possuem fatores de design específicos que os tornam melhores para diferentes empregos ou usuários.
Barry Brown

+1 Para adequação a domínios problemáticos. Os acadêmicos que estudam ferramentas em geral dizem que uma ferramenta muito geral é menos poderosa do que uma ferramenta específica para uma tarefa específica. Pense sobre uma chave inglesa ajustável contra uma chave de tamanho fixo
MarkJ

8

Porque todos são péssimos (de um jeito ou de outro).

No momento, criamos cerca de 5.000 idiomas para descrever problemas naturais e nenhum deles está disponível para escrever programas (um exemplo seria "inglês").

Até que alguém encontre uma maneira de criar uma linguagem de programação que possa expressar o que você pode expressar em uma frase em uma linguagem natural, ela continuará chegando.


15
Mesmo assim, eles continuarão chegando. Apenas línguas mortas são escritas em pedra, perdoe o trocadilho. Há uma razão pela qual as línguas vivas estão mudando constantemente.
R. Martinho Fernandes

11
Alguns afirmam que a linguagem natural para expressar problemas é matemática. Isso levanta a questão de por que as pessoas continuam adicionando açúcar sintático às linguagens funcionais, em vez de usar o cálculo lambda puro. Acho que os problemas que temos que resolver rotineiramente frequentemente não são facilmente expressos em inglês ou em matemática.
Steve314

5
Acordado. É tão difícil expressar "estou com fome" usando matemática pura.
Aaron Digulla

11
@AaronDigulla: com fome = sum (barriga / food) certamente :)
gbjbaanb

@AaronDigulla esse é um bom exemplo, muitas vezes você deseja expressar a computação. Então, tomamos um cenário específico como: estou com fome, agora coma -> bem, agora não coma -> morra de fome. Para construir sistemas capazes de negociar ou expandir o contexto, acho que esse é o objetivo da IA. Linguagens de programação normais apenas expressam o que as pessoas dizem a elas o que devem fazer e geralmente isso é mais específico do que geral. Mas como a maioria dos problemas é específica, você pode vê-lo aqui.
AndreasScheinert

6

Obviamente, uma motivação importante para criar um novo idioma é conseguir algo melhor do que os idiomas já existentes. E como sempre há espaço para melhorias, sempre haverá novos idiomas.

Os interesses comerciais são outro grande motivo. Acredito que é importante, por exemplo, a Microsoft, que eles possam oferecer um idioma para todas as necessidades, para que empresas e desenvolvedores prefiram suas plataformas.


6

Código legado. Se você inicia um novo idioma, não precisa ouvir / considerar todas as reclamações ao alterar um idioma antigo. Mesmo que todos concordem que a nova implementação é melhor, ela não pode quebrar o código antigo. E há muitos códigos antigos por aí.


3
Existe algum caso documentado de um idioma sendo projetado para evitar código legado? Essa afirmação parece altamente improvável. Eu posso ver o caso em que você deseja começar de novo (.net vem à mente), mas não é muito para evitar o código legado, mas para melhor habilitar o código futuro.
Bryan Oakley

Eu não acredito que isso esteja correto. É (geralmente) possível bifurcar uma implementação de código aberto de uma linguagem existente.
alternativa

@BryanOakley - originalmente o .NET pretendia manter a compatibilidade com o VB6, mas eles decidiram que era um problema muito difícil. O .NET ainda tinha muitos WRT Java / J ++ herdados nos quais era baseado. Eu acho que D é um exemplo de uma linguagem projetada contra código legado.
Gbjbaanb

4

porque é divertido criar novos idiomas, mesmo que eles não tenham uso real

Uma linguagem de programação esotérica (às vezes abreviada para esolang) é uma linguagem de programação projetada para testar os limites do design da linguagem de programação de computador, como prova de conceito ou piada.


11
Para aqueles que não chegar até as notas de rodapé no artigo da Wikipédia, as línguas esotéricas wiki é muito divertido: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow

você se importaria de explicar mais sobre o que faz e por que o recomenda como resposta à pergunta? "Respostas apenas de link" não são bem-vindas no Stack Exchange
gnat

11
@gnat Sinceramente, acho que o texto original não é apenas uma resposta para o link, seria uma resposta curta, mas perfeitamente válida, sem o link. Mas, como o link agrega sabor, incluí uma pequena citação.
jk.

3

Criar uma linguagem de programação é bastante divertido. É quase um trabalho criativo, já que você não está limitado aos requisitos anteriores. Não é mais tão difícil de implementar, pois você sempre pode compilar em C e compilar o código C para obter um desempenho adequado se estiver escrevendo um compilador em primeiro lugar.

É claro que a maioria de nós tem menos boas idéias do que pensamos, por isso muitas vezes acabam decepcionando ou não sendo amadas por ninguém além do designer original.

Pense em qualquer linguagem de programação que você conhece. Você pode facilmente criar várias coisas de que não gosta, certo? Você presumivelmente tem idéias de como elas podem ser corrigidas. Com um pouco mais de impulso, supondo que você saiba muito sobre a criação de compiladores (e muitas pessoas sabem), você pode começar a projetar e até implementar o seu próprio.


2

Resposta rápida e curta

Reinventando a roda ... Qual é a tendência atual ...

Resposta longa e chata

Muitas pessoas esquecem que "outra nova linguagem semelhante para programadores antigos" é "uma nova linguagem simples para novos programadores".

O que quero dizer com isso?

Bem, por "vários anos" programadores, Java ou C # pode ser uma linguagem de programação adicional para o Cobol existente, (OO / Procedural) Basic, C / C ++, enquanto para "novos" programadores, Java ou C # são novas linguagens, enquanto Cobol, (OO / Procedural) Básico, o C / C ++ não existe para eles, portanto, reinventar a roda se torna algo comum ...

E, se houver uma nova tendência em tecnologia, as pessoas podem criar uma nova linguagem de programação com base nessa tendência, como ecmascript / javascript para a Web e programação funcional ...

Felicidades.


+1 para apontar o aspecto de reinventar a roda. Geralmente, isso é feito por razões de marketing: qualquer empresa ou organização grande o suficiente deve ter sua própria linguagem de programação.
Giorgio

1

novas linguagens de programação são criadas por vários motivos diferentes, principalmente porque há um novo paradigma de programação ou devido aos avanços nas pessoas de hardware que criam uma nova linguagem para tirar proveito dos novos recursos de hardware, como multitarefa, etc.

no meu caso, geralmente construo pequenos compiladores (com uma nova linguagem de programação), por motivos especiais. se eu faço vários jogos e acredito que uma linguagem de programação criada especificamente para o desenvolvimento de jogos resultará em um código menor e um desenvolvimento mais rápido, então eu o construo. e, no final, verifica-se que também pode ser usado para outra programação de uso geral.

Eu acho que a maioria das pessoas que cria linguagens de programação tem um objetivo específico em mente, há quem as crie para fins gerais desde o início. mas a maioria não é.

A propósito, acho que existem muitas linguagens de programação, mas centenas de novas sempre serão lançadas. alguns por diversão, outros por um objetivo de nicho, como um projeto escolar, ou por centenas de outros motivos. e mais cedo ou mais tarde um novo se tornará popular. Isso nunca vai acabar.


0

Pela mesma razão, existem tantos <whatever> e continuamos criando novos <whatever>

Há uma dúzia de estruturas PHP MVC, por exemplo, mas as pessoas sempre criam novas para atender a necessidades específicas, para evitar se tornar dependente de outra equipe ou apenas para tentar criar algo melhor. O mesmo vale para basicamente todos os tipos de ferramentas ou aplicativos.

É uma coisa muito boa, praticamente uma vitória para todos na minha opinião.


Síndrome NIH = geralmente não é útil para o setor de TI.
Gbjbaanb

0

As universidades contribuem com muitas linguagens de programação, assim como grandes empresas como Ericsson (Erlang = linguagem Ericsson), Bell Labs (linguagens B e C), Google (linguagem Go alguns meses antes). Muitos dos que foram escritos como parte da pesquisa universitária não são muito utilizados. Existem algumas exceções notáveis, no entanto. Suponho que escrever sua própria linguagem / compilador seja um bom tópico para teses de doutorado de pessoas que estudam a teoria da computação ou disciplinas relacionadas. Parece-me que o Python é uma das primeiras linguagens nascidas do esforço online colaborativo de vários programadores em torno de uma única idéia.


python-history.blogspot.com/2009/01/… descreve o nascimento de Python em detalhes
Andy Dent

0

Existem algumas razões, a maioria ocorre porque as pessoas pensam que o que existe não facilita a resolução de alguns conjuntos de problemas. Alguns são apenas por diversão ou por interesse acadêmico.

Eu acho que há um argumento sólido de que a questão de como você cria a linguagem perfeita ainda não foi resolvida (e talvez nunca seja). Portanto, desde que as pessoas tenham novas idéias sobre o que tornaria uma ótima linguagem, as pessoas continuarão tentando. Algumas dessas tentativas mapearão novos espaços legais como Erlang e outras fracassarão, mas desde que alguma coisa seja aprendida com o flop, tudo bem.


-1

Como mencionado anteriormente, os idiomas tentam direcionar determinadas tarefas específicas e os novos idiomas podem direcionar para uma nova área. Esses idiomas podem usar recursos de outros idiomas que estão atualmente fora.

Outro motivo para novos idiomas é tentar incorporar muitas tarefas diferentes e ser o idioma de escolha para muitas necessidades diferentes. Algumas dessas linguagens estão tentando ser todas as linguagens abrangentes que você sempre usaria, independentemente da necessidade.


-1

Aprendi na minha aula de linguagens de programação que a maioria das linguagens foi inventada para coçar. A maioria das linguagens foi inventada para expressar melhor um conjunto de algoritmos. Por exemplo, linguagens funcionais foram inventadas para dar aos algoritmos recursivos um espaço muito mais expressivo.

Perguntar por que existem tantas línguas é como perguntar por que C ++ 0x? :)

Além disso, quanto mais idiomas você souber, mais expressivo poderá se tornar - isso é verdade tanto na programação quanto nas linguagens naturais!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.