Aller au contenu principal
Bethemesh
BiographieHistoire de l’informatique

Anders Hejlsberg : de Turbo Pascal à C# et TypeScript

Découvrez comment Anders Hejlsberg a relié langages, compilateurs et outils de développement avec Turbo Pascal, Delphi, C# et TypeScript.

Publié le 24 août 2026Lecture : 13 minPar Équipe Bethemesh
Débutant
Portrait d'Anders Hejlsberg devant une interface évoquant Turbo Pascal, C# et TypeScript
Afficher le sommaire
  1. Programmer sur un micro-ordinateur avant les environnements modernes
  2. Turbo Pascal : le compilateur comme expérience complète
  3. Delphi : unir langage, composants et interface visuelle
  4. Le passage chez Microsoft et le contexte de .NET
  5. C# : concevoir avec la plateforme, sans la confondre avec le langage
  6. Faire évoluer C# sans perdre sa cohérence
  7. JavaScript à grande échelle : le problème qui mène à TypeScript
  8. TypeScript : décrire JavaScript plutôt que le remplacer
  9. Les fichiers de déclaration et la valeur d’une communauté
  10. Un projet ouvert qui doit suivre JavaScript
  11. Une œuvre d’architecte, pas une succession d’inventions solitaires
  12. Pourquoi Anders Hejlsberg compte encore
  13. Chronologie
  14. Questions fréquentes
  15. Anders Hejlsberg a-t-il créé Turbo Pascal ?
  16. Anders Hejlsberg est-il l’unique créateur de C# ?
  17. TypeScript remplace-t-il JavaScript ?
  18. Pourquoi les types TypeScript disparaissent-ils à l’exécution ?
  19. Quel fil relie Turbo Pascal, C# et TypeScript ?

Anders Hejlsberg a conçu des langages pendant plus de quatre décennies, mais son influence ne vient pas seulement de leur syntaxe. De Turbo Pascal à TypeScript, il travaille sur la relation entre le langage, le compilateur, l’éditeur, les bibliothèques et la plateforme d’exécution. Pour lui, la qualité de l’expérience de programmation dépend de cet ensemble.

Cette continuité traverse pourtant des contextes très différents. Turbo Pascal doit tenir sur les micro-ordinateurs des années 1980 et compiler avec une rapidité inhabituelle. Delphi vise la création visuelle d’applications Windows. C# accompagne la plateforme .NET et doit rester cohérent à mesure qu’il gagne des fonctionnalités. TypeScript, enfin, doit apporter de l’analyse statique à JavaScript sans rompre avec son immense écosystème.

Hejlsberg occupe un rôle d’architecte central dans ces projets, mais aucun produit durable n’est l’œuvre d’une seule personne. Les équipes de Borland, les co-concepteurs de C#, l’équipe TypeScript et leurs communautés transforment les orientations initiales en langages utilisés à grande échelle.

Programmer sur un micro-ordinateur avant les environnements modernes

Né en 1960 à Copenhague, Anders Hejlsberg étudie l’ingénierie à l’université technique du Danemark. À la fin des années 1970 et au début des années 1980, les micro-ordinateurs ouvrent la programmation à un public plus large, mais leurs outils restent contraints par la mémoire, la vitesse des processeurs et les supports de stockage.

Le cycle habituel — éditer un fichier, lancer séparément un compilateur, corriger les erreurs puis exécuter — peut être lent et fragmenté. Un langage pédagogique comme Pascal possède une structure claire, mais son accessibilité dépend aussi de la disponibilité d’un compilateur abordable et réactif.

Hejlsberg développe au Danemark un compilateur Pascal commercialisé sous les noms Compass Pascal puis PolyPascal. Borland, jeune éditeur dirigé par Philippe Kahn, en acquiert les droits et l’intègre à un produit destiné aux micro-ordinateurs : Turbo Pascal.

Turbo Pascal : le compilateur comme expérience complète

Lancé en 1983, Turbo Pascal combine dans un même programme un éditeur, un compilateur et les commandes nécessaires pour construire et exécuter le code. Son prix relativement bas, sa distribution simple et surtout sa compilation rapide contrastent avec de nombreux outils professionnels plus lourds.

La performance ne constitue pas un détail secondaire. Une compilation qui répond presque immédiatement modifie la manière de programmer : l’utilisateur peut essayer une idée, observer le résultat et corriger son code sans interrompre longuement son raisonnement. Cette boucle courte annonce l’importance moderne du retour instantané dans les éditeurs.

