The State Of JavaScript : participez à l'édition 2018 de l'enquête
Qui permet d'avoir une vue macro des technologies utilisées dans le monde JS

Le , par Marco46

143PARTAGES

13  0 
Depuis quelques années, des organisations ou des particuliers organisent des enquêtes annuelles dénommées "the State of ..." sur le modèle du discours sur l'état de l'Union prononcé par le président américain devant son parlement.

La plus sérieuse de ces enquêtes est sans conteste le State Of DevOps mené par la société puppet depuis 5 ans.

L'écosystème JavaScript n'est pas en reste, depuis 2016, trois développeurs français (Raphaël Benitte, Sacha Greif et Michael Rambeau à qui l'ont doit également l'excellent bestofjs.org) ont mis au point le State Of JavaScript qui a réuni en 2017 pas moins de 20 000 réponses de développeurs à travers le monde.

Le propos de l'enquête est de donner une vue macro des outils, frameworks et bibliothèques utilisés dans le monde année après année en proposant également une ventilation des résultats par pays.


Les abonnés à la liste de diffusion ont reçu récemment le mail indiquant l'ouverture de l'enquête pour l'année 2018.

Sacha Greif a également publié sur son blog medium un billet à ce propos.

Le formulaire est disponible pour quelques semaines et les résultats seront dévoilés en avant-première lors de la conférence dotJS le 9 novembre prochain à Paris.

Sources : stateofjs.com, Sacha Greif

Et vous ?

Participez-vous à cette enquête ?
Que pensez-vous des résultats des années précédentes ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Marco46
Modérateur https://www.developpez.com
Le 21/11/2018 à 22:19
Citation Envoyé par Sodium Voir le message
Une recherche Google sur "well written JavaScript code" ne renvoie rien de concluant, juste des bonnes pratiques de programmation de base (nommage de variables et fonctions...).
Quand je tape "Sodium" et "cerveau", le premier résultat qu'on obtient c'est "Le Sodium : une solution efficace contre le cerveau ...".

Coïncidence ?

Trêve de plaisanteries, on a compris ton message : Tu n'aimes pas le JavaScript parce qu'il n'y a pas de typage statique natif.

Citation Envoyé par Sodium
il y a systématiquement une armée d'acharnés sectaires qui viennent hurler que l'on n'a pas compris le langage, que l'on est débile et/ou incompétent
Pour le moment c'est toi l'acharné sectaire qui vient hurler que JavaScript c'est "de la merde" pour reprendre ton argumentaire.

Si ça te saoule tant que ça qu'est ce que tu fais sur cette partie du forum et sur ce fil de discussion ? Ça fait du bien quand ça fait mal c'est ça ton truc ?
7  1 
Avatar de grunk
Modérateur https://www.developpez.com
Le 20/11/2018 à 15:01
Quand on regarde les "pour" et "contre" de chaque framework front end c'est assez drole car les "pour" les plus importants son aussi les "contre" les plus importants et c'est quasi le cas pour les tous les FW.
En gros les dév React vont dire que Angular c'est caca , les dév Angular vont pas faire mieux pour React et on se retrouve avec un sondage qui n'a plus très grande valeur.

En fait j'ai l'impression que chacun veux voir "son" framework gagner par rapport à l'autre. L'écosystème étant tellement instable que si on peux éviter de devoir apprendre un nouveau truc c'est mieux quitte à y mettre un peu de mauvaise fois pour démonter le FW adverse

Perso que X ou Y utilise un DOM virtuel ou non , que Z fasse son rendu 4 ms plus vite que X ca m'en touche une sans faire bouger l'autre ... Tout ce que je veux c'est que l'outil réponde à mon besoin sans devenir gênant. J'ai fait du vanilla pendant très longtemps , puis je suis passé au FW modernes avec Angular 2 4,5,6,7 (lol) . Il fait le taf , j'ai un applicatif assez conséquent qui tourne nickel , j'ai jamais été chercher à essayer autre chose.

Le gros problème de JS aujourd'hui pour moi c'est l'industrialisation
En tant que dév , j'ai pas envie de me cogner des config webpack , grunt, karma ou que sais je encore. Je veux faire un "new project" et c'est partit. Je veux faire un "build --prod" pour avoir une release et c'est tout. Paramétrer un nouveau projet c'est du busywork qui ne m'intéresse pas. Ca commence a venir avec les truc comme angular cli mais c'est pas encore tip top.
3  0 
Avatar de NoSmoking
Modérateur https://www.developpez.com
Le 21/11/2018 à 19:01
Bonjour,
Citation Envoyé par Sodium
Je ne comprends même pas pourquoi il y a des gens prêts à perdre du temps à venir effectuer une levée de bouclier dès que l'on critique JavaScript (c'est à dire plus ou moins chaque fois que l'on aborde le sujet ...
je me demande moi pourquoi à chaque fois que l'on parle de JavaScript les détracteurs arrivent de toutes parts alors que cela n'est même pas l'objet de la news ?

