Por que são criadas as linguagem de diferentes tipos e para que servem?

  • Um dos motivos é que existem muitos problemas diferentes, necessidades que não podem ser supridas por um só modelo de programação. Mas isso envolve o certo grau de falácia, falo mais abaixo. O motivo oficial é este, os demais são secundários. Para isso ser exercido de forma adequada a linguagem precisa ser de um paradigma diferente.

    Salvo algo bem pontual linguagens não são melhoradas para atender evolução do hardware, pelo menos não por razões técnicas, já que por razões políticas do fornecedor do hardware pode haver a adoção ou crianção de nova linguagem. Também não existe isso por causa de sistema operacional.

    Em algum ponto podemos dizer que é porque existe pregos e parafusos e por isso precisa de ferramentas diferentes, mas quando o cabo é de plástico ou madeira, ou metal, ou é curvado ou tem outras características é porque tem gente que gosta de jeito diferente, não porque é necessário.

  • Um ponto secundário deste é que linguagens sempre possuem falhas e uma nova vem para dar uma solução para estas falhas. Muitas dessas falhas são subjetivas, o que permite sempre alguém achar um motivo para fazer algo diferente. Não tem como fazer uma linguagem perfeita, uma característica positiva tende impedir uma outra ou cria um negativa.

    Uma linguagem é difícil de gerenciar a memória? Cria outra que faz isso de forma mais simples. Uma linguagem exige escrever código demais e expressar com oas coisas realmente são? A linguagem não permite escrever códigos muito grandes com facilidade? Uma linguagem é legal mas na forma exatamente construída é ineficiente? Tudo isso pode ser resolvido usando a base do que já existe, ma mudando alguns detalhes que resolvem esse problema.

  • Outro motivo é que as pessoas querem ter um certo domínio de mercado ou marcar sua posição na história, então elas acham alguma coisa que pode ser feita de um jeito um pouco diferente mesmo que não seja tão diferente assim. Isto pode acontecer porque as pessoas tendem a gostar de coisas por causa de pequenos detalhes.

    Por que existem tantas marcas e variedades de tantos produtos? Pelos motivos que falei acima, então linguagem de programação não é diferente. Por que você precisa de um carro branco e outro azul? Isso não muda nada na vida das pessoas.

    É claro que uma nova linguagem resolve um problema encontrado em outra linguagem, mesmo que este problema não seja tão relevante, mas a maior questão é que as pessoas querem fazer coisas diferentes. Faria sentido ter algumas poucas linguagens muito diferentes, o resto é só briga por espaço. É até uma falácia parcial essa questão de que cada uma atende uma necessidade diferente. Claro que em parte isso é verdade, mas parte é só atender um gosto diferente. Salvo em alguns cenários faz pouca diferença usar uma coisa ou outra.

    Então o motivo real é que as pessoas gostam de cosias diferentes e tem gente que quer suprir isso.

  • Por que existem vários tipos de computadores? Ou de carros? Muitos deles não existem de fato mais porque se tornaram obsoletos, eles eram bons na época que foram criados, mas hoje não mais. Com linguagem se dá o mesmo, com a diferença que ela não desgasta com o tempo e ainda pode ser usada.

    Novamente, quem criou algo no passado tenta manter seu produto relevante e faz melhorias. Isto só funciona porque tem quem goste.

Em essência todas linguagens de programação conseguem fazer tudo o que é necessário e algumas são ligeiramente melhores em algum ponto específico. Muitas vezes você vê mais diferença na implementação de uma linguagem do que de uma linguagem para outra.

Linguagens são formas de expressão então cada um tem um jeito preferido de fazê-lo. Em alguns casos esse jeito pode ser mais fácil para certos cenários. Não é tão diferente de línguas naturais. Inclusive algumas servem melhor do que outras. Algumas servem melhor para assuntos técnicos outras servem melhor para cenários artísticos.

