Auteur:
Christian Maréchal
Categories:
C Sharp (C#)
Création:
05/04/2021
Modifié:
19/08/2023
Version:
1.0.0
L’Histoire du C#.
Le C# (prononcé « C Sharp ») est un langage de programmation moderne développé par Microsoft. Pour comprendre son évolution, il est crucial de plonger dans l’histoire des langages de programmation et l’environnement technologique de l’époque.
Les Origines du C#.
Années 1990 : Le Contexte
Java : Au milieu des années 90, Java domine le marché des langages de programmation pour les applications web et d’entreprise. Il est apprécié pour sa portabilité et son modèle de programmation orientée objet (POO).
Microsoft : En réponse à la popularité de Java, Microsoft décide de développer un langage de programmation qui pourrait rivaliser avec Java et mieux s’intégrer à ses propres technologies.
Année 1999 : La Création
Projet « Cool » : Le projet initial de C# commence sous le nom de code « Cool » (C-like Object Oriented Language). L’objectif est de créer un langage qui combine la simplicité et la puissance de C++ avec la robustesse et la sécurité de Java.
L’Ère de la Libération : Introduction Officielle
Année 2000 : L’Annonce
Microsoft .NET : Lors de la Professional Developers Conférence (PDC) de 2000, Microsoft dévoile .NET Framework et avec lui, C#. Le .NET Framework est une plateforme de développement qui simplifie le développement d’applications pour Windows.
Anders Hejlsberg : Le principal architecte du C# est Anders Hejlsberg, un ingénieur logiciel de renom ayant travaillé sur Turbo Pascal et Delphi.
Année 2002 : La Version 1.0
Standardisation : C# devient rapidement un langage standardisé par l’ECMA et l’ISO, soulignant son importance et sa stabilité.
Caractéristiques Clés : La première version de C# offre des fonctionnalités telles que la gestion de la mémoire automatique, la POO, et une syntaxe inspirée de C et C++.
Évolution et Innovations
Année 2005 : C# 2.0
Génériques : Introduction des types génériques, permettant une plus grande réutilisabilité et sécurité des types.
Itérateurs : Ajout de la fonctionnalité d’itérateurs avec le mot-clé yield.
Année 2007 : C# 3.0
LINQ (Language Integrated Query) : Une révolution dans la manière de manipuler les données en intégrant des requêtes de type SQL directement dans le langage.
Expressions Lambda : Facilite l’écriture de méthodes anonymes et améliore la lisibilité du code.
Année 2010 : C# 4.0
Interopérabilité Dynamique : Améliore l’interaction avec les langages dynamiques et COM.
Paramètres Nommes et Optionnels : Simplifie l’appel de méthodes avec de nombreux paramètres.
Année 2012 – 2020 : C# 5.0 à 8.0
Async/Await : Facilite la programmation asynchrone, essentielle pour les applications modernes.
Pattern Matching : Introduit des concepts avancés de correspondance de motifs pour simplifier le code.
Tuples et Déconstruction : Ajoute des fonctionnalités pour travailler avec des ensembles de valeurs.
Le Présent et l’Avenir
Année 2021 et Au-Delà : C# 9.0 et 10.0
Records : Simplifie la création d’objets immuables et de classes de données.
Top-level Statements : Permet d’écrire des programmes plus concis en supprimant la nécessité d’une classe contenant la méthode Main.
Écologie et Communauté.
Open Source : C# et .NET Core deviennent open source, permettant une plus grande contribution de la communauté et une adoption sur diverses plateformes, y compris Linux et macOS.
Écosystème : L’écosystème C# continue de croître avec des Frameworks comme ASP.NET Core, Xamarin, et Blazor, facilitant le développement d’applications web, mobiles et desktop.
Le C# a parcouru un long chemin depuis ses débuts en tant que projet « Cool ». Aujourd’hui, il est l’un des langages de programmation les plus puissants et polyvalents, utilisé pour une multitude d’applications allant des services web aux jeux vidéo. La constante évolution du langage et de son écosystème montre l’engagement de Microsoft et de la communauté à maintenir C# à la pointe de l’innovation technologique.
Histoire de la Programmation Orientée Objet.
La programmation orientée objet (POO) est un paradigme de programmation qui a émergé dans les années 1960 et 1970, principalement grâce aux travaux de chercheurs comme Alan Kay, qui a inventé le terme « orienté objet » et a contribué au développement du langage Smalltalk. L’objectif de la POO était de modéliser des systèmes logiciels de manière plus naturelle et intuitive, en utilisant des concepts et des structures inspirés du monde réel.
Chronologie de la POO.
- Année 1960 : Simula, le premier langage de programmation à introduire des concepts orientés objet tels que les classes et les objets.
- Année 1970 : Smalltalk, un langage qui a pleinement intégré la POO et a influencé de nombreux langages ultérieurs.
- Année 1980 : C++, qui a apporté la POO au langage C, rendant la programmation plus puissante et flexible.
- Année 1990 : Java, qui a popularisé la POO grâce à sa portabilité et sa robustesse.
- Année 2000 : C#, un langage développé par Microsoft, qui a intégré la POO avec des fonctionnalités modernes et a tiré parti de l’environnement .NET.
Concepts de Base de la POO.
La POO repose sur quatre piliers fondamentaux.
- Encapsulation.
Définition : L’encapsulation consiste à regrouper les données (attributs) et les méthodes (fonctions ou procédures) qui manipulent ces données au sein d’une même unité appelée classe.
Avantages: Protection des données, réduction de la complexité, et amélioration de la modularité.
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
public string GetName()
{
return name;
}
public void SetName(string name)
{
this.name = name;
}
public int GetAge()
{
return age;
}
public void SetAge(int age)
{
this.age = age;
}
}
2. Héritage.
Définition: L’héritage permet à une classe de dériver d’une autre classe, héritant ainsi de ses attributs et méthodes. La classe dérivée peut également ajouter de nouveaux attributs et méthodes ou redéfinir ceux qu’elle a hérités.
Avantages: Réutilisation du code, extension des fonctionnalités, et réduction de la redondance.
public class Animal
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine($"{Name} is eating.");
}
}
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine($"{Name} is barking.");
}
}
3. Polymorphisme.
Définition: Le polymorphisme permet à des objets de différentes classes de répondre à la même interface ou méthode. Il peut être réalisé par le biais de la surcharge (overloading) et du redéfinition (overriding).
Avantages: Flexibilité et extensibilité du code, permettant d’écrire des programmes plus génériques et réutilisables.
public class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
public class Square : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a square.");
}
}
4. Abstraction.
Définition: L’abstraction consiste à simplifier des systèmes complexes en ne montrant que les détails essentiels et en cachant les détails d’implémentation. Cela se fait généralement via des classes et des interfaces abstraites.
Avantages: Réduction de la complexité, augmentation de la lisibilité et de la maintenabilité du code.
public abstract class Vehicle
{
public abstract void StartEngine();
public void StopEngine()
{
Console.WriteLine("Engine stopped.");
}
}
public class Car : Vehicle
{
public override void StartEngine()
{
Console.WriteLine("Car engine started.");
}
}