Capas de idioma

¡Hola, Habr!

Les traigo a su atención una traducción del artículo “Capas de idioma» por Robert C. Martin (tío Bob).

Capas de idioma
Paso el tiempo jugando a un viejo juego llamado Lunar Lander de 1969. Fue escrito por Jim Storer, un estudiante de secundaria. Lo escribió en una PDP-8 en FOCAL. Así es como se ve el programa:

Capas de idioma

Y aquí está el código fuente de FOCAL:

Capas de idioma

Jim Storer era un estudiante de secundaria bastante talentoso. Eche un vistazo a este código. Tiene algunas expresiones de Taylor bastante interesantes allí.

Básicamente, hago una búsqueda binaria para determinar el valor de K que, cuando se usa de manera consistente, hará que la nave aterrice perfectamente. Entonces modifiqué el programa para que solo aceptara un valor y luego lo aplicara varias veces hasta que la nave aterrizó o se estrelló. Mientras escribo esto, sé que la respuesta se encuentra entre 76.40625 y 76.4453125 y probaré con 76.4257813. Estoy empezando a pensar que se me acabará el tiempo antes de encontrar la respuesta.

Mientras tanto, se me ocurrió que ejecuté este programa en un emulador. PDP-8, que escribió en Lua para iPad.

Entonces, está bien, pensemos en esto.

  • iPad tiene un chip A8X, con tres núcleos funcionando a gigahercios aproximadamente.
  • Lua está escrito en C y se compila en A8X.
  • Mi emulador PDP8 está escrito en Lua usando el paquete CODEA de la sección Dos vidas restantes.
  • FOCAL fue escrito a finales de los años 1960 en un PDP8.
  • Lunar Lander fue escrito en FOCAL.

Estos son A8X, C, Lua, PDP8 y FOCAL. Estos son cinco idiomas diferentes. Cinco mecanismos diferentes que le dicen a la máquina qué hacer; ¡Están todos apilados uno encima del otro!

¿Lo que es? ¿Por qué hay tantos idiomas? De hecho, olvídate del iPad, PDP-8, C, Lua y todo lo demás. ¿Por qué hay tantos idiomas?

##¿Por qué hay tantos idiomas?

¡Piénsalo! ¿Cuántos lenguajes de programación puedes nombrar? Aquí, déjame darte una pequeña lista:

  • FORTRAN
  • ALGOL
  • COBOL
  • SNOBOL
  • CECEO
  • BCPL
  • B
  • C
  • SIMULA
  • CHARLA
  • EIFFEL
  • C + +
  • JAVA
  • C#
  • PYTHON
  • RUBÍ
  • LOGO
  • LUNA
  • ED. BÁSICA
  • PL / 1
  • DESARROLLADOR
  • GO
  • DART
  • PRÓLOGO
  • ADELANTE
  • SWIFT
  • ML
  • OCCAM
  • OCAML
  • ADA
  • ERLANG
  • ELIXIR
  • FOCAL

Por supuesto, puedes pensar en otros que no he mencionado. La pregunta es, ¿por qué hay tantos? Realmente sólo puede haber una respuesta a esta pregunta. La razón por la que existen tantos lenguajes informáticos:

No nos gustan.

Bueno, tal vez sea una afirmación demasiado fuerte. Quizás debería decir:

Estábamos en Hollywood.
Estábamos en Redwood.
Cruzamos el océano en busca del código dorado.
Estábamos locos
Es una línea muy fina.
Esto nos hace buscar el código de oro.

Y nos estamos haciendo viejos.

Vale, tal vez debería hablar por mí... ¿No quieres simplemente gritarle a Neil Young que deje de quejarse y busque una buena chica y viva con ella? ¿No quisiste decirle que la búsqueda de un corazón de oro era inútil? Dime, ¿qué haría con él si lo encontrara?

¿Y qué haríamos con un idioma ideal si lo encontráramos?

¡Creamos emuladores PDP-8 y FOCAL para jugar "Lunar Lander", escrito por un estudiante de secundaria en 1969!

Eso es lo que pienso.

Tratar con él. Deja de buscar. No existe un lenguaje perfecto. Buscamos por todas partes. Miramos desde arriba y desde abajo. Miramos dentro y fuera.

Observamos los idiomas desde ambos lados.
Por dentro y por fuera
y todavía lo hago, de una manera u otra.
Recordemos que se trata de ilusiones lingüísticas.

Realmente no entendemos nada de idiomas...
… en absoluto.

Sí, hoy es un día inusual.

Sin embargo, el punto es:

No necesitamos otro idioma.
No necesitamos saber el camino a casa.
Lo único que queremos es ir más allá de la vida.
SQL

Sí, día extraño.

Así que aquí hay un pensamiento. Quizás debamos dejar de crear nuevos lenguajes y simplemente calmarnos y elegir uno o dos que sean realmente buenos. Esto hará la vida mucho más fácil, ¿no?

Y, en caso de que se lo pregunte, 76.43844461 le ofrece un aterrizaje bastante bueno a 2.23 MPH.

Fuente: habr.com

Añadir un comentario