Sigo con Cuis-Smalltalk
En los últimos tiempos estoy trayendo, quizá demasiado según algunas voces discrepantes, Smalltalk al blog. Y lo seguiré trayendo, aunque hay quien me haya hecho llegar su oposición a la turra del Smalltalk. Hablándolo con un amigo, me dice que no tengo que explicar nada, que el blog es mío y puedo escribir en él lo que a mí me apetezca. No le falta razón. Sin embargo, terminaré de dar mis motivos y lo que busco.
Si no quieres otra turra sobre Cuis-Smalltalk, salta directamente a la conclusión. Encontrarás sólo mis motivos.
Quien se queja, llegó a este blog buscando información sobre Emacs, y es cierto que he escrito mucho sobre mi editor favorito, pero si hubiera rascado un poco en el contenido del blog, se habría dado cuenta de que el contenido no es monotemático y hay muchas otras cosas que encontrar por aquí. El blog va de cosas que me llaman la atención, de cosas que aprendo, de cosas de las que me parece importante hablar y de cosas que anoto para no olvidar.
Últimamente decidí prestarle atención de nuevo al Smalltalk, porque es un lenguaje/entorno que siempre me ha llamado la atención desde que lo descubrí a finales del siglo pasado. Junta algunas de las características que hacen que me pique el gusanillo:
- Tecnología rompedora en su momento.
- Primer entorno gráfico en utilizar ratón en su interface de manejo.
- Primer lenguaje puro siguiendo el paradigma de la Programación Orientada a Objetos.
- Entorno completo para ejecución y programación.
- Entorno diseñado con ánimo de incrementar las capacidades cognitivas de los usuarios.
- Tecnología viejuna alejada del mainstream de la programación actual.
- Paradigma simple y consistente: Todo valor es un objeto y el sistema funciona sólo con objetos enviándose mensajes.
Por otro lado, en los principios que formuló Dan Ingalls1 se expresa:
Personal Mastery: If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.
-- Daniel H. H. Ingalls
Que viene a decir, en una traducción libre: Si un sistema es para servir al espíritu creativo, debe ser completamente comprensible por un individuo.
Pues bien, lo del espíritu creativo me pone y mi espíritu creativo necesita un sistema que lo aliente, o lo sirva, y, puesto que dicen que es posible, me propongo hacer comprensible para mis cortas entendederas, de psicólogo usuario de informática, todo el sistema.
Por concretar un poco más, las cosas que me gustaría poder manejar perfectamente con Cuis-Smalltalk son las siguientes:
I/O: Lectura y escritura de archivos externos al entorno.
Smalltalk es un sistema bastante cerrado y la persistencia de datos suele realizarse directamente en la imagen del entorno y no en archivos externos.
Interacción con el S.O.: Interactuar con el Sistema Operativo, lanzar aplicaciones, obtener datos.
Abundando en el punto anterior, y siendo un sistema bastante completo y redondo, la interacción con el Sistema Operativo en muchos casos no es necesaria, pero siempre es útil saber cómo realizar esta interacción.
Cliente/Servidor: Generar una aplicación Cliente/Servidor con Cuis.
Como he dicho antes, Smalltalk tiende a ser un sistema cerrado. Me gustaría aprender a abrirlo en algún tipo de servicio de red.
GUI: Manejar con soltura todo el entorno gráfico Morphic de Smalltalk.
Cuis-Smalltalk proporciona un entorno gráfico maduro para la realización de interfaces de usuario.
Paquetes: Manejo de paquetes y control de versiones.
El sistema de Cuis-Smalltalk proporciona un completo sistema de gestión de paquetes desde código fuente. El objetivo aquí sería conocer cómo se podría gestionar un proyecto mediante algún sistema de control de versiones, si fuera posible con varios programadores.
Además Cuis-Smalltalk tiene el sistema de Features que se sostiene en el manejo de paquetes.
Librerías externas: Interacción con librerías escritas en C mediante FFI.
La ampliación de las posibilidades del entorno de Cuis-Smalltalk pasa por la utilización de otras librerías del sistema, que principalmente están escritas, o son compatibles, con el lenguaje C/C++. Me gustaría trastear lo suficiente para encontrarme cómodo utilizando librerías externas y/o programando mis propias librerías en C/C++ para acelerar la ejecución de mi sistema.
Kernel de Smalltalk: Comprender cómo funciona internamente el propio sistema de Smalltalk.
Smalltalk-80 fue la última definición del lenguaje y el entorno, del que Cuis-Smalltalk es un heredero directo. Cuenta con todo un sistema de clases, y metaclases, que determina finalmente el comportamiento y las capacidades del sistema.
Todos esos puntos me propongo aprender a manejar con el único objetivo de aprender a manejarlos. ¿Haré alguna aplicación concreta? Pues no lo sé, ahora mismo no se me ocurre en qué podría invertir todo este esfuerzo de aprendizaje. Supongo que según avance en la comprensión del sistema y sus posibilidades, se me ocurrirá algún proyecto loco que hacer con él2.
Pero sí, respondiendo a otra pregunta, hay algo que me frustresa3 del entorno Cuis-Smalltalk: sólo puedes programar en Smalltalk. Aunque tiene otros puntos en común con Emacs que te resultarán familiares:
- Interface de usuario: Emacs orientado a texto, Cuis gráfico.
- Lenguaje de extensión: Lisp para Emacs, Smalltalk para Cuis.
- Ampliación mediante paquetes: Paquetes que se distribuyen mediante código fuente.
- Sistema accesible: Todo el código está a la vista y es modificable.
- Casi un Sistema Operativo: Ambos sistemas son casi un Sistema Operativo en sí mismos.
Mientras trasteo iré tomando notas. Me he montado un wiki de TiddlyWiki para ello. Lo podéis encontrar en esta misma página en el enlace https://notxor.nueva-actitud.org/cuis/apuntesCuisSmalltalk.html Si te interesa dicho trasteo, puedes seguir mis avances, si no, no lo hagas. Estos apuntes son fundamentalmente para mi propio uso. Los pongo en un lugar público por si a alguien más le son útiles o le interesan.
Además también podéis encontrar al lado mi traducción del libro de Cuis-Smalltalk, si lo que buscas es introducirte en este entorno:
- La versión pdf: https://notxor.nueva-actitud.org/cuis/TheCuisBook.pdf
- La versión html: https://notxor.nueva-actitud.org/cuis/html/index.html
- La versión Tiddlywiki: https://notxor.nueva-actitud.org/cuis/TheCuisBook.html
- El código fuente de la traducción: https://notxor.nueva-actitud.org/TheCuisBook-es.zip
Conclusión
En resumen: Si no te gustan estos temas, no leas estos artículos. Si sólo buscas documentación sobre Emacs, te recuerdo que Emacs provee un completo manual de uso y también otro completo manual de programación. Todos los artículos que he escrito, y los que escribiré, sobre Emacs están sacados de esos manuales o de la documentación del paquete concreto sobre el que trata el artículo. Seguro que tú también puedes, incluso mejor que yo, extraer esa información de esas fuentes.
Este blog es mi blog. Trato temas sobre tecnologías, sobre psicología, sobre juegos, sobre Esperanto... temas que a mí me interesan. Y además, está escrito sin ánimo de lucro, ni siquiera de reconocimiento, no busca ser leído por nadie en concreto, salvo por mí, pues suelo usarlo con frecuencia para recordarme a mí mismo cómo hacer ciertas cosas. Está abierto al espacio público, porque algunas cosas pueden ser útiles a otras personas, pero no necesito lectores, no verás anuncios, ni ningún otro sistema de monetización estándar. Este es un espacio libre, donde ejerzo mi libertad de escribir sobre lo que quiero, desde mi punto de vista, desde el respeto. Si te gustaría que fuera de esta o de aquella manera, no necesitas contármelo a mí: escribe tú en el tuyo según tus gustos y monetiza lo que hagas como tú quieras. No apeles a una avaricia que no tengo para influir los temas que debería tratar.
El primer post de Notxor tiene un blog se publicó el 1 de febrero de 2016, este próximo febrero, el blog cumplirá 10 años. En los casi 10 años que lleva en funcionamiento, el sistema de donaciones ha recaudado la magnífica suma de 5€ en total4. Antes escribí en otro blog, que se perdió en las memorias del tiempo y que en sus seis años de funcionamiento recaudó la abultada suma de 0€. Si mantengo el blog, es evidente que no es por razones económicas. De él sólo obtengo facturas y gastos.
Hace bastante cerré los comentarios del blog, entre otras cosas, para evitar mensajes de trolls dispuestos a criticar hasta lo no criticable. Aunque el motivo fundamental fue que hubo ataques malintencionados, de script kiddies5, que me hacían tener que estar limpiando el espacio de comentarios varias horas al día. No voy a abrirlos porque lo pida nadie o porque harían más monetizable el blog, no insistas.
Notas al pie de página:
Me apetece algún tipo de juego, pero ya veremos hacia donde giran las necesidades.
Me frustra y me estresa.
Que como puedes suponer no llegan a cubrir los gastos de ningún año ni de host ni de dominio.
Me niego a llamarlos hackers. Un hacker hubiera visto a la primera que no había una base de datos a la que hacerle una inyección de códico SQL en el formulario de comentarios, no necesitaría enviar 300 variaciones de lo mismo a lo largo de una hora, o 1500 consultas SQL de usuarios y correos.
Comentarios