Algum idioma se tornou muito popular por algo que não seja o seu objetivo?

70

Tome este cenário:

  • Um programador cria uma linguagem para resolver algum problema.

  • Ele então libera esse idioma para ajudar outras pessoas a resolver problemas como esse.

  • Outro programador descobre que é realmente muito melhor para alguma categoria diferente de problemas.

  • Em virtude desse novo aplicativo, o idioma se torna popular para esse aplicativo principalmente.

Há alguma ocorrência disso realmente acontecendo?

Em outras palavras, o objetivo pretendido de uma linguagem tem alguma influência sobre como ela é realmente usada ou se ela se torna popular? É mesmo importante que um idioma tenha um propósito anunciado?

Jon Purdy
fonte
4
Seu exemplo de HTML realmente não se encaixa no que você está procurando. Os documentos técnicos são tão diferentes de qualquer outro documento? O principal objetivo do HTML ainda é o mesmo de 1989, para fornecer meios fáceis para os documentos fazerem referência entre si. O IMHO HTML é exatamente o oposto do que você está realmente procurando.
Yannis 30/05
5
Considerando a longa lista de respostas; talvez a pergunta oposta seja mais interessante: qual linguagem (popular) é usada apenas para o propósito a que se destina?
Jaap
@ Yannis: Bom ponto. Não é o melhor exemplo, e realmente poderia ser discutido de qualquer maneira. Editado para remover.
Jon Purdy 30/05
@ Jaap: Eu pensei o mesmo!
Leonbloy 30/05
2
Eu posso estar errado nisso, mas tenho certeza de que a maioria dos idiomas não é usada para o que seus criadores pretendiam. Eu acho que a grande razão disso é que pessoas de fora não sabem para que é usado, o que as ajuda a ter uma mente mais aberta sobre o potencial de uma linguagem.
30911 Kenneth

Respostas:

118

Lisp . McCarthy originalmente especificou Lisp em um artigo para mostrar que poucas notações simples são suficientes para construir uma linguagem completa de aprendizado. Ele ficou surpreso ao descobrir que o Lisp poderia ser implementado em código de máquina (Steve Russel fez a primeira implementação do interpretador do Lisp). Lisp é amplamente utilizado para programação de IA.

aufather
fonte
70
+1, o Lisp não era para ser uma linguagem de programação! Eu não acho que você pode superar isso.
Kilian Foth
7
OTOH, pode-se argumentar que o LISP foi projetado para uso na fronteira entre programação e matemática, e permanece lá.
MSalters
11
Acredito que McCarthy usou Lisp como exemplo em suas aulas e pretendia escrever um compilador para ele, mas mencionou na aula um dia que a codificação manual da função eval implementaria um intérprete, mas é claro que 'ninguém iria querer fazer isso'
Steven A. Lowe
Meus amigos Lisper me dizem que não é mais usado em IA, mas ainda tem aplicação em todos os lugares .
Greyfade
111

O Java foi originalmente destinado à programação de sistemas embarcados. Da Wikipedia "Java foi originalmente projetado para televisão interativa" . Mas tornou-se extremamente popular para aplicativos e programação da Web.

aufather
fonte
4
Hã. Não posso acreditar que não pensei nisso. É sem dúvida o exemplo canônico ... embora não seja para dizer que ainda não vou me surpreender.
Jon Purdy
No entanto, o Java já foi realmente lançado para o trabalho incorporado (antes do Java incorporado, que veio depois da promoção para a Web)?
Marcin
O elemento crucial do design no Java foi a capacidade de executar código não confiável.
13
a história é ainda pior: A) foi projetada para sistemas embarcados. B) mas nunca viu a luz até que pudesse ser incorporada em páginas da web. C) não recebeu nenhum respeito até ser usado para aplicativos da Web 'corporativos' e D) finalmente foi incorporado a muitos sistemas operacionais de telefone; mas não como um controlador de hardware, é uma plataforma de GUI.
Javier
Existe um projeto para colocá-lo em decodificadores há mais de 10 anos - procure OCAP ou tru-2way #
K Bill
32

