-
Dilemne, au secours !
Bonjour,
J'ai fais pleins de recherche et je ne trouve pourtant pas la réponse concrète à ma question, loin de moi l'idée de vouloir relancer le fameux débat, "lequel est le mieux" mais ...
J'ai bien avancer dans mon tuto pour apprendre le java, j'avais mis déjà un certain temps à choisir celui là sauf que je me suis depuis intéressé au phyton, chose que je n'aurais jamais du faire.
Après avoir chercher partout, mis à part pour faire des applications énormes ou faire de l'android, ou encore vouloir absolument faire carrière dans une boite qui ne fait que du Java....
Je ne vois absolument aucun intérêt de choisir Java plutôt que python, ce dernier ayant tout les avantages du premier sans les inconvénients si j'en crois ce que je lis et c'est vrai que la syntaxe fait rêver !
Alors je viens vous voir amis Javaistes pour que vous me donniez les raisons qui font que vous n'avez pas encore tous migrer vers ce langage qui a l'air si parfait d'un point de vue de débutant et plus sérieusement, c'est horrible d'apprendre un truc en se disant qu'il y a plus simple a cote pour faire pareil.
Merci d'avance ;)
-
Personellement, parce que la galaxie d'outils qui tourne autour de python aujourd'hui me semble assez réduite. C'est peut-être une question (surement d'ailleurs) d'habitude, mais c'est comme ça. Parce que, selon moi python n'a pas encore fait ses preuves en application d'entreprise pour autre chose que de petits projets, parce que python, à ma connaissance, ne fait pas l'objet d'un processus décisionnel tenant en compte les besoins de l'industrie concernant la standardisation des API, du coup on se retrouve avec plusieurs apis différentes (Tk, Qt, win32 fundation, ...). Le standard dans python se réduit à mes yeux à peau de chagrin et si on veux faire plus faut prendre des modules à part, chacun ayant leur propre processus décisionnel. Je vois bien aujourd'hui tout ce qui gravite autour de python. Mais c'est trop jeune toute cette galaxie.
Pour faire un rapprochement, il y a 5 ans, beaucoup de programmeur que je croisait ne juraient que par Ruby on Rail, les framework super facile pour faire tes applications web, il fallait passer tout à ça. Ca doit faire 2 ans que plus personne ne m'a jamais parlé de Ruby on rail. Aujourd'hui c'est python, mais il y a 5 ans personne ne m'en parlait. Je sais que le langage est plus vieux que 5 ans, mais il émerge seulement. Je ne peux pas aujourd'hui lui confier quelque chose qui devra encore tourner dans 10 ans. Il n'y a pas assez de recul.
Il y a 10 ans, on m'a vendu du java et du java enterprise. 10 ans plus tard, je vois que non seulement il continue de murir, mais mes applications vieilles de 10 ans continuent à tourner sans nécessiter de grosses adaptations
Là où je suis, nous utilisons du python, du php, du java, du scripting bash. Chaque outil son usage. Je ne vais pas développer un service web avec un message bus un scheduler et une gestion de base de données en python. Je le ferais en java. A contratio, si j'ai une dixaine de petites tâches à exécuter toutes les 10 minutes sur un serveur, je ne vais pas charger une jvm à chaque fois, je vais faire du python.
Donc voilà, pour résumer, dans le choix d'un langage pour un projet t'as les paramètres suivant à prendre en compte
-> que maitrisent les développeur
-> quel est l'avantage au point de vue temps de développement de ce langage
-> quelles garanties me donnent ce langage
-> quels sont les outils disponibles autour de ce langage
-> quelles ressources nécessitent ce langage
Pour ce qui est de la syntaxe (en gros, des variables non typées et non déclarées (beurk), la création facile de tableaux et collection, le passage transparent de l'un à l'autre), groovy fait la même chose en java ;)
Pour le reste, rien ne t'empêche d'apprendre le java et le python. Après tu obtiendra de l'expérience dans des domaines qui seront liés à tes besoins professionnels concrets, c'est eux qui finalement dirigeront tes choix, pas tes envie, normalement. Si ça tombe, au final, tu finira par ne faire que du PL/SQL parce que tu sera dba oracle ;) Et 10 ans plus tard, tu te recyclera et tu ne fera que du C#.
-
Personnellement, je me trouve très limité quand je n'ai pas de typage et de polymorphisme statique. Pas assez de garanties, pas assez de certitudes pour savoir rapidement ce que je fais et où je vais. Trop d'erreurs potentielles, de points faibles qui me semblent plus venir du langage que de ma manière de faire. Je ne me sers donc de langage à typage dynamique que dans les cas suivant : un petit jouet fait à la va-vite (Python en effet, ou Ruby, ou script shell,) ou si j'ai vraiment pas le choix (JavaScript... Et encore je me suis mis à Dart, pas trouvé de défaut.)
Il y a aussi le fait qu'on trouve bien plus de bibliothèques pour Java que pour Python. Je suis pas le plus paresseux quand il s'agit de faire soi-même une bibliothèque qui existe pas encore. Mais tout de même...
Ça veut pas dire que je trouve Java parfait :
- C'est de loin le langage avec lequel j'ai le plus de mal à distribuer un programme avec toutes ses dépendances. En l'occurrence la JVM. La plupart du temps je m'en fiche, mes clients considèrent que c'est leur problème. Mais bon.
- Je sais pas pourquoi, j'arrive juste pas à faire des interfaces utilisateur en client lourd qui soient à peu près convenables en Java, que ce soit Swing ou SWT. J'ai pourtant pas de soucis dans les autres langages.
-
Merci à vous deux pour vos arguments, ca reboost ;)
lol tchize_, toi elle te fais pas rêver la syntaxe et je comprend pourquoi, d'un autre côté que c'est facile et rapide :p
Par contre je ne connais pas Groovy, y'a Processing aussi qui peut être un concurent de python !?
Oui j'ai l'impression qu'il va effectivement falloir que je me mette aux deux...
Pour le C# au moins en venant de Java ca se ferait pas trop difficilement si j'ai bien suivi, mais a ce moment là j'espère que ca serait plutôt le c++ :p
thelvin, à ce que j'ai lu à droite, à gauche, tu n'est pas le seul a galérer avec swing, c'est une des choses qui m'a fait un peu peur d'ailleurs. Et avec JavaFX ca le fait pas plus?
-
As-tu essayé de poster le même message sur le forum Python ? Tu auras surement des avis/réactions différentes :aie:
Je connais une dizaine de langages (pas spécialiste du tout, mais curieux de connaitre leur paradigme, typage, mot-clés, convention d'écriture...), je dois t'avouer que Python est un langage cool pour les débutants, plus simple à apprendre.
De tête, je dirais que les 3 choses que j'apprécie le plus dans ce langage sont :
- L'indentation à 4 espaces (code propre).
- Ne nécessite pas de VM (Ce qui n'est pas le cas pour Java pour le moment...).
- Des fonctions plutôt bien pensés (par exemple la lecture/écriture de fichier en Python était plus simple à mettre en oeuvre qu'en Java < 7, ou bien encore les requêtes préparées, les fonctionnalités liées au réseau).
Bon après je ne te cacherais pas que comme beaucoup d'autre je joins l'avis de _tchize (sauf pour la partie "non typées", Python est fortement typé, tu ne peux pas affecter un String à une variable que tu as initialisé avec un entier en Python, comme tu pourrais le faire en PHP ou JavaScript par exemple). Après il y a des points sur lesquels je bloque, pourquoi n'y a t-il pas de type hinting en Python ? Le duck typing offre trop de liberté je trouve, je préfère quand un langage est stricte comme en Java.
Sinon t'es tu demandés quels étaient les performances entre ces deux langages ? (jette un coup d'oeil ici).
Bon après il ne faut pas se leurrer, Java fait beaucoup de chose, mais pas le café... Java a beaucoup de mal pour tout ce qui touche au matériel par exemple (on utilise très souvent des librairies externes dans ce cas, qui eux-mêmes font appel à des méthodes natives en C ou C++).