2009-12-23 29 views
6

Realmente soy un gran admirador de javascript. Es realmente un gran lenguaje OOP basado en prototipos. Ahora quiero aprender algún otro lenguaje basado en prototipos. Realmente me interesan realmente algunas pautas de diseño, es decir, cómo puedo administrar el código sin clases, etc. ¿Qué idioma debo elegir? Algún recurso en patrones de diseño para lenguaje basado en prototipos?Lenguaje basado en prototipos

+0

La parte más confusa para un programador oopL basado en la clase es cómo organizar la gran cantidad de código utilizando solo objetos. ¿Alguna guía? – Tinku

+0

También es interesante http://crpit.com/confpapers/CRPITV13Noble.pdf – Tinku

+0

Revisa [este artículo de wiki] (https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that -compile-to-JS) de la página github de coffee-script para obtener una lista de idiomas que se compilan en javascript; la mayoría de ellos mantienen la característica basada en prototipos de JS. –

Respuesta

22

La respuesta a tanto de sus preguntas es Self. Self es el original prototipo de lenguaje OO, y también probablemente el mejor (para una definición completamente científica y subjetiva de "mejor", por supuesto). (De hecho, en mi humilde opinión es (junto con Newspeak) uno de los mejores lenguajes de OO, punto).

De todos modos, lo bueno de Self es que también contiene un montón de excelentes documentation, incluyendo pero no limitado a los famosos auto tutorial Prototype-Based Application Construction Using SELF 4.0

también hay un gran número de recursos en el old Self website at Sun Research:

Estos dos (junto con el tutorial mencionado anteriormente) explican más o menos exactamente lo que usted está planteando.(De hecho, el segundo contiene más o menos su pregunta "¿Cómo puedo manejar el código sin clases" palabra por palabra en el título):

Luego, está Self; La película, un video introductorio sobre el lenguaje de auto programación, el Self GUI, el sistema del Self y el Self VM protagonizado por los diseñadores y desarrolladores principales de Self. Desafortunadamente, salió en 1995 en VHS, y cuando el video finalmente se digitalizó, las cintas originales ya estaban degradadas. Puede encontrar varias versiones del video en this site with Smalltalk videos. Encuentro personalmente el Large QuickTime el más fácil de ver.

Aquí hay un par de otros enlaces Self interesantes:

David Ungar, el diseñador principal de Self gace una charla en Stanford en septiembre, titulada Self and self: whys and wherefores. Streaming video de esta charla is available.

Un pequeño problema con Self es que fue básicamente abandonado por Sun en 1995 a favor de un oscuro y pequeño lenguaje de scripting para hacer personajes de dibujos animados animados en guías de TV electrónicas en decodificadores de TV. (Es posible que haya oído hablar de él, se llama Java). Por lo tanto, la última versión estable 4.3 solo se ejecuta en OSX en PowerPC (quizás x86, también) y Solaris en una CPU Sparc. Hace un par de meses, sin embargo, el proyecto Self fue recogido nuevamente por algunos de sus antiguos miembros, así como por algunos nuevos entusiastas del idioma, y ​​ahora ha sido portado a Linux y OSX en x86, con un 4.4 utilizable Alpha 2 lanzamiento disponible y un lanzamiento final esperado en enero.

Un par de otros lenguajes basados ​​en prototipos interesantes son:

  • NewtonScript (inspirado por uno mismo) estaba destinado a ser el lenguaje de desarrollo de aplicaciones para el Apple Newton PDA; también es la inspiración directa para JavaScript
  • Slate es "un medio ambiente limpio pizarra orientado a objetos de estilo Smalltalk"
  • Io es un lenguaje de programación basado en prototipos inspirado en Smalltalk (todos los valores son objetos, todos los mensajes son dinámicos) , Self (basado en prototipo), NewtonScript (herencia diferencial), Act1 (actores y futuros para concurrencia), Lisp (código es un árbol inspeccionable/modificable en tiempo de ejecución) y Lua (pequeño, incrustable)
  • Ioke es un prototipo basado lenguaje de programación que está inspirado en Io, Smalltalk, Lisp y Ruby

En cuanto a su pregunta sobre cómo estructurar los programas, debo admitir que encuentro que las clases en realidad oscurecen el diseño orientado a objetos.Quiero decir, hay una razón por la que se llama Programación Orientada a Objetos, no Programación Orientada a la Clase.

+1

Fue una pena poder votar por usted una sola vez;) – Eineki

+0

¡Gran respuesta! thx – Tinku

+0

Esos enlaces oráculo apuntan a las versiones postscript de los artículos. Pero en el propio sitio web de Self puede encontrar las versiones en PDF: http://selflanguage.org/documentation/published/index.html – mikew

2

Este es un tema extenso. Le sugiero que lea this article on wikipedia. En la parte inferior verá una lista de diferentes idiomas.

0

En general, javascript es el lenguaje basado en prototipos más común (y quizás solo?) Actualmente en uso, pero puede usar el patrón de prototipo en muchos idiomas diferentes, como Java y Python. Por ejemplo, vea The wikipedia page.

Sugiero que busque tutoriales y orientación sobre el patrón de prototipo en lugar de buscar un idioma específico para trabajar, sobre todo porque ya es quizás el más apropiado. Tenga en cuenta que JavaScript se puede ejecutar en la plataforma Java a través del Rhino.

La mejor introducción general a los patrones de prototipos, defendiendo su uso, es uno de Steve Yegge's blog posts, 'The Universal Design Pattern'.

Steve Yegge también nos apunta hacia Martin Fowler's article sobre el tema, que estoy listo para leer!

+0

¿Me puede remitir algunas pautas/patrones de diseño para lenguajes prototipo? – Tinku

3

Las mejores pautas que he leído para aprovechar la naturaleza prototípica de JavaScript se encuentran en el libro JavaScript the Good Parts y también puede aplicar estas directrices a otros idiomas. Cambié la forma en que codifico en Python después de leer este libro.

Si desea aprender un idioma similar al JavaScript, primero pruebe con ActionScript. Ambos se basan en el mismo estándar. Será fácil y gratificante.

+0

sí, ¡un gran libro de verdad! – Tinku

+0

Realmente quiero comprobar cómo este prototipo de naturaleza cambia los patrones de diseño gof – Tinku

+0

El autor también dio una conferencia en google, que está disponible en el canal de youtube de GoogleTechTalks: http://www.youtube.com/watch?v=hQVTIJBZook –

Cuestiones relacionadas