Je suis d'accord avec toi ... mais le premier avantage de Java par rapport à C++ et on oublie souvent de le dire c'est sa relative (par rapport à C++) simplicité d'utilisation pour un débutant.
Pour le débutant (typiquement, le stagiaire), je suis d'accord. Mais l'informatique n'est pas faite que par des stagiaires ou des non informaticiens.
Premièrement, à l'exécution les segfaults sont très rares (à vrai dire, j'en ai vu qu'une fois dans un pb de partage de données entre 300 Threads), on préfére les IndexOutOfBoundException, IOException ... C'est plus parlant surtout quand on commence à développer et qu'on se gourre tout le temps dans les comptages d'index.
Tu es libre d'utiliser un bon système de gestion d'erreur en C++. Mais c'est vrai que c'est un point fort de Java.
Deuxièmement, on évite l'arithmétique des pointeurs et la gestion des allocations dynamiques (je n'ai jamais aimé passé 2 minutes à eplucher un 'man' pour savoir si le char* passé en paramètres devait être alloué par moi, par la méthode ou tout simplement se trouvait en champ static).
Je crois que tu as de sérieuses lacunes ou que tu parles de C et non de C++ si tu te consacres autant à ces problèmes. En C++ on évite l'allocation dynamique "à la main" (on prend des conteneurs, le cas échéant on les fabrique et alors tout est bien encapsulé), on ne fait pas d'arithmétique de pointeurs sauf cas exceptionnels (a priori inutile) et on n'utilise pas de char* mais des std::string ou std::vector, leur caractère const et "passé en référence" suffisant à tout connaitre.
Le C++ (et non le C avec une vague connaissance des classes C++ par dessus) est parfois bien plus simple que Java. Car il faut distinguer : simple à apprendre (Java) et simple à utiliser (C++, après un apprentissage un peu plus difficile que Java).
Pour finir, je dirais que Java n'est pas le langage ultime, mais il faut bien reconnaître que de la même manière que C++ et SmallTalk en leurs époques, il a permis de franchir un nouveau cap dans l'abstraction du développement.
C++ a quasiment toutes ces facilités de Java, il permettait déjà cette abstraction. Java est juste plus orienté là dedans, donc plus simple à apprendre et propose une bibliothèque standard plus large (bien qu'ayant des lacunes sur les conteneurs, ça doit être corrigé maintenant avec les génériques).
[^] # Re: mouaich.
Posté par Bière Drabo . En réponse au journal Java et C++. Évalué à 1.
Pour le débutant (typiquement, le stagiaire), je suis d'accord. Mais l'informatique n'est pas faite que par des stagiaires ou des non informaticiens.
Premièrement, à l'exécution les segfaults sont très rares (à vrai dire, j'en ai vu qu'une fois dans un pb de partage de données entre 300 Threads), on préfére les IndexOutOfBoundException, IOException ... C'est plus parlant surtout quand on commence à développer et qu'on se gourre tout le temps dans les comptages d'index.
Tu es libre d'utiliser un bon système de gestion d'erreur en C++. Mais c'est vrai que c'est un point fort de Java.
Deuxièmement, on évite l'arithmétique des pointeurs et la gestion des allocations dynamiques (je n'ai jamais aimé passé 2 minutes à eplucher un 'man' pour savoir si le char* passé en paramètres devait être alloué par moi, par la méthode ou tout simplement se trouvait en champ static).
Je crois que tu as de sérieuses lacunes ou que tu parles de C et non de C++ si tu te consacres autant à ces problèmes. En C++ on évite l'allocation dynamique "à la main" (on prend des conteneurs, le cas échéant on les fabrique et alors tout est bien encapsulé), on ne fait pas d'arithmétique de pointeurs sauf cas exceptionnels (a priori inutile) et on n'utilise pas de char* mais des std::string ou std::vector, leur caractère const et "passé en référence" suffisant à tout connaitre.
Le C++ (et non le C avec une vague connaissance des classes C++ par dessus) est parfois bien plus simple que Java. Car il faut distinguer : simple à apprendre (Java) et simple à utiliser (C++, après un apprentissage un peu plus difficile que Java).
Pour finir, je dirais que Java n'est pas le langage ultime, mais il faut bien reconnaître que de la même manière que C++ et SmallTalk en leurs époques, il a permis de franchir un nouveau cap dans l'abstraction du développement.
C++ a quasiment toutes ces facilités de Java, il permettait déjà cette abstraction. Java est juste plus orienté là dedans, donc plus simple à apprendre et propose une bibliothèque standard plus large (bien qu'ayant des lacunes sur les conteneurs, ça doit être corrigé maintenant avec les génériques).