Fundamentos del lenguaje
31 pasos en 10 series de Smalltalk.
Smalltalk es de donde vienen los objetos: el lenguaje que el equipo de Alan Kay construyó en Xerox PARC en los años 70 junto a la GUI, el IDE y el flujo guiado por mouse que al resto de la computación le tomó décadas absorber. Todo es un objeto, todo pasa por envío de mensajes, y la gramática entera — mensajes unarios, binarios, de palabra clave — cabe en una postal. Los condicionales y bucles no son sintaxis; son mensajes que booleanos y bloques responden.
Este tour teclea Smalltalk de workspace, como el lenguaje se escribe de verdad en vivo: temporales y cascadas, las tres formas de mensaje, bloques y clausuras, ifTrue:ifFalse: y to:do:, la biblioteca de colecciones de OrderedCollection a Dictionary, Set y Bag, select/collect/inject, strings y símbolos y caracteres, orden con bloques de comparación, streams de lectura y escritura, excepciones con on:do: y ensure:, fracciones exactas, y la reflexión como conversación — class, respondsTo:, isKindOf:. El Bis es el trío de scripts de siempre hablado en Bags, bloques y cascadas bajo Pharo.
Valores
- La forma del workspaceEl Smalltalk más pequeño: temporales, mensajes, Transcript.
- Temporales y asignaciónDeclara entre barras, asigna con :=, encadena de derecha a izquierda.
- Las tres formas de mensajeUnario, luego binario, luego de palabra clave: toda la gramática.
Mensajes y bloques
Control de flujo
- CondicionalesNo hay if: los booleanos reciben mensajes ifTrue:ifFalse:.
- Buclesto:do:, timesRepeat:, whileTrue: — todos mensajes.
- nilUn objeto como cualquiera; ifNil:ifNotNil: ramifica sobre él.
Colecciones
- OrderedCollectionLa lista que crece y conserva el orden de llegada.
- DictionaryClaves a valores, con at:ifAbsent: leyendo con red.
- Set y BagCada elemento una vez, o contado cada vez.
- Arreglos e intervalosArreglos literales con #(), rangos perezosos con to:.
Enumeración
- select y collectConservar, transformar, encontrar: el trío de colecciones.
- inject:into:El pliegue: enhebra un valor corriente por la colección.
- Estadísticas de colecciónmax, min, average, count: — las colecciones se responden solas.
- Recorrer con estilodo:separatedBy:, doWithIndex:, reverseDo:.
Strings
- Strings y símbolosLos strings son colecciones; los símbolos, nombres internados.
- CaracteresObjetos con prefijo $ y protocolo propio.
- Partir y unirsubstrings parte por espacios; los streams vuelven a unir.
Orden e identidad
- OrdenarasSortedCollection ordena; el bloque de orden elige cómo.
- AsociacionesPares clave -> valor, los átomos de los diccionarios.
- Copia e identidad= pregunta contenidos iguales; == pregunta mismo objeto.
Streams
- WriteStreamArma un string sin concatenación repetida.
- ReadStreamRecorre una colección con un cursor.
Reflexión
- Preguntar a los objetosclass, respondsTo:, isKindOf:: la reflexión como conversación.
- Excepcionessignal lanza; on:do: maneja; ensure: corre siempre.
- NúmerosLas fracciones quedan exactas; los enteros crecen sin límite.
Bis
- word_freq.stUna tabla de frecuencias con un Bag, un bloque de orden y relleno.
- grade_report.stBoletines desde asociaciones, una escalera de bloques y relleno.
- temp_stats.stUna semana de temperaturas: extremos por inject, barras, saltos.