Já notou uma força muito grande das pessoas tentarem evangelizar sobre o uso de uma determinada linguagem? As pessoas sabem que maior adoção gera maior adoção e isso se faz necessário. A maioria das adoções são feitas pelo marketing, mesmo espontâneo, e não pela característica técnica real. Claro que é raro adoções muito fora de parâmetro, mas também é raro ter alguma coisa que seja muito complicado fazer em linguagens diferentes.

Atualmente existem milhares de linguagens de programação e cada um tem o direito de criar sua própria, o que vai determinar se ela será conhecida é o quanto se consegue divulgá-la e ter aderência de outras pessoas. E milhares são usadas, só varia a quantidade do uso.

Muitas linguagens não são criadas para serem produtos viáveis e sim experimentos ou evoluções de alguma existente.

Muitas vezes eu vi pessoas adotarem uma linguagem não por ela ser diferente mas por ela ter uma biblioteca que as pessoas queriam usar daquele jeito. Inclusive alguns acham que uma mudança na biblioteca cria outra linguagem quando isso não é verdade.

Fato é que existem literalmente infinitas combinações possíveis de se fazer em uma linguagem. Cada um enxerga uma combinação como melhor que outra.

Fica até mais fácil avaliar linguagem contra linguagem sobre isso. Por exemplo, existe um motivo para as pessoas usarem C ou C++ e não é performance como muitos acham, só pessoas ingênuas acham isto. Vou tentar colocar algumas motivações que vemos por aí para dar um visão geral de como as escolhas são feitas. Claro que estou fazendo simplificações.

C foi criada para ser um Assembly portável. E ser algo mais fácil de expressar que ALGOL que é uma linguagem fantástica mas muito chata de usar.

C++ foi inicialmente criada para adicionar classes em C, de dar melhores abstrações sem pagar nada por isso.

Java foi criada para ser um C++ melhor (nunca chegou nem perto disso, é pior que C++ em quase tudo que não envolve robustez).

C# foi criada para a Microsoft ter uma alternativa ao Java já que ela foi proibida de evoluir o Java. E também para ser o que Java disse que seria, ou seja um C++ melhor, então ela ficou no meio termo entre C++ e Java.

A grande diferença destas linguagens para C++ é o gerenciamento de memória.

VB.NET é o VB para o .NET. VB é o BASIC mais adequado ao Windows e que a Microsoft podia controlar a evolução. Tem uma quantidade incomensurável de dialetos BASIC. Esta linguagem surgiu para ser uma alternativa simples ao que existia por aí como FORTRAN ou COBOL.

F# existe para ter uma pegada funciona no .NET, baseada inicialmente em OCaml.

Pascal deveria ser ALGOL mais pragmática.

Delphi seria o Pascal com classes, uma tentativa da Borland de manter seu mercado em torno do Pascal em face das novidades que surgiam.

Objective C foi criada por descontentamento de alguns com a forma do C++ lidar com orientação a objetos. Swift foi criada porque Objective C tinha problemas demais e ainda mantinha o legado de C.

R foi criada para facilitar estatísticas. É uma das poucas linguagens que impõe uma diferença real que faz sentido existir além de gosto.

Rust foi criada porque C++ tem muitas falhas e Java e assemelhados possuem tracing garbage collector.

Go foi criada para ser C com GC e corrigir alguns erros dessas linguagem, além de permitir melhores abstrações (mas nem tanto em alguns casos), e também pra compilar rápido. Assim como acontece em outras linguagens, o mercado vai para outro lado e os objetivos mudam. Nem sempre o criador consegue manter a linguagem do jeito que ela pensou, as pessoas podem adotá-la, mas ter outras ideias.

D foi criada porque C++ era complexa de mais. Não deu tão certo e estão reformulando os objetivos.

Dart foi criada porque JS era muito ruim.

Scala nasceu para ter uma vertente mais funcional para Java

