Olá Habr!
Trago à sua atenção uma tradução do artigo "
Language Layers ", de Robert C. Martin (tio Bob).
Passo um tempo jogando o antigo jogo de 1969 Lunar Lander. Foi escrito por Jim Storer, um estudante do ensino médio. Ele escreveu no PDP-8 no FOCAL. Aqui está a aparência do programa:

E aqui está o código fonte do FOCAL:

Jim Storer era um estudante bastante talentoso do ensino médio. Dê uma olhada neste código. Ele tem expressões bastante interessantes de Taylor lá.
Em geral, eu conduzo uma pesquisa binária para determinar o valor de K, que, quando usado em série, aterrará o navio idealmente. Portanto, mudei o programa para que ele assumisse apenas um valor e o apliquei várias vezes até que o navio aterrisse ou caísse. Enquanto escrevo isso, sei que a resposta está entre 76.40625 e 76.4453125, e tentarei 76.4257813. Estou começando a pensar que vou ficar sem tempo antes de encontrar a resposta.
Enquanto isso, ocorreu-me que eu executei esse programa no emulador
PDP-8 , que escrevi em Lua para o iPad.
Então, bem, vamos pensar sobre isso.
- O iPad possui um chip A8X , com três núcleos operando com uma frequência de gigahertz.
- Lua é escrito em C e compilado no A8X.
- Meu emulador PDP8 é escrito em Lua usando o pacote CODEA da seção Duas Vidas à Esquerda.
- FOCAL foi escrito no final dos anos 1960 no PDP8.
- Lunar Lander foi escrito em FOCAL.
Portanto, estes são A8X, C, Lua, PDP8 e FOCAL. Estes são cinco idiomas diferentes. Cinco mecanismos diferentes dizendo à máquina o que fazer; eles estão todos empilhados uns sobre os outros!
O que é isso Por que existem tantas línguas? De fato, esqueça o iPad, PDP-8, C, Lua e tudo mais. Por que existem tantas línguas?
## Por que existem tantos idiomas?
Pense nisso! Quantas linguagens de programação você pode citar? Aqui, deixe-me dar uma pequena lista:
- FORTRAN
- Algol
- COBOL
- SNOBOL
- Lisp
- Bcpl
- B
- C
- SIMULA
- SMALLTALK
- Eiffel
- C ++
- Java
- C #
- Python
- RUBY
- LOGO
- LUA
- Basic
- PL / 1
- JAVASCRIPT
- GO
- DART
- PROLOG
- QUARTO
- Swift
- ML
- Ocam
- OCAML
- ADA
- Erlang
- Elixir
- Focal
Claro, você pode pensar em outros que eu não mencionei. A questão é: por que existem tantos? Realmente pode haver apenas uma resposta para essa pergunta. A razão pela qual existem tantas linguagens de computador:
Nós não gostamos deles.
Bem, talvez essa seja uma afirmação muito forte. Talvez eu deva dizer:
Nós estávamos em Hollywood.
Nós estávamos em Redwood.
Atravessamos o oceano em busca do código de ouro.
Nós estávamos fora de nossas mentes
Essa é uma linha tênue.
Isso nos faz procurar um código de ouro.
E estamos ficando velhos.
Ok, talvez eu deva falar por mim mesmo ... Você não queria gritar com Neil Young para que ele parasse de reclamar, encontrasse uma garota legal e morasse com ela? Você não queria dizer a ele que a busca por um coração de ouro era inútil? Diga-me, o que ele faria com ele se o encontrasse?
E o que faríamos com a linguagem perfeita se a encontrássemos?
Criamos os emuladores PDP-8 e FOCAL para tocar o "Lunar Lander" escrito por um estudante do ensino médio em 1969!
Aqui está o que eu penso.Lide com isso. Pare a pesquisa. Não existe linguagem perfeita. Procuramos em todos os lugares. Nós olhamos acima e abaixo. Nós olhamos por dentro e por fora.
Examinamos idiomas de ambos os lados.
Por dentro e por fora
e ainda assim mesmo.
Lembramos que essas são ilusões lingüísticas.
Realmente não entendemos nada em idiomas ...
absolutamente.
Sim, hoje é um dia incomum.
Mas, no entanto, a linha inferior é:
Nós não precisamos de outro idioma.
Não precisamos saber o caminho de casa.
Tudo o que queremos é ir além da vida.
SQL
Sim, um dia estranho.
Portanto, há um pensamento. Talvez tenhamos que parar de criar novos idiomas e apenas nos acalmar e escolher um ou dois que sejam realmente bons. Isso tornará a vida muito mais fácil, certo?
E, se você estiver interessado, 76.43844461 fornece um ajuste muito bom a 2,23 MPH.