Como algumas comunidades linguísticas (por exemplo, Ruby e Python) foram capazes de impedir a fragmentação, enquanto outras (por exemplo, Lisp ou ML) não foram?

66

O termo "Lisp" (ou "Lisp-like") é um guarda-chuva para vários idiomas diferentes, como Common Lisp, Scheme e Arc. Há uma fragmentação semelhante em outras comunidades lingüísticas, como no ML.

No entanto, o Ruby e o Python conseguiram evitar esse destino, em que a inovação ocorreu mais na implementação (como PyPy ou YARV) em vez de fazer alterações na própria linguagem.

As comunidades Ruby e Python fizeram algo especial para evitar a fragmentação da linguagem?

    
por chrisaycock 06.04.2012 / 01:19
fonte

8 respostas

76

Ruby e Python têm ditadores benevolentes no comando. São línguas profundamente enraizadas em preocupações pragmáticas. Esses são provavelmente os fatores mais significativos que inibem a fragmentação. Lisp e ML, por outro lado, são mais como linguagens de "design por comitê", concebidas na academia, para propósitos teóricos.

O Lisp foi originalmente projetado por John McCarthy como uma notação matemática prática para programas de computador. Ele nunca implementou isso como uma linguagem de programação real; a primeira implementação foi desenvolvida por Steve Russell , mas ele não era um ditador benevolente. Com o tempo, muitas implementações diferentes de Lisp apareceram; Common Lisp foi uma tentativa de padronizá-los.

Lisp é mais uma "família" de idiomas. O mesmo acontece com o ML, que seguiu um caminho evolutivo semelhante ao Lisp.

    
por 06.04.2012 / 01:58
fonte
29

Um fator provável é simplesmente a idade. Lisp e ML são bem mais antigos que Python e Ruby:

  • Lisp: 1958

  • ML: 1973

  • Python: 1991

  • Ruby: 1995

Lisp e ML obviamente viram uma mudança muito maior nas capacidades de hardware, mais tendências em ciência da computação e muitos outros estudantes de Ph.D procurando por algo para trabalhar.

    
por 06.04.2012 / 22:56
fonte
23

Eles são essencialmente todos os idiomas definidos pela implementação

Quando é fácil criar uma nova implementação de uma linguagem que seja amplamente compatível com o código existente, então os hackers são hackers, eles vão em frente e fazem isso. Todo mundo escreve uma implementação Lisp em algum momento. Os compiladores de ML são quase obrigatórios para alunos de graduação em design de idiomas - afinal, o idioma é notoriamente bem documentado .

Por outro lado, temos os idiomas ad hoc e definidos pela implementação. Ou linguagens que são tão complexas que é uma barreira significativa para sempre produzir uma implementação alternativa viável:

  • ruby; perl; python - também definido pela implementação para produzir alternativas viáveis
  • ghc haskell e erlang - bem definido, mas tão difícil de fazer qualquer coisa que concorra com o ghc (ou erlang) que as pessoas geralmente não se incomodam

Esta aparente desvantagem - linguagens que são muito difíceis de produzir alternativas viáveis, têm o lado positivo maciço : recursos escassos de desenvolvedor estão concentrados na única implementação verdadeira.

Como uma nota histórica, vários membros da comunidade de Haskell buscaram ativamente fusões e concentração de esforços de desenvolvimento, reconhecendo que qualquer fragmentação da comunidade de desenvolvedores significaria que não teríamos sucesso. O GHC foi escolhido e defendido.

    
por 06.05.2012 / 17:48
fonte
12

Eu diria que um fator é uma plataforma definidora . Para Haskell, a plataforma é o padrão Haskell e o GHC (imagino). Para o Ruby, foi Ruby on Rails que "definiu" a plataforma de desenvolvimento Ruby. Para C, era o Unix.

Compare isso com Lisp, onde não havia nenhuma plataforma original que definisse como era a linguagem. Se bem me lembro, cada máquina Lisp tinha pequenas diferenças dependendo do modelo e do fabricante. Common Lisp foi por algum motivo não definindo. Possivelmente por causa de muita concorrência e relutância em mudar para outra plataforma.

Isto é, claro, inteiramente especulação do meu lado. O pensamento veio das respostas do comentário na resposta de Harvey. No entanto, parece que a plataforma definidora vem em muitas formas, mas a propriedade comum parece ser a de que ela obtém popularidade.

    
por 06.04.2012 / 19:07
fonte
7

Não se esqueça de avaliar a cultura que impulsiona o desenvolvimento de um idioma

Eu também ponderaria o fato de que o desenvolvimento em python / php é feito ativamente em público. Você tem um grupo de indivíduos pregando uma especificação padrão que está disponível gratuitamente para qualquer pessoa / para todos.

Assim como o W3C faz com o padrão HTML / CSS. Você tem um pequeno grupo de indivíduos motivados que controlam os detalhes mais sutis do que a linguagem é projetada para realizar. Tudo entra em uma especificação claramente definida antes de ser divulgado ao público.

OTOH, linguagens como o LISP são bifurcadas a portas fechadas por professores ou outras pessoas que realmente acreditam que sua perspectiva sobre o "melhor uso" da linguagem está correta. Eles podem estar simultaneamente certos e errados ao mesmo tempo, porque algumas implementações são ótimas em certas coisas; enquanto nenhum é o melhor em tudo.