Kotlin surgiu para ter uma alternativa sem os problemas do Java rodando na JVM (tinha outros objetivos inicialmente, mas foram abandonados).

Eifell foi criada para demonstrar que é possível fazer herança múltipla e como é o uso de contratos.

Haskell surgiu para ensinar Haskell para as pessoas :P :D

Dizem que V foi criada para arrecadar dinheiro de incautos (não sou eu que disse isso :) ).

JavaScript surgiu para permitir customizar páginas web com comportamentos, e por isso deveria ser uma linguagem simples e fácil de usar, não para fazer aplicações. Boa parte das escolhas feitas para ela foram por falta de escolha, ou pelo menos falta de tempo para escolher fazer coisas melhores.

TypeScript foi criada para colocar tipos e mais organização em JS, permitindo assim aplicações.

PHP foi criada para facilitar o trabalho de criar páginas web onde o C que era usado pelo criador era muito complicado.

Python, Ruby, Perl e outras surgiram para serem algo parecido, ou pelo menos para serem capazes de fazer scripts de forma mais simples do que C, Pascal ou outra linguagem do tipo, mas mais poderoso que awk, bash e outros shells. Ruby queria por OOP em scripts, linda ideia.

Python por exemplo tentou dar um ar de linguagem funcional mas com o jeito imperativo que todo mundo está acostumado, que é uma receita para o sucesso, porque linguagens funcionais são simples e bonitas, mas ruins para certos padrões de uso. Daí vem a indentação para definir bloco.

Groovy existe para ser uma alternativa dinâmica ao Java.

Lua foi criada porque precisavam de um tecnologia brasileira para fazer scripts simples e com performance embarcando em outras aplicações.

Boo deveria ser um Python melhor rodando no .NET, mas morreu por falta de comunidade e comprometimento do criador, talvez porque C# melhorou boa parte das coisas que Boo trouxe.

Elixir deveria ser Erlang dinamicamente tipada entre outras "melhorias".

dBase foi criada para suportar um banco de dados simples. Clipper foi criada inicialmente como um compilador de dBase, mas depois preciso evoluir para poder criar aplicações completas. Harbour foi criada para atender quem ficou órfão de Clipper e acabou tendo uma evolução natural para atender novas demandas. FoxPro deveria ser o Clipper de outra empresa para ganhar um pouco dos rios de dinheiro que a Nantucket estava ganhando. Tem outros dialetos criados cada um por interesse de uma empresa.

Essas últimas linguagens costumam abrir mão de eficiência para dar mais facilidade. Algumas menos que outras, um exemplo é Lua que consegue ser fácil e simples sem ser muito ineficiente.

Tem umas linguagens que ninguém sabe porque foi criada porque ela só piora as coisas :) Em geral é só gosto do criador.

Eu acho curioso como algumas linguagens foram criadas com um objetivo claro e foi mudando, hoje é outra coisa e ninguém percebe. Muita gente defendia a linguagem como era e hoje defende o outro jeito indo contra sua argumentação inicial. As pessoas torcem por times, por partidos políticos e por empresas e tecnologias, tudo de uma forma religiosa mas com dogmatismo tendencioso com o discurso do momento. Isso dá espaço para surgir novas linguagens, as pessoas estão esperando um discurso que faça mais sentido para ela.

Algumas linguagens são verdadeiros frankensteins.

Qual é a relação entre as regras de uso de uma língua?

Resposta: Embora cada língua estabeleça as regras de uso do repertório quanto da combinação de signos, cada cultura influencia bastante o modo como a língua é usada no cotidiano, pois é nela, que se encontram valores que orientam o uso da língua.

O que se pode dizer que a aquisição da linguagem e a senha de entrada no mundo humano?

1- Podemos dizer que a aquisição da linguagem é a senha de entrada ao mundo humano porque a linguagem em sí é como um instrumento que nos permite pensar e comunicar o pensamento, dar sentido à realidade que nos cerca.