Lua foi projetado principalmente como linguagem de configuração e acabou encontrando um nicho como a linguagem de script mais popular para jogos (por ser pequena, rápida, poderosa, portátil, facilmente estendida e incorporada, com sintaxe amigável). O jogo mais popular para usá-lo, o World of Warcraft, nem o usa realmente para configuração, usando XML.

Lama
fonte
... e agora com o LuaJIT, ele está encontrando cada vez mais uso em aplicativos de processamento em tempo real
Javier
@lukas: "Não é verdade" o que ? Observe que seus predecessores, SOL e DEL, nem sequer tinham fluxo de controle, eram puramente linguagens de configuração. Lua foi a extensão dessas linguagens de configuração para incluir suporte de programação.
Mud
"Lua foi projetada principalmente como linguagem de configuração", eu diria como linguagem de programação.
Lukasz Madon
7
Talvez eu devesse ter dito "propósito pretendido" em vez de "concebido principalmente como". O objetivo pretendido era usar Lua onde SOL e DEL estavam sendo usados. Essas eram linguagens de configuração nas quais os usuários estavam começando a exigir recursos de programação. Lua foi criada para atender a essa necessidade. Como os próprios autores declararam , "A ampla adoção de Lua nos jogos foi uma surpresa para nós. Não tínhamos o desenvolvimento de jogos como alvo para Lua". Isso é exatamente o que o OP estava procurando, não?
Mud
32

A intenção original de Larry Wall para o perl era uma " linguagem de script Unix de propósito geral para facilitar o processamento de relatórios " e a página de manual descreve o idioma como:

Perl é uma linguagem interpretada otimizada para verificar arquivos de texto arbitrários, extrair informações desses arquivos de texto e imprimir relatórios com base nessas informações.

E é claro que a página de manual também nos diz que Perl significa Linguagem de Extração e Relatório Prático (o nome real é um erro de ortografia do nome original Pearl , alterado quando Wall descobriu uma linguagem PEARL já existente ).

Perl percorreu um longo caminho desde então, pois é a linguagem da qual os deuses criaram o universo .

insira a descrição da imagem aqui

Yannis Rizos
fonte
23
Deve-se corrigir isso: Lister de lixo patologicamente eclético
Richard
3
Há mais de uma maneira de desabafar! Muito Perly
Qualquer sigla para Perl é na verdade um backronym.
CanSpice
11
@DarkTemplar A maneira como interpreto é que o perl rastejou quase todo lugar. Desde seus humildes começos, o perl cresceu para ser uma linguagem da web muito popular, uma linguagem de script extremamente popular, uma linguagem multiuso popular, sua sintaxe de expressão regular se tornou algo definitivo, deu origem a outra linguagem (php) etc. também faz referência ao lisp, que é a resposta aceita para a pergunta, então eu pensei que era uma descrição divertida (embora imprecisa) da relação das duas línguas (uma é a sonhadora, a outra que as pessoas realmente usam).
yannis
11
@DarkTemplar Yeap. Está entre os dez primeiros no índice TIOBE . É claro que você não deve levar o índice TIOBE muito a sério, é bastante relativo e subjetivo. Mas ainda é uma boa indicação da popularidade do idioma.
yannis
28

Eu acho que o JavaScript também se encaixa nessa questão, porque eu não acho que Brendan Eich, na época do Netscape, jamais imaginou que versões futuras de seu LiveScript seriam usadas para criar os chamados "aplicativos" da web de hoje.

O JavaScript passou de validações simples de formulários e rollovers de imagens para uma ferramenta poderosa capaz de rivalizar com aplicativos offline, tanto em termos de funcionalidade quanto de beleza.

Infelizmente, porém, acho que muitos ainda consideram isso um brinquedo.

Andreas Grech
fonte
31
O interessante é que ele está se movendo para ser a linguagem assembly da web. Em outras palavras, em que outros idiomas são compilados e executados. Não acredito que Brendan Eich esperasse isso .
3
tem algo a acrescentar: não é apenas uma linguagem de script do lado do cliente. Muitos projetos como node.js ou uso rinoceronte JavaScript como uma linguagem server-side
gion_13
Apenas curioso, mas o que é uma "linguagem de script do lado do cliente" versus "linguagem do lado do servidor" .......?
Escuro Templar
@DarkTemplar. Uma linguagem de script do lado do servidor é executada no servidor e sua saída é enviada ao navegador. Uma linguagem de script do lado do cliente é enviada para o navegador como está e é executada lá. (É claro que o idioma do servidor pode ser usado para gerar o idioma do cliente, se você desejar.) O único idioma que é executado na maioria dos navegadores é o javascript.
TRiG 27/02/12
19

