Uploaded avatar of ErikSchierboom

C'est l'Appy August !

@ErikSchierboom
il y a Environ 3 ans
Vidéo

Introduction

Bonjour. Bienvenue. J'espère que tout le monde va bien. J'espère que tout le monde s'est amusé à explorer quelques langages anciens et influents pendant Jurasic July. Place maintenant au 8e mois de 2023, et à notre 7e mois à thème : Appy August.

Que veut-on dire par applications ?

Eh bien, ça peut vouloir dire plusieurs choses :

  • Les applications web, le pain quotidien d'un grand nombre d'entre nous aujourd'hui
  • Les applis natives, comme celles qui tournent sur son téléphone ou sa tablette
  • Les applications de bureau qui tournent directement sur son système d'exploitation Windows, Mac ou Linux
  • Les applications dédiées à un domaine particulier
  • Les applications métier
  • Et bien plus encore !

Alors, quels sont les langages ?

Pas moins de 14 langages sont à l'honneur : ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift et TypeScript.

Les badges

Obtiens le badge en terminant 5 exercices dans l'un de ces langages ce mois-ci. Et pour le badge de l'année, il faut terminer :

  • Anagramme : à partir d'un mot et d'une liste d'anagrammes possibles, trouve ses anagrammes
  • Numéro de téléphone : nettoie un numéro de téléphone
  • Triangle : classe un triangle
  • Transcription d'ARN : transforme une séquence d'ADN en son complément d'ARN
  • Score de Scrabble : à partir d'un mot, détermine son score au Scrabble

Aperçus

ABAP

  • Développé par SAP SE dans les années 1980, et son objectif de conception devient clair quand on regarde ce que signifiait l'acronyme : Allgemeiner Berichts-Aufbereitungs-Prozessor, ce qui veut dire en allemand « processeur général de préparation de rapports ». Par la suite, ABAP est devenu plus généralement applicable, et l'acronyme a été mis à jour en Advanced Business Application Programming pour refléter cela
  • Langage fortement et statiquement typé
  • Multi-paradigme : prend en charge la programmation impérative et orientée objet
  • Compilé en bytecode. Fait intéressant, le code source est stocké à l'intérieur de la base de données
  • Tout le code s'exécute dans le contexte d'un système SAP, qui se compose d'une base de données relationnelle et d'un ou plusieurs serveurs d'application
  • Technologie propriétaire et à code fermé, bien qu'un de nos mainteneurs ait construit une fantastique réimplémentation open source
  • Utilisé dans des applications métier, comme la finance, la gestion des matériaux, la comptabilité et le management. Compte des clients partout dans le monde, avec de grands noms comme Apple, Amazon et Walmart

Pourquoi c'est génial

  • En constante évolution, avec de nouvelles fonctionnalités ajoutées régulièrement
  • Fiable : des fonctionnalités stables, avec des décennies d'expérience derrière elles
  • Une grande bibliothèque standard

Points forts

  • Intégration transparente avec le système SAP et la base de données, mais aussi avec de nombreux autres systèmes
  • Le dictionnaire ABAP contient toutes les métadonnées sur les données du système SAP, notamment les tables, les vues et les structures. Les types de ce dictionnaire peuvent servir à typer statiquement des variables, même quand le type est une table
  • ABAP Workbench fait partie du système ABAP et contient une suite d'outils pour éditer des programmes, y compris la conception d'écrans

CoffeeScript

  • Le langage a reçu ses premiers commits en 2009 de la part de Jeremy Ashkenas, le premier message de commit étant « commit initial du langage mystère ».
  • Typé dynamiquement et multi-paradigme (orienté objet, impératif, fonctionnel, prototypal)
  • Compile vers JavaScript (ce qu'on appelle la transpilation). La règle d'or de CoffeeScript est : « C'est juste du JavaScript. » L'un des premiers langages à avoir réussi à « transpiler vers JS »
  • Est devenu populaire parce que CoffeeScript n'avait pas certains des problèmes avec lesquels les personnes qui faisaient du JS se débattaient à l'époque (comme la liaison de this qui fonctionnait différemment, ou les classes qui n'étaient pas prises en charge). A été inclus dans Ruby on Rails à partir de la version 3.1.
  • En 2017, le langage a reçu sa version 2.0, qui visait à le mettre au niveau du dernier standard JavaScript. Le langage reçoit une mise à jour environ une fois par an.
  • Le compilateur du langage était à l'origine écrit en Ruby, mais il a été remplacé en 2010 par un compilateur auto-hébergé écrit en CoffeeScript (le compilateur ne dépend pas de NodeJS et peut tourner directement dans le navigateur)
  • CoffeeScript a eu de l'influence en inspirant JavaScript à adopter certaines fonctionnalités (la syntaxe des fonctions fléchées lambda, les classes)
  • A été utilisé par Dropbox et dans Rails

Pourquoi c'est génial

  • Une syntaxe propre et concise, inspirée par Python, Ruby et Haskell. Moins verbeux que JavaScript, il supprime beaucoup de parenthèses et d'accolades, en partie grâce à l'utilisation d'une indentation significative (les espaces sont importants)
  • Une sémantique simplifiée, par exemple plus de confusion autour de let, var, const puisqu'ils n'existent pas, et == est transpilé en === (égalité stricte), et les liaisons de fonction évitent les erreurs courantes liées à this
  • Basé sur les expressions, ce qui signifie qu'on peut affecter le résultat d'une expression if à une variable
  • Beaucoup de sucre syntaxique, par exemple utiliser @ au lieu de this, yes/on peuvent remplacer true, // pour la division entière, @ au lieu de this et bien plus encore

Points forts

  • Compile vers du JavaScript propre et lisible par un humain, avec une correspondance un à un entre le code source et le code généré.
  • Excellente interopérabilité avec JavaScript : on peut facilement utiliser du code écrit en JS depuis CoffeeScript (et inversement). Utilise n'importe quelle bibliothèque JS existante
  • Ajoute des fonctionnalités qui manquent ou ont manqué à JavaScript : les compréhensions de listes, l'interpolation de strings, l'opérateur existentiel (?), les comparaisons en chaîne
  • Un langage de petite taille, le compilateur fait environ 500 ko (100 ko compressé)

Dart

  • Conçu par Lars Bak et Kasper Lund chez Google
  • Première version en 2011
  • L'objectif était de créer un langage rapide et productif, particulièrement adapté à la création d'interfaces utilisateur
  • Typé statiquement
  • Multi-paradigme : principalement orienté objet, mais aussi fonctionnel et impératif
  • Peut être interprété et compilé à la volée
  • Principalement utilisé pour créer des applications, mais aussi pour créer des backends

Pourquoi c'est génial

  • Facile à apprendre grâce à une syntaxe familière
  • Un système de types moderne : inférence de types, filtrage par motif, async/await
  • Excellente documentation
  • Sécurité grâce à un système de null-sécurité rigoureux : fini les exceptions de pointeur nul
  • De bons outils, pris en charge dans divers IDE. Optimisé pour une boucle de retour courte, par exemple grâce à un rechargement à chaud rapide
  • Un écosystème en croissance, avec de nombreuses bibliothèques disponibles

Points forts

  • Peut compiler vers JS, vers du natif, mais aussi vers Swift et Kotlin, idéal pour les applications mobiles.
  • La bibliothèque Flutter permet de créer rapidement des applications mobiles, web, de bureau ou embarquées. Écrire une fois, exécuter sur différentes plateformes
  • Excellente prise en charge de la concurrence, avec async/await, les isolates (des constructions légères d'exécution concurrente), les futures et bien plus

Delphi

  • Delphi a été développé par Borland et publié en 1995.
  • C'est un langage de programmation Object Pascal, développé par Anders Hejlsberg, l'un des architectes principaux de C#
  • Fortement et statiquement typé
  • Compile vers du code natif
  • Multi-paradigme : principalement orienté objet, mais aussi impératif, déclaratif et événementiel
  • Utilisé dans les applications métier, les interfaces graphiques et les écoles (pour enseigner la programmation)

Pourquoi c'est génial

  • Facile à apprendre. Object Pascal combine la simplicité et la clarté de Pascal avec des fonctionnalités de programmation orientée objet, ce qui facilite l'écriture et la maintenance du code
  • Environnement de développement intégré (IDE) : l'IDE de Delphi offre un environnement convivial et riche en fonctionnalités qui rationalise le processus de développement. Il fournit la navigation dans le code, des outils de débogage, la complétion de code et d'autres fonctionnalités de productivité qui rendent le développement plus efficace.
  • Stabilité : présent depuis le début des années 1990, avec un historique d'outil et de langage de développement fiable et stable, y compris une forte rétrocompatibilité. Le code écrit dans les versions antérieures de Delphi peut toujours être compilé et exécuté dans les versions plus récentes avec des ajustements minimes.
  • Prise en charge multiplateforme : Delphi a étendu ses capacités au-delà de Windows et offre une prise en charge du développement multiplateforme, ce qui permet aux développeurs de cibler plusieurs systèmes d'exploitation comme macOS, iOS, Android et bien d'autres. Cela permet de créer des applications pour un public plus large et d'augmenter la portée des projets.
  • Une communauté et un soutien solides : Delphi bénéficie d'une communauté de développeurs dévouée et active qui contribue à l'écosystème avec des bibliothèques, des outils et des ressources.

Points forts

  • Exécutables hautes performances : les applications Delphi sont connues pour leur vitesse et leurs performances. Le compilateur Delphi produit des exécutables natifs hautement optimisés, ce qui peut être crucial pour certains types d'applications, comme celles qui nécessitent un traitement en temps réel ou des tâches de calcul intensif.
  • Environnement de développement rapide d'applications (RAD) : des outils de conception visuels par glisser-déposer permettent aux développeurs de créer des interfaces utilisateur et de les relier à des fonctionnalités avec un effort minimal, ce qui accélère le processus de développement.
  • Architecture à base de composants : repose sur une architecture à base de composants, où des composants réutilisables sont construits pour bâtir des applications. Cela facilite la réutilisation du code et réduit le temps de développement.
  • Gestion des événements : Delphi utilise un modèle d'événements intégré, ce qui permet aux développeurs de réagir facilement aux actions de l'utilisateur et à d'autres événements. La gestion des événements simplifie le processus de capture des entrées utilisateur ou des événements système et permet d'y répondre de manière appropriée.
  • Connectivité aux bases de données : Delphi fournit des composants d'accès natif aux bases de données qui permettent une intégration transparente avec divers systèmes de bases de données. Cette prise en charge intégrée simplifie le développement d'applications pilotées par les bases de données.

Elm

  • Le langage a été créé par Evan Czaplicki pour son mémoire de fin d'études et publié en 2012
  • Il a d'abord abordé le sujet de la programmation réactive fonctionnelle (FRP) pour les interfaces graphiques (FRP avec signaux), mais en 2017 la FRP a été abandonnée au profit de TEA (The Elm Architecture)
  • Un langage fonctionnel, statiquement et fortement typé
  • Une syntaxe inspirée par Haskell
  • Un langage open source, mais très dogmatique, et son style de développement implique de longues périodes de travail en profondeur pour Evan avant de rendre les choses publiques. Les PR peuvent donc rester longtemps sans être fusionnées, et le projet peut sembler à l'abandon, mais c'est simplement le style de travail d'Evan.
  • Utilisé sur des sites web, par exemple NoRedInk, Vendr, Rakuten, Brilliant

Pourquoi c'est génial

  • C'est un langage très petit, l'un des plus faciles à apprendre de la famille ML des langages fonctionnels à typage statique. Cela en fait un excellent choix pour enseigner la programmation fonctionnelle.
  • Ses erreurs de compilation sont les plus agréables et les plus utiles que l'on puisse trouver.
  • Un langage stable : la dernière version date de 2019
  • Les paquets de l'écosystème sont peu nombreux mais de grande qualité.
  • Un puissant écosystème de linting avec elm-review (qui alimente l'analyseur du parcours Elm d'Exercism).

Points forts

  • The Elm Architecture (TEA) sous-tend toutes les applications Elm, ce qui rend très facile l'examen d'applications Elm inconnues.
  • Aucune exception à l'exécution ! À part deux ou trois choses.
  • Pas de casse lors de la mise à jour des dépendances, la gestion sémantique de version est imposée par le compilateur.
  • Quand ça compile, ça marche (sauf erreurs de logique). Et une fois qu'on y est habitué, il est très difficile de revenir à d'autres langages.
    • « elm-ui » de Matthew Griffith permet d'appliquer « quand ça compile, ça marche » au style et à la mise en page, sans avoir besoin de CSS.
  • Applications web full-stack : Lamdera est une déclinaison qui utilise Elm pour des applications web full-stack, sans aucune colle entre le frontend et le backend.

Java

  • Développé par James Gosling chez Sun Microsystems et publié en 1995.
  • Cinq objectifs d'origine :
    • Simple, orienté objet et familier.
    • Robuste et sécurisé.
    • Neutre vis-à-vis de l'architecture et portable.
    • Hautes performances.
    • Interprété, multi-thread et dynamique.
  • Fortement et statiquement typé
  • Compilé en bytecode (le code natif est en cours de développement)
  • Multi-paradigme : impératif, orienté objet et fonctionnel
  • Le langage et la machine virtuelle ont des spécifications officielles, et donc aussi plusieurs implémentations (par exemple la JVM OpenJDK et la VM HotSpot d'Oracle)
  • Utilisé dans une immense quantité de logiciels, des sites web aux systèmes embarqués, et des applications aux bases de données

Pourquoi c'est génial

  • Tourne (presque) partout (comme le rappellera volontiers le programme de mise à jour de Java ;))
  • Usage général : peut servir à presque toutes les charges de travail, y compris les applications, les sites web et les systèmes embarqués
  • Interopérabilité avec d'autres langages de la JVM, comme Kotlin, Groovy, Scala et Clojure
  • D'excellents outils, aussi bien pour les IDE que pour d'autres outils comme les systèmes de build

Points forts

  • La JVM est une machine virtuelle mature, stable et très performante, constamment améliorée
  • Un écosystème énorme, avec un nombre massif de bibliothèques disponibles. Ces bibliothèques sont, comme Java, matures, stables et complètes
  • En évolution : le langage et son environnement d'exécution continuent d'évoluer, avec des mises à jour régulières du langage pour le rendre plus moderne et répondre aux critiques (comme la réduction du code répétitif et de la verbosité). Pour l'environnement d'exécution, de nouveaux projets sont régulièrement lancés pour le faire évoluer davantage (par exemple le projet Loom pour des constructions légères de concurrence, et la compilation native via GraalVM)

JavaScript

  • Brendan Eich a été embauché par Netscape en 1995 pour fournir un langage permettant de rendre les pages web dynamiques. Fait célèbre, le premier prototype a été créé en 10 jours
  • Normalisé sous le nom d'ECMAScript en 1997
  • Typé dynamiquement et faiblement
  • Était autrefois uniquement interprété, mais aujourd'hui souvent compilé à la volée
  • Multi-paradigme : prototypal (assez rare), mais aussi orienté objet, impératif et fonctionnel
  • Extrêmement influent dans le succès que connaît le web aujourd'hui. Par exemple, AJAX a beaucoup aidé à ajouter de l'interactivité. Standard de fait du développement web, car c'est le seul langage de programmation dont la prise en charge est intégrée au navigateur
  • Probablement le langage le plus utilisé de nos jours
  • Utilisé pour les backends, le frontend, les scripts et les outils en ligne de commande

Pourquoi c'est génial

  • Usage général : peut servir à de nombreuses charges de travail : backend, frontend, scripts, outils en ligne de commande. Beaucoup d'outils utilisés pour le web sont écrits en JavaScript (et tournent sur nodejs)
  • Les environnements d'exécution (comme V8) sont fortement optimisés et peuvent être très performants, même si le langage est très dynamique
  • Un langage relativement petit, ce qui le rend relativement facile à apprendre. Pouvoir l'exécuter dans un navigateur le rend particulièrement intéressant, car on obtient un retour visuel pendant l'apprentissage
  • La spécification est fréquemment mise à jour pour introduire de nouvelles fonctionnalités, comme async/await, l'interpolation de strings. Il y a aussi beaucoup d'innovation autour de l'outillage, avec des outils plus récents comme deno, esbuild et bun.js développés pour faciliter le travail sur les bases de code JavaScript
  • La prise en charge de JSON est excellente, comme le prouve le fait que JSON signifie JavaScript Object Notation
  • Conçu pour être adapté au code événementiel et non bloquant

Points forts

  • Un écosystème énorme. Une quantité phénoménale de bibliothèques sont disponibles (2,1 millions de paquets en septembre 2022), mais aussi beaucoup d'autres langages qui ciblent JavaScript
  • Tourne sur la plupart des plateformes et des matériels, de Windows à Apple, des Raspberry Pi aux téléphones, des serveurs web aux plateformes serverless. Les navigateurs web ont une prise en charge native intégrée, donc pas besoin d'installer un environnement d'exécution.
  • Idéal pour le développement web, avec de nombreux frameworks au choix (React, Vue, Angular) ainsi que beaucoup d'outils pour aider à construire des applications web (par exemple eslint, parcel)
  • Peut être utilisé de façon isomorphe, ce qui signifie que le même langage (et la même base de code) peut servir à la fois au backend et au frontend. Cela facilite la maintenance et permet de réutiliser le code entre le frontend et le backend
  • Son immense popularité signifie : beaucoup de ressources pour apprendre (vidéos, blogs, cours), une vaste communauté avec qui interagir

Kotlin

  • Développé par JetBrains en 2010, célèbre pour ses IDE (par exemple IntelliJ, CLion, GoLand et Rider)
  • La plupart des produits de JetBrains étaient écrits en Java, mais l'entreprise voulait un langage de la JVM qui réduirait le code répétitif, accélérerait le développement et prendrait en charge certaines fonctionnalités qui lui manquaient. Scala avait ces fonctionnalités, mais s'avérait trop lent à compiler. C'est ainsi que le projet Kotlin a été lancé.
  • Fortement et statiquement typé
  • Multi-paradigme : impératif, orienté objet, fonctionnel, déclaratif
  • Par défaut, compile en bytecode de la JVM, mais peut aussi compiler vers JS et vers du natif (utile pour les plateformes où les machines virtuelles ne sont pas possibles ou souhaitables, comme les appareils iOS)
  • A été désigné par Google comme le langage préféré pour écrire des applications Android, en 2019
  • Utilisé pour créer des sites web, des applications (principalement Android) et même des IDE entiers (les IDE mentionnés plus haut)

Pourquoi c'est génial

  • Usage général : peut servir à presque toutes les charges de travail, y compris les applications et les sites web. Google a désigné Kotlin comme le langage préféré pour développer des applications Android en 2019
  • Comme il tourne sur la JVM, tous ses avantages s'appliquent : une VM mature et très performante et un nombre massif de bibliothèques disponibles
  • Atténue beaucoup des problèmes que l'on peut avoir avec Java, comme les exceptions vérifiées, la null-sécurité et la verbosité
  • Un langage moderne : inférence de types avancée, basé sur les expressions, immuabilité, filtrage par motif, coroutines, canaux
  • D'excellents outils (ce qui est attendu quand l'IDE lui-même est écrit dans le langage :)

Points forts

  • Productif : Kotlin adopte le meilleur des autres langages, les fond en un seul langage cohérent et productif, et dans certains cas améliore encore l'original (par exemple avec les méthodes d'extension locales)
  • Coroutines : alors que dans beaucoup de langages, async/await est intégré au langage, en Kotlin cela est implémenté sous forme de bibliothèque utilisant la fonctionnalité de coroutines du langage. Les coroutines sont une façon de gérer les fonctions suspendues, qui offrent une abstraction plus sûre et moins propice aux erreurs pour les opérations asynchrones que les futures et les promesses.
  • Excellente concurrence : async/await, les canaux, l'immuabilité contribuent tous à obtenir une excellente concurrence
  • Compose Multiplatform permet de construire des interfaces utilisateur partagées à partir de la même base de code, avec une syntaxe déclarative

Objective-C

  • Développé à l'origine par Brad Cox et Tom Love au début des années 1980, il a été choisi par NeXT pour son système d'exploitation NeXTSTEP. En raison de la filiation directe de macOS d'Apple avec NeXTSTEP, il est devenu le langage de choix pour les logiciels Apple
  • Conçu pour combiner les idées orientées objet de SmallTalk avec C, en utilisant le passage de messages comme construction orientée objet centrale
  • Sur-ensemble de C, donc tout code C est du code Objective-C valide, et les deux peuvent être combinés dans la même base de code
  • Typage statique et dynamique
  • Compilé
  • Le langage standard pour écrire des applications macOS et iOS jusqu'à l'arrivée de Swift en 2014
  • Utilisé pour les applications macOS et iOS

Pourquoi c'est génial

  • Le mélange de C avec des fonctionnalités orientées objet peut être vraiment puissant
  • Un environnement d'exécution léger, ce qui le rend économe en ressources
  • Une syntaxe de classe légère
  • L'énumération rapide permet des boucles for plus faciles qu'en C
  • Une forte rétrocompatibilité

Points forts

  • Prend en charge le comptage automatique de références (ARC), qui libère automatiquement la mémoire quand un objet n'est plus référencé, ce qui facilite la gestion de la mémoire
  • Un environnement d'exécution dynamique permet le method swizzling (modifier dynamiquement le comportement d'un sélecteur (comme le monkey patching)), la réflexion et le transfert de messages (idéal pour les patrons observateur ou proxy)
  • Les protocoles et interfaces apportent les fonctionnalités d'interface à C, les interfaces de catégorie permettant même d'étendre des types existants

