Ik ben na een kleine pauze toch maar weer verder gegaan met smalltalk leren. Het is toch een taal dat ik altijd heb willen leren en nu ik op ruby over stap denk ik dat het me zal helpen om de andere denkwijze aan te leren. Ik ben bang dat ik anders teveel op de java manier in ruby ga programmeren. Dat kan wat minder effectief zijn.
Als ontwikkelomgeving heb ik nu toch maar voor Squeak gekozen, omdat het op alle drie platforms (linux, mac, windows) er hetzelfde uitziet. De cincom producten zien er op windows wel goed uit, maar op linux vond ik het toch wel vreemd. Squeak is ook wel vreemd, maar nu hoef ik maar een keer te wennen aan de gui. En het is open source natuurlijk.
Als leidraad probeer ik het ruby pickaxe boek te gebruiken. Dus gewoon het voorbeeld van de jukebox in smalltalk na bouwen. Stap voor stap de equivalente smalltalk code van de ruby code opzoeken en kijken hoe ver ik kom:
'gin joint' size
'Rick' indexOf: $c
-1942 abs
So far so good. Toen kwam ik bij het maken van een class in ruby:
class Song
def initialize(name, artist, duration)
@name = name
@artist = artist
@duration = duration
end
end
Een constructor met argumenten. Ik moest even uitzoeken hoe dat in smalltalk moet.
name: aName artist: anArtist duration: aDuration
^self new name: aName;
artist: anArtist;
duration: aDuration
De setters moeten dan ook gedefinieerd worden. Ik vind dit een beetje omslachtig. De constructor in smalltalk is een gewone class method die geen toegang heeft tot de instance variabelen. Het maakt een nieuwe instantie aan en initialiseert deze door m.b.v. de publieke setters waarden aan toe te kennen.