Aprendendo a linguagem de programação projetada especificamente para a empresa [fechada]

10

Por que alguém desenvolveria sua própria linguagem para usá-la somente nessa empresa quando você tiver XY outras linguagens que podem ajudá-lo com suas bibliotecas, lógica etc.? Não é muito mais simples acompanhar o fluxo com algo mais do que desenvolver seu próprio idioma?

Josip Ivic
fonte
6
Muitas linguagens "novas" que temos na natureza podem usar bibliotecas projetadas para linguagens "mais antigas": por exemplo: C ++ pode usar bibliotecas C, Scala Kotlin e outros podem usar qualquer biblioteca em execução na JVM, Typescript pode usar bibliotecas JS. Então, ter uma nova língua não significa perder o apoio lib ...
Timothy Truckle
3
Por que você construiu um dragster para competir com um carro de estoque?
Candied_orange 5/05
3
Ou, realmente, investigue as razões e o racional por trás da criação de qualquer linguagem de programação. Algumas pessoas acreditam que você não é um cientista da computação real até você criar seu próprio idioma. Isso é semelhante a não ser um verdadeiro engenheiro químico até você criar pólvora (e explodir uma pequena parte da sua casa).
Candied_orange 5/05
4
Erlang também nasceu assim: se não me engano, ele foi inicialmente desenvolvido na Ericsson para uso interno.
Giorgio
3
Uma linguagem projetada especificamente para uma empresa é estúpida, por outro lado, uma linguagem projetada especificamente para um domínio do problema em que a empresa se encontra, às vezes pode ser bastante útil. Você sabe que possui o último, e não o primeiro, quando o design e a arquitetura da linguagem são restritos ao que torna o domínio do problema muito mais fácil de resolver / expressar, às vezes à custa de ser útil para a programação de uso geral.
Lie Ryan

Respostas:

25

É muito mais fácil entender quando você percebe que geralmente é um produto de longo processo e não alguém apenas dizendo "queremos criar um novo idioma".

Geralmente, começa com a ideia de que algum problema pode ser resolvido usando uma linguagem específica de domínio simples. Muitas vezes, a intenção é que não-especialistas usem essa linguagem, por isso é simples e muitas vezes carece de recursos como digitação forte e módulos.

Por enquanto, tudo bem. Mas então, as pessoas começam a enfrentar problemas que não podem ser resolvidos pela linguagem. Assim, novos "recursos" são adicionados lentamente para resolver esses problemas. E como o processo é lento e apresenta recursos pouco frequentes, não há motivação para projetar esses novos recursos adequadamente, desde que os problemas sejam resolvidos.

Com o tempo, o novo idioma ganha recursos que o transformam de um idioma simples e específico de domínio para um idioma de propósito "geral" complexo, geralmente com semânticas conflitantes e confusas e regras de sintaxe difíceis de seguir.

E quando as pessoas percebem que criaram um animal tão grande, já é tarde para matá-lo e substituí-lo por uma linguagem projetada adequadamente.

Há algumas línguas que evoluíram como este, que não estão vinculados a empresas específicas tosse JavaScript tosse PHP tosse .

Eufórico
fonte
10
Ótima resposta e, embora o JavaScript tenha seus problemas, não acho justo colocá-lo na mesma frase que o PHP. É como dizer: "Precisamos expulsar Bill e Ted do nosso bairro, eles são criminosos!" Mas Bill (JavaScript) é um jaywalker e Ted (PHP) é um serial killer.
TheCatWhisperer
12
@TheCatWhisperer Não concordo. O JavaScript é tão ruim ou pior ainda que o PHP. Porque você precisa usar (ou transpilar para) JavaScript, enquanto o PHP pode ser ignorado com segurança.
Euphoric
2
esse é um ponto válido principalmente.
TheCatWhisperer
1
@Euphoric Vamos aguardar para WASM , talvez a cena vai mudar, então ...
Kroltan
@Kroltan +1 para WASM!
precisa saber é o seguinte
15

Não é muito mais simples acompanhar o fluxo com algo mais do que desenvolver seu próprio idioma?