Le produit démontre aussi qu’un environnement intégré n’a pas besoin d’être massif. Les contraintes matérielles poussent Hejlsberg et l’équipe Borland à réduire les couches, organiser soigneusement la mémoire et rapprocher les composants.

Turbo Pascal s’appuie sur le langage créé par Niklaus Wirth, mais il ne se confond pas avec le Pascal universitaire d’origine. Borland ajoute progressivement des extensions, des bibliothèques et des capacités adaptées au développement d’applications. Cette évolution augmente sa puissance tout en créant un dialecte lié à son environnement.

Hejlsberg est l’auteur original du compilateur et l’un des premiers employés de Borland. Le succès du produit dépend néanmoins de l’entreprise entière : ingénierie, documentation, compatibilité avec les machines et distribution transforment le compilateur initial en une plateforme durable.

Delphi : unir langage, composants et interface visuelle

Au début des années 1990, le développement pour Windows exige de gérer une interface graphique, des événements, des bibliothèques et de nombreuses conventions de plateforme. Les outils visuels promettent d’accélérer la construction, mais risquent de produire un code difficile à comprendre ou de limiter le programmeur aux composants prévus par l’éditeur.

Hejlsberg devient l’architecte principal de Delphi, lancé par Borland en 1995. L’environnement associe Object Pascal, un concepteur visuel de formulaires, une bibliothèque de composants et un compilateur de code natif. Le développeur place des contrôles, configure leurs propriétés puis écrit les gestionnaires d’événements nécessaires.

La force de Delphi vient de l’intégration entre ces couches. Les composants visibles dans l’outil correspondent à des objets programmables ; les propriétés modifiées graphiquement sont reliées au modèle du langage ; l’application finale bénéficie d’une compilation rapide.

Cette approche facilite les applications de gestion et les interfaces Windows sans enfermer totalement le développeur dans un générateur opaque. Elle possède néanmoins un coût : un projet dépend de la bibliothèque de composants, des conventions de l’environnement et de la continuité de la plateforme commerciale.

Delphi prolonge une idée déjà présente dans Turbo Pascal : un langage obtient une partie de sa valeur du temps qui sépare l’intention du programmeur d’un résultat visible.

Le passage chez Microsoft et le contexte de .NET

Hejlsberg quitte Borland et rejoint Microsoft en 1996. Il travaille d’abord sur Visual J++ et les Windows Foundation Classes, dans une période où Java propose une machine virtuelle, une mémoire gérée et une portabilité qui attirent fortement l’industrie.

Microsoft prépare parallèlement une nouvelle plateforme d’exécution. Le futur Common Language Runtime doit prendre en charge plusieurs langages, gérer la mémoire, fournir une bibliothèque commune et permettre une interopérabilité contrôlée. Un nouveau langage peut exploiter directement ce modèle sans porter toutes les contraintes historiques des outils Windows précédents.

Le projet qui deviendra C# commence dans ce contexte. Il doit offrir la productivité d’un environnement géré tout en restant familier aux développeurs de C, C++ et Java. Il doit aussi fonctionner comme une pièce d’une plateforme multilangage, pas comme un système isolé.

C# : concevoir avec la plateforme, sans la confondre avec le langage

Anders Hejlsberg est le concepteur principal de C#, mais la spécification officielle cite également Scott Wiltamuth et Peter Golde parmi ses principaux inventeurs. De nombreuses équipes participent au compilateur, au Common Language Runtime, aux bibliothèques .NET et aux outils Visual Studio.

La première version largement diffusée apparaît en 2000 avec l’initiative .NET. C# reprend une syntaxe à accolades et un typage statique familier, tout en intégrant dès l’origine une mémoire gérée, des propriétés, des événements, des délégués, des métadonnées et un modèle d’exceptions cohérent avec la plateforme.

Le langage cherche un équilibre entre sécurité et accès aux mécanismes de bas niveau. La plupart du code utilise les garanties du runtime ; des zones explicitement unsafe permettent certains usages de pointeurs lorsque la performance ou l’interopérabilité l’exigent. Cette séparation rend le risque visible au lieu de le laisser imprégner tout le programme.

C# est standardisé par Ecma puis par l’ISO. Cette standardisation distingue la définition du langage de l’implémentation particulière de Microsoft, même si .NET reste son environnement principal.

Comparer C# à Java uniquement par leur syntaxe masque leurs trajectoires. Les deux utilisent une exécution gérée et des idées communes à de nombreux langages. C# évolue toutefois en dialogue étroit avec le Common Language Runtime et adopte au fil du temps des mécanismes propres, notamment LINQ, les propriétés avancées, les types valeur, les délégués et une intégration croissante de styles fonctionnels.

