Oui, les développeurs devraient tous apprendre JavaScript
Non, il n'est pas nécessaire pour tous les développeurs d'apprendre JS
Je n'ai pas d'avis
Je ne connais rien à Javascript mais j'ai bien ri en lisant ce commentaire sur la page originale :
Your thesis can be summarized as follows: “eat shit, millions of flies can’t be wrong”.
A ce sujet, je recommande Io, un petit langage très épuré qui est idéal si on veut comprendre le mécanisme des prototypes. C'est Javascript sans l'océan d'accolades et la syntaxe verbeuse, sans les comportements bizarroïdes (égalité...) et avec des concepts de concurrence et d'asynchronisme très simples déjà intégrés (acteurs, futures, coroutines...)
Dans la plupart des cas, oui, malheureusement.
Non pas parce que c'est un langage globalement bon (il a des aspects très mauvais et d'autres meilleurs) mais parce qu'il est
- Omniprésent
- Suffisamment éloigné des autres dans son approche pour que quelqu'un qui a seulement été formé aux langages orienté objet "classiques" fasse plus de mal que de bien en essayant de l'utiliser.
Vu que quasiment tous les langages peuvent être compilés en JS, ce n'est pas tant le langage qui importe. Si le projet WebAssembly se concrétise, on va sans doute voir encore plus de diversité.
Pour ceux qui ne l'ont pas encore vu, cette vidéo donne un paysage assez comique des 20 prochaines années et de la fin de JS: https://www.destroyallsoftware.com/t...-of-javascript
J'ai répondu "oui" à cause de Node.js. Node.js est principalement un interpréteur JavaScript, et ce bien avant d'être une technologie pour du Web côté serveur. De ce fait il permet à JavaScript de sortir du Web, et en particulier du Web côté client. Les modules de base de Node.js étendent également les possibilités de base du JS, lui dont les fonctions de base sont si limitées dans nos navigateurs. Des frameworks comme Electron (anciennement Atom Shell) basés sur Node.js lui permettent même d'être utilisé pour des applications classiques.
Par conséquent, connaître JS permet très souvent de faire un bout de programme utile dans un domaine de programmation donné (sauf cas particuliers genre systèmes embarqués). D'où l'utilité de le connaître. Ce sera rarement la meilleure techno, mais au pire on aura toujours JS dans sa panoplie de développeur pour pouvoir faire des choses. Après c'est sûr qu'il y a d'autres technos plus indiquées pour faire mieux, mais ces technos là vont souvent être spécifique au domaine.
Le "non" était de mise il y a quelques années, quand le JS était cantonné au Web côté client. Mais la donne a changé depuis. Les technologies autour de JS ont tellement évolué autour de lui et cela en fait désormais un langage passe-partout. Python pourrait faire la même chose que JS en mieux mais il n'est pas utilisable pour du Web côté client. Donc c'est oui pour JS.
C'est pourtant simple. Les bien-pensants du Web ont décidé que les plugins Web c'était le Mal (pour des raisons valables, mais ceci n'est pas le débat ici). Le problème est que le seul langage qui reste accepté pour du Web côté client est le seul qui soit interprété par les moteurs Web, et c'est JavaScript. Une solution pourrait consister à faire interpréter d'autres langages par nos moteurs Web mais personne ne cherche à le faire. Google a essayé avec Dart mais les autres ont préféré soutenir leurs solutions pas optimales.
Le même argumentaire existe avec java (pour l'exemple) : « autant connaitre java, au pire on peut tout faire, les autres technos sont spécifiques ». Admettons, pour un débutant c'est effectivement intéressant d'avoir une boite à outils passe partout à valoriser pour ses premiers jobs (java, js, autre...). Mais on arrive souvent à être spécifique au domaine et donc à utiliser des technos « moins généralistes » (ce qui en fait est quasi tout le temps faux...).
Le même raisonnement sur le java (encore une fois j'ai rien contre le java) couplé à une demande de l'industrie a donné une recrudescence de l'enseignement du java très tôt dans les écoles/universités et parfois on voit des formations qui laissent tomber les autres langages. Les étudiants sortent sans avoir appris à penser hors de ce cadre. Conseiller à tout le monde de faire du js c'est du même niveau.
C'est ce que je dis. Le JS est un outil passe-partout pour tout faire. Mais dès que tu es dans un domaine et que tu veux y faire des choses plus sérieuses, alors tu passes à quelque chose de plus spécifique et qui n'est pas JS.
Java est bien trouvé pour ton exemple. Il pourrait même être cité en exemple comme JS. Mais Java est désormais un paria pour le Web côté client, les bien-pensants du Web ne voulant plus de plugins Web, dont Java et ses appliquettes côté client.
Je te rejoins sur le fait qu'il n'est pas sain de se limiter dans les langages appris et par conséquent dans les philosophies qui vont avec. Java a même des circonstances aggravantes avec sa philosophie du tout objet. Mais contrairement à Java, JS est plus ouvert sur les philosophies de programmation. Il en a plusieurs parmi lequel l'impératif (comme le C) et la POO par prototypes.
Dans JSON il y a aussi "Notation". Le JSON permet surtout de noter des données, et ce de manière moins verbeuse et plus lisible que XML. C'est à mon avis plus indiqué que le XML si tu n'as pas de vérifications à faire sur tes données (à l'aide d'un DTD pour XML par exemple). Je m'arrête là avant de m'égarer dans un débat "XML vs. JSON (vs. YAML)" qui est ici hors sujet.
Moi je pense qu'aujourd'hui c'est le moment idéal pour se plonger réellement dans l'apprentissage de JavaScript et de son écosystème.
Le langage est en train d'évoluer énormément et la popularité de NodeJS, NPM et de tout l'écosystème JavaScript est en train d'exploser.
Avec ES2015 ou un superset tel que TypeScript, le langage devient de plus en plus proche des mondes .net et Java, ce qui le rend d'autant plus approchable et familier (e.g., concepts OO, interfaces, annotations, generics, ...) et les IDEs intègrent ça de mieux en mieux.
Le tooling se professionalise aussi, même si la quantité énorme d'options peut être rebutante au début. On peut considérer ça comme une faiblesse ou un manque de maturité, mais perso je pense que c'est surtout la preuve que la communauté est là et innove constamment.
Ça fait plus de trente ans que je suis dans l'info, développeur, architecte, chef de projets, etc etc. Chaque deux ans environ, avec une nette accélération depuis le oueb j'ai assisté à la naissance de nouveaux langages, de script ou compilés. Étonnement, j'ai très bien gagné ma vie avec du COBOL, du Pascal, du C++, PostScript et une serie de langages/utilitaires spécialisés comme ACMS, DECForms etc. Comme scripting j'ai fait des choses surprenantes en DCL, qui tournent toujours après 25 ans, et d'autres avec le scripting DOS qui n'était pas si nul que ça après tout mais complètement tordu.
La leçon de tout ça ? On trouvera toujours un langage++ qui fait tout tout seul. Mais pour résoudre un problème donné l'enveloppe globale est à-peu près constante, c'est la répartition de l'effort qui varie. Ce que vous ne voulez pas payer en analyse et écriture raisonnée, vous le ramasserez en tests et maintenance corrective. Et dans le cas des scripts vous sur-consommez du processeur par rapport au besoin réel du problème. C'est pas écologique.
Donc JavaScript, oui, et alors ? Ce n'est pas à proprement un langage en soi, juste un utilitaire adapté à un certain contexte. Au final, apprenez à coder en Pascal ou C++, pratiquez, pratiquez pratiquez. Puis quand on vous demandera de faire du Python, du PHP, du JavaScript ou du Ruby, vous vous adapterez en très peu de temps.
Personnelment je trouve que JS est un langage bien, et que tous les informaticiens devraient apprendre. Pourquoi? Simplement parce que JS modifie la maniere de reflechir a propos de l'ecriture des algos. Je pourrais faire un rapprochement avec les cours de physique que nous faisons a l'universite, et avons l'impression que ca ne nous servira jamais a rien. Pourtant, l'experience a toujours prouve le contraire.
Partager