C# est très flexible et permet de développer une grande variété de systèmes. Avec C#, il est possible de voir le retour sur investissement de ses compétences car il permet de développer presque tous les types d'applications.

 

Voici pourquoi apprendre et utiliser C# !

 

 

C# est simple, lisible et facile à utiliser

Un développeur passe la plupart de son temps à lire et à comprendre du code plutôt qu'à l'écrire.

C'est pourquoi, l'une des qualités les plus importantes dans un langage de programmation est la lisibilité.

Les efforts déployés par les concepteurs de langage pour créer des constructions et une nouvelle syntaxe afin de rendre le code lisible, élégant et compact sont extrêmement précieux pour optimiser le développement moderne de logiciels en équipe.

Un langage ne doit pas entraver la lisibilité mais, au contraire, il doit fournir des moyens d'exprimer clairement l’intention du développeur.

C# a été conçu dès le départ dans un souci de simplicité et de lisibilité.

C# s'est inspiré de langages comme C, C++ et Java, mais les concepteurs ont pris les meilleures parties de ces langages et ont innové en introduisant de nouveaux concepts comme les types de valeurs, les propriétés et les événements. Par exemple, C# ne permet pas d'utiliser des pointeurs bruts directement vers la mémoire et ne propose pas l'héritage multiple de classes. C# fournit un collecteur de déchets qui gère la mémoire. 

Le langage C# est également facile à apprendre, car en apprenant un petit sous-ensemble du langage, on peut  immédiatement commencer à écrire du code utile. Des fonctionnalités plus avancées peuvent être apprises au fur et à mesure, mais ce n’est pas impératif pour être opérationnel. 

C# peut s'exécuter très rapidement

Il est vrai que C# n'a pas été conçu avec les performances comme objectif clé de conception.

Cependant, au fil des années, C# a introduit de nombreuses fonctionnalités pour aider les développeurs à optimiser les performances et les allocations de mémoire.

C# peut être optimisé pour fonctionner très rapidement, mais il ne faut pas se laisser entraîner par une optimisation prématurée. La plupart du temps, il n’est pas nécessaire de se soucier de la vitesse et la lisibilité du code est bien plus importante. Il ne faut pas oublier que le compilateur JIT génère du code machine au moment exact où le code est exécuté et qu'il peut parfois générer du code encore plus rapide que le code compilé à l'avance comme le C et le C++.

C# est un langage de programmation multi-paradigme

C# a commencé comme un langage fortement orienté objet et est devenu au fil du temps un langage multi-paradigme supportant les styles de programmation impératif, déclaratif, générique et fonctionnel.

Les génériques introduits dans C# 2 ont permis aux développeurs d'implémenter des algorithmes et des structures de données qui étaient paramétriques avec les types. L'élément clé était que cette fonctionnalité était implémentée nativement dans le runtime, ce qui rendait les génériques complètement efficaces et sans risque pour les types.

LINQ a introduit la programmation fonctionnelle dans C#. La combinaison de fonctionnalités telles que les expressions lambda, les types anonymes, les méthodes d'extension et les arbres d'expression a permis d'introduire une méthode fonctionnelle et uniforme d'interrogation des sources de données.

LINQ est l'une des technologies les plus élégantes et les plus puissantes de C#. La syntaxe d'interrogation fournit également une expérience déclarative, semblable à celle de SQL, directement dans le langage de programmation.

LINQ a introduit une lisibilité inégalée dans notre code C#, transformant la façon dont les logiciels C# sont développés dans la nature.

Les versions 7, 8 et 9 de C# ont poursuivi en fonctionnel en ajoutant au langage des capacités telles que les expressions de commutation et la correspondance avancée de motifs.

C# fonctionne sur un runtime .NET solide

C# n'a pas été conçu de manière isolée, mais dans le cadre du projet global .NET.

Le moteur d'exécution .NET (appelé CLR) est un outil d'ingénierie exceptionnel qui assure la gestion de la mémoire, la compilation JIT, le chargement et le versionnement des assemblages, la sécurité, la synchronisation des threads, la gestion des exceptions, le système de types communs, les attributs, l'interopérabilité avec le code non géré, la culture, etc.

Ces dernières années, .NET Core a été développé à partir de la base et a amélioré l'implémentation originale de .NET de manière significative. .NET Core offre la possibilité de développer des applications multiplateformes, de nouveaux modes de déploiement, des performances incroyables et bien plus encore.