Perso quand même là où je me gausse c'est quand je lis de ta part
Citation Envoyé par Sodium
C'est ce que j'ai fait : je n'utilise plus JS que ce pour quoi il a été conçu : ajouter des interractions simples sur une page web.
Si je veux faire une application complexe j'utilise Angular.
4  1 
Avatar de nhugodot
Membre régulier https://www.developpez.com
Le 21/11/2018 à 23:44
Pour info, le créateur de JS, Brendan Eich, avait voulu prendre Scheme, un des deux LISP de l'époque, pour langage de script pour navigateur... Sa hiérarchie lui a demandé de prendre/pondre au contraire un langage de script proche de la syntaxe ultra habituelle de C/C++/Java, choix marketing mais pas des plus heureux, et lui a même imposé de le nommer JavaScript pour coller à Java... Le monde en eut été totalement autrement, si le choix de Eich, Scheme, avait été réalisé, avec un langage solide, extensible (macros) par nature, et surtout fonctionnel! On aurait pas perdu 20 ans et plus (les FP revenant enfin)..., autant de trous de sécurité, le parallélisme (CPU ARM multicores sur nos smartphones), etc. Sic!

"JavaScript est une merde": j'acquiesce non parce que ça l'est (et ça l'est...) mais parce que ça a détourné le monde des dev de vrais langages beaucoup, beaucoup mieux pensés, académiques, propres, puissants, lisibles, etc. Que SmallTalk et Lisp aient eu si peu de succès est triste... Mais le monde est rempli de succès de bricolages (de génies), à commencer par le PC et DOS/Windows... Et que même Linux, initié par un jeune étudiant et non pas une vraie organisation solide, ai tué les Unix et NT me laisse pantois sur cette industrie: bordel ou génie, ou les deux...

Pour revenir au sujet, après avoir tâté divers frameworks avec mes collègues, la messe est dite: chacun a ses forces et faiblesses, et mieux vaut fouiner la faiblesse que la force, et trouver là où le bat blessera: pour le mobile, je ne parie plus que sur React Native tant nous nous sommes cassé les dents sur les autres frameworks sur une fonctionnalité ou une autre, telle que les badges de notification pour une app iOS par exemple, ce que d'autres FW faisaient mal ou pas. Sans parler des motifs interactives, etc.: là, seul un FW vraiment mature ayant essuyé TOUS les plâtres récents (upgrade d'iOS, pour ne pas le nommer, Apple se foutant vraiment bien des dev hors de ceux qui ont mangé leur pomme...) est fiable. Et je connais nombre d'agences web, en France ou ailleurs, qui me l'ont aussi dit, après avoir testé d'autres FW pour le mobile...

