design - una - programacion de videojuegos en c++
Buenos recursos en el diseño del lenguaje de programación? (5)
Podrías tomar una página del mismo lugar que Java, Ruby, Objective C y otros y ver Design Priciples Behind Smalltalk . Gran parte de esto es material fundamental sobre la comunicación entre objetos, más que nada sobre Smalltalk específicamente.
En cuanto a los libros realmente reflexivos sobre diseño de lenguaje , creo que el Diseño y la Evolución de C ++ definitivamente merecen una mención. Lo dudo porque dices que quieres el lenguaje OO "perfecto", y C ++ dista mucho de ser perfecto. Sin embargo, probablemente puedas aprender mucho de eso.
Sin embargo, los puntos que mencionas parecen tener más que ver con el Principio de menos asombro o la Regla de la menor sorpresa que con el diseño del lenguaje interno.
Javascript: The Good Parts es un gran libro. A menudo me encuentro leyendo pasajes como los siguientes desde la perspectiva de un diseñador de lenguaje:
undefined
yNaN
no son constantes. Son variables globales, y puedes cambiar sus valores. Esto no debería ser posible, y aún así es. No lo hagas
Para llevar:
- No cambie el valor de
undefined
en mi código Javascript. - Al diseñar un idioma, haga su equivalente de
undefined
inmutable.
Un ejemplo diferente más sutil sería " for in
no debería enumerar las propiedades del prototipo".
Quiero un libro en las charlas sobre estos temas del diseño del lenguaje fuera del contexto de un idioma en particular.
Si estabas tratando de diseñar el lenguaje OO "perfecto", ¿qué libros leerías como guía?
El diseño y la evolución de C ++ es bueno.
La construcción de software orientado a objetos también lo es.
Son bastante específicos del lenguaje (C ++, Eiffel), pero hay muchas lecciones independientes del idioma.
El sitio web ''lambda the ultimate'' tiene mucho que ver con los lenguajes de programación, y ocasionalmente tienen algunos buenos recursos, aunque tienden a estar más interesados en los tipos académicos de cosas. La programación funcional es grande allí, por ejemplo.
http://lambda-the-ultimate.org/node/3
Puede consultar los documentos de diseño de Perl6
Si lee la Sinopsis 6 , descubrirá que el operador de adición se llama:
-
infix:<+>
-
infix:«+»
-
infix:<<+>>
-
infix:{''+''}
-
infix:{"+"}
Lo que significa que puedes crear tus propios operadores:
sub postfix:<!> ($n) { [*] 1..$n }
Existen excelentes libros que explican los principios de diseño aplicados en los lenguajes más utilizados, pero si realmente desea "comprender" los principios de diseño, debe profundizar más. Seguramente recomendaría "Conceptos de diseño en lenguajes de programación" de franklyn turbak. Este libro trata de explorar sistemáticamente conceptos de lenguaje de programación basados en sus fundamentos matemáticos.