Faire évoluer C# sans perdre sa cohérence

Un langage largement adopté ne peut plus être redessiné librement. Chaque nouveauté doit cohabiter avec des millions de lignes existantes, les outils, les bibliothèques et les habitudes de lecture. Le travail d’architecte devient alors une gestion de contraintes contradictoires.

Les génériques de C# 2.0 évitent de nombreux transtypages tout en bénéficiant d’un support du runtime. C# 3.0 introduit les expressions lambda, les méthodes d’extension et LINQ, qui permet d’exprimer des requêtes sur des collections, bases de données ou documents au moyen de constructions intégrées au langage.

Les versions suivantes ajoutent notamment l’asynchronisme avec async et await, la reconnaissance de motifs, les types enregistrement et des améliorations de concision. Plusieurs de ces fonctions rapprochent C# des langages fonctionnels sans abandonner son modèle orienté objet ni sa compatibilité.

Cette accumulation comporte un risque réel : le langage devient plus difficile à apprendre et plusieurs styles peuvent exprimer la même opération. L’équipe doit donc arbitrer entre expressivité locale et charge conceptuelle globale. La contribution de Hejlsberg tient moins à l’ajout systématique de fonctions qu’à la recherche de mécanismes capables de se composer avec l’existant.

JavaScript à grande échelle : le problème qui mène à TypeScript

Au tournant des années 2010, JavaScript ne sert plus seulement à ajouter quelques interactions dans une page. Des équipes construisent de grandes applications web avec des modules nombreux et des bibliothèques dont les objets ne possèdent pas toujours une description formelle exploitable par l’éditeur.

Le typage dynamique favorise l’expérimentation, mais il limite certaines analyses avant l’exécution. Renommer une propriété, découvrir les membres disponibles ou suivre la forme d’un objet à travers une base de code devient difficile lorsque l’outil ne peut pas déduire suffisamment d’informations.

Une solution entièrement séparée de JavaScript aurait cependant peu de chances de reprendre son écosystème. Les applications dépendent du navigateur, de Node.js, de paquets existants et de comportements parfois très dynamiques. Le nouveau langage doit rencontrer ces programmes là où ils se trouvent.

TypeScript : décrire JavaScript plutôt que le remplacer

Microsoft présente publiquement TypeScript en octobre 2012, avec Hejlsberg comme architecte principal. Le langage ajoute des annotations et un système de types à JavaScript, puis produit du JavaScript standard destiné aux environnements existants.

Ses objectifs de conception sont révélateurs : préserver le comportement d’exécution de JavaScript, ne pas imposer de coût lié aux types dans le code produit, suivre les standards ECMAScript et conserver un système de types effaçable. Après la compilation, les annotations n’existent plus ; elles servent au contrôle, à la navigation et à l’éditeur.

TypeScript emploie principalement un typage structurel. Deux valeurs sont compatibles selon les membres qu’elles possèdent, pas seulement selon une déclaration nominale commune. Ce choix correspond aux pratiques de JavaScript, où des objets créés par des bibliothèques différentes peuvent partager la même forme sans hériter d’une classe centrale.

Le langage doit également représenter des habitudes dynamiques : propriétés optionnelles, unions, surcharge décrite par plusieurs signatures, raffinement après un test, génériques et types conditionnels. Ces fonctions ne cherchent pas à transformer JavaScript en C#. Elles construisent un vocabulaire statique capable de décrire des motifs déjà employés dans l’écosystème.

Les fichiers de déclaration et la valeur d’une communauté

Une bibliothèque JavaScript peut rester écrite sans TypeScript tout en offrant une expérience typée grâce à un fichier de déclaration .d.ts. Celui-ci décrit ses fonctions, objets et modules sans modifier son code d’exécution.

Le projet communautaire DefinitelyTyped rassemble ces déclarations pour un grand nombre de paquets. Il joue un rôle décisif dans l’adoption : les développeurs peuvent intégrer progressivement TypeScript au lieu d’attendre que toutes leurs dépendances soient réécrites.

Cette stratégie présente aussi des limites. Une déclaration peut être incomplète ou ne plus correspondre à la bibliothèque qu’elle décrit. Le système de types doit parfois accepter des compromis pour modéliser des comportements JavaScript difficiles à vérifier statiquement. Une compilation sans erreur ne prouve donc ni l’absence de défaut logique ni la conformité des déclarations avec l’exécution réelle.

