Re: Algunas preguntas de un recién llegao

José "L. Redrejo" Rodríguez <jredrejo-a4J06JfGjT/[email protected]> Wed, 17 Aug 2005 21:40:29 +0200
Newsgroups gmane.education.small-land
Organization Junta de Extremadura
Message-ID <1124307629.7606.51.camel@localhost>
El lun, 15-08-2005 a las 23:12 +0000, supercorreode escribió:
> Hola, ya sé que está mal no leerse los mensajes antiguos y lo
> más
> seguro es que me repita, pero es que no me puedo resistir a preguntar
> sobre el aprendizaje de squeak ;-D
> 
> No tengo mucha idea sobre lenguajes de programación, pero lo
> primero
> que me he preguntado al instalar squeak y al leer algunos tutoriales
> básicos es ¿dónde están las variables, bucles,
> constantes, funciones,
> etc...?

Como ya ha dicho Dario, Diego está escribiendo un tutorial muy bueno en
su bitácora, te resuelve muchas de tus dudas. Como el tutorial es largo
y te puede asustar, intentaré contestarte brevemente, a ver si eso te
anima a ir a por el tutorial.

Con squeak tienes, fundamentalmente, dos niveles de  programación:
e-Toys y smalltalk . 
E-toys es programación gráfica muy sencilla, tienes variables pulsando
en la V que aparece al generar un script. Los bucles los tienes que
hacer tu. Es una programación limitada a realizar, principalmente,
simulaciones y cálculos.
Smalltalk es un lenguaje de programación en toda regla. Realmente es el
primer lenguaje de programación orientada a objetos y tiene un a
potencia extraordinaria. Para ver el código pulsa Alt-B en el mundo de
Squeak. Ahí verás las variables. Bucles, constantes y otras funciones no
son realmente parte del lenguaje, sino clases que se le han añadido para
implementarlas. Realmente el lenguaje tiene muy, muy pocas palabras
claves (te caben en los dedos de las manos. Un resumen de lo que estás
buscando lo tienes en
http://www.angelfire.com/tx4/cus/notes/smalltalk.html

> 
> ¿Es difícil aprender smalltalk? (Mi experiencia se limita a la
> lectura
> de algún tutorial sobre python)
> 

Tiene una curva de aprendizaje muy empinada al principio, pero una vez
pasado el punto crítico, el aprendizaje es muy rápido. Que te sea más o
menos difícil dependerá del profesor que tengas, de tu habilidad y de
que conozcas algo de programación orientada a objetos.

> Con vuestra experiencia, para empezar con buen pie ¿cuál que es
> el
> mejor camino? ¿Qué manuales, tutoriales o libros
> recomendaríais?
> 

Lo mejor sería empezar con, al menos, un par de horas con alguien que te
enseñe a manejarte en el entorno de programación, que es uno de los
puntos principales de este lenguaje, ya que entorno, objetos y código
forman parte de una misma cosa. A partir de ese punto hay muchos
tutoriales gratuitos y libros que te podrían servir. Está muy bien este:
http://www.jmcsweeney.co.uk/computing/m206/object.php o alguno de los
libros gratuitos que puedes bajar de aquí
http://www.iam.unibe.ch/~ducasse/FreeBooks.html , o este tutorial
http://www.cs.pdx.edu/~harry/musings/SmalltalkOverview.html . Pero yo me
iría al tutorial "La magia del Smalltalk" que está poniendo Diego en
http://diegogomezdeck.blogspot.com/ y que encima lo tienes en español.
Eso sí, las dos horas primeras con alguien que te guíe son casi
indispensables: no he visto ningún tutorial que te enseñe bien a moverte
por el código, modificarlo, etc.


> ¿Sirve squeak para otras cosas que no sean presentaciones o
> animaciones? Es decir, ¿podría servirme para hacer, por
> ejemplo, un
> programa para cortar fotos o para construir una interface de usuario
> para un programa de consola? 
> 

Por supuesto, para cortar fotos tienes un morph que se llama CropMorph
directamente, para interface de  usuario, puedes hacer lo que quieras
con smalltalk, algunos ejemplos en
http://minnow.cc.gatech.edu/squeak/1794



> Hay algo en lo que estoy un poco liao. Que yo sepa hay tres cosas que
> he tenío que instalar: una imagen, una máquina virtual y un
> archivo de
> fuentes. ¿Hay algo más?

Bueno, realmente son solo dos: la máquina virtual y el archivo de
imagen, lo que pasa es que si quieres escribir código necesitarás el
archivo de fuentes, y otro llamado .changes que tiene los cambios en el
código que han construido tu imagen a partir del archivo de fuentes
original. Es decir
-vm
- archivo.image y archivo.changes
- SqueakV3.source
Si no vas a tocar el fuente solo necesitas vm y archivo.image



> La máquina virtual sólo vale para cargar imágenes, pero los
> proyectos
> son otros archivos distintos. 

Los proyectos son lo que la palabra indica, un proyecto que has hecho
dentro de una imagen y q ue puedes exportar para que se use en otra
imagen. Las ventajas de los proyectos son dos: te permiten organizarte
dentro de la imagen y puedes exportar lo que has hecho en un archivo
pequeño, sin necesidad de enviarle a alguien la imagen entera.


> ¿Qué hay en las imágenes?
Todos los objetos que has creado para construirla.

> ¿Para qué vale
> el archivo de fuentes?

Para ver el código fuente de todo y poder modificarlo

>  ¿Para cargar un proyecto siempre es
> necesaria
> una imagen?

Sí

>  ¿Vale cualquiera o un proyecto siempre está ligado
> a la
> imagen desde la que se creó?

Si no has creado nuevas clases vale cualquiera que tenga las mismas
clases que el tuyo. En el proyecto irían solo los objetos que hayas
creado y/o modificado. Es decir, si haces un proyecto en la imagen de
small-land y no modificas el código fuente, solo añades videos, sonidos,
creas objetos, etc. ese proyecto se puede cargar en cualquier otra
imagen de small-land. 
Si modificas el código fuente hay un truco que permite incluir el código
modificado en el proyecto (en forma de archivo de cambios o changeset),
pero no es lo usual.

> Bueno, como os he dicho, un poco liao ;)
> 

Pues igual te he liado más. He dado por hecho que sabías algo de
programación orientada a objetos, al menos lo que es una clase y un
objeto instanciado de esa clase, como dijiste que habías mirado algo de
Python...

Un saludo.
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQBDA5KtmqVR2WapDeIRAowoAJ0Z5ZgiQ9JQglp05Z044SFLgEmh7gCdFThp
xbPofcA429gLB5quJ7Dg7qA=
=jDx0
-----END PGP SIGNATURE-----