Accueil > Carnet > Smalltalk

Après plus de 14 années de présence sur le web, je continue encore aujourd'hui cette incroyable aventure qu'est la découverte du virtuel. Lampe torche, sac à dos, planche de surf et bien sûr ce calepin indispensable pour mémoire.

#143 Smalltalk 29 Octobre 2006

Etudes Programmation

Attention, il est important de considérer que cet article est une archive, son contenu est probablement obsolète!

Smalltalk

Peu de personnes connaissent le smalltalk et pourtant il s'agit d'un des langages précurseur du Java. L'idée principale était de créer un langage proche du langage humain. En d'autres termes d'utiliser des phrases pour représenter des commandes. Aujourd'hui, nous étudions ce langage de programmation en cours.

Jusqu'à aujourd'hui, je n'ai trouvé qu'un seul et unique avantage à ce langage : la présence d'un utilitaire dans la machine virtuelle (squeak) permettant de gérer les classes.Par conséquent, inutile de se casser la tête à chercher dans le code où se trouve la classe, la méthode en question.

Les inconvénients à utiliser ce langage sont nombreux. La syntaxe, en premier, n'est absolument pas pratique. Pour la définir une variable par une valeur, il faut utiliser non pas un simple caractère (signe égal) mais deux (égal point) !

uneVariable := 'Le contenu de la variable'

Les textes, s'ils veulent être compris, doivent être entre simples quotes et non doubles. Les doubles quotes sont réservées aux commentaires. Ensuite, en fonction des variables utilisées par les méthodes, il faudra définir différentes méthodes. Personnellement, je n'adhère pas trop au principe.

Exemple :

methodeUn
  ^'Méthode sans argument'
 
methodeUn:argument
  ^'Méthode avec un argument'
 
methodeUn:argument To: autreArgument
 ^'Méthode avec deux arguments'

Cette méthode de travail n'est absolument pas performante. Les contrôles et les boucles ne sont pas d'avantage puisqu'il manque les "elseif" qui sont, il faut l'admettre, plus qu'utiles dans le cas de multiples contrôles.

En smalltalk, nous avons :

(variable isTrue) 
  ifTrue:[ bloc instructions ]
  ifFalse:[ bloc instructions ]. 
  "Notez bien le point après le ifFalse, 
   sinon tout bug ..."

En somme de toutes choses, je n'adhère pas spécialement au smalltalk, encore moins aux résultats souvent hasardeux (un espace peut tout faire planter ... ou alors la concaténation de plusieurs variables, textes).

Bon courage à toutes les personnes qui vont jouer avec smalltalk toute leur vie :)

Commentaires

Damien Pollet 31 Janvier 2007

Salut,

tu ne critiques que l’apparence du langage, donc désolé mais je vais troller >:]

Pour l’affectation tu confonds “pratique” et “rapide à taper”… donc comparons l’exemple de l’affectation avec Java :
Truc monTruc = new Truc();

Idem pour les quotes, c’est une question de goût ou d’habitude… en Ruby les doubles et simples quotes sont possibles, parce qu’ils permettent d’écrire les chaines différemment :
“\n” > chaîne contenant un retour chariot
‘\n’ > chaîne contenant \ suivi de n
Ça c’est une vraie différence.

Pour les arguments des messages à mots clés, je dirais affaire de goût… la syntaxe de Smalltalk a été conçue pour ressembler à de l’anglais petit nègre, que je trouve plus pratique, juste parce que c’est plus facile de trouver des noms de méthodes clairs.

Pour les boucles, tu préfères incrémenter un compteur toi-même à la main à chaque tour, au lieu d’un simple aCollection do: [:each | blah] ?

Le else if, tu peux l’ajouter toi-même, mais en fait on en a rarement besoin avec le style de programmation en Smalltalk. Et (variable isTrue) ifTrue: est une perle classique

En gros, regarde la syntaxe de Smalltalk, celle d’autres langages, et compare la quantité de cas particulier donc il faut se souvenir… on met un ; ou pas ? faut-il un \ pour couper la ligne ? etc

En tout cas fais confiance à ton prof, Smalltalk est l’un des meilleurs langages d’apprentissage qui soit.

Reply

Ajouter un commentaire