Pourquoi apprendre le langage C# aujourd'hui est essentiel

Le langage C# (prononcé "C Sharp") est un langage de programmation développé par Microsoft et est largement utilisé dans le monde du développement logiciel. Depuis sa première version en 2000, C# a évolué pour devenir un langage moderne, polyvalent et orienté objet. Dans cet article, nous explorerons les raisons pour lesquelles apprendre C# aujourd'hui est essentiel pour les développeurs, ainsi que les avantages et les applications possibles de ce langage puissant.

Un langage polyvalent et orienté objet

C# est un langage de programmation orienté objet qui facilite la création de logiciels modulaires et réutilisables. Les concepts d'encapsulation, d'héritage et de polymorphisme permettent aux développeurs de créer des applications complexes et bien structurées. La prise en charge des fonctionnalités de programmation générique et asynchrone rend également C# adaptable à un large éventail de scénarios.

Une plateforme robuste : .NET

C# est le langage principal utilisé pour le développement sur la plateforme .NET de Microsoft. Cette plateforme un vaste ensemble de bibliothèques et d'API pour créer des applications pour Windows, macOS, Linux, et même des applications mobiles et Web.

Plateforme .Net

Applications de bureau

L'histoire a commencé en 2002 avec les applications de bureau (desktop en anglais) et les applis web. .Net permettait de développer des applications de bureau pour Windows uniquement (contrairement à son concurrent Java qui était lui multiplateformes).

La première technologie pour cela était Windows Forms

4 ans plus tard, en 2006 est sorti WPF, qui a permis de faire des UI vectorielles et bien plus riches que celles de Windows Forms

Cette partie de .Net a continué d'évoluer et en 2015 UWP a succédé à WPF, en apportant plus de productivité et une bibliothèque d'éléments visuels nouvelle et plus aboutie

En 2021, WinUI 3 est arrivé et a permis de développer des interfaces utilisateur semblables à celles de Windows 10 lui-même.

En fait toutes ces technologies continuent de coexister. Même Windows Forms est encore pas mal utilisée.

Applications web

Dès le départ, .Net a permis également de créer des applications web avec ASP.Net. C'est un sous-ensemble de .Net spécialisé pour le web, qui s'est aussi beaucoup enrichi au fil des années, notamment avec le modèle MVC, qui un modèle d'architecture pour les grosses applis, et ensuite avec encore d'autres technologies.

Par exemple, depuis 2018, Blazor, une technologie basée sur Web Assembly permet de créer des applications web complètes en C#, y compris la partie cliente, ce qui est assez novateur.

Jeux et applis mobiles multiplateformes

Assez tôt, diverses entreprises et développeurs tiers ont commencé à étendre .Net à d'autres utilisations. C'est ainsi qu'en 2005, la société Unity a sorti un moteur de jeux vidéo multiplateformes du même nom, basé sur .Net.

Puis des développeurs ont commencé à porter le framework .Net entier sous Linux, sous le nom de Mono, un projet open source.
A partir de 2011, les fondateurs de Mono ont créé la société Xamarin, en vue d'utiliser Mono pour développer des applications mobiles natives pour iOS et Android à partir d'une même base de code.

En 2016, Microsoft a finalement racheté Xamarin et son framework, qu'elle a ensuite étendu aux applications de bureau sur macOS et Windows. Il devenait donc possible de créer des applis de bureau et mobiles à partir d'une base de code source commune, en ajoutant seulement quelques éléments de code spécifiques à chaque plateforme.

En 2022, Microsoft a refondu ce framework Xamarin, pour créer son successeur MAUI (multiplateforme app UI), qui s'appuie toujours sur Mono.

Développement de jeux avec Unity

Unity est un moteur de jeu populaire utilisé pour créer des jeux 2D et 3D sur plusieurs plates-formes, y compris PC, consoles, mobiles et Web. C# est le langage de programmation principal pour le développement de jeux Unity, et de nombreux développeurs de jeux choisissent d'apprendre C# pour tirer parti de la puissance et de la flexibilité de Unity.

