¿Cuáles son los lenguajes de programación mejor diseñados?

Secundo las elecciones de Clint Liddick y agrego 3 más.

Charla. Simplemente simple y hermoso, con una sintaxis extremadamente limpia. Orientación a objetos bien y de manera consistente.

Erlang De nuevo, simple y hermoso. Funcional, pero no estáticamente tipado. Muy pequeña superficie para aprender. Gran parte del lenguaje aquí es su sistema de tiempo de ejecución que le brinda características sorprendentes listas para usar, características difíciles de encontrar en otros idiomas. Modela la realidad muy bien.

Ada No encontrarás muchas personas que conozcan a Ada hoy, pero es un lenguaje maduro y literalmente probado con un énfasis en la alta legibilidad y seguridad primero. Pero a diferencia de otros idiomas enumerados aquí, no es simple, tiene una sintaxis compleja y, a veces, una semántica complicada. Aún así, me gusta mucho usarlo, porque tiene sentido, es decir, sientes que hay un mayor propósito en cómo se hacen las cosas en Ada. La revisión estándar de 2012 agregó contratos e hizo que Ada fuera aún mejor.

Pero si tuviera que elegir un idioma que esté mejor diseñado, sería algún miembro de la familia LISP, tal vez Scheme o Racket.

Si desea ver el código escrito en diferentes idiomas, tal vez le gustaría ver el sitio web 99 Bottles of Beer.

O en uno o ambos de estos libros:

Siete idiomas en siete semanas: una guía pragmática para aprender lenguajes de programación en Amazon.com

Siete idiomas más en siete semanas: idiomas que están dando forma al futuro @ Amazon.com

O, si está interesado en el diseño del lenguaje, hay un libro muy perspicaz:

Masterminds of Programming: Conversaciones con los creadores de los principales lenguajes de programación @ Amazon.com

Y tal vez este (¡me gusta mucho el capítulo de Joe Armstrong!):

Codificadores en el trabajo: reflexiones sobre el arte de la programación en Amazon.com

Smalltalk y Lisp / Scheme compiten por el máximo honor del lenguaje de programación mejor diseñado. Ambos tienen muy poca sintaxis , y se basan en un solo principio de conducción. En el caso de Smalltalk, está enviando mensajes a los objetos ( todo es un objeto, incluidas las clases y los cierres); en el caso de Lisp, es el procesamiento de la lista con la lista como la estructura central de datos. Esto hace que estos idiomas sean muy simples y fáciles de aprender sin sacrificar la expresividad y el poder . Son los mismos modelos de la pureza de la programación.

Donde difieren es que Smalltalk lee más como lenguaje natural . Los mensajes pueden ser unarios, binarios (notación infija) o palabras clave (tomando un parámetro), y hay una escasez extrema de ruido sintáctico. Por otro lado, Lisp es puramente notación de prefijo, con una montaña de paréntesis (ruido sintáctico) para ofuscar la legibilidad.

Personalmente, prefiero Smalltalk, pero tengo un respeto a regañadientes por Scheme. Por lo tanto, estos son los lenguajes de programación mejor diseñados. También apoyaré la recomendación de Erlang de Grzegorz Golda.

El esquema está bellamente diseñado. Es un LISP, por lo que existe una hermosa simetría de código y datos, así como las abstracciones de la programación funcional y un REPL (máquina LISP) que puede extenderse a su programa en ejecución. El esquema se diseñó en / como un curso de introducción a la informática (estructura e interpretación esclarecedoras de los programas informáticos). Se puede encontrar una versión moderna de por qué es tan adictivo en Why Racket? ¿Por qué Lisp?

C también es un testimonio del diseño. El objetivo de un “ensamblaje portátil” que pueda llevar el código legible por humanos directamente al código de la máquina con la menor cantidad de basura posible fue absolutamente alcanzado. Para todas sus verrugas, puedes hacer absolutamente magia con C que a menudo no es posible en ningún otro lenguaje de “alto nivel”. (Excluiré C ++ porque es un niño bastardo hermoso e incomprendido).

Haskell y yo tenemos una relación de amor / odio, pero no puedes negar el increíble pensamiento e investigación que se ha dedicado a su diseño. Un lenguaje funcional verdaderamente puro, vago (no estricto). Es tan asombroso contemplar y usar como frustrante realizar muchas tareas. Lo dejé cuando me di cuenta de que los gráficos son un problema de investigación abierto, pero fue otro viaje esclarecedor, y su influencia se siente en otros idiomas.

Algunas opciones de segundo nivel:

Python por enfocarse tanto en código legible e idiomático sin dejar de ser un lenguaje serio con algo de mal gusto. Ha llevado a una increíble variedad de bibliotecas muy útiles y de muy alta calidad.

Óxido por ser un lenguaje funcional que no se mete por la garganta y centrarse en un problema que (algunos tipos de) desarrolladores reales realmente pierden el sueño: la administración de la memoria. En mi opinión, Rust es la conclusión lógica del modelo de administración de memoria estándar de C ++ en un mundo donde existe programación funcional (RAII e inmutabilidad. Me encantaría hablar con alguien sobre esto más en profundidad).

Lenguaje de máquina. Literalmente, puede decirle a cualquier dispositivo de computadora que haga cualquier cosa que la computadora pueda hacer si entiende el lenguaje de máquina.

Puede hacer que su sitio web se procese súper rápido. Puede hacer que cualquier aplicación procese la cena rápidamente. Puede implementarlo en cualquier lugar posible, incluso su máquina de café lo entiende.

Pero si solo desea mostrar páginas web, HTML simple servirá. Puede darle vida usando css o javascript, y si desea hacerlo dinámico, agregar un poco de lógica usando php, ruby, phyton o java o cualquier cosa con la que esté familiarizado sería bueno. Sin mencionar que esto le permitirá desarrollarlo más rápido y llegar al mercado lo antes posible.

Al final, no importa cuán grande sea tu palo, cómo lo uses.