Erlang. Foi inventado há muito tempo nos laboratórios da Ericsson para desenvolver aplicativos de telefonia, provavelmente para suas linhas de comutação e acesso a dispositivos. Agora, ele evoluiu para uma linguagem dinâmica de propósito geral promissora, com um conceito interessante de simultaneidade.

Seria interessante se, no futuro, houvesse mais idiomas do mundo das telecomunicações passando suas linhas para o mundo da TI e evoluindo a partir daí, especialmente os idiomas projetados inicialmente para modelagem e verificação de protocolos.

UUlum
fonte
E não foi uma das inspirações para o node.js?
precisa saber é o seguinte
Não pense que isso se qualifica. O motivo pelo qual Erlang foi inventado para telefonia é que eles precisavam de uma linguagem de concorrência dinâmica geral. Ainda é isso.
Alan Baljeu
15

Pascal. Criado para ensinar programação.

Nerevar
fonte
3
Heh, isso explica muito ...
pique
2
@ puxão: De maldição , eu sei.
Nerevar
Hehe, eu vejo o que você fez lá.
Trufa
Ei, alguém pode explicar esta resposta? Ri muito. Eu sou um noob!
Escuro Templar
14

O PHP originalmente significava Página Pessoal Pessoal , mas hoje também é usado para alguns aplicativos da Web um pouco maiores.

Jaap
fonte
18
é claro, o maior usuário de PHP, o Facebook, ainda está em muitos aspectos no mercado de páginas pessoais.
Jaap
3
"O PHP / FI foi criado por Rasmus Lerdorf em 1995, inicialmente como um conjunto simples de scripts Perl para rastrear acessos ao seu currículo on-line". Já percorreu um longo caminho, querida.
nickf 30/05
Embora o PHP ainda seja uma linguagem da Web, ele sofreu uma inversão de papéis: o PHP foi criado para ser incorporado como pequenos trechos no HTML, enquanto muitos projetos agora geram strings HTML no PHP. Eles ainda precisam de uma <?phptag no início do arquivo!
Warbo 21/09/15
14

Tenho certeza de que o VBScript não foi projetado para escrever malware, mesmo que esse seja um uso extremamente comum.

user16764
fonte
11
Isso é um pouco duro, você não acha. Java e C tiveram seu quinhão de malware.
Jeremy
@JChild: Vários anos se passaram desde o seu comentário. Mesmo assim, defender o VB era algo muito estranho a se fazer.
Magus
@ Magus Nem sequer é VB. É VBScript. Você sabe, os arquivos com extensões .vbs. Os que você assume automaticamente são vírus quando os vê.
user16764
13

Inicialmente projetado como um método de tornar o código mais genérico, a Meta Programming em C ++ foi considerada completa e até hoje é usada para melhorar bastante a linguagem C ++ por meio de bibliotecas como boost.

Jason McCarrell
fonte
8
... e trazer programadores C ++ às lágrimas com excessivamente longo tempo de construção ;-)
quant_dev
8
e mensagens de erro horríveis.
DeadMG 30/05
11

BASIC é outro caso famoso. Seu nome ( código de instrução simbólico para todos os fins) para iniciantes indica sua origem como idioma do aluno, mas cresceu bastante desde então.

MSalters
fonte
24
heh - a microsoft substituiu "iniciantes" por "negócios" e sugou milhões
Steven A. Lowe
11

VHDL e Verilog (também conhecido como VerilogHDL) foram originalmente projetados para descrever circuitos e componentes digitais. Eles foram usados ​​como uma forma de documentação e para simular o comportamento dos componentes. Mais tarde, Synopsys e outros desenvolveram tecnologia que poderia traduzir (um subconjunto) dessas descrições em uma lista líquida de portas, que por sua vez pode ser usada para produzir hardware real.

