Capas lingüísticas

Ola Habr!

Chamo á súa atención unha tradución do artigo "Capas da linguaxe» de Robert C. Martin (tío Bob).

Capas lingüísticas
Paso o tempo xogando a un vello xogo chamado Lunar Lander de 1969. Foi escrito por Jim Storer, un estudante de secundaria. Escribiuno nun PDP-8 en FOCAL. Este é o aspecto do programa:

Capas lingüísticas

E aquí está o código fonte de FOCAL:

Capas lingüísticas

Jim Storer era un estudante de secundaria con bastante talento. Bótalle un ollo a este código. Ten algunhas expresións de Taylor bastante interesantes alí.

Basicamente, fago unha busca binaria para determinar o valor de K que, cando se usa de forma consistente, aterrará o barco perfectamente. Entón, modifiquei o programa para que só aceptase un valor e despois aplicouno varias veces ata que o barco aterrase ou estrelouse. Mentres escribo isto sei que a resposta está entre 76.40625 e 76.4453125 e probarei 76.4257813. Estou empezando a pensar que me faltará o tempo antes de atopar a resposta.

Mentres tanto, ocorréuseme que executaba este programa nun emulador PDP-8, quen escribiu en Lua para o iPad.

Entón, vale, pensemos nisto.

  • iPad ten un chip A8X, con tres núcleos funcionando a gigahercios máis ou menos.
  • Lua está escrito en C e compila a A8X.
  • O meu emulador PDP8 está escrito en Lua usando o paquete CODEA da sección Two Lives Left.
  • FOCAL foi escrito a finais da década de 1960 nun PDP8.
  • Lunar Lander foi escrito en FOCAL.

Polo tanto, estes son A8X, C, Lua, PDP8 e FOCAL. Trátase de cinco linguas diferentes. Cinco mecanismos diferentes que lle indican á máquina o que debe facer; están todos apilados uns encima dos outros!

Que é? Por que hai tantas linguas? De feito, esquece o iPad, PDP-8, C, Lua e todo o demais. Por que hai tantas linguas?

##Por que hai tantos idiomas?

Pénsao! Cantas linguaxes de programación podes nomear? Aquí, permíteme darche unha pequena lista:

  • FORTRAN
  • ALGO
  • COBOL
  • SNOBOL
  • LISP
  • BCPL
  • B
  • C
  • SIMULA
  • PEQUENA CONVERSA
  • EIFFEL
  • C ++
  • JAVA
  • C#
  • PITÓN
  • RUBÍ
  • LOGO
  • LÚA
  • BASIC
  • PL/1
  • GUIÓN JAVA
  • GO
  • DART
  • PRÓLOGO
  • ADIANTE
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOCAL

Por suposto, podes pensar noutros que non mencionei. A pregunta é, por que hai tantos deles? Realmente só pode haber unha resposta a esta pregunta. A razón pola que hai tantos linguaxes informáticos:

Non nos gustan.

Ben, quizais esa sexa unha afirmación demasiado forte. Quizais debería dicir:

Estivemos en Hollywood.
Estivemos en Redwood.
Cruzamos o océano para buscar o código dourado.
Estabamos fóra de cabeza
É unha liña tan fina.
Isto fainos buscar o código dourado.

E estamos facendo vellos.

Vale, quizais debería falar por min mesmo... Non queres gritarlle a Neil Young para que deixe de queixarse ​​e atope unha rapaza agradable e viva con ela? Non querías dicirlle que a procura dun corazón de ouro era inútil? Dime, que faría con el se o atopase?

E que fariamos cunha lingua ideal se a atopamos?

Creamos emuladores PDP-8 e FOCAL para xogar "Lunar Lander", escrito por un estudante de secundaria en 1969!

Iso é o que penso.

Tratalo. Deixa de buscar. Non existe unha linguaxe perfecta. Miramos por todas partes. Miramos dende arriba e abaixo. Miramos dentro e fóra.

Miramos as linguas de ambos os dous lados.
Dentro e fóra
e aínda así, dun xeito ou doutro.
Lembremos que se trata de ilusións lingüísticas.

Realmente non entendemos nada das linguas...
… en absoluto.

Si, hoxe é un día inusual.

Pero, con todo, a cuestión é:

Non necesitamos outro idioma.
Non necesitamos saber o camiño para casa.
O único que queremos é ir máis aló da vida.
SQL

Si, día estraño.

Entón, aquí hai un pensamento. Quizais teñamos que deixar de crear novos idiomas e simplemente calmarnos e escoller un ou dous que sexan realmente bos. Isto facilitará moito a vida, non si?

E, por se o estabas a preguntar, 76.43844461 obtén un aterraxe bastante bo de 2.23 MPH.

Fonte: www.habr.com

Engadir un comentario