C# est multiplateforme

C# était un langage exclusivement réservé aux développeurs Windows, car le framework .NET était étroitement couplé au système d'exploitation Microsoft. Cela a certainement été un facteur limitant l'adoption de C#, mais ce n’est plus le cas !

.NET 5 a été conçu dès le départ pour fonctionner sur plusieurs systèmes d'exploitation, dont Linux et Mac.

Xamarin et Mono permettent d'exécuter le code C# en natif sur des plateformes mobiles comme Android et iOS.

C# est axé sur la productivité des développeurs

La productivité des développeurs C# est un autre principe de conception clé de C# depuis la première version.

C# est un langage fortement typé, développé pour faciliter la création d'outils puissants à partir de ce langage.

Visual Studio et Visual Studio Code sont les meilleurs environnements de développement logiciel utilisés par les développeurs C#. L'extension R# Visual Studio offre des fonctionnalités incroyables de productivité, d'analyse de code et de génération de code pour décupler votre expérience de développeur. Rider est un nouvel IDE multiplateforme puissant et populaire pour le développement de logiciels C#.

C# contient également des tonnes de fonctionnalités, explicitement introduites dans le langage pour améliorer la productivité et faciliter l'exécution de tâches courantes :

L'opérateur conditionnel null permet de vérifier les nullités d'une manière succincte.

Var réduit la nécessité de dupliquer les noms de types

Index et Range permettent de créer intuitivement des tranches à partir de collections

Les enregistrements et les instructions de premier niveau permettent de supprimer beaucoup de code passe-partout et d'être plus productif

Les génériques évitent de dupliquer le code qui ne varie que par type tout en préservant la sécurité des types.

C# intègre des modèles de conception et des bonnes pratiques

C# intègre directement dans le langage de nombreux modèles de conception importants. Il permet d'implémenter correctement les design patterns d'une manière très élégante.

Les interfaces IEnumerable et IEnumerator, les mots-clés yield et foreach offrent un moyen extrêmement simple et intuitif d'implémenter le design pattern Iterator.

L'instruction using et l'interface IDisposable offrent un moyen simple de nettoyer les ressources après leur utilisation.

Les événements sont une mise en œuvre idiomatique du modèle de conception Observer (publication/abonnement).

Les délégués constituent un moyen idiomatique et plus fonctionnel de mettre en œuvre les patrons de conception Strategy et Factory.

Async/Await fournit un moyen intuitif d'implémenter la programmation asynchrone tout en maintenant un niveau de productivité similaire à l'écriture de code synchrone.

C# peut tirer parti d'une vaste collection de bibliothèques

La bibliothèque de classes de base fournie par le framework .NET est une aide précieuse pour les développeurs C#.

C# peut s'appuyer sur une vaste collection de types pour mettre en œuvre les tâches les plus courantes comme l'utilisation du système de fichiers, l'envoi et la réception de données sur le réseau, l'exécution d'opérations mathématiques et cryptographiques et bien plus encore.

NuGet est le gestionnaire de paquets de facto pour .NET et fournit plus de 232 000 paquets uniques disponibles instantanément pour être utilisés dans vos applications C#.

C# peut s'exécuter dans le navigateur

Blazor est le dernier ajout aux technologies .NET. C’est un framework permettant de créer des applications Web clientes avec C# au lieu de Javascript, en abandonnant la technologie WebAssembly standard. Il permet d’exécuter C# dans le navigateur sans obliger les utilisateurs à installer des plugins. Une version compilée de l'assemblage Web d'un runtime .NET réduit est utilisée pour exécuter le code C# directement dans n'importe quel navigateur.

C# est un langage bien documenté

La documentation officielle sur le langage C# est très bien rédigée. C'est le bon endroit pour commencer à apprendre C#.

Microsoft Learn fournit également du matériel d'apprentissage sur une grande variété de sujets pertinents pour les développeurs C#. 

C# est open-source et appartient à Microsoft

C# est désormais entièrement développé en open-source sur Github. 

Les 3 dernières versions (C# 7, 8 et 9) ont été développées selon un modèle open-source et les futures versions continueront à être développées de cette manière. 

Tout le monde peut fournir des commentaires et proposer de nouvelles fonctionnalités en créant des problèmes sur la page Github officielle de C#.  

Toutes les notes des réunions de conception officielles sont partagées publiquement avec la communauté.