VHDL e Verilog são chamados de HDLs (linguagens de descrição de hardware) por motivos históricos. Hoje eles são realmente usados ​​como linguagens de design de hardware (a mesma sigla).

Philippe
fonte
Bom, o modelo da vida real desenvolvimento orientado
Jaap
@ Mark Sim, o VHDL é um circuito integrado de velocidade muito alta, uma linguagem de descrição de hardware. Verilog é uma linguagem completamente diferente. O Verilog também é chamado Verilog HDL. pt.wikipedia.org/wiki/Verilog
Philippe
2
O QHDL é muito semelhante ao VHDL e é usado para descrever circuitos para computadores quânticos. Não consigo imaginar uma língua saindo tão longe de suas origens.
Mark Booth
@ Mark Wow, isso é interessante "QHDL"! O Google mostra muito barulho. Você possui uma referência?
Philippe
11
Eu descobri sobre isso na excelente sessão de "Quantum Computing for Programmers" da Paul Blacks na conferência da ACCU 2011. Seus slides estão em accu.org/content/conf2011/…
Mark Booth
10

O ML começou como uma linguagem para desenvolver e criar scripts para um provador de teoremas. Era a "meta linguagem" do provador de teoremas.

Ryan Culpepper
fonte
Tudo bem. Vale a pena notar que a razão pela qual essa resposta é válida é que seu aplicativo principal agora é compiladores e outras ferramentas de linguagem (pelo menos até onde eu sei).
Jon Purdy
6
+1, mas dizer que o ML se tornou "muito popular" é um pouco
exagerado
Talvez, mas além de seus usuários diretos hoje em dia, tenha influenciado quase todos os idiomas digitados que vieram depois dele.
Ryan Culpepper
7

C
Originalmente, ele foi desenvolvido originalmente para uso com o sistema operacional Unix. Mas o idioma se tornou tão popular que até Dennis Ritchie ficou surpreso.
Em seu famoso livro A linguagem de programação C . Ritchie afirma que "se espalhou muito além de suas origens como o idioma do sistema operacional UNIX". e como ele ficou surpreso ao se tornar uma linguagem popular para o desenvolvimento de aplicativos.

Ranger
fonte
11
Bem, ele foi originalmente projetado para desenvolver sistemas e aplicativos de baixo nível de uma forma multiplataforma. Continua em consonância com seus objetivos originais, apesar de sua popularidade, por isso não se encaixa.
Jon Purdy
3
@ Jon Bem, isso meio que se encaixa, pois superou seu objetivo, tornando-se a maneira mais fácil de dar um tiro no próprio pé.
Yannis 30/05
11
@ Yannis: Haha, é verdade. Mas estou perguntando sobre idiomas cujo objetivo principal mudou completamente, não aqueles que simplesmente cresceram para abranger mais propósitos.
Jon Purdy
Eu acrescentaria que o C se tornou popular como um dos idiomas principais para concursos de código ofuscados.
Peter G.
Não foi projetado para implementar o sistema operacional?
Nikko
3

O C ++ foi originalmente projetado como "C com classes" para facilitar a programação orientada a objetos no C ++.

Os modelos foram fornecidos em uma versão posterior para permitir a implementação de classes de contêineres fortemente tipados. Mais tarde, foi notado que esses modelos realmente constituem uma linguagem de programação em tempo de compilação completa de Turing.

Como conseqüência, muitos aplicativos agora usam C ++ não como uma linguagem de programação orientada a objetos, mas como uma linguagem de programação orientada a algoritmos que depende muito do polimorfismo e metaprogramação em tempo de compilação.

Konrad Rudolph
fonte
7
Mas o C ++ foi projetado para ser de uso geral e é usado como uma linguagem de uso geral.
benjaminb
@ Ubiquité Eu não acho que o C ++ realmente tenha sido projetado como uma linguagem de uso geral. Ou melhor, foi projetado para ser usado para diferentes propósitos (mas em particular a programação de sistemas). Mas foi não concebido para funcionar com vários paradigmas .
Konrad Rudolph
Na verdade, a natureza multiparadigmática é inerente ao seu design, simplesmente devido à inserção de recursos de OO no C, mantendo a capacidade de usar seus recursos mais procedimentais, quando apropriado.
Jon Purdy 30/05
@ Jon OK, eu vou admitir isso. No entanto, programação genérica e metaprogramação de modelos não estavam entre esses recursos. Atualmente, o C ++ é uma das únicas (e provavelmente a principal) linguagem que suporta esses recursos.
Konrad Rudolph
Muito verdadeiro. Inferno, suporte para programação genérica e constsão os dois motivos mais importantes que eu uso C ++.
Jon Purdy 30/05
2