TypeScript privilégie délibérément l’utilité sur une sûreté absolue. Certaines règles sont configurables, et le type any peut suspendre une partie des contrôles. Ce compromis facilite la migration, mais oblige les équipes à choisir un niveau de rigueur et à surveiller les échappatoires.

Un projet ouvert qui doit suivre JavaScript

TypeScript est publié en logiciel libre et développé publiquement. Ce choix ne relève pas seulement de la distribution : le langage doit recevoir les exemples, désaccords et cas limites d’une communauté beaucoup plus vaste que son équipe initiale.

L’équipe évite progressivement d’ajouter des fonctions d’exécution propres lorsque celles-ci devraient appartenir à JavaScript. Elle participe plutôt au processus de standardisation ECMAScript, puis ajoute le support de la syntaxe standard. TypeScript reste ainsi une couche d’analyse et d’outillage au-dessus d’un langage vivant.

Cette discipline explique sa capacité à coopérer avec différents bundlers, frameworks, linters et environnements. Le compilateur ne cherche pas à devenir toute la chaîne de construction. Ses services de langage fournissent en revanche complétion, navigation, refactorisation et diagnostics aux éditeurs.

Le résultat rejoint une préoccupation présente dès Turbo Pascal : réduire la distance entre l’écriture et le retour de l’outil. Le matériel et les écosystèmes ont changé ; l’attention portée à cette boucle demeure.

Une œuvre d’architecte, pas une succession d’inventions solitaires

Présenter Hejlsberg comme l’unique auteur de quatre langages effacerait les institutions et les équipes qui les ont rendus possibles. Turbo Pascal transforme son compilateur initial grâce à Borland. Delphi mobilise une équipe de plateforme et de composants. C# naît avec Wiltamuth, Golde et les équipes .NET. TypeScript évolue sous l’action de ses ingénieurs, contributeurs et utilisateurs.

Son rôle spécifique apparaît dans les décisions qui organisent ces efforts : vitesse de la boucle de compilation, cohérence entre langage et environnement, adoption progressive, compatibilité et capacité des outils à comprendre le programme.

Il faut aussi résister à un récit où chaque projet corrigerait simplement le précédent. Turbo Pascal, Delphi, C# et TypeScript répondent à des problèmes différents. Leur parenté vient d’une méthode de conception, non d’une ligne droite vers un langage supposé définitif.

Pourquoi Anders Hejlsberg compte encore

L’histoire des langages se concentre souvent sur la syntaxe ou les paradigmes. Le parcours de Hejlsberg montre que l’expérience dépend tout autant du temps de compilation, des messages d’erreur, de la complétion, des bibliothèques, de la migration et de la compatibilité avec les programmes existants.

TypeScript illustre particulièrement cette idée. Sa réussite ne vient pas de l’abandon de JavaScript, mais de sa capacité à analyser des pratiques réelles, préserver leur exécution et fournir des outils plus riches. Cette stratégie accepte une sûreté imparfaite pour rendre possible une adoption graduelle.

C# présente l’autre face du problème : lorsqu’un langage possède sa propre plateforme, il peut coordonner types, runtime et bibliothèques plus profondément, mais doit gérer le poids croissant de sa compatibilité.

Entre ces deux modèles, Hejlsberg a contribué à une question centrale de la conception moderne : comment améliorer l’expression et les garanties sans couper les développeurs de l’écosystème qu’ils utilisent déjà ?

Chronologie

  • 1960 : naissance d’Anders Hejlsberg à Copenhague, au Danemark.
  • Début des années 1980 : développement de Compass Pascal, ensuite connu sous le nom de PolyPascal.
  • 1983 : lancement de Turbo Pascal par Borland.
  • Années 1980–1990 : évolution de Turbo Pascal et de son modèle objet au sein de Borland.
  • 1995 : lancement de Delphi, dont Hejlsberg est l’architecte principal.
  • 1996 : arrivée chez Microsoft et travail sur Visual J++ et les Windows Foundation Classes.
  • Fin des années 1990 : conception du langage qui deviendra C# avec les équipes .NET.
  • 2000 : première diffusion large de C# dans le cadre de l’initiative .NET.
  • 2002 : première version de C# standardisée par Ecma.
  • 2007 : C# 3.0 introduit notamment LINQ et les expressions lambda.
  • 2012 : présentation publique de TypeScript ; C# 5 généralise le modèle async/await.
  • 2014 : publication de TypeScript 1.0.
  • Années 2010–2020 : évolution continue de C# et TypeScript avec leurs équipes et communautés ouvertes.

