2011-06-16 21 views

Respuesta

12

Smalltalk-80 se refiere a algo muy específico: la versión de Smalltalk que estaba en uso en Xerox Parc en 1980. Si bien hay muchos Smalltalks que se basan, ya sea en sentido directo (Squeak y Pharo) o un sentido ideológico (Ambrai Smalltalk y GNU Smalltalk), en ese entorno, no hay Smalltalks en todo el mundo que en realidad se adhieran completamente al lenguaje y la máquina virtual descritos en ese libro. Incluso Squeak, que es probablemente el más cercano ideológicamente, tiene algunas desviaciones importantes: Squeak tiene cierres, Smalltalk-80 no; Squeak tiene Unicode, Smalltalk-80 no; La máquina virtual de Squeak admite y utiliza primitivas con nombre, Smalltalk-80 no; Squeak soporta algunos bytecodes que Smalltalk-80 no tiene; y así.

ANSI Smalltalk, como ANSI Common Lisp, intentó definir un estándar que incorpora un subconjunto común de la funcionalidad de Smalltalk en las principales implementaciones de Smalltalk. Dado que el estándar ANSI se escribió en 1998, tuvo que tener en cuenta mucho más que la implementación original. En particular, algunos Smalltalks principales en el momento, como Smalltalk MT y VisualAge Smalltalk, carecían por completo de continuidades (y una variable thisContext como resultado). Esa característica, por lo tanto, está ausente del estándar ANSI.

En la práctica, estas diferencias son algo académicas. Está preocupado por thisContext, pero GNU Smalltalk tiene una sintaxis radicalmente diferente, VisualWorks tiene espacios de nombres, Squeak tiene Rasgos, Pharo carece de MVC ... simplemente hay diferencias más apremiantes. Smalltalk-80 y el borrador ANSI Smalltalk son a la vez más pautas que cualquier otra cosa en la vida de Smalltalk.

+0

¡Gracias por más detalles! ¿Es posible hacer * compatible * programa en muchas implementaciones con subconjunto ANSI? ¿Cuántas implementaciones conforman ANSI? ¿Y cuál es el medio compatible con Smalltalk-80 en alguna implementación como Squeak? – Eonil

+2

Sí, es posible. Seaside, por ejemplo, se ejecuta en la mayoría de las plataformas Smalltalk. Consulte nuestras convenciones de codificación para obtener más información: http://code.google.com/p/seaside/wiki/CodingConventions. La mayoría de Smalltalk cumple con ANSI hoy, porque Seaside lo exige (y lo prueba). La compatibilidad ANSI significa que las clases y métodos se implementan y se comportan como se describe en el estándar ANSI. –

Cuestiones relacionadas