(Cela dit, si j'avais le choix, sur seulement mobile, je prendrais Dart/Flutter... plus de JS ou TS ou... ni d'API native à binder, tout se fait dans Flutter même les composants graphiques, et c'est compilé, bref, c'est propre, loin de ces bricolages aussi géniaux soient-ils... mais ce n'est pas le sujet ici, pardon.)

Hors mobile, juste sur Web desktop, React vs Angular, c'est "le bazar vs la cathédrale" (voir ce que ça signifie sur wikipédia, instructif) , c'est "petite équipe stable" (agence web, start-up) versus "grande entreprise et équipe mouvante", de l'avis d'experts et formateurs sur les deux: Angular, en imposant ses choix et en étant très complet, permet à des nouveaux venus d'autres entreprises où ils l'utilisaient d'arriver en terrain connu et très balisé, d'être opérationnel rapidement. React permet trop de choix d'outils de son écosystème à la demande, mais inversement permet aussi de choisir ce qu'on veut selon le besoin.

Tout ça me fait penser aux OS, les distros GNU/Linux (comparables à la demande pour coller au plus près du besoin, optimales) vs Windows ("je fais tout pareil, partout, je suis gros mais facile, c'est pareil partout"...), non?

Vive WASM, j'attends que Python y passe... enfin quelque chose de lisible... (oups, ok, troll inside, je sors...)

ps:regardez ReactXP de Microsoft avec lequel ils ont fait leur Skype, et les initiatives équivalentes React Native for Web et React DOM (et https://platform.uno), ça serait cocasse que ce soient les langages mobile natifs qui aillent sur le Web grâce à WASM, et tuent JS, in fine, plutôt que le contraire comme avec React Native, non?
4  1 
Avatar de Pyramidev
Expert confirmé https://www.developpez.com
Le 22/11/2018 à 18:28
Citation Envoyé par blbird Voir le message
il explique très bien que l'héritage est toujours plus mauvais que la composition. Ca tombe bien, JS est basé sur la composition dynamique : tu peux ajouter des comportements à la volée à tout instance de prototype (un objet en JS) quand tu en as envie. Bon courage pour faire pareil en POO dynamiquement, même avec les interface, sans toucher au code de tous les objets.

L'héritage, c'est quand tu définis les objets par rapport à ce qu'ils sont, la composition c'est définir les objets par rapport à ce qu'ils font. Et le JS excelle en composition, car c'est le fondement même du langage, bien plus que le design pattern Composition associé à un langage POO... Ca n'a juste rien à voir.
Ajouter des comportements à la volée à une instance de prototype, ce n'est pas de la composition au sens orienté objet.
Tu sembles ne pas avoir compris les intérêts de la composition en POO.

Par exemple, admettons qu'on ait une classe X d'une bibliothèque externe, par exemple une classe pour loguer, ou bien un classe pour envoyer des courriels, ou bien une classe pour interagir avec une base de données.
Admettons qu'un programme contienne une classe Y qui encapsule X. Y est la seule classe du programme qui connaît X et n'offre pas toutes les fonctionnalités de X. Elle n'a que le strict nécessaire dont le programme a besoin.

Un jour, on se rend compte qu'il existe une bibliothèque externe Z qui semble meilleure que X sur plusieurs points. Peut-on remplacer X par Z dans le programme ?

Avec l'architecture ci-dessus, il n'y a besoin de n'analyser qu'une seule classe du programme (Y) pour savoir quelles fonctionnalités de X sont utilisées. Et si on décide de faire le changement, même si toutes les méthodes de Z ont des signatures complètement différentes de celles de X, cela ne pose pas de problème : il n'y a qu'une seule classe du programme à mettre à jour : Y.

Cette flexibilité est possible, car Y n'est pas une extension de X. Y a ses propres méthodes, avec leurs propres signatures. En outre, Y a volontairement moins de fonctionnalités que X.

Pour qu'un gros programme soit bien structuré et maintenable, il faut forcément beaucoup d'encapsulation, un peu partout.

L'héritage, lui, a d'autres buts. Il sert surtout à faire du polymorphisme.

Quand on dit qu'il faut généralement préférer la composition à l'héritage, c'est surtout parce que les débutants ont tendance à ne pas encapsuler. Dans mon exemple, un développeur mauvais en POO aurait fait une classe Y qui dérive de X pour y ajouter les méthodes qui l'intéressent car, à court terme, c'est plus rapide d'étendre à l'arrache les fonctionnalités d'une classe existante que de faire de l'encapsulation.
4  1 
Avatar de Laywanger
Membre à l'essai https://www.developpez.com
Le 20/11/2018 à 11:16
Citation Envoyé par Sodium Voir le message
La chute d'Angular montre bien que l'écosystème JavaScript attire principalement des développeurs amateurs et peu exigeants en termes de qualité de code.
Tout l'intérêt d'Angular est justement de ne plus avoir à faire du JavaScript mais du TypeScript, langage qui permet enfin de faire du "JavaScript" proprement.
Après y avoir goûté, je me vois mal revenir à du simple JavaScript sans typage fort et sans véritables classes.
Ça sent le développeur qui utilise Angular depuis 5 ans et qui ne veut plus le lâcher ...
Angular c'est une usine a gaz et peu flexible tu dois toujours rester dans l'écosystème Angular, en terme de performance au niveau de l'interface il n'utilise pas de Virtual DOM ce qui le met en dessous de Vue.js ou encore React par exemple.
En terme de qualité de code c'est une question de gout mais je préfère un React ou tu mets tout dans ton composant (js+html) que Angular ou tu dois alterner entre ton html et ton js pour les lier.
Pour ce qui est du TypeScript ce n'est pas un argument tu peux utiliser dans n'importe quelles librairies du TypeScript.
Tout ça explique que les développeurs quittent Angular pour d'autres librairies plus moderne.
2  0 
Avatar de Marco46
Modérateur https://www.developpez.com
Le 20/11/2018 à 14:30
Citation Envoyé par Sodium Voir le message

Tout l'intérêt d'Angular est justement de ne plus avoir à faire du JavaScript mais du TypeScript, langage qui permet enfin de faire du "JavaScript" proprement.
Ça n'a absolument aucun rapport avec Angular tu peux faire du TypeScript avec n'importe quelle librairie ou framework, c'est un superset pas un langage de remplacement. TypeScript se porte très bien et a manifestement gagné la bataille des outils de typage statique en écrasant Flow.

Angular comporte trop d'incohérences, de lourdeurs, et de fonctionnalités inutiles comme ses systèmes de modules et d'injection de dépendances qui font doublons avec les fonctionnalités natives de JavaScript.

Citation Envoyé par Sodium Voir le message

La chute d'Angular montre bien que l'écosystème JavaScript attire principalement des développeurs amateurs et peu exigeants en termes de qualité de code.
C'est tout le contraire, l'adoption forte de Angular malgré le fait qu'un développeur sur trois (et il y a une majorité de développeurs confirmés et seniors qui ont répondus à cette enquête) le trouve mauvais s'explique parce que dans un grand nombre de DSI des personnels incompétents sur ces sujets (chefs en tout genre, architectes, etc...) font des choix techniques sans rien y comprendre sur la seule foi que c'est Google qui est derrière.

Citation Envoyé par Sodium Voir le message

Après y avoir goûté, je me vois mal revenir à du simple JavaScript sans typage fort et sans véritables classes.
C'est parce que tu n'as jamais pris la peine d'apprendre le JavaScript moderne. Les classes ne sont utiles que pour structurer un modèle, elles sont totalement inutiles pour structurer la logique de ton application puisque les fonctions sont first-class et que tu as les modules (CommonJS ou ES6 selon ta préférence ou tes contraintes).
3  1 
Avatar de melka one
Membre éprouvé https://www.developpez.com
Le 21/11/2018 à 11:03
Tu devrait modifier ton approche envers javascript.
2  0 
Avatar de Krenic
Candidat au Club https://www.developpez.com
Le 21/11/2018 à 11:53
Il est assez agaçant effectivement de lire des critiques superficielles sur Javascript. Il faut savoir que contrairement aux autres langages de programmation qui ont été conçu afin de faire du développement logiciel, JS a été développé à l'époque par un simple développeur de Netscape pour créer un petit langage de script afin d'animer de façon assez sommaire les pages HTML sur le browser. Sauf que sur une page HTML, un entier ou une chaîne de caractère c'est du même au pareil, il s'est pas pris la tête avec un typage fort. voilà pourquoi JS est aussi "permissif". Est ce que c'est une bonne chose ? Peu importe la réponse à cette question parce que côté Navigateur Web Javascript a le monopole (ou plutôt avait avec les évolutions du web d'aujourd'hui).

Aujourd'hui, HTML5 a apporté de nombreuses fonctionnalités côté client avec de multiples API qui peuvent faire confondre une webapp avec une app mobile native. Les applications se sont complexifiés, il est loin le temps où l'on afichait que du texte et des images. On est dans le tout dynamique avec les SPA et les PWA. Sauf que pour construire ce genre d'applications, il faut davantage de monde et je suis assez d'accord sur la scalabilité de JS par rapport à Typescript. Sur une grosse équipe, ce manque de typage fort peut vite devenir source d'erreur et de confusion.

Donc voilà tout ce laïus pour dire que Javascript n'est pas un mauvais langage c'est juste un langage né à une autre époque où le besoin était totalement différent et personne à l'époque n'aurait pu imaginer ce qu'allait devenir le Web. S'il existe une solution c'est qu'il existe un besoin et c'est pourquoi Typescript est né. Au final, ça aide pas mal d'utiliser Typescript ça facilite la scalabilité des équipes, ça garanti un certain contrôle au moins jusqu'à la compilation, parce que oui après la transcompil on perd partie de ses bénéfices.

Quant aux framework Angular vs React, pour moi, ils ont deux visions différentes. Angular n'est pas un framework mais un ecosystème qui permet de garantir une certaine qualité de code. Angular ainsi ne fait pas que du rendu et databinding, il gère également le routing, les requêtes vers l'extérieur, la sécurité, la modularité de l'appli, l'internationalisation, et toute la stack de compil et test. Et il le fait très bien. Très bien documenté avec des exemples en Typescript ce qui aide à la montée en compétence pour des néophytes. React lui est davantage spécialisé et correspondra à un autre besoin.

Il y'a très rarement un FW ou un langage idéal qui marche partout, s'il y'a une si grande diversité c'est parce qu'il y'a une diversité de besoin.
6  4 
Avatar de Laywanger
Membre à l'essai https://www.developpez.com
Le 21/11/2018 à 17:13
Citation Envoyé par Sodium Voir le message
J'ai regardé vaguement ReactJS et j'ai eu envie de vomir en voyant les démos constituant la vue à l'intérieur des fonctions, on peut difficilement faire plus amateur.
Effectivement mon intuition était la bonne, vous n'avez aucune ou très peu d'expériences en Javascript, vos connaissances semblent limités et donc vous trollez.
Bon courage pour la suite de vos études.
2  0 
Les développeurs logiciels actifs sont actuellement estimés à un peu moins de 19 millions dans le monde, 13 millions d'entre eux seraient des pros
Boeing travaillerait sur un nouveau système de contrôle de vol pour son 737 MAX
« Sur le desktop, Linux s'accommode mal de peu de RAM », d'après un contributeur du noyau
Typo et design pour écran de collectif, un livre de Laurence Seguin, critique de David Bleuse
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web