Applications cloud

Mais en fait, en 2016, Microsoft a commencé à réécrire complètement son framework .Net pour le rendre nativement compatible avec Linux et MacOS, sans recours à Mono. Cela a permis notamment de créer des applications cloud.

En effet, la majorité des applications cloud tournent sur des serveurs Linux. C'était donc une motivation forte pour Microsoft de rendre .Net multiplateformes !
Par la suite, ce nouveau .Net remplacera certainement Mono dans MAUI, pour le dev d'applications multiplateformes natives...

IoT

En réécrivant .Net, Microsoft l'a aussi rendu compatible avec les processeurs ARM, ce qui a permis de l'utiliser aussi pour l'IoT, c'est-à-dire les objets connectés.

Machine learning

Enfin, à partir de 2019, Microsoft a développé la librairie ML.Net spécialisée dans le Machine Learning et l'intelligence artificielle.

Aujourd'hui, .Net couvre donc quasiment tous les domaines d'applications dites "haut niveau". Il n'est par contre pas adapté au développement d'applications bas niveau, tels que des drivers par exemple, qui reste le domaine réservé des langages bas niveau tels que C, C++ et Rust.

NB/ Apprendre le langage C# ne te suffira pas à savoir développer tous les types d'applications. Tu devras en plus apprendre à utiliser la ou les technologies .net adaptées à ce que tu souhaites faire, parmi WinUI, ASP.Net, Unity, MAUI, etc.
Mais ce qui intéressant, c'est de pouvoir utiliser le même langage et tout un ensemble de bibliothèques communes avec toutes ces technologies.
Depuis la sortie de Blazor, tu peux même utiliser le C# pour faire la partie cliente des applis web, grâce à Web Assembly, et donc sans aucun code JavaScript, ce qui est un sacré confort !

Les outils de développement

Outils de dev

Pour développer avec .Net et C#, l'outil de prédilection est Visual Studio (que j'abrégerai par la suite en VS), qui est gratuit et dispo sur Windows et MacOS.
C'est un outil vraiment très complet et très productif, qui est la référence des environnements de dev intégrés.

Mais on peut aussi utiliser l'éditeur Visual Studio Code et des lignes de commande, car toutes les opérations qui sont réalisables par l'interface de VS, telles que l'initialisation d'un projet, l'ajout de structures de code, la compilation...etc, sont aussi réalisables en ligne de commande.

Dans cette formation, on utilisera Visual Studio, mais je te donnerai aussi un certain nombre de lignes de commandes dans la partie écrite du cours.

Commence dès aujourd'hui à apprendre C# et .NET !

Le framework .Net

Logo .Net

Ce qu'on appelle le framework .Net, c'est en fait un ensemble de 3 choses :

Toute d'abord une bibliothèque de classes extrêmement riche et performante, qu'on peut en plus compléter via des modules externes qu'on appelle des packages Nugets. La communauté en a développé des milliers, pour répondre à tous les besoins possibles et imaginables.

Le second élément, ce sont les langages de programmation et les compilateurs associés. Microsoft en fournit 3 :

le C#, qui est de très loin le plus utilisé parmi les 3

le F#, qui est un langage spécialisé pour la programmation fonctionnelle. C'est un style de programmation dans lequel on sépare les traitements des données, et on utilise des données immuables, contrairement à la programmation orientée objet, dans laquelle les données sont mutables.

le VB.Net, qui est peu utilisé, et qui a surtout été créé initialement pour ne pas dépayser les développeurs qui utilisaient auparavant Visual Basic, un ancien langage de Microsoft.

Le dernier élément, c'est le runtime, appelé aussi CLR (Common Language runtime), qui offre un environnement d'exécution pour les applications, un peu à la manière de la machine virtuelle Java. Il gère notamment la mémoire, la sécurité, l'adaptation aux préférences linguistiques...etc. C'est un élément dont tu n'auras pas à te soucier, mais qui est vraiment central dans .Net.