Claro, mas, para seguir isso até um fim absurdo, todos estaríamos escrevendo tudo em assembly se ninguém desenvolvesse novos idiomas.

Às vezes não há fluxo. Novas linguagens surgem porque alguém tem vontade de coçar, seja um hobby de linguagem que quer apenas inventar algo novo ou uma empresa com uma necessidade não atendida pelo que já existe.

Foi exatamente o que aconteceu quando John Backus propôs o Sistema de Tradução de Fórmulas Matemáticas da IBM em 1953. Ele queria uma maneira mais fácil para os usuários científicos especificarem fórmulas matemáticas do que escrevê-las em montagem. Esse produto proprietário se tornou a primeira linguagem de programação que não era assembly, e você o conhece como Fortran.

Onde Fortran foi o primeiro a seguir esse caminho, Erlang é praticamente o garoto-propaganda dele. A Ericsson queria melhorar a maneira como o software para seus comutadores telefônicos era desenvolvido e inventou uma linguagem para prototipagem com recursos específicos para o que eles precisavam. Quando eu o explorei pela primeira vez, meu argumento foi que ele foi desenvolvido por pessoas com um problema real para resolver que não teria sido bem atendido por nenhum dos outros idiomas disponíveis em 1986. Erlang continuava sendo um produto interno e proprietário como o seu um colega encontrou até ser de código aberto mais de uma década depois, e agora é um idioma comum.

Go e Scala são idiomas relativamente jovens no grande esquema das coisas, e é perfeitamente possível que o idioma em uso na empresa de seu colega seja anterior a ambos. O que ele precisa fazer é perguntar sobre sua história, por que ela veio a existir e por que continua sendo usada.

Passei a década entre 2003 e 2013 trabalhando para uma empresa que fazia uso extensivo de um ambiente específico do setor, que incluía seu próprio idioma com raízes no final da década de 1970. Embora alguns idiomas mais recentes possam ter sido substituições mais adequadas (e ganchos para eles foram enxertados com o tempo), esse setor teve um investimento grande o suficiente e um enorme corpo de código comprovado de que simplesmente não havia um bom caso comercial para mudar para outra coisa.

Blrfl
fonte
-1

Eu já vi isso antes. Isso nunca funciona bem. Algumas pessoas têm um complexo "não inventado aqui". Geralmente, faz com que uma empresa corra reinventando a roda.

Pense nisso. Esse novo idioma provavelmente quebra o tempo todo. Entre um analisador, compilador, VM, vinculador, o que for ... Agora existem milhares de bugs com os quais as pessoas gastam horas depurando problemas aleatórios. Tudo pelo que eles acham que precisam e que outros idiomas não têm.

O C / C ++ é usado para escrever sistemas operacionais como, você sabe, todos eles. E, no entanto, alguém pensou que precisava de algo diferente.

user271591
fonte
7
Aparentemente, você nunca viu Kotlin. Ou Javascript ou C #, para esse assunto. A Fog Creek Software usou sua própria linguagem de programação chamada Wasabi (baseada em VB) por anos (embora, reconhecidamente, a dívida técnica finalmente os tenha atingido ). Portanto, certamente existem casos em que isso funciona.
Robert Harvey
1
Tanto quanto me lembro, o C # nasceu depois que a Microsoft tentou criar uma implementação Java não compatível, foi processada pela Sun e perdida. cnet.com/news/sun-microsoft-settle-java-suit Como não podiam mais chamá-lo de Java, eles desenvolveram sua própria linguagem que, inicialmente, era muito semelhante ao Java.
Giorgio
1
"Esse novo idioma provavelmente quebra o tempo todo" - se o design do seu idioma permitir evitar uma classe inteira de bugs de aplicativos, isso pode ser uma troca aceitável #
Eric Eric
16
Já ouviu falar em C? Segundo informações, foi desenvolvido internamente apenas para um único sistema operacional em um único computador. Por que a K&R não usou apenas algo provado que foi usado para escrever sistemas operacionais, como PL / 1, BCPL ou Algol 68?
Idologge 5/05