Salut, > Je ne pense pas que Java soit une erreur si on le voit du point de vue de sa > portabilité.
Hummm... Portabilite... Cela existe deja depuis plus de 40 ans avec le lisp. Et puis Java n'est pas tout a fait portable. Un exemple, une application graphique n'est pas exacte au pixel pres suivant qu'elle tourne sous windows ou sous linux. De plus les threads sont directement mappe sur le system, ce qui peut faire refleter des comportement different suivant l'os sous jacent. > Il est clair que comme Java est un langage s'exécutant sur une > machine virtuelle, on n'a pas les mêmes performances (bien que des > processeur exécutant le bytecode en natif existent). Cela se discute... L'ecart entre la rapport vm/natif code s'amenuise au fil du temps. On est qu'au debut de l'ere JIT. > Mais Java a beaucoup d'avantages qu'on ne trouve pas en C++: Exact, mais il a beaucoup moins d'avantage que Smalltalk par exemple. > - La sécurité du code : Les problèmes qu'on peut avoir sont une mauvaise > gestion des objets, mais on ne peut pas avoir de plantage système si la JVM > est bonne (à moins d'être dans un cas hyper particulier que je n'ai encore > jamais rencontré ;o)) Et encore, en java s'est tres mal gere ! Avoir du code interprete permet d'avoir des exceptions reellement puissantes. Quelle est la difference entre une exception Java et une exception C++ ? Aucune. Voila un probleme. Si ton application plante, ta jvm plante... Les exceptions sont vraiment quelque chose d'important, c'est la porte d'entree pour avoir de la compilation incrementale et des des techniques de debuggage rellement impressionantes par exemple... > - Le fait que la programmation en Java ressemble à un assemblage de > pièces de légo, car c'est du pur objet : On ne peut pas utiliser un seul > pointeur là dedans. On ne manipule que des références... Java n'est pas un langage object pure. Il en est tres tres loin en fait. Tout n'est pas objet en Java. Quel est l'interet d'avoir des types primitifs ? Juste pour plaire aux anciens developpeurs C ou C++ qui pourrait etre oblige de passer a Java. Il en est de meme pour les accolades. Si le choix avait ete d'utiliser des parentheses pour definir un bloc par exemple, le langage n'aurait jamais marche ! Et ceci n'est pas de moi, mais du responsable du design de Java (Gillad Bracha). N'importe qui interesse a la serialization, aux mop, a la persistance en Java hallucine devant le nombre d'erreurs liees au langage. Quelle belle betise que d'avoir mis des int des Integer. Certain arguait que c'etait pour des raisons d'optimisations, foutaise, le fait d'allouer 2 bits dans le garbage collector pour les certains type est une technique connue depuis fort longtemps. Quelle betise de ne pas avoir fait une classe un objet (on ne serait pas oblige de passer une adr de site web pour transporter les classes en RMI par exemple)... Java est pas un langage objet pure (ou oriente-objet pure). Un langage objet pure peut se trouver en Smalltalk ou Self. > - La mémoire est gérée automatiquement. Dès qu'un objet n'est plus > utilisé par tout autre objet utilisé, il est détruit de la mémoire (cf > Garbage Collector). C++ ne sait pas faire ça en natif : Il faut programmer > un tel G.C. pour qu'à chaque point clé du code (retour de fonction, etc.), > le garbage collector analyse les objets utilisés et les élimine de la > mémoire... Tache très lourde. D'ailleurs, le Garbage Collector n'est pas > pour rien dans la différence de perf entre Java et C++ ;o) Java n'est precusseur en rien du tout, je t'assure. Le seul point qui pourrait etre innovant residerait dans le class loader. Mais je ne suis pas convaincu que cela apporte vraiment quelque chose. > Et bien là, je suis tout à fait d'accord avec toi, car je considère qu'avant > d'avoir à se soucier des objets, il faudrait se soucier des algorithmes > qu'on implémente. J'ai d'ailleurs regretté, en ESSI1, que l'on ne nous > enseigne pas un simple langage structuré (Pascal ou C)... Car la notion > d'objet DOIT se distinguer de la notion d'algorithme. Or, à l'ESSI, nous > apprenons le Java pour lui même, mais on l'utilise aussi en cours d'algo... > :o(( D'où une difficulté potentielle d'apprentissage du Java & algo pour > quelqu'un qui n'aurait pas assez de recul. Apprendre qu'un seul langage est une erreur monumentale. C'est pire que de ne connaitre qu'un seul OS. L'experience ne se gagne pas par les annees de developpement, mais par le nombre de langages de programmation etudies. Les gars qui ont des fait langages comme UFO ou Sisal avait de bonnes raisons de le faire... Java, a mes yeux, n'est pas du tout adapte a l'apprentissage de langage de programmation, objet ou pas. Si je devais placer Java quelque part, ca serait dans le milieu industriel. Peut etre qu'il est plus adapte. J'en sais rien, et cela ne m'interesse pas. J'ai la conviction que Java est la que pour faire du fric, par pour etre plus expressif. > Euh le Turbo Pascal est bien. Mais pour avoir pratiqué le scheme, je peux > dire que ce n'est pas forcément évident pour quelqu'un qui s'initite à la > programmation, car Scheme est un langage dont la syntaxe ne s'approche pas > trop du langage parlé... Et les langages de programmation ont été créés pour > simplifier la communication entre le programmeur et la machine, en utilisant > une grammaire ** proche ** de la grammaire utilisée par un humain (anglo > saxon en l'occurence ;o)). Humm... Avant de commencer le Scheme, tu savais deja programmer quelque chose ? La premiere fois que j'ai vu le model objet de CLos, je n'avais rien compris, tout ca par ce que je connaissais deja Java. > Conscient que ce mail risque de ne pas intéresser tout le monde, je vais > essayer de me retenir la prochaine fois ;o) Mais là je devais répondre, car > la discussion est intéressante ;o) :-) Alexandre > > > Alexandre > > @+ > > Tanguy. > > > > > Linux-Azur : http://www.linux-azur.org > Désinscriptions: http://www.linux-azur.org/liste.php3 > **** Pas de message au format HTML, SVP **** -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._ Bergel Alexandre http://www.iam.unibe.ch/~bergel ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^ Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 **** Pas de message au format HTML, SVP ****
