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.
|