Isso não é necessariamente uma coisa ruim porque a diversidade gera inovação. Línguas como o LISP são e continuarão sendo ótimas linguagens para aprendizado e pesquisa, porque elas ampliam os limites do entendimento.

Mas as qualidades que tornam um ambiente bom para a inovação não são necessariamente benéficas para a estabilidade; por outro lado, as qualidades que tornam um ambiente bom para a estabilidade não são necessariamente boas para a criatividade.

Quando o desenvolvimento é baseado em colaboração ativa, às vezes os indivíduos são forçados a conceder em benefício do todo maior. Ruim para pesquisa / bom para consistência.

O fato é que ainda estamos vivendo no oeste selvagem do desenvolvimento da linguagem de programação. O problema de projetar a 'linguagem ideal' é tão grande que, apesar dos esforços monumentais, ninguém chegou perto de resolvê-la.

No setor de pesquisa / academia, ainda há muito espaço para melhoria e inovação. No setor comercial, onde há um crescimento exponencial de software sendo usado em aplicações práticas e a força motriz é a simplicidade e a consistência.

Algumas línguas se especializam na primeira, algumas se especializam na segunda. Aqueles que tentam se especializar em ambos normalmente não fazem muito bem e morrem.

Por ambos, estou me referindo a linguagens monolíticas como VB / C # / Java. É muito cedo para dizer, mas gostaria de ver como é o C # e o Python em 10 anos. No ritmo atual, o C # está aumentando a funcionalidade e a inconsistência a uma taxa que faz com que pareça bastante sombrio. Mesmo com uma ótima documentação, é muito doloroso lembrar todos os detalhes e peculiaridades sutis incluídos no idioma. É ótimo para um único desenvolvedor, mas assim que você cria mais desenvolvedores com estilos exclusivos, a inconsistência na base de código aumenta, a qualidade é prejudicada e ninguém ganha. Eu acho que há muito a ser aprendido com as dificuldades que o Perl apresenta em um ambiente de produção.

    
por 07.04.2012 / 00:51
fonte
2

Não acho correto dizer que idiomas como Python e Ruby não são fragmentados. Já estamos começando a ver alguns efeitos de fragmentação. Por exemplo, o Python 3 não é totalmente compatível com o Python 2, portanto, as duas versões precisam ser mantidas e muitos códigos existentes funcionam apenas com o Python 2. Também existem alguns desdobramentos do Python, incluindo o PyPy.

Outro fator é a idade das línguas. Os mais sujeitos à fragmentação são os idiomas mais antigos e estão sujeitos a pressões de evolução e revisão. Lisp foi inventado várias décadas atrás, então houve tempo suficiente para pegar algumas de suas idéias e incorporá-las em novas linguagens. C é outro exemplo de uma linguagem fragmentada. Embora o C tenha apenas uma revisão realmente importante da linguagem em si (K & R para ANSI), houve inúmeros desdobramentos, incluindo C ++, Not Cite C e todos os outros que compartilham uma sintaxe similar a C.

Ruby em si é uma "fragmentação" (se você preferir) dos idiomas anteriores. Uma vez que incorpora idéias de C, Smalltalk e Perl (entre outros), atualmente é a linguagem que faz a fragmentação. Eu não vejo por que nós podemos não ver mais convolução do Ruby com outras linguagens no futuro.

    
por 06.04.2012 / 03:12
fonte
2

Lisp é fragmentado porque é um modelo tão poderoso, a linguagem mais incrível já concebida. Atualmente, a maioria das linguagens empresta coisas que foram implementadas pela primeira vez em Lisp, de modo que você pode dizer que toda linguagem é parte dessa fragmentação específica. Smalltalk foi, por exemplo, strongmente inspirado por Lisp, e Ruby é strongmente inspirado por Smalltalk. JavaScript é Lisp em um disfarce de Java, e assim por diante. Está tudo conectado, e cada inventor de linguagem seleciona suas peças favoritas de outras linguagens.

Outro fator é que o Lisp é provavelmente o conceito de programação mais fácil de implementar - e é por isso que é feito de novo e de novo e de novo.

    
por 10.04.2012 / 22:12
fonte
1

Linguagens semelhantes a Lisp são muito básicas e teóricas para serem alteradas dramaticamente. Mudanças gramaticais (eu não quero apenas mudar os nomes dos comandos) simplesmente não se encaixam na teoria de programação funcional por trás delas.

Mas o fato de haver idiomas como lisp mostra que "alterações" já foram feitas para evitar o uso. Em outras palavras, existem linguagens feitas por pessoas que foram inspiradas pelo lisp ou por sua teoria e fizeram uma nova linguagem semelhante.

Existem também muitas linguagens inspiradas no Python. Por exemplo. Julia, CoffeeScript, etc., que formariam sua própria família de linguagens orientadas a objetos sensíveis ao espaço.

Acho que os fundamentos básicos de uma linguagem como o Python nunca mudarão de verdade. O Python é orientado a objetos e, portanto, tem semelhanças com C ++ e Java, mas é dinâmico e, portanto, semelhante a muitas linguagens de script.

Bem, quem realmente se importa com idiomas? O que conta é o propósito: o francês é semelhante ao latim, mas as meninas que entendem o francês são muito mais gostosas;)

    
por 07.05.2012 / 10:07
fonte