ANNÉES 2000

C#

Anders Hejlsberg débarque chez Microsoft en 1996 avec une solide réputation : il a développé le compilateur Turbo Pascal et dirigé la création de Delphi chez Borland. Microsoft lui confie alors une mission ambitieuse : concevoir un nouveau langage de programmation pour sa future plateforme .NET. Ce langage, d'abord baptisé « Cool » durant sa conception, deviendra C#. L'objectif était clair : offrir une alternative moderne à Java, en évitant ses écueils tout en reprenant ses meilleures idées.

Le C# se différencie d'emblée par son système de types unifié. Tous les types, même les plus basiques comme int ou double, héritent d'un type racine unique appelé object. Cette architecture simplifie la manipulation des données, quelle que soit leur nature. Le langage intègre aussi la collecte automatique de la mémoire, qui récupère l'espace occupé par les objets devenus inutiles, et une gestion structurée des erreurs par exceptions.

Chaque nouvelle version a enrichi le langage de fonctionnalités substantielles. La version 2.0 introduit les génériques, qui renforcent la réutilisabilité du code et la sécurité des types. Les délégués anonymes élargissent les possibilités en programmation événementielle. Avec la version 3.0 arrivent les fonctionnalités LINQ (Language Integrated Query), qui transforment radicalement la façon d'interroger et de manipuler les données.

Hejlsberg et son équipe ont accordé une attention particulière à la compatibilité des versions. Les applications existantes devaient continuer à fonctionner avec les nouvelles versions des bibliothèques. Cette préoccupation transparaît dans plusieurs choix de conception : les modificateurs virtual et override restent distincts, les règles de résolution des surcharges de méthodes sont clairement définies. Cette rigueur garantit la pérennité des programmes.

La recherche chez Microsoft a joué un rôle déterminant dans l'évolution du langage. Don Syme et Andrew Kennedy, chercheurs à Microsoft Research Cambridge, ont développé un prototype baptisé Gyro pour expérimenter les génériques avant leur intégration dans C#. Cette collaboration entre recherche et développement illustre bien l'approche pragmatique retenue : tester les idées nouvelles dans des projets exploratoires avant de les incorporer dans le langage de production.

Le C# s'est progressivement ouvert à la programmation fonctionnelle. L'inférence de types, les expressions lambda, tous ces concepts issus de langages comme Haskell ou ML ont été intégrés au fil du temps. Cette évolution suit une tendance générale dans l'industrie : les paradigmes de programmation se mélangent pour offrir aux développeurs plus de souplesse. Le langage reste néanmoins accessible aux débutants, une caractéristique pensée dès sa conception.

La question de l'intégration avec les bases de données revient constamment. Les développeurs doivent souvent jongler entre C# et SQL, ce qu'Hejlsberg appelle une « disparité d'impédance » entre ces deux univers. LINQ répond à cette problématique en unifiant l'interrogation de diverses sources de données directement dans le code C#, avec une syntaxe cohérente.

Microsoft a fait évoluer en parallèle C# et Visual Basic .NET, deux langages qui partagent de nombreuses fonctionnalités tout en conservant leurs spécificités. Cette stratégie visait à répondre aux préférences distinctes de leurs communautés respectives. L'équipe de développement maintient aussi des échanges réguliers avec les chercheurs travaillant sur F#, le langage fonctionnel de la plateforme .NET, pour explorer de nouvelles pistes.

La normalisation ECMA-334 et ISO/IEC 23270 a établi des standards techniques garantissant la cohérence des implémentations. Cette standardisation a renforcé la portabilité des applications C# et leur indépendance vis-à-vis de Microsoft.

Le C# adopte résolument une orientation composant. Le langage propose des constructions syntaxiques spécifiques pour créer et utiliser des modules logiciels autonomes et autodocumentés. Cette approche modulaire facilite le développement d'applications complexes et leur maintenance à long terme.

La communauté des développeurs C# s'est considérablement élargie, créant un écosystème riche en bibliothèques, outils et bonnes pratiques. Microsoft a su maintenir le langage à la pointe tout en préservant sa stabilité et sa compatibilité ascendante. Le passage vers des styles de programmation plus déclaratifs se poursuit : les développeurs décrivent leurs objectifs plutôt que les détails d'implémentation, laissant au compilateur le soin d'optimiser l'exécution.

Le C# s'est adapté aux besoins changeants de l'industrie sans renier ses principes fondateurs de simplicité et de productivité. Guidé par une vision claire et nourri par la recherche, son développement continu en fait un outil incontournable du développement logiciel moderne.