FILOSOFÍA DEL DISEÑO

Hemos sido criticados por diseñar Arc como un lenguaje para los buenos programadores. Un buen diseño, dice el argumento, significa comprender las necesidades de tus usuarios, y la mayoría de los programadores no son buenos programadores.


Así que vamos a considerar dos vehículos: el Cadillac Coupe de Ville 1973 y el Porsche 911 de 1973. El Cadillac fue cuidadosamente diseñado para atraer al conductor promedio. El 911 fue diseñado para el rendimiento. ¿Cuál diseño es mejor?
 


                                          Cadillac  Coupe de Ville 1973


                                                 Porsche 911E 1973

Elegí las imágenes de 1973 a propósito. Es más fácil distinguir un buen diseño de uno malo cuando no estás mirando las modas actuales. (Haz la prueba viendo los cortes de pelo en un viejo anuario de la secundaria.)

Un buen diseño es intemporal, y si quieres algo intemporal no puedes complacer las limitaciones de algunos hipotéticos usuarios "promedio". Es un objetivo demasiado vago. También es un blanco móvil: el usuario promedio puede no ser tan estúpido como crees.

Observa lo que sucedió con el 911. Es tan evidentemente superior al Cadillac que un niño podría decir que es mejor. Así, para la década de 1980, incluso los traficantes de drogas para los que el Cadillac había sido diseñado querían un 911 en su lugar.

Lo mismo ocurre en los lenguajes. Los grandes lenguajes han sido los que los buenos programadores diseñaron para su propio uso—C, Smalltalk, Lisp. Los lenguajes que han sido diseñados conscientemente para los programadores "promedio" (Cobol, Pascal, Ada) han tendido a ser un callejon sin salida para la evolución.

El único plan confiable es diseñar para el rendimiento. El rendimiento no significa velocidad; eso es tomar la metáfora demasiado literalmente. La velocidad cuenta, pero un lenguaje de programación es, ante todo, una herramienta para pensar. Queremos que el pensar en Arc se sienta como conducir un 911.

(No estoy diciendo que lo hará, sólo que ese es el objetivo.)






Traducido de Design Philosophy por Paul Graham. Traducción: Armando Alvarez