[Squeak-fr] Usages professionnels de Squeak / Smalltalk

Noury Bouraqadi bouraqadi at ensm-douai.fr
Ven 23 Sep 10:29:17 CEST 2005


Le 23 sept. 05, à 00:02, Thierry Pasquier a écrit :

> Ok pour la liste des gens qui les utilisent
> mais quelles pourrait être l'argumentation pour convaincre des 
> professionnels de l'informatique (localement notre tissus est composée 
> de petites boîtes, hormis les mutuelles à Niort) ? et par rebond les 
> enseignants des filières professionnelles de formation aux métiers de 
> l'informatiques ?
> Thierry

Des entreprises qui font des développement Java m'ont dit que les 
meilleurs développeurs sont ceux qui ont eu une formation Smalltalk!!! 
Ca Smalltalk permet de comprendre les concepts.

Smalltalk est un langage à la fois simple et puissant. De sorte qu'il 
est facile à apprendre/enseigner et à utiliser. On focalise sur les 
concepts et le problème à résoudre. Une explication "neuro-science" a 
été donnée dans le papier
"Why Java Isn’t Smalltalk: An Aesthetic Observation"
http://www.smalltalkchronicles.net/edition3-1/whyjava.html

En résumé, le cerveau humain est capable de manipuler un petit nombre 
(7-8 de mémoire) idées en "parallèle". Au delà il "swap". Le problème 
est que le "swap" n'est pas fiable. Il y a des perte la restitution du 
contexte "swappé". Quand on a un langage compliqué comme Java ou C# 
tout développeur même expert doit aller régulièrement vérifier des 
éléments de langage.
Du coup, ils swappent et perdent de vue des éléments du problème...

Voici des exemples auquels rares les "javaistes" savent répondre vite 
et correctement:
-Une facile: Soit B une sous-classe de A. Et b une instance de B. b 
instanceOf A donne true ou false?
-Une plus tordue: Le lookup de méthode dans Java est-il static ou 
dynamique. Souvent on entend que c'est dynamique. Mais, c'est faux. 
D'abord, toutes les méthodes static et private sont en lookup static. 
En plus, même pour les autres, le lookup s'appuie en partie sur le type 
des variables!!! Voici un exemple :

public class A {
	public void hello(){
		System.out.println("hello");
	}
	
	public void goodBye(){
		System.out.println("goodBye");
	}
	
}

public class B extends A {
}

ublic class Main {
	public void overloaded(A a){
		a.hello();
	}
	
	public void overloaded(B b){
		b.goodBye();
	}
	
	public static void main(String args[]){
		A y = new B();
		Main x = new Main();
		x.overloaded(y);
	}
}

Quel est le résultat de ce programme ? On est en droit de croire que 
c'est "goodBye" car y référence une instance de B. Mais non !!! Le 
résultat réelement obtenu est "hello". Déroutant non ??? Faites tourner 
le code si vous n'êtes pas encore convaincu.
  La raison est que Java utilise le type des arguments pour différencier 
**à la compilation** les méthodes surchargés.

Vous donnez ce code à n'importe quel programmeur Java, il ne pourra pas 
vous répondre sans prendre un certain temps pour réfléchir et vous 
n'êtes même pas sûr. Ca montre que le langage rend le travail du 
développeur plus compliqué... Et de l'enseignant (c'est mon cas) qui 
doit expliquer cela à ses étudiants qui se trouvent vite largués.

Je ne parle pas des trente six façons de faire la même chose en Java : 
par exemple les itérations (boucles for "classiques", enumerate, 
iterator, et enfin "foreach"). Le langage a une conception 
tordue/limitée. Du coup, Sun a besoin de le "patcher" à chaque version. 
Et pour ne pas perdre la comptabilité, tout est conservé. Ca donne un 
gros blob...

Noury
--------------------------------------------------------------
Dr. Noury Bouraqadi - Enseignant/Chercheur
Ecole des Mines de Douai - Dept. G.I.P
http://csl.ensm-douai.fr/noury

European Smalltalk Users Group Board
http://www.esug.org

Squeak: an Open Source Smalltalk
http://www.squeak.org
--------------------------------------------------------------


--------------------------------------------------------------
Dr. Noury Bouraqadi - Enseignant/Chercheur
Ecole des Mines de Douai - Dept. G.I.P
http://csl.ensm-douai.fr/noury

European Smalltalk Users Group Board
http://www.esug.org

Squeak: an Open Source Smalltalk
http://www.squeak.org
--------------------------------------------------------------


Plus d'informations sur la liste de diffusion Squeak-fr