• [^] # Re: ca depend de ta maniere d'apprendre

    Posté par (site web personnel) . En réponse au message Quel est le meilleur moyen d'apprendre à utiliser un langage de programmation ?. Évalué à 5.

    1) Je pense que l'incompréhension vient que ce ce j'appelle langage, c'est seulement le langage (sa grammaire, sa sémantique), mais :

    • j'ai fait systématiquement l'effort de parler du langage Java quand il je parlais du langage.
    • j'ai fait systématiquement l'effort de parler de l'écosystème Java (qui comprend le JDK) le reste du temps. J'ai précisé dans mes 2 derniers messages que le maîtriser était difficile, donc je ne comprends pas pourquoi tu tiens tellement à me l'expliquer vu qu'on est d'accord...

    J'ai aussi dit que coder correctement était difficile dans tous les langages, et que maîtriser même un langage simple était difficile. Je fais du Python, langage simple, depuis plus de 10 ans, il m'arrive encore d'apprendre des choses dessus ; et je ne parle pas de fonctions de la lib standard (il est évident que je ne la connaît pas par cœur), mais bien d'aspect du langage lui-même. Là encore on est d'accord mais tu me le réexpliques quand même.

    J'ai aussi dit que l’excès de simplicité du langage pouvait justement être une source de difficulté pour le programmeur (il manque des notions qui auraient permis que le langage fasse les choses à notre place, donc le programmeur doit faire plus d'efforts). Donc le fait que le langage soit simpliste n'implique pas que coder des choses complexes soit simple, c'est très exactement le contraire.

    2) La phrase originelle disait que le langage Java faisait partie des plus savants. C'est faux il fait partie des langages les plus simples parmi les langages les plus utilisés. Et c'est normal Java a été conçu dans cet optique :

    "Le langage Java reprend en grande partie la syntaxe du langage C++, très utilisée par les informaticiens. Néanmoins, Java a été épuré des concepts les plus subtils du C++ et à la fois les plus déroutants, tels que les pointeurs et références, ou l’héritage multiple contourné par l’implémentation des interfaces. Les concepteurs ont privilégié l’approche orientée objet de sorte qu’en Java, tout est objet à l’exception des types primitifs (nombres entiers, nombres à virgule flottante, etc.)."

    "L’équipe envisageait initialement d’utiliser le langage C++, mais l’abandonna pour différentes raisons. Tout d’abord, ils développaient sur un système embarqué avec des ressources limitées et estimaient que l’utilisation du C++ demandait un investissement trop important et que cette complexité était une source d’erreur pour les développeurs. L'absence de ramasse-miettes impliquait que la gestion de la mémoire devait être programmée manuellement, un défi mais aussi une source d’erreurs."

    "Il faut noter que les évolutions successives du langage ne portent guère sur sa syntaxe -relativement stable depuis le début- mais principalement sur l'enrichissement de ses fonctions, avec l'embarquement et l'optimisation de bibliothèques logicielles (API) dans des domaines très variés de l'informatique : bases de données, gestion XML, informatique distribuée et web, multimédia, sécurité..."

    Tiré de https://fr.wikipedia.org/wiki/Java_%28langage%29

    Note que le fait qu'il fasse partie des plus simples n'implique pas qu'il soit simple dans l'absolu. Donc oui il a des subtilités, mais il y en a aussi dans les autres langages (et particulièrement en C++).

    Hmm, t'as jamais testé jni ou quoi ?

    • JNI fait parti de la lib standard, pas du langage en tant que tel. Il y a des API complexes dans tous les langages.
    • Il y a des API comparables dans tous les langages ; tous les langages bien conçus permettent de s'interfacer avec du C, et quand il y gestion automatique de la mémoire ça peut être source de complexité oui, mais ça reste vrai dans plein de langages 'simple' (ex: Go, Python). Donc ça ne rend pas Java plus complexe que les autres, désolé.
    • As-tu essayé de maîtriser la STL ? :)
    • Programmer avec un GC facilite globalement la vie du programmeur (c'est pour ça qu'il y en a un dans Java—cf l'historique plus haut) ; maintenant chaque solution amène aussi des problèmes. Donc l'existence de problèmes ne prouve pas qu'on est plus complexe que le reste du monde.

    Et tu te limite à un seul langage dans tes applis ?

    Quel rapport avec Java au juste ? Oui programmer c'est difficile ; oui mélanger des langages c'est difficiles ; oui si certains ont un GC ça va provoquer un certain type de problème, mais Java n'est pas le seul à avoir un GC (anecdote: on peut mettre un GC en C++, mais pas gérer sa mémoire manuellement en Java) et le GC facilite la vie 99% du temps, donc encore une fois ça ne rend pas Java plus complexe que les autres.