C'est très intéressant. Je recherche pleins d'autres exemples de ce style entre Java/Smalltalk, C++/Smalltalk, si tu as des URL je suis preneur.
Dans mon occupation d'écriture du player drgeo dans squeak, je suis déjà tombé sur le cul plusieurs fois par: - la clarté de l'agencement des différentes classes et méthodes - la rapidité/confort du coder&tester&debogguer&continuer_a_tester - les outils IDE m'ont sauvé plusieurs fois la vie: en gros je trouve en 30s l'info sur la méthode X de la classe Y à utiliser, et avec 20s de plus je teste. En C/C++ il me fallait parcourir, parcourir et parcourir les docs et je n'ose pas compter le temps qu'il me fallait pour tester la méthode. - des méthodes C++ de 5 lignes se retrouvent ridiculement en 1 ligne Smalltalk.
Un truc qui m'a gêné c'est de ne pas pouvoir faire de l'héritage multiple, pour un truc tout con j'en ai besoin et j'ai du créer un doublons de classe quasi identique, mais il faudra que je nettoie mais tout de suite, je demanderai en temps voulu.
Hilaire
Noury Bouraqadi a écrit :
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
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr