F# gagne en indépendance par rapport à .NET et peut désormais complètement remplacer TypeScript,
selon Onur Gumus, ingénieur logiciel F#
F# est un langage de programmation fonctionnel conçu par Microsoft et intégré à Visual Studio qui s’appuie sur la plateforme .NET. Il permet de développer tout type d’application, de s'attaquer à des problèmes informatiques complexes avec un code simple, facile à maintenir et robuste en liaison si nécessaire avec d’autres langages .NET (C#, VB.net…)
Plus tôt ce Week-End, Onur Gumus, ingénieur logiciel F# chez Resoptima, a indiqué sur son blog que le langage avait atteint un niveau lui permettant d'être indépendant du Framework .NET. Le passionné de la programmation fonctionnelle, qui est également l'auteur de plusieurs cours sur F# déclare : « grâce à Fable, F# peut aujourd'hui remplacer complètement TypeScript ». « Oui, les gens développent de véritables applications SPA, React et Svelte en utilisant F# au lieu du TypeScript », a-t-il ajouté.
Notons que F# fonctionne sur Linux, Mac OS X, Android, iOS, Windows, GPU et sur navigateurs. Sa gratuité et son caractère "open source" font de lui un langage utilisé dans un large éventail de domaines d'application. il est soutenu à la fois par une communauté très active et par des entreprises qui fournissent des outils professionnels.
Soutenu par des éditeurs tels que Visual Studio Code et JetBrains, Fable est un compilateur conçu pour faire de F# un élément indispensable dans l'écosystème du JavaScript. Il produit du code JavaScript lisible et compatible avec les normes ES2015 et des outils populaires comme Webpack.
Pour Onur Gumus, Fable serait en train de devenir un écosystème à part entière. Comme exposé sur l’image ci-dessous, il existe un nouveau prototype pour Fable, qui permet au code F# de se transposer en Python. Il est développé par Dag Brattli, ingénieur logiciel senior au sein de l'équipe FAST pour Outlook et Office 365 dans le groupe applications et services de Microsoft.
Rappelons que TypeScript est un langage de programmation libre et open source développé également par Microsoft qui a pour but d'améliorer et de sécuriser la production de code JavaScript. Il s'agit d'un sur-ensemble du JavaScript qui apporte un typage statique et optionnel des variables.
Il permet de détecter certaines erreurs en amont et se compile en JavaScript pour une utilisation côté navigateur ou côté serveur à l'aide de NodeJS. La version bêta de TypeScript 4.2 avait été publiée en janvier de cette année.
Selon Onur Gumus, étant donné que tous les documents et outils Microsoft sont orientés vers le C#, ajoutés à la méconnaissance du paradigme fonctionnel, la plupart des gens suivent la voie du C# et ignorent complètement le F#. Pour le développeur F#, c’est un manquement pour la communauté .NET.
Pour soutenir sa pensée, Onur déclare : « prenons l'exemple de l'excellent framework web Giraffe en F# côté serveur, alors que les développeurs C# et ASP.NET sont occupés à mémoriser la façon dont Microsoft traite les requêtes, à apprendre quels attributs décoreront leurs classes et leurs membres, les développeurs F# qui utilisent Giraffe, se fient simplement à la composition fonctionnelle ».
Tour d’horizon du Framework .NET
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let app = route "/" >=> setHttpHeader "X-Foo" "Bar" >=> setStatusCode 200 >=> setBodyFromString "Hello World"
Notonos qu'en programmation informatique, un Framework désigne un ensemble cohérent de composants logiciels structurés, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel.
Le Framework .NET est un environnement d'exécution pour Windows qui fournit une variété de services à ses applications en cours d'exécution. Il se compose de deux éléments principaux : le CLR (Common Language Runtime), qui est le moteur d'exécution des applications, et la bibliothèque de classes du Framework .NET, qui fournit une bibliothèque de code testé et réutilisable que les développeurs peuvent appeler depuis leurs propres applications. Les services que le Framework .NET fournit aux applications en cours d'exécution sont les suivants :
- gestion de la mémoire : dans de nombreux langages de programmation, les programmeurs sont chargés d'allouer et de libérer la mémoire et de gérer la durée de vie des objets. Dans les applications .NET, le CLR s’occupe de ces services pour l'application ;
- un système de type commun : dans les langages de programmation traditionnels, les types de base sont définis par le compilateur, ce qui complique l'interopérabilité entre les langages. Dans le Framework .NET, les types de base sont définis par le système de types du Framework et sont communs à tous les langages qui ciblent le Framework ;
- une bibliothèque de classes étendue : au lieu d'avoir à écrire de grandes quantités de code pour gérer les opérations de programmation de bas niveau, les programmeurs utilisent une bibliothèque de types facilement accessible à partir de la bibliothèque de classes du Framework .NET ;
- cadres et technologies de développement : le Framework comprend des bibliothèques pour des domaines spécifiques de développement d'applications, tels que ASP.NET pour les applications web, ADO.NET pour l'accès aux données, ‘’Windows Communication Foundation’’ pour les applications orientées services, et Windows ‘’Presentation Foundation’’ pour les applications de bureau Windows ;
- interopérabilité des langages : les compilateurs de langage qui ciblent le Framework .NET émettent un code intermédiaire appelé Common Intermediate Language (CIL), qui, à son tour, est compilé au moment de l'exécution par le CLR. Grâce à cette caractéristique, les routines écrites dans un langage sont accessibles aux autres langages, et les programmeurs se concentrent sur la création d'applications dans leurs langages préférés ;
- compatibilité des versions : à de rares exceptions près, les applications qui sont développées en utilisant une version particulière du Framework .NET s’exécute sans modification sur une version ultérieure ;
- exécution côte à côte : le Framework .NET aide à résoudre les conflits de versions en permettant à plusieurs versions du langage de fonctionner sur le même ordinateur. Cela signifie que plusieurs versions d'applications peuvent coexister et qu'une application peut s'exécuter sur la version du Framework avec laquelle elle a été construite. L'exécution côte à côte s'applique aux groupes de versions du Framework 1.0/1.1, 2.0/3.0/3.5 et 4/4.5.x/4.6.x/4.7.x/4.8 ;
- ciblage multiple : en ciblant la norme .NET, les développeurs créent des bibliothèques de classes qui fonctionnent sur plusieurs plateformes .NET prises en charge par cette version de la norme. Par exemple, les bibliothèques qui ciblent la norme .NET 2.0 peuvent être utilisées par les applications qui ciblent les normes du Framework .NET 4.6.1, .NET Core 2.0 et UWP 10.0.16299.
Pour répondre à une éventuelle préoccupation des développeurs .NET, sur la possibilité de trouver un emploi en qualité de développeur F#, Onur Gomus déclare : « la plupart des développeurs s'inquiètent de savoir s'ils pourraient trouver un emploi F#, tandis que les entreprises qui envisagent de passer à un autre type de programmation s'inquiètent de savoir si elles pourraient trouver un développeur F# ».
Pour le passionné de programmation fonctionnelle, à l’exception du TypeScript et le Visual Studio Code, la plupart des personnes qui ne sont pas des adeptes du .NET ne sont pas prêtes à toucher à quoi que ce soit en rapport avec Microsoft. Toutefois, il existe environ 700 emplois en F# et la plupart d'entre eux , n’étant pas spécifiques au F#, mais également ouvert aux développeurs C#. Pour illustrer les qualités de F#, Onur présente dans son billet quelques caractéristiques du langage F#
En F#, l'ordre des dossiers est important. Cette fonction rend les dépendances immédiatement visibles. Sur l’image ci-dessous, le code du fichier du haut n'a aucune dépendance avec les autres fichiers du bas et le deuxième fichier du haut ne dépend que du premier. Lorsqu'on ouvre un projet inconnu, l'ordre des fichiers aide le développeur à se repérer.
Les fournisseurs de types sont en quelque sorte des générateurs de codes, mais ils le font de manière non intrusive. Ils ressemblent beaucoup aux macros de style LISP qu'ils développent au moment de la compilation. Les fournisseurs de types permettent de découvrir très facilement les documents HTML ou JSON, de lire les lignes de la base de données, du système de fichiers, de découvrir les DDL (Dynamic Link Library) et les lignes dans le code sans quitter l’éditeur.
L’avis de Onur ne fait visiblement pas l’unanimité. Pour adenozine, développeur Clojure, F# a un noyau faible. Le développeur déclare : « dans ma compréhension limitée de l'écosystème F#, je ne crois pas qu'il y ait beaucoup de voix qui appellent à un avenir multiplateforme au-delà du monde de .NET. F# a un noyau faible, ce n'est pas comme Clojure où j'ai ce large éventail de choix ». « Dans l'ensemble, je pense que F# aura une durée de vie moyenne. Si je devais adopter un nouveau langage, ce serait probablement Nim plutôt que F# », ajoute-t-il.
Pour conclure, Onur invite les développeurs intéressés par le langage F# à consulter la F# Software Foundation qui propose périodiquement des programmes de mentorat gratuits avec un développeur F# expérimenté.
Source: Onur Gumus
Et vous ?
Quelle est votre expérience du langage F# ?
Pensez-vous comme Onur Gumus que le langage F# pourra remplacer TypeScript ?
Voir aussi :
Rider 2020.3 est disponible et apporte des nouvelles fonctionnalités .NET 5, C# 9 et F# 5, et la prise en charge linguistique du framework Avalonia UI
Microsoft a annoncé la disponibilité générale de .NET 5 qui inclut C# 9, F# 5 et une prise en charge native de Windows Arm64
Microsoft annonce la fin de .NET Standard, sa couche de base unique pour toutes les applications .NET, y compris Xamarin, il sera remplacé par .NET 5
Depuis qu'il a effectué une migration vers .NET 5.0, le développeur de la bibliothèque .NET Fusion a constaté une nette amélioration des performances
Partager