Questions fréquentes

Anders Hejlsberg a-t-il créé Turbo Pascal ?

Il est l’auteur du compilateur Pascal initial acquis par Borland et devient l’architecte central de Turbo Pascal. Le produit commercial, ses nombreuses versions et son environnement résultent toutefois du travail collectif des équipes Borland.

Anders Hejlsberg est-il l’unique créateur de C# ?

Non. Il en est le concepteur principal, mais la spécification cite Scott Wiltamuth et Peter Golde parmi les principaux inventeurs. Le langage, le runtime .NET, les bibliothèques et les outils ont été construits par de nombreuses équipes.

TypeScript remplace-t-il JavaScript ?

Non. TypeScript analyse une extension typée de JavaScript puis produit du JavaScript destiné aux navigateurs et autres moteurs existants. Son objectif est de mieux outiller les bases de code JavaScript, pas de créer un runtime concurrent.

Pourquoi les types TypeScript disparaissent-ils à l’exécution ?

Ils servent au contrôle statique et aux outils de développement. Leur effacement préserve le comportement et le modèle d’exécution de JavaScript, évite un coût runtime propre aux types et maintient la compatibilité avec son écosystème.

Quel fil relie Turbo Pascal, C# et TypeScript ?

Ces projets cherchent tous à raccourcir la boucle entre intention, diagnostic et résultat. Ils intègrent langage et outils, mais selon des contraintes différentes : machine limitée pour Turbo Pascal, plateforme gérée pour C#, écosystème JavaScript existant pour TypeScript.

Sources et références

  1. 1.Microsoft Learn --- Anders Hejlsberg, full-length interview
  2. 2.Microsoft Learn --- C# language specification: Introduction
  3. 3.Microsoft Download Center --- Interview with Anders Hejlsberg
  4. 4.TypeScript --- Ten Years of TypeScript
  5. 5.Microsoft TypeScript --- Project repository

Collection

Langages de programmation

  1. 01Grace Hopper : des premiers compilateurs à COBOL
  2. 02John Backus : FORTRAN, la notation BNF et le refus du code machine
  3. 03Dennis Ritchie : le langage C au cœur d'Unix
  4. 04FORTRAN : prouver qu'un compilateur peut rivaliser avec l'assembleur
  5. 05Le langage C : rendre les systèmes portables sans masquer la machine
  6. 06Niklaus Wirth : de Pascal à Oberon, concevoir par la simplicité
  7. 07Bjarne Stroustrup : concevoir C++ sans renoncer aux performances
  8. 08Pascal : apprendre à programmer en rendant la structure visible
  9. 09C++ : de C with Classes à un langage généraliste
  10. 10La programmation orientée objet : objets, messages et abstractions réutilisables
  11. 11Guido van Rossum : créer Python pour rendre le code lisible
  12. 12Brendan Eich : JavaScript, du prototype de Netscape au standard du Web
  13. 13James Gosling : l'ingénieur à l'origine de Java
  14. 14Python : la lisibilité, les batteries incluses et un écosystème mondial
  15. 15Java : écrire une fois, exécuter partout
  16. 16JavaScript : le langage qui a rendu le Web interactif
  17. 17Ken Thompson : d’Unix au langage Go, la simplicité comme méthode
  18. 18John McCarthy : Lisp et l’idée de programmer avec des symboles
  19. 19Alan Kay : Smalltalk et l’ordinateur comme média personnel
  20. 20Barbara Liskov : l'abstraction qui a rendu le logiciel modulaire
  21. 21Robin Milner : ML, la preuve assistée et les langages de l’interaction
  22. 22Brian Kernighan : AWK, Unix et l'art d'expliquer le code
  23. 23Anders Hejlsberg : de Turbo Pascal à C# et TypeScript
  24. 24Larry Wall : Perl, le langage qui a relié les outils d'Internet
  25. 25Yukihiro Matsumoto : Ruby et le bonheur du programmeur
  26. 26Rasmus Lerdorf : PHP et la démocratisation du Web dynamique
BiographieHistoire de l’informatiqueDébutant

James Gosling : l'ingénieur à l'origine de Java

Comment James Gosling et l'équipe Green de Sun ont conçu Java : d'Oak aux machines virtuelles, de la portabilité promise à l'héritage du langage.

17 août 20268 minLire

Cet article vous a-t-il été utile ?