Sou bastante fluente em C / C ++ e posso me orientar nas várias linguagens de script (awk / sed / perl). Comecei a usar muito mais o python porque combina alguns dos aspectos bacanas do C ++ com os recursos de script do awk / sed / perl.
Mas por que existem tantas linguagens de programação diferentes? Suponho que todas essas linguagens podem fazer as mesmas coisas, então por que não usar apenas uma linguagem e usá-la para programar computadores? Em particular, há alguma razão que eu deveria saber uma linguagem funcional como um programador de computador?
Algumas leituras relacionadas:
programming-languages
Suresh
fonte
fonte
Respostas:
As linguagens de programação evoluem e são aprimoradas com o tempo (inovação).
As pessoas pegam idéias de diferentes idiomas e as combinam em novos idiomas. Alguns recursos foram aprimorados (mecanismos de herança, sistemas de tipos), outros foram adicionados (coleta de lixo, manipulação de exceções), alguns foram removidos (
goto
instruções, manipulações de ponteiro de baixo nível).Os programadores começam a usar uma linguagem de uma maneira específica que não é suportada por nenhuma construção de linguagem. Os designers de idiomas identificam esses padrões de uso e introduzem novas abstrações / construções de linguagem para suportar esses padrões de uso. Não houve procedimentos na linguagem assembly. Nenhuma classe em C. Nenhuma exceção manipulando em C ++ (inicial). Não há maneira segura de carregar novos módulos em idiomas antigos (fácil em Java). Nenhum encadeamento interno (fácil de usar em Java).
Os pesquisadores pensam em formas alternativas de expressar cálculos. Isso levou o Lisp e o ramo da linguagem funcional da árvore de idiomas, o Prolog e o ramo de programação lógica, Erlang e outros modelos de programação baseados em atores, entre outros.
Com o tempo, os designers / pesquisadores de linguagem passam a entender melhor todas essas construções, e como elas interagem, e projetam linguagens para incluir muitas das construções populares, todas projetadas para trabalhar perfeitamente juntas. Isso resulta em linguagens maravilhosas como o Scala, que possui objetos e classes (expressos usando traços em vez de herança única ou múltipla), recursos de programação funcional, tipos de dados algébricos integrados de maneira agradável ao sistema de classes e à correspondência de padrões e simultaneidade baseada em ator.
Pesquisadores que acreditam em sistemas de tipo estático se esforçam para melhorar sua expressividade, permitindo coisas como classes genéricas digitadas em Java (e todas as coisas maravilhosas em Haskell), para que um programador obtenha mais garantias antes de executar um programa de que as coisas não vão acontecer. dar errado. Os sistemas de tipo estático geralmente impõem um grande ônus ao programador (digitando os tipos); portanto, a pesquisa foi realizada para aliviá-lo. Idiomas como Haskell e ML permitem que o programador omita todas as anotações de tipo (a menos que estejam fazendo algo complicado). Scala permite que o programador omita os tipos no corpo dos métodos, para simplificar o trabalho do programador. O compilador infere todos os tipos ausentes e informa o programador sobre possíveis erros.
Finalmente, alguns idiomas são projetados para oferecer suporte a domínios específicos. Exemplos incluem SQL, R, Makefiles, a linguagem de entrada Graphviz, Mathmatica, LaTeX. Integrar o que as funcionalidades dessas linguagens nas linguagens de uso geral (diretamente) seria bastante complicado. Esses idiomas são baseados em abstrações específicas para seu domínio específico.
Sem a evolução no design da linguagem de programação, todos nós ainda estaríamos usando a linguagem assembly ou C ++.
Quanto ao conhecimento de uma linguagem de programação funcional : as linguagens funcionais permitem expressar cálculos de maneira diferente, geralmente mais concisa do que usar outras linguagens de programação. Considere a diferença entre C ++ e Python e multiplique por 4. Mais seriamente, como já mencionado em outra resposta, a programação funcional fornece uma maneira diferente de pensar sobre os problemas. Isso se aplica a todos os outros paradigmas; alguns são mais adequados a alguns problemas e outros não. É por isso que as linguagens com vários paradigmas estão se tornando mais populares: você pode usar construções de um paradigma diferente se precisar, sem alterar a linguagem e, mais desafiadoramente, pode misturar paradigmas em um único software.
fonte
tldr: Não há linguagem de bala de prata.
Espero que eles não me processem, mas aqui está uma foto de uma das apresentações de Stanford.
Ao decidir escolher um idioma, você pode escolher apenas dois desses três recursos .
E é por isso que as pessoas estão tristes e querem inventar uma superlíngua que cubra todos os três.
Na verdade, há uma lista enorme de requisitos (alguns deles você pode ver em outras respostas), mas eles apenas adicionam detalhes aos principais recursos. Além disso, existem razões históricas e políticas para preferir um idioma a outro.
Combinações de tais fatores produzem um novo idioma.
( E ouvi dizer que todo bom programador deve criar seu próprio idioma;) )
fonte
O mundo está cheio de coisas com muitas variações diferentes: processadores de texto, carros, designs de casas, bebidas, doces, canetas, pás, etc. As razões pelas quais temos tantas podem ser resumidas em alguns princípios:
Entre em qualquer loja de material de escritório e consulte a seção "instrumento de escrita" - existem centenas de variedades de canetas. Todos eles fazem aproximadamente a mesma coisa: entregar tinta a uma superfície de escrita. Mas cada caneta que você vê exibida para venda está lá por uma das três razões acima.
A evolução das canetas continuará, pois nenhum produto atende às necessidades de todos os usuários. Algumas canetas são baratas e descartáveis, outras caras e construídas com materiais de alta qualidade; alguns usam géis, outros usam tinta, outros usam pigmentos; alguns têm gorros, outros nem sequer; barris largos, estreitos, redondos, quadrados; curto longo; vermelho, branco, preto, azul Etc etc.
Mas chega de canetas.
Nossa miríade atual de linguagens de programação pode ser rastreada até as primeiras: os códigos numéricos de máquinas para computadores antigos na década de 1940. Primitivo, difícil de usar e trabalhoso para entrar no computador, mas eles fizeram o trabalho. Não demorou muito para que os programadores atribuíssem palavras mnemônicas (como ADD, CALL, LOAD) aos códigos de máquina, dando origem à classe de idiomas denominada "linguagens assembly".
Arquiteturas de processador diferentes pediam códigos mnemônicos diferentes, dependendo dos recursos específicos das máquinas subjacentes. Levar essas diferenças em consideração significava inventar diferentes linguagens assembly.
(Talvez agora você possa ver para onde isso está indo ...)
Os programadores examinavam seus programas de linguagens assembly e via padrões: as mesmas seqüências de instruções seriam usadas para formar loops, condicionais, atribuição de variáveis, chamadas de função e assim por diante. Assim, nasceram as linguagens de programação procedural. Esses idiomas encapsularam grupos de instruções sob termos genéricos, como "se", "enquanto", "deixe" etc.
De uma análise matemática da programação de computadores, surgiram as linguagens funcionais - uma nova maneira de ver a computação. Nem melhor, nem pior, apenas diferente.
E também há linguagens orientadas a objeto, estaticamente tipadas, dinamicamente, vinculativas tardias, vinculadas antecipadamente, baixo uso de memória, alto uso de memória, paralelizável, linguagens para usos específicos e assim por diante.
Por fim, temos diferentes linguagens de programação porque queremos diferentes linguagens de programação. Todo designer de idiomas tem suas próprias idéias sobre como a linguagem dos "sonhos" será exibida e operada. Diversidade é uma coisa boa .
fonte
As linguagens de programação funcional geralmente são baseadas no modelo de computação diferente (mas equivalente em potência): cálculo lambda . Existem algumas linguagens não tipadas (com digitação semelhante ao Python) como LISP, Scheme (usada no livro / curso Estrutura e Interpretação de Programas de Computador amplamente reconhecido ) e linguagens de tipo estatístico como Haskell, ML, F #.
O SICP foi o que me levou à programação funcional, mas outras pessoas recomendam este artigo de John Hughes e esta entrevista com ele.
A programação funcional agora está sendo implementada pela Microsoft, por exemplo, que incluiu o F # (sua linguagem funcional para .NET) no VS2010 e 11; eles também empregam alguns desenvolvedores Haskell em MSR, IIRC.
Observe que também existem algumas linguagens de programação funcionais que não são de cálculo lambda, como Refal , que se baseia na correspondência e reescrita de padrões.
Como o nível de abstração nas linguagens funcionais é diferente, sua atitude para resolver problemas muda quando você usa técnicas de programação funcional. Alguns dizem que isso pode torná-lo um programador melhor em geral.
fonte
Sim. Porque haskell mudou a minha maneira de pensar. Pode mudar a maneira como você pensa também.
História: Eu costumava pensar que posso aprender qualquer linguagem de programação em um dia. Um dia eu comecei o Haskell. Eu terminei tudo o que veio antes das mônadas em meio dia. Agora faz um ano desde aquele dia e ainda estou irremediavelmente preso no Monads.
Ler:
Wiki de idiomas e pensamento
Notação como uma ferramenta para o pensamento de Kenneth E. Iversion, palestra do Prêmio Turing
A notação é uma ferramenta para o pensamento. Precisamos de diferentes notações feitas sob medida para lidar confortavelmente com diferentes pensamentos. Então criamos novos idiomas.
Além disso, ler . ;-)
fonte
Dificilmente poderia haver um programador que em algum momento não se frustrasse com as restrições da linguagem que estava usando e decidiu coçar a coceira. Assim, um novo idioma - ou dialeto de um existente - nasce.
Abadi e Cardelli em "A Theory of Objects" desenvolvem toda uma família de linguagens de programação a partir de fundações orientadas a objetos. Eles provam que a programação funcional é um caso especial de OO, mas não o contrário.
Inventar algo novo é divertido, por isso é mais provável que as pessoas criem outro idioma do que contribuam para melhorar um idioma existente. Obviamente, existem guardiões de idiomas que não aceitam mudanças em sua visão. O melhor exemplo é o abismo entre os apoiadores do Common Lisp e do Scheme.
fonte
Como outros já deram boas respostas para essa pergunta, citarei apenas Alan Perlis.
Além disso, http://weblog.raganwald.com/2004/10/beware-of-turing-tar-pit.html , é uma boa leitura.
fonte
Por que existem tantos países no mundo? Não seria mais fácil se tivéssemos 5 ou 6 superpotências, ou mesmo um reino universal da Terra? É fácil argumentar por que não seria melhor --- para começar, a concorrência de diferentes países pode levar ao progresso e, do ponto de vista da democracia, direitos humanos etc., muitos países podem ser melhores do que um - - mas isso não explica por que temos muitos países. Explica apenas por que muitos países seriam melhores .
Da mesma forma, você pode perguntar, por que tantas línguas humanas diferentes? Polonês, árabe, mandarim ... Não seria mais fácil se houvesse apenas um idioma? Você poderia argumentar de qualquer maneira, mas essas seriam razões pelas quais seria melhor se a vida fosse de um jeito ou de outro. Não explicaria as causas por trás de tantas línguas humanas diferentes.
O fato é que existem muitas pessoas no planeta, e todos nós estamos fazendo o que fazemos, todos temos nossas opiniões, todos queremos estar no comando e ter nosso próprio país ou linguagem de programação, e muitas vezes pensamos que sabemos melhor do que outros, ou pelo menos não se incomode em entender o que os outros têm a oferecer.
Leia este post de blog muito esclarecedor: Por que tantas estruturas da Web Python? Aparentemente, existem cerca de 50 estruturas da Web em Python. Isso é ridículo; não existe absolutamente nenhuma razão racional sensata para isso. Mas o autor do post responde: existem muitas estruturas da Web Python porque é muito fácil criar uma . Você não precisa de um motivo racional para haver mais estruturas da web em python ou mais linguagens de programação. As pessoas continuarão criando novas porque não sabem o que já está disponível, ou porque esperam ganhar dinheiro, ou apenas porque criar coisas novas é divertido!
Deixe-me descrever um exemplo pessoal. Cerca de 10 anos atrás, eu estava escrevendo um código C ++ para uma empresa finlandesa. Você sabe, na Finlândia, eles têm aqueles caminhões enormes que, bem, percorrem longas distâncias e entregam muitas coisas de um lugar para o outro. Tenho certeza de que também existem caminhões na América. Portanto, um problema típico é garantir que todos os 24 pneus estejam bem. Obviamente, existe uma tecnologia testada pelo tempo: pressão e temperatura podem ser monitoradas, e mudanças drásticas indicariam que algo deu errado. Obviamente, toda essa tecnologia é proprietária, patenteada, com todas as implicações. (Lembre-se: as patentes devem promover a inovação!) Portanto, essa empresa finlandesa queria detectar o estado dos pneus por ... som. A idéia era instalar microfones para ouvir o som de todos os pneus e fazer algum tipo de mágica de processamento de sinal nesses sons, a fim de verificar se um dos pneus tinha algum tipo de problema, e eu estava fazendo um protótipo dessa loucura. (Eles ainda tinham um laboratório dedicado para gravar sons de amostra; uma vez eles me enviaram um impressionante vídeo de uma ocasião em particular, quando eles conseguiram explodir um pneu de amostra depois de submetê-lo a 5 ou 10 toneladas de pressão e aquecê-lo até uma temperatura ridícula .) Claramente, novamente, não havia uma razão racional específica para esse desenvolvimento, exceto que era divertido e algumas pessoas queriam ganhar dinheiro. Entenda também que existem muitas razões para alguém começar a desenvolver uma nova linguagem de programação. Não há necessidade ou mesmo possibilidade de aprender todos eles. (Eles ainda tinham um laboratório dedicado para gravar sons de amostra; uma vez eles me enviaram um impressionante vídeo de uma ocasião em particular, quando eles conseguiram explodir um pneu de amostra depois de submetê-lo a 5 ou 10 toneladas de pressão e aquecê-lo até uma temperatura ridícula .) Claramente, novamente, não havia uma razão racional específica para esse desenvolvimento, exceto que era divertido e algumas pessoas queriam ganhar dinheiro. Entenda também que existem muitas razões para alguém começar a desenvolver uma nova linguagem de programação. Não há necessidade ou mesmo possibilidade de aprender todos eles. (Eles ainda tinham um laboratório dedicado para gravar sons de amostra; uma vez eles me enviaram um impressionante vídeo de uma ocasião em particular, quando eles conseguiram explodir um pneu de amostra depois de submetê-lo a 5 ou 10 toneladas de pressão e aquecê-lo até uma temperatura ridícula .) Claramente, novamente, não havia uma razão racional específica para esse desenvolvimento, exceto que era divertido e algumas pessoas queriam ganhar dinheiro. Entenda também que existem muitas razões para alguém começar a desenvolver uma nova linguagem de programação. Não há necessidade ou mesmo possibilidade de aprender todos eles. uma vez que eles me enviaram um impressionante vídeo de uma ocasião em particular, quando eles conseguiram explodir um pneu de amostra após submetê-lo a 5 ou 10 toneladas de pressão e aquecê-lo a uma temperatura ridícula.) Claramente, novamente, não havia um racional específico razão para esse desenvolvimento, exceto que era divertido e algumas pessoas queriam ganhar dinheiro. Entenda também que existem muitas razões para alguém começar a desenvolver uma nova linguagem de programação. Não há necessidade ou mesmo possibilidade de aprender todos eles. uma vez que eles me enviaram um impressionante vídeo de uma ocasião em particular, quando eles conseguiram explodir um pneu de amostra após submetê-lo a 5 ou 10 toneladas de pressão e aquecê-lo a uma temperatura ridícula.) Claramente, novamente, não havia um racional específico razão para esse desenvolvimento, exceto que era divertido e algumas pessoas queriam ganhar dinheiro. Entenda também que existem muitas razões para alguém começar a desenvolver uma nova linguagem de programação. Não há necessidade ou mesmo possibilidade de aprender todos eles.
Obviamente, tudo isso se aplica apenas se você acredita em evolução. Se você acredita em alguma forma de design inteligente, que Deus também criou todas as linguagens de programação, teria que encontrar um propósito por trás dessa multidão. Talvez Deus quisesse promover a competição entre diferentes linguagens de programação para que a arte do desenvolvimento de software alcançasse seu estado mais alto possível.
Em conclusão, existem muitas pessoas, muitos países, muitas linguagens de programação. Esta é apenas a natureza da vida! Sejamos gratos por isso: isso significa apenas que o campo da programação / ciência da computação está muito vivo e florescendo.
fonte
Por que existem tantas linguagens de programação diferentes?
Porque existem escolhas a serem feitas:
Felizmente, as duas últimas são dicotomias não essenciais, ou seja, é possível colocar as duas opções em uma única linguagem de programação. Mas, as três primeiras dicotomias dão origem a 8 combinações. Assim, mesmo em um mundo ideal, haveria pelo menos 8 linguagens de programação. Quando você faz uma pesquisa detalhada, há outras opções de design diferenciadas dentro de paradigmas específicos. Por exemplo, se alguém decide fazer uma linguagem estaticamente tipada com base em classe, existem diferentes maneiras de projetar o sistema de tipos. Ainda não existe uma maneira canônica de fazê-lo. Se alguém decide fazer uma linguagem de programação simultânea, existem várias maneiras de representar a simultaneidade: semáforos, regiões críticas condicionais, monitores, passagem de mensagens (síncrona vs. assíncrona). Na passagem síncrona de mensagens,
Parte da pesquisa que fazemos em teoria da linguagem de programação é dedicada à resolução dessas dicotomias. Por exemplo, trabalhei na resolução da dicotomia entre programação imperativa e funcional em um artigo chamado " Designações para linguagens aplicativas " e nosso método agora foi adotado por Haskell, tornando-a uma linguagem funcional e imperativa. Isso não significa que a dicotomia esteja totalmente resolvida. Um programador de Haskell ainda enfrenta a opção de resolver seu problema funcional ou imperativamente. Luca Cardelli trabalhou na resolução de dicotomia estática versus dinâmica de digitação. Paul Levy trabalhou na resolução da dicotomia chamada por valor vs. chamada por nome . Nem todos esses resultados foram implementados em linguagens de programação da vida real.
Se todas essas linguagens podem fazer as mesmas coisas, por que não usar apenas uma linguagem e usá-la para programar computadores?
Porque para um programador no mundo real, não basta fazer algo. Também importa como é feito. Quando isso é feito corretamente, o domínio do problema é representado fielmente no programa, a modularidade do problema é mantida e os programas se tornam fáceis de entender, modificar e manter. Todas essas coisas afetam o custo do desenvolvimento e manutenção do programa. Eles também afetam a confiabilidade e a segurança do software.
Por exemplo, muitas pessoas usam um programa chamado " Quicken " para contas financeiras. O programa original foi desenvolvido em alguma versão interna do Visual Basic e foi bastante bom. No entanto, tem sido difícil estendê-lo e mantê-lo. Ao longo dos anos, à medida que a empresa tentava estendê-lo para novos recursos, o programa tornou-se cada vez mais problemático, com milhões de clientes insatisfeitos em todos os lugares. Eles provavelmente se beneficiarão com a reengenharia do software em uma linguagem de programação orientada a objetos fortemente tipada.
Em particular, há alguma razão para eu conhecer uma linguagem funcional como programador de computador?
Historicamente, a "programação funcional" foi inventada por Godel, Kleene e Church, seguindo a prática matemática padrão, e a "programação imperativa" foi inventada por Turing para definir a noção de computação mecânica. Antes de Turing, não há evidências de que a matemática tenha analisado idéias imperativas de programação. (Embora todos os algoritmos matemáticos tradicionais tenham sido expressos em um "estilo imperativo", seu conteúdo essencial ainda era funcional.) Portanto, a programação imperativa é muito nova para a civilização humana, e sua matemática ainda não é muito bem compreendida. A principal razão pela qual todos devem conhecer alguma programação funcional é entender como a programação pode ser matemática. (Não admito que a programação imperativa não seja matemática, é nisso que os programadores funcionais querem que você acredite. Mas eu concordaria que, com o estado da arte atual, ainda não sabemos como fazer a programação imperativa matematicamente. Muitos de nós estamos trabalhando exatamente nesse problema.)
fonte
Você pode ver isso como evolução.
No começo, os computadores eram programados exclusivamente com códigos binários. Depois disso, os mnemônicos foram introduzidos e as linguagens assembly foram introduzidas, dependendo principalmente da CPU usada.
Após a introdução das linguagens de nível superior (3º nível) (Pascal, C, ADA, Cobol), algumas muito genéricas (como C), outras mais adequadas para manipulação de dados (Cobol), outras para cálculos (Fortran).
Depois disso, surgiram as linguagens do 4º nível, como as lógicas (como o Prolog). Os idiomas mais genéricos são sucessores de idiomas de terceiro nível; alguns deles são Java, C #.
Também vemos idiomas específicos para internet / web, como ASP.NET, PHP.
E idiomas para um domínio específico (DSL), que funcionam principalmente em conjunto com um idioma genérico.
Depois, há idiomas para as crianças aprenderem programação, como o LOGO.
Também linguagens para escrever códigos rapidamente, como Python, Ruby etc., linguagens para manipular XML (XSLT).
E provavelmente esqueci muitas línguas e até categorias de línguas.
fonte
outras respostas são boas, adicionará alguns novos ângulos. enquanto o DC escreve as linguagens evoluem exatamente como as linguagens humanas reais! e emprestam conceitos e sintaxe um do outro novamente como linguagens humanas reais. em outras palavras, há também um estudo bastante real da etimologia das linguagens de computador.
isso também significa que houve uma longa história e cronograma que começaram principalmente por volta dos anos 30 com o cálculo lambda .
existe uma forte interação / sinergia / simbiose entre teoria e aplicação com linguagens de programação. novas aplicações são inventadas, o que leva a novas teorias e vice-versa. uma linguagem de programação é, sob muitos aspectos, uma ponte entre teoria e aplicação .
um estudo de caso interessante da história é Fortran. não é bem conhecido, mas as versões anteriores do Fortran (principalmente antes do Fortran77) tinham uma gramática ambígua . isso significa que o mesmo comando pode ser legitimamente "interpretado" / compilado de diferentes maneiras pelo compilador, porque havia várias "interpretações" válidas (esse não é o mesmo sentido técnico das linguagens "interpretadas").
então a teoria sobre gramáticas formais estava sendo desenvolvida na época em que Fortran foi inventado, e foi uma pequena crise quando a questão da ambiguidade da linguagem foi descoberta. A sintaxe de Fortan foi reformulada para evitar essa ambiguidade e os idiomas posteriores tiveram mais sensibilidade à ambiguidade gramatical em seu design. OOP também é um exemplo muito importante / principal de um conceito / avanço teórico em linguagens de programação que "impacta" ou "ondula" em muitas linguagens existentes, transformando-as.
outros estudos de caso são a invenção de novas tecnologias. por exemplo, a invenção do banco de dados relacional teve um grande impacto nas linguagens de computador, por exemplo, com SQL e interfaces de linguagem de computador (por exemplo, em java, "JDBC"). Da mesma forma, a rede mundial de computadores com um impacto ainda maior. parecia haver uma explosão de idiomas cronometrada em torno do boom das pontocom que coincidiu amplamente com o crescimento inicial da WWW e pode ser comparada com explosões evolucionárias .
também parece haver uma longa tendência de aumento de novas linguagens de programação em conjunto com o enorme poder de processamento exponencialmente crescente da lei de Moores, que alguns acham que pode estar diminuindo.
as tendências atuais de longo alcance nas linguagens de programação parecem estar voltadas para Big Data e Paralelização, por exemplo, com o MapReduce . também existe um interesse atual em fechamentos .
Outro aspecto importante das linguagens é que elas representam níveis crescentes de abstração . eles constroem abstrações de nível inferior para criar abstrações de nível superior (semelhante a uma pirâmide). dessa maneira, o progresso da evolução da linguagem de computador provavelmente é interminável e podemos ter certeza de que novas importantes continuarão sendo inventadas por muito tempo no futuro. isso provavelmente é análogo a um conceito semelhante em psicologia chamado chunking - geralmente dito, construindo conceitos mentais de nível superior a partir de blocos de construção de nível inferior.
qualquer um que tenha estudado muitas linguagens de computador deve admitir que uma mentalidade de rebanho pode ser observada, na qual alguns aspectos se transformam em modismos exagerados, ou seja, não são tão críticos quanto preconizados, ou até desaparecem (em uso) ao longo do tempo! algumas das idéias / mudanças principais permanecem, mas o (excesso) hype desaparece. nesse sentido, as linguagens de programação também ficam fora de moda . na minha opinião, na última meia década, dois casos que são realmente úteis, mas foram exagerados:
cada vez mais, uma auto-similaridade pode ser observada em muitos idiomas principais, de modo que todos tendem a convergir para a implementação de muitos recursos semelhantes à sua maneira, ou seja, como nos gráficos de comparação de produtos que "marcam" vários recursos em uma grade.
fonte
Eles não eram, é apenas um truque de marketing - se você faz a linguagem meio que se parecer com "C", isso reduz a aparente barreira à entrada.
Alguns que não têm influência de C: SQL, Pascal, Delphi, FORTRAN, COBOL, Ada, PowerBuilder, HyperTalk, Lisp, Simula, FOCAL, BASIC, PL / I, Algol, Algol-68, SNOBOL, Modula, Visual BASIC, Tutor, logotipo, adiante, DIBOL, hélice, AppleScript, Python, Erlang, Ruby, paleta, inglês, RPG, PL / SQL, ASP, Prolog, SmallTalk, Perl, bash, Wand BASIC, REXX, linguagem de lote do DOS.
Aqueles que se parecem com C, mas têm muito pouco em comum: JavaScript, Java, C #, (sem dúvida) Objective-C.
É tudo marketing, Java, C ++ e JavaScript meio que se parece com C, mas dificilmente poderia ser mais diferente nos bastidores.
fonte