Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pourquoi Javascript c'est de la merde - 1.1 - B...

Pourquoi Javascript c'est de la merde - 1.1 - BordeauxJS version

Avatar for Florian KAUDER

Florian KAUDER

November 17, 2025
Tweet

More Decks by Florian KAUDER

Other Decks in Programming

Transcript

  1. Aamu Florian Kauder Pronoms : iel / ellui (et évitez

    de me genrer s’il vous plaît) Senior Back-end Engineer @Ekino Bordeaux Spécialiste Javascript/Typescript Blog https://aamulumi.info/ Github https://github.com/aamulumi Soundcloud https://soundcloud.com/aamulumi
  2. PRO G. IMPÉRATIV E PRO G. O RIENT ÉE OB

    JET PROG. D ÉCLARATIVE Prog. procédurale Prog. orientée prototype Prog. fonctionnelle Prog. descriptive Programme = séquence d’instructions C - C++ - C# - Java - JS - PHP - Python - Rust - Ruby - Go - … Programme = décrire les interactions entre des objets Java - C# - Ruby - JS - … Programme = description de ce que l’on veut HTML - … Programme = ensemble de procédures + GoTo C - BASIC - COBOL - PHP - … Programme = POO mais sans classe JavaScript - … Programme = ensemble de fonctions mathématiques Lisp - F# - OCaml - Haskell - Scala - Java - C# - JavaScript - … Source : https://fr.wikipedia.org/wiki/Paradigme_(programmation)
  3. PRO G. IMPÉRATIV E PRO G. O RIENT ÉE OB

    JET PROG. D ÉCLARATIVE Prog. structurée Prog. procédurale Prog. orientée prototype Prog. orientée classe Prog. orientée composant Prog. descriptive Prog. fonctionnelle Prog. logique Prog. par contraintes Prog. événementielle Prog. séquentielle Prog. interruptible Prog. orientée aspect Prog. par contrat Prog. chimique Prog. orientée agent Prog. orientée concept Prog. orientée pile Prog. orientée principes Prog. orientée fl ux de données Prog. orientée sujet Prog. réactive Prog. synchrone Prog. par annotations Prog. par attributs Prog. sur fl ux Prog. par messages Prog. orientée processus Prog. récursive Prog. ré fl exive Prog. scalaire Prog. au niveau valeur Source : https://fr.wikipedia.org/wiki/Paradigme_(programmation)
  4. Fort Conversions implicites de types interdites Faible Conversions implicites de

    types autorisées Statique Erreurs de typage à la compilation ou l’exécution Ada, Java, Pascal, Rust, Basic, … C, C++, … Dynamique Pas d’erreurs de typage Ruby, Python, … Javascript, … Source : https://fr.wikipedia.org/wiki/Typage_fort ‘1’ == 1 ‘1’ == 1
  5. Est-ce que tu peux me donner un prompt pour que

    tu quali fi es e ff i cacement un langage de programmation, d'un point de vue qualité en dé fi nissant des caractéristiques identi fi ables, en me donnant pour chaque caractéristique des sources scienti fi ques fi ables et véri fi ées ? Évalue le langage de programmation [Nom du langage] selon des critères scienti fi ques de qualité. Pour chaque critère : 1. Dé fi nis clairement la caractéristique (ex. lisibilité, fi abilité, maintenabilité, etc.). 2. Explique pourquoi elle est importante pour la qualité logicielle. 3. Indique comment elle peut être mesurée ou observée (ex. métriques, propriétés du langage). 4. Fournis au moins une source académique ou standard ISO qui justi fi e ou décrit ce critère. 5. Compare avec d’autres langages si pertinent. Les critères doivent inclure au minimum : Lisibilité, Writabilité, Fiabilité, Maintenabilité, Coût, Expressivité, Orthogonalité, Support pour l’abstraction, Type checking, Gestion des exceptions. Format attendu : • Critère : [Nom] ◦ Dé fi nition : ◦ Importance : ◦ Méthodes de mesure : ◦ Source(s) : Ajoute une synthèse fi nale avec une évaluation globale et références complètes.
  6. Ce rapport analyse JavaScript selon des critères de qualité logicielle

    inspirés des standards ISO/IEC 25010 et de la littérature académique (Sebesta, Schlegel, etc.). Critères pour JavaScript : - Lisibilité : Moyenne, syntaxe parfois incohérente. - Writabilité : Très élevée grâce à NPM et flexibilité. - Fiabilité : Faible, typage dynamique et coercions implicites. - Maintenabilité : Moyenne, améliorée par ES6 et TypeScript. - Coût : Faible, apprentissage rapide. - Expressivité : Très élevée, support multi-paradigmes. - Orthogonalité : Faible, nombreuses exceptions. - Abstraction : Bonne, classes et modules disponibles. - Type Checking : Faible, pas de typage statique natif. - Gestion des exceptions : Moyenne, try/catch sans typage.
  7. Source : Baishakhi Ray, Daryl Posnett, Premkumar Devanbu, and Vladimir

    Filkov. 2017. A large-scale study of programming languages and code quality in GitHub. Commun. ACM 60, 10 (October 2017), 91–100. https://doi.org/10.1145/3126905
  8. Source : Baishakhi Ray, Daryl Posnett, Premkumar Devanbu, and Vladimir

    Filkov. 2017. A large-scale study of programming languages and code quality in GitHub. Commun. ACM 60, 10 (October 2017), 91–100. https://doi.org/10.1145/3126905 Github Issues des 50 projets avec le plus de stars par langage Recherche par mots clés Classification supervisée via NLP Jeu de données
  9. Source : Baishakhi Ray, Daryl Posnett, Premkumar Devanbu, and Vladimir

    Filkov. 2017. A large-scale study of programming languages and code quality in GitHub. Commun. ACM 60, 10 (October 2017), 91–100. https://doi.org/10.1145/3126905 Paradigme fonctionnel > Paradigme procédural Typage fort > Typage faible Typage statique > Typage dynamique Gestion automatique de la mémoire > Gestion manuelle Javascript
  10. Source : Emery D. Berger, Celeste Hollenbeck, Petr Maj, Olga

    Vitek, and Jan Vitek. 2019. On the Impact of Programming Languages on Code Quality: A Reproduction Study. ACM Trans. Program. Lang. Syst. 41, 4, Article 21 (December 2019), 24 pages. https://doi.org/10.1145/3340571
  11. Source : Börstler, J., Bennin, K.E., Hooshangi, S. et al.

    Developers talking about code quality. Empir Software Eng 28, 128 (2023). https://doi.org/10.1007/ s10664-023-10381-0
  12. Source : Winkler, D., Urbanke, P. & Ramler, R. Investigating

    the readability of test code. Empir Software Eng 29, 53 (2024). https://doi.org/10.1007/ s10664-023-10390-z
  13. P A U S E E A U P A

    U S E E A U
  14. Source : Tambad, S., Nandwani, R., & McIntosh, S. K.

    (2020). Analyzing programming languages by community characteristics on Github and StackOverflow. arXiv preprint arXiv:2006.01351
  15. Source : Tambad, S., Nandwani, R., & McIntosh, S. K.

    (2020). Analyzing programming languages by community characteristics on Github and StackOverflow. arXiv preprint arXiv:2006.01351 JS, HTML, CSS Demande élevée et communautés assez impliquées Dart, Go Demande élevée et communautés très impliquées PHP, C# Popularité décroissante mais demande constante Ruby, Go, Julia, Dart, Rust Communautés les plus impliquées
  16. Source : GitHub’s 2025 Report Reveals Some Surprising Developer Trends

    - Sourav Rudra - November 2025 - https://itsfoss.com/news/github- octoverse-2025/
  17. Source : Leo A. Meyerovich and Ariel S. Rabkin. 2013.

    Empirical analysis of programming language adoption. SIGPLAN Not. 48, 10 (October 2013), 1–18. https://doi.org/10.1145/2544173.2509515 SourceForge Métadonnées d’un dépôt Open Source Hammer Principle Sondage en ligne MOOC Sondage sur des cours en ligne Slashdot Enquête en ligne Ohloh Tracker de projets Open Source Popularité d’un langage Choix d’un langage Apprentissage d’un langage Croyances sur un langage
  18. Source : Leo A. Meyerovich and Ariel S. Rabkin. 2013.

    Empirical analysis of programming language adoption. SIGPLAN Not. 48, 10 (October 2013), 1–18. https://doi.org/10.1145/2544173.2509515 Les développeur-euses changent rarement de famille de langage
  19. Source : Leo A. Meyerovich and Ariel S. Rabkin. 2013.

    Empirical analysis of programming language adoption. SIGPLAN Not. 48, 10 (October 2013), 1–18. https://doi.org/10.1145/2544173.2509515 Les développeur-euses aiment les langages expressifs
  20. Source : Leo A. Meyerovich and Ariel S. Rabkin. 2013.

    Empirical analysis of programming language adoption. SIGPLAN Not. 48, 10 (October 2013), 1–18. https://doi.org/10.1145/2544173.2509515 Les facteurs externes sont plus importants que les particularités techniques ou la simplicité
  21. Source : Partha Chakraborty, Rifat Shahriyar, Anindya Iqbal, Gias Uddin,

    How do developers discuss and support new programming languages in technical Q&A site? An empirical study of Go, Swift, and Rust in Stack Overflow, Information and Software Technology, Volume 137, 2021, 106603,ISSN 0950-5849, https://doi.org/10.1016/j.infsof.2021.106603.
  22. 95 09 15 16 17 18 19 20 21 22

    23 24 25 98 97 99 ES1 ES2 ES3 ES5 ES6 ES7 ES8 ES9 ES10 ES11 ES12 ES13 ES14 ES15 ES16 JS
  23. Group-émissaire Bouc-émissaire Source : Yves Bodart. Bodart, Y. (2018). Les

    phénomènes de groupe. Les Cahiers Internationaux de Psychologie Sociale, Numéro 117-118(1), 119-146. https://doi.org/10.3917/cips.117.0119. JS c’est de la merde Tellement disruptif j’adore cette personne Oh non on est plus ami-es du coup ? :’((((((