Compiler et exécuter une appli .Net

Le schéma suivant montre de façon très synthétique comment créer et exécuter une application .Net.

Compilation et exécution du code

On part du code source, qui peut être écrit dans plusieurs langages différents. A l'aide des compilateurs associés, on va transformer ce code dans un langage intermédiaire, qui s'appelle le MSIL (comme Microsoft Intermediate Language).

A la première exécution de l'application, le CLR va compiler ce code MSIL en code natif exécutable par le système d'exploitation. Cette compilation se fait en fait par morceaux au fur et à mesure des besoins, grâce à un compilateur appelé JIT (comme Just In Time), intégré dans le runtime.

Depuis ces dernières années, Microsoft développe également un mode de compilation AOT, c'est-à-dire anticipé, afin de produire du code natif pour les différentes plateformes pendant la phase de développement ou déploiement, plutôt qu'au moment de l'exécution de l'appli. Cela a commencé à voir le jour avec .Net 6.

Evolution de .Net

Comme on l'a vu .Net a beaucoup évolué au cours du temps, et a même eu plusieurs noms différents. Tu as peut-être déjà entendu parler de .Net Framework, de .Net Core et de .Net tout court.

Voici un schéma synthétique pour que tu comprennes bien ce qui se cache derrière ces différentes dénominations.

Historique .Net

Le .Net framework désigne la branche d'origine du framework .Net, compatible uniquement avec Windows. Elle démarre en 2002 et s'achève en 2019.
Microsoft a en effet décidé de ne plus le développer à partir de 2019, mais simplement de le maintenir, et certainement pour de nombreuses années encore pour que les applications existantes sur le terrain continuent de fonctionner.

Microsoft a décidé en 2016 de réécrire complètement le .Net framework pour le rendre compatible avec Linux et MacOS. Cela a donc donné naissance à une nouvelle branche, appelée .Net Core.
Durant 4 ans, Microsoft a développé .Net Core en reprenant toutes les fonctionnalités de la branche d'origine, et en améliorant au passage considérablement les performances, et aussi en ajoutant de nouvelles choses.

A partir de 2020, cette nouvelle branche était suffisamment mature pour prendre complètement le relais du .Net framework d'origine. C'est pourquoi les 2 branches se sont rejointes et que Microsoft parle depuis cette date de .Net tout court.

Depuis 2020 et .Net 5, Microsoft s'est fixé comme objectif de sortir une nouvelle version de .Net tous les ans au mois de Novembre.

Certaines versions sont dites LTS (Long Time Support), c'est-à-dire qu'elles seront maintenues pendant 3 ans pour corriger les éventuels bugs et problèmes de sécurité. C'est le cas par exemple de la version 6.

D'autres versions sont moins majeures, et ne sont maintenues que pendant un an, jusqu'à la sortie de la version suivante. C'est le cas par exemple de la version 7.

Le langage C#

Logo C#

Le C# a été créé en même temps que le framework .Net, sorti en 2002. Sa création a été dirigée par Anders Hejlsberg, un informaticien danois, également à l’origine du langage Delphi, un autre langage objet dont tu as peut-être déjà entendu parler.

C# est de loin le langage le plus utilisé avec .Net, loin devant VB.Net et F#, notamment du fait que sa syntaxe est inspirée du C, et donc familière pour beaucoup de gens.

Voici un exemple de code C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text;

namespace ConsoleApp1
{
	public enum Sexes { Male, Femelle };

	public class AnimalDomestique
	{
		public Sexes Sexe { get; set; }
		public double Poids { get; set; }
		public string Nom { get; set; }
		[Display(Name ="Date de naissance")]
		public DateTime DateNais { get; set; }

		public AnimalDomestique(Sexes sexe, double poids, string nom, DateTime dateNais)
		{
			Sexe = sexe;
			Poids = poids;
			Nom = nom;
			DateNais = dateNais;
		}
	}
}

Le C# est un langage orienté objet, qui possède aussi des éléments de syntaxe fonctionnelle, ce qui en fait un langage très polyvalent.