PHP

  • Développé et implémenté par Rasmus Lerdorf en 1993 et publié pour la première fois en 1995
  • Le nom est un acronyme récursif : PHP: Hypertext Preprocessor
  • Typé dynamiquement et faiblement, avec la possibilité d'ajouter progressivement des assertions de type fortes à l'exécution
  • Multi-paradigme : impératif, fonctionnel, orienté objet, procédural, réflexif
  • Interprété ou compilé à la volée
  • La plateforme originale de rendu côté serveur
  • Utilisé pour des sites web (Facebook, Wikipedia et bien d'autres) ainsi que pour de nombreux systèmes de gestion de contenu (Wordpress, JOOMLA).

Pourquoi c'est génial

  • Il est omniprésent : PHP est utilisé sur 77,4 % de tous les sites web^1, indépendamment des plateformes
  • Une syntaxe simple, similaire à d'autres langages de programmation établis (Java, JavaScript, C), ce qui le rend facile à apprendre
  • Usage général. Utilise-le à de nombreuses fins, de la création de petits scripts web à celle de grandes applications côté serveur exploitées par des entreprises.
  • Très établi et largement adopté. Il existe de nombreuses ressources d'apprentissage, frameworks et bibliothèques.
  • Une solide prise en charge des bases de données
  • Toujours en développement actif, avec la publication de fonctionnalités modernes
  • Multiplateforme. Tourne sur tout : Windows, Mac, Linux, Unix
  • Open source et gratuit

Points forts

  • Simple à exécuter et à déployer. Pas de chaîne de build. Pas de compilateurs.
  • Un système de types progressif. Ajoute des types là où tu en as besoin, utilise le typage dynamique pour simplifier certaines parties du développement.
  • Prototypage rapide. Crée une page web pour tester ton idée et exécute-la sur ta propre machine.

PureScript

  • Conçu par Phil Freeman, première version publiée en 2013
  • Il a commencé à travailler sur PureScript parce qu'il n'était pas satisfait des autres tentatives de transpilation de Haskell vers JavaScript
  • Fortement et statiquement typé
  • Compile vers JS
  • Langage purement fonctionnel
  • Syntaxe et fonctionnalités inspirées par Haskell
  • Utilisé pour créer des applications web, mais aussi pour créer des applications côté serveur ou des applications de bureau via Electron

Pourquoi c'est génial

  • Partage une grande partie de ce qui fait la force de Haskell :
    • Un système de types fort et puissant : types de données algébriques, classes de types, types d'ordre supérieur
    • Expressif : filtrage par motif, inférence de types
    • Sûreté : pas de null, types immuables
    • Purement fonctionnel : les effets de bord sont encodés dans le système de types
  • Décodage/encodage simple et sûr des types vis-à-vis de JSON
  • Compile vers du JavaScript lisible par un humain
  • De bons outils

Points forts

  • Un cœur fonctionnel parfait pour des applications web sûres vis-à-vis des types et sans erreurs à l'exécution
  • Excellente interopérabilité avec JS
  • Compile vers du JS efficace

ReasonML

  • Créé par Jordan Walke chez Facebook, première version publiée en 2016
  • Basé sur OCaml, mais avec les idiosyncrasies supprimées et conçu pour l'interopérabilité avec JS
  • Un langage fonctionnel et statiquement typé
  • Compilé
  • Utilisé pour créer des sites web (par exemple chez Facebook)

Pourquoi c'est génial

  • Tous les atouts d'OCaml, mais dans un environnement web :
    • Un système de types puissant : toutes les valeurs sont typées avec des types plus simples (comme les enregistrements, les variantes et les options) préférés aux types complexes. Fini les erreurs undefined, ce qui améliore la fiabilité
    • Expressif : filtrage par motif, inférence de types, déstructuration
    • Sûreté : pas de null, immuabilité par défaut
  • Compile vers du JavaScript lisible par un humain
  • Peut être compilé vers OCaml (et inversement), ce qui signifie qu'il peut utiliser tout l'écosystème OCaml (par exemple pour compiler en binaire natif)

Points forts

  • Les temps de compilation de ReasonML sont extrêmement rapides, ce qui signifie des cycles d'itération rapides.
  • Excellente interopérabilité avec JS, aussi bien pour utiliser du JS depuis du code ReasonML que pour exporter du ReasonML vers JS. Il peut même générer des types TS. Peut aussi interopérer avec C. Prend même en charge une syntaxe de type JSX

Swift

  • Le développement de Swift a été lancé par Chris Lattner en 2010 et annoncé au monde entier lors de l'événement WWDC en 2014.
  • L'objectif était de remplacer l'ancien langage de programmation d'Apple, Objective-C, qui n'avait pas reçu de changements majeurs depuis le début des années 1980, par un langage nouveau et moderne. Conçu pour interopérer avec de grandes parties d'Objective-C.
  • Fortement et statiquement typé
  • Compilé, en utilisant LLVM pour gérer la compilation en code machine (comme Rust par exemple)
  • Multi-paradigme : fonctionnel, orienté objet, impératif, déclaratif
  • À l'origine logiciel propriétaire, mais passé à l'open source en 2015
  • Utilisé principalement pour les applications mobiles et de bureau, mais aussi pour les backends et dans des scénarios serverless

Pourquoi c'est génial

  • Un langage moderne : inférence de types, filtrage par motif, types de données algébriques, chaînes Unicode
  • Productif : Swift adopte le meilleur des autres langages (comme Rust, Python, C# et Ruby), les fondant en un seul langage cohérent et productif
  • Sûr : les pointeurs ne sont pas exposés, un type optionnel qui évite les exceptions de pointeur nul, une gestion explicite des erreurs et une gestion automatique de la mémoire via le comptage automatique de références (ARC)
  • Mis à jour régulièrement. Au début, Apple n'a pas hésité à introduire des changements incompatibles pour les choses qui s'avéraient mal fonctionner. Cela évite l'accumulation de « bagages ». Un outil est généralement mis à disposition pour aider à migrer le code. Depuis Swift 5, l'interface binaire d'application (ABI) est stable
  • Contrairement à Objective-C, Swift tourne sur toutes les principales plateformes : macOS, Windows et Linux

Points forts

  • Rapide. Compile vers du code machine efficace, ce qui le rend rapide à l'exécution
  • Interopérabilité transparente avec Objective-C, mais aussi une bonne interopérabilité avec C et C++
  • Une grande communauté, avec de nombreuses ressources excellentes disponibles

TypeScript

  • Créé chez Microsoft en réponse à la frustration de développer des applications à grande échelle en JS. L'un des concepteurs était Anders Hejlsberg, l'architecte principal de C# et créateur de Delphi et Turbo Pascal
  • La première version a été publiée en 2012
  • Multi-paradigme : fonctionnel, prototypal, impératif, orienté objet et générique
  • Utilise le typage progressif et le duck typing
  • Compilé (vers JS)
  • Utilisé pour les sites web, côté frontend comme backend, les scripts et les outils en ligne de commande

Pourquoi c'est génial

  • Un système de types puissant et flexible : types union, types littéraux, tuples. Pratiquement tout motif utilisable dans du code JS peut être décrit de manière sûre vis-à-vis des types en TS. Le système de types est si puissant qu'il est même Turing-complet
  • Étant un sur-ensemble de JS, il permet une introduction progressive dans une base de code JS
  • Combine le meilleur des deux mondes : typage dynamique et statique
  • Une popularité en forte croissance, avec de nombreux outils qui fournissent des types TypeScript ou sont convertis en TypeScript. De nombreuses ressources sont disponibles
  • Le langage est mis à jour régulièrement, avec une adoption précoce des fonctionnalités ECMAScript à venir

Points forts

  • Sécurité et correction améliorées : le typage statique peut éliminer de nombreuses classes d'erreurs que l'on fait typiquement avec JS
  • Interopérabilité transparente avec JS. Des définitions de types personnalisées peuvent être ajoutées pour travailler avec du code JS de manière sûre vis-à-vis des types. Des définitions de types personnalisées sont disponibles pour un grand nombre de bibliothèques
  • D'excellents outils et une excellente prise en charge des IDE. Les annotations de type, la complétion de code et même une réécriture sûre à grande échelle sont disponibles dans de nombreux IDE
  • Profite de tous les avantages de l'écosystème JS : un nombre énorme de paquets, beaucoup d'outils, une grande communauté, etc.

Lequel essayer ?

  1. Si tu veux créer des applications natives, Dart, Delphi, Java, Kotlin et Swift sont d'excellents choix. Cela dit, n'importe lequel des autres langages qui compilent vers JS pourrait aussi servir à créer des applications natives. À noter que le langage officiel pour créer des applications iOS/macOS est Swift, et pour les applications Android, c'est Kotlin
  2. Si tu veux créer des applications web, CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML et TypeScript sont d'excellents choix
  3. Si la programmation fonctionnelle t'intéresse, Elm, PureScript et ReasonML sont des choix naturels, et CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift et TypeScript la prennent aussi en charge
  4. Pour la programmation orientée objet, ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP et Swift sont des candidats logiques, CoffeeScript, JavaScript et TypeScript prenant aussi en charge ce paradigme
  5. Si tu t'intéresses à l'écriture d'applications métier, ABAP et Delphi sont parfaits pour ça
1er Aug 2023 · Tu l'as trouvé utile ?