ADA - originalmente projetado sob contrato do DoD para aviônicos. Embora ainda seja usado nesse aplicativo, também é popular, por exemplo, para produtos intermediários de negócios em tempo real.

vartec
fonte
5
Foi construído como uma linguagem de uso geral. O Departamento de Defesa queria um idioma utilizável para tudo, para reduzir a quantidade de idiomas diferentes usados.
benjaminb
Isso é bem hilário. Ada era um idioma criado explicitamente com o objetivo de reduzir o número de idiomas diferentes por aí. Por essa métrica ("projetada com uma finalidade, usada para outra"), o Ada deve ser votado até o topo da lista com o Lisp, outra linguagem anti-linguagem.
Jared Updike
2

"o objetivo pretendido de uma linguagem tem alguma influência sobre como ela é realmente usada ou se ela se torna popular?"

Não acho que o objetivo pretendido de uma linguagem tenha muita influência em seu uso e popularidade: existem algumas ótimas linguagens que foram projetadas desde o início para serem inovadoras, flexíveis e versáteis, mas nunca se tornaram tão amplamente usadas ou populares, exceto em mercados verticais muito especializados - por exemplo, Eiffel. OTOH, Basic, Pascal, C etc etc dominaram a paisagem por anos, embora tenham sido projetados originalmente para fins específicos e limitados.

As considerações de marketing / suporte e financeiro da OMI sempre desempenharam um papel importante na disseminação e extensão de determinados idiomas. Por exemplo: Borland cria TurboPascal e pacotes, comercializa e suporta. A Microsoft cria C # e pacotes, comercializa e suporta. Como resultado, esses idiomas se tornaram populares, surgiram indústrias de ferramentas de terceiros e mais e mais desenvolvedores e empresas saltam no caminho.

Mas, nos últimos anos, as ferramentas e linguagens de código aberto estão mudando a dinâmica e as linguagens agora se tornam populares com base mais em "mérito" do que em marketing - por exemplo, Ruby, Python e Perl. Mas isso não se deve tanto à "intenção" dos inventores quanto ao potencial incorporado da linguagem para extensão e uso conveniente.

Mikey
fonte
2

Eu não acho que exista uma linguagem popular que não tenha sido redirecionada de sua intenção original. Até o C foi originalmente escrito para criar um sistema operacional portátil (unix).

Qualquer tentativa de escrever uma linguagem de programação verdadeiramente genérica sem um objetivo específico em mente provavelmente falharia miseravelmente devido à falta de restrição e foco.

Bill K
fonte
postscript - é onipresente (em quase todos os computadores e impressoras), mas é usado apenas para imprimir gráficos. No entanto, pode-se argumentar que ele foi redirecionado quando usado em pdf.
13ren
1

Ouvi dizer que Ruby foi projetado como uma linguagem para escrever poesia, mas você também pode escrever um código muito bonito!

Eu vou ser sincero com você. Eu quero que você chore. Chorar. Para choramingar docemente. Este livro é um guia pungente para Ruby. Isso significa código tão bonito que lágrimas são derramadas. Isso significa histórias galantes e verdades sombrias que você acorda na manhã seguinte nos braços deste livro.

Tinco
fonte
2
Soa interessante. Alguma fonte?
Anto 30/05
O link Ruby leva você a um livro que foi escrito para ensinar Ruby de uma maneira artística. Minha resposta é uma piada em referência àquele livro que afirma que escrever Ruby é como poesia. Na realidade, pode-se dizer que Ruby foi projetado para ser uma linguagem de programação de uso geral, mas inspirou (algumas) pessoas a ver o código Ruby como poesia.
Tinco 30/05