C'est un langage haut niveau, c'est-à-dire qu'on ne manipule pas de pointeurs et qu'on n'a pas à se soucier de la gestion de la mémoire (jusqu'à un certain point en tout cas). C'est le CLR dont je t'ai parlé tout à l'heure qui s'en occupe.

Le langage C# est totalement indissociable du framework .Net et ne peut pas exister sans lui. Car en fait c'est le framework qui définit tous les types de données des langages compatibles .net.

C# est un langage très complet et mature, car cela fait plus de 20 ans qu'il existe. Mais comme il est sorti tout de même bien après Java (sorti en 1995), Microsoft a pu dès le départ tirer parti des défauts ou des manques de Java pour créer un nouveau langage plus complet et productif. Cela se retrouve d'ailleurs dans les sondages auprès des développeurs, comme on va le voir dans un instant.

Commence dès aujourd'hui à apprendre C# et .NET !

Evolution de C#

La langage C# et Visual Studio évoluent en même temps que .Net.

Pour pouvoir utiliser la dernière version du C#, il faut installer la dernière version de VS. Le framework .Net sera installé en même temps.

Les versions anciennes du langage sont toutes compatibles avec les versions plus récentes. C'est-à-dire que tous les éléments du C# 1 par exemple, sont toujours valables dans C# 11. Mais l'inverse n'est évidemment pas vrai.

Popularité du C#

En 2022, C# était le 8ème langage le plus utilisé, loin derrière les langages du web, ce qui est logique, mais aussi derrière Java, notamment parce que Java est sorti 7 ans avant lui, et que c'est un environnement multiplateformes depuis le début, alors que .Net n'est multiplateformes que depuis 2016.

Il était apprécié par 63,4% des développeurs et redouté par 36,6% d'entre eux. Ce qui le place devant Java avec respectivement 45,7% et 54,3% de développeurs qui apprécient et redoutent ce langage.

Support de la communauté et ressources d'apprentissage

La communauté C# est vaste et active, ce qui signifie que vous trouverez de nombreuses ressources pour apprendre et maîtriser le langage. Des tutoriels, des blogs, des forums, des livres et des cours en ligne sont disponibles pour vous aider à démarrer et à approfondir vos connaissances en C#. De plus, en tant que langage soutenu par Microsoft, C# bénéficie d'un support solide et de mises à jour régulières, garantissant que le langage reste à jour avec les dernières tendances et technologies.

Interopérabilité avec d'autres langages et technologies

C# peut être utilisé en conjonction avec d'autres langages de programmation et technologies, ce qui en fait un excellent choix pour les projets complexes. Par exemple, il est possible d'utiliser des bibliothèques écrites en C, C++ ou d'autres langages .NET comme F# et Visual Basic .NET. Cette interopérabilité permet aux développeurs de tirer parti des fonctionnalités et des performances d'autres langages tout en conservant les avantages de la programmation en C#.

Offre d'emploi et opportunités de carrière

La demande pour les développeurs C# est élevée et devrait continuer de croître. Les compétences en C# sont recherchées dans divers secteurs tels que le développement d'applications d'entreprise, les jeux vidéo, les applications Web et mobiles, et les technologies cloud. Maîtriser C# ouvre la porte à des opportunités de carrière intéressantes et bien rémunérées.

En somme, apprendre le langage C# aujourd'hui est essentiel pour plusieurs raisons. Il est polyvalent, orienté objet et s'intègre parfaitement aux plateformes .NET pour le développement d'applications sur diverses plates-formes. La popularité de C# dans le développement de jeux avec Unity, ainsi que son utilisation pour créer des applications Web et mobiles, en fait un langage incontournable pour les développeurs. Enfin, l'interopérabilité avec d'autres langages, le support solide de la communauté et les opportunités de carrière en font un choix judicieux pour quiconque cherche à se lancer dans le développement de logiciels ou à étendre son ensemble de compétences.

Commence dès aujourd'hui à apprendre C# et .NET !