Je m'excuse d'avance, mais perl, python ne sont pas pour moi des languages de haut niveau, plus de script. D'ailleurs je pense que l'on dira plus facilement un script perl qu'un programme perl. Je ne veux pas dire que perl, c'est de la ...., mais, moi développeur, je veux un language facile, portable, graphique inclus (GUI).
Puisque le fait de s'excuser par avance semble permettre de se dédouaner de dire n'importe quelle connerie, je souhaite donc m'excuser par avance, mais tiens à vous signaler que vous êtes au mieux un troll velu, au pire un idiot et un incompétent dont je ne recommanderai le CV à personne.
La première phrase à elle seule démontre clairement votre totale ignorance en matière de théorie des langages. Un langage de script EST un langage de haut niveau. Un langage de haut niveau est un langage qui donne un plus haut niveau d'abstraction que le langage machine. Cela permet de ne pas avoir à se soucier de certains détails dépendants du matériel tels que par exemple, l'allocation de mémoire, les registres, la pile d'exécution, etc. En général, plus le niveau est haut, plus le langage est spécialisé dans une tâche particulière.
Le terme "langage de script" est plus difficile à définir. Initialement, un langage de script était un langage permettant de joindre des composants déjà existants ou d'automatiser certaines tâches manuelles. Souvent dotés d'une syntaxe plus compacte, ils sont de-facto des langages de haut niveau. Le consensus actuel (et la bêtise ambiante qui plombe l'industrie informatique en général) tend à faire l'amalgame entre langage de script et langage interprété.
À lire votre commentaire, on peut légitimement se demander si votre expérience avec Perl ne se resume pas qu'à des oneliners pour parser des logs apache. Si vous avez un jour l'occasion de rencontrer un programmeur de chez Amazon, j'aimerai être là pour le voir vous botter le cul lorsque vous lui parlerez de ses "scripts perl".
Vos désirs de developpeurs semblent légitimes, et en me basant sur vos propres critères, j'en viendrai presque à m'étonner de votre attachement à Java. Soit, la "facilité" d'un langage reste une notion que vous aurez, je l'espère, l'occasion de m'expliquer. À défaut d'avoir la votre, je vais utiliser ma définition.
Un langage "facile" serait un langage qui me permette simplement de manipuler des structures de données, de pouvoir transcrire sans verbosité excessive aussi bien des algorithmes simples que complexes, qui soit suffisamment flexible de manière à ce que tout changement inopiné des spécifications ne soit pas un casse-tête à implémenter. Perl correspond parfaitement à cette définition en ce qui me concerne. J'attends toujours que l'on me montre comment réaliser simplement une transformation Schwartzienne en Java.
<digression>
Les commentaires concernant la "lisibilité" de Perl faisant référence indirectement ou non à l'exercice stylistique connu sous le nom de perl golf au sein de la communauté Perl ne m'intéressent pas. On peut écrire du code imbitable dans n'importe quel langage. Ce n'est pas parce que l'Obsfucate C existe que les développeurs en font usage dans les sources du noyau Linux.
</digression>
Si par portabilité, vous parlez du nombre de plateformes où votre application peut tourner, je suis heureux de vous annoncer que Perl est disponible sur un plus grand nombre de plateformes que Java. Si vous évoquez le fait que le même code tourne sur plusieurs plateformes, Java effectivement a un léger avantage (pour autant que JNI ne soit pas utilisé) comparé à Perl par exemple (qui souffre du même problème si l'on utilise XS).
Le problème de l'interface graphique en Perl existe en effet, mais est loin d'être insurmontable, des bindings existent pour Tk, WxWidgets, GTK, Qt, et d'autres encore. À ma connaissance, Python souffre moins de ce problème et possède des bindings avec de nombreux toolkits. Le fait que Microsoft ait embauché le créateur d'IronPython est un plus indéniable pour l'adoption du langage sous Windows.
Java a certainement sa place dans le monde des langages informatiques, mais est à des années lumières d'être un langage parfait, n'en déplaise à certains fanatiques vociférants. Nombreux sont les langages qui offrent des fonctionnalités puissantes que Java, au mieux, implémente de manière bancale ou simplement ignore. Je ne puis que vous inviter à essayer d'autres langages, dans d'autres familles pour vous en rendre compte. Une connaissance, sans aller jusqu'à devenir un guru s'entend, de Smalltalk, Prolog ou Lisp pour n'en citer que quelques uns vous apportetait des outils supplémentaires à vos habitudes de programmeur et vous éviterait probablement le ridicule sur des forums publiques.
[^] # Re: Java = le diable ?
Posté par Geraud . En réponse à la dépêche Nuxeo CPS tournera sous Java. Évalué à 8.
Puisque le fait de s'excuser par avance semble permettre de se dédouaner de dire n'importe quelle connerie, je souhaite donc m'excuser par avance, mais tiens à vous signaler que vous êtes au mieux un troll velu, au pire un idiot et un incompétent dont je ne recommanderai le CV à personne.
La première phrase à elle seule démontre clairement votre totale ignorance en matière de théorie des langages. Un langage de script EST un langage de haut niveau. Un langage de haut niveau est un langage qui donne un plus haut niveau d'abstraction que le langage machine. Cela permet de ne pas avoir à se soucier de certains détails dépendants du matériel tels que par exemple, l'allocation de mémoire, les registres, la pile d'exécution, etc. En général, plus le niveau est haut, plus le langage est spécialisé dans une tâche particulière.
Le terme "langage de script" est plus difficile à définir. Initialement, un langage de script était un langage permettant de joindre des composants déjà existants ou d'automatiser certaines tâches manuelles. Souvent dotés d'une syntaxe plus compacte, ils sont de-facto des langages de haut niveau. Le consensus actuel (et la bêtise ambiante qui plombe l'industrie informatique en général) tend à faire l'amalgame entre langage de script et langage interprété.
À lire votre commentaire, on peut légitimement se demander si votre expérience avec Perl ne se resume pas qu'à des oneliners pour parser des logs apache. Si vous avez un jour l'occasion de rencontrer un programmeur de chez Amazon, j'aimerai être là pour le voir vous botter le cul lorsque vous lui parlerez de ses "scripts perl".
Vos désirs de developpeurs semblent légitimes, et en me basant sur vos propres critères, j'en viendrai presque à m'étonner de votre attachement à Java. Soit, la "facilité" d'un langage reste une notion que vous aurez, je l'espère, l'occasion de m'expliquer. À défaut d'avoir la votre, je vais utiliser ma définition.
Un langage "facile" serait un langage qui me permette simplement de manipuler des structures de données, de pouvoir transcrire sans verbosité excessive aussi bien des algorithmes simples que complexes, qui soit suffisamment flexible de manière à ce que tout changement inopiné des spécifications ne soit pas un casse-tête à implémenter. Perl correspond parfaitement à cette définition en ce qui me concerne. J'attends toujours que l'on me montre comment réaliser simplement une transformation Schwartzienne en Java.
<digression>
Les commentaires concernant la "lisibilité" de Perl faisant référence indirectement ou non à l'exercice stylistique connu sous le nom de perl golf au sein de la communauté Perl ne m'intéressent pas. On peut écrire du code imbitable dans n'importe quel langage. Ce n'est pas parce que l'Obsfucate C existe que les développeurs en font usage dans les sources du noyau Linux.
</digression>
Si par portabilité, vous parlez du nombre de plateformes où votre application peut tourner, je suis heureux de vous annoncer que Perl est disponible sur un plus grand nombre de plateformes que Java. Si vous évoquez le fait que le même code tourne sur plusieurs plateformes, Java effectivement a un léger avantage (pour autant que JNI ne soit pas utilisé) comparé à Perl par exemple (qui souffre du même problème si l'on utilise XS).
Le problème de l'interface graphique en Perl existe en effet, mais est loin d'être insurmontable, des bindings existent pour Tk, WxWidgets, GTK, Qt, et d'autres encore. À ma connaissance, Python souffre moins de ce problème et possède des bindings avec de nombreux toolkits. Le fait que Microsoft ait embauché le créateur d'IronPython est un plus indéniable pour l'adoption du langage sous Windows.
Java a certainement sa place dans le monde des langages informatiques, mais est à des années lumières d'être un langage parfait, n'en déplaise à certains fanatiques vociférants. Nombreux sont les langages qui offrent des fonctionnalités puissantes que Java, au mieux, implémente de manière bancale ou simplement ignore. Je ne puis que vous inviter à essayer d'autres langages, dans d'autres familles pour vous en rendre compte. Une connaissance, sans aller jusqu'à devenir un guru s'entend, de Smalltalk, Prolog ou Lisp pour n'en citer que quelques uns vous apportetait des outils supplémentaires à vos habitudes de programmeur et vous éviterait probablement le ridicule sur des forums publiques.
Cordialement,
G.