Attention à ce que tu dis. Ça ne fait pas sérieux parfois.
- A priori, Java n'est pas plus simple ou moins simple que les autres langages. À mon avis, Ruby ou Python sont même plus agréable, et Smalltalk aussi.
- Les pointeurs existent toujours. Ce que tu veux dire c'est qu'on ne peut faire de l'arithmétique ou les modifier directement. En fait, c'est en C++ ou tu peux faire des objets sans utiliser de pointeurs. Toujours est-il que cet état de fait en Java est celui qui est employé presque partout maintenant.
- Ce n'est pas Java qui a introduit le concept d'interface. En fait, Java n'a quasiment rien inventé. Il a repris des bonnes idées. Ce qui est déjà bien. En plus, l'héritage multiple possède des avantages non négligeables. Et donc on pourrait dire que c'est un désavantage de Java. Ne pas autoriser l'héritage multiple est surtout une simplification du langage à la base. Cependant, si tu suis une méthodologie objet, le fait de ne pas avoir la possibilité de faire de l'héritage multiple peut être un sérieux problème conceptuel. J'admets que cela peut toujours se régler a posteriori, mais en brisant la procédure « naturelle » qui va de la réalité vers le modèle. Si tu dois hériter de deux « surclasses » (une croisement voiture/hydroglisseur par exemple) pourquoi privilégierais-tu l'un de deux (l'hydroglisseur ou la voiture) ?
- L'allocation automatique existait bien avant Java, et dans Smalltalk particulièrement qui était un des premiers à l'implémenter.
- Idem bien sûr du Garbage Collector.
- En Java, tout n'est pas objet. Ne serait-ce que les int par exemple. Alors qu'en Smalltalk TOUT est objet, y compris les structures de contrôles (les if/then/else suivent le principe des messages). De plus la syntaxe de Smalltalk explicite clairement l'idée de passage de message (comme en Objective-C). Pour comprendre et apprendre (ce qui va de paire) les notions OO, Smalltalk est donc mieux approprié que Java.
- La portabilité est vrai pour tous les langages qui sont cités ici : Python, Ruby, Smalltalk.
En fait, Java est parti avec la syntaxe de C pour essayer de s'attirer les développeurs de C++, mais son réel maître à penser c'est Smalltalk.
Même Eclipse est inspiré de l'environnement de Smalltalk ! Toutes les notions de refactoring n'ont rien de nouveau pour ceux et celles qui connaissent cet illustre ancêtre.
Si tu veux donner un avantage de Java sur Smalltalk, il va falloir chercher ailleurs. Dans ton etc. peut être. Il me semble qu'en dehors de Java, tu ne connais pas beaucoup le reste. Qu'est ce que Java peut apporter par rapport à Smalltalk ou à Eiffel ? (dans l'optique apprentissage du paradigme OO bien sûr)
Partager