IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

TypeScript se tourne vers Gopher : Microsoft mise sur Go pour multiplier la vitesse par 10
Par Kush Creates

Le , par Kush Creates

595PARTAGES

5  0 
Microsoft mise beaucoup sur GO pour TypeScript, promettant un bond de performance de 10 fois.

TypeScript bénéficie d'une greffe de cœur alimentée par GO. S'agit-il seulement d'une question de vitesse, ou est-ce le signe d'un changement fondamental dans la façon dont nous construisons et mettons à l'échelle les outils de développement ?

Je vais disséquer les implications techniques, l'impact sur les développeurs, et si cela marque un changement de paradigme dans l'outillage des langages de programmation.


Introduction

Très bien, les amis, attachez vos ceintures. Si vous n'êtes pas au courant, Microsoft vient de prendre une décision qui a fait vibrer toute la communauté des développeurs comme une tasse de café fraîchement infusé. Ils portent TypeScript vers GO. Oui, ce GO, le langage créé par Google et qui ne cesse de gagner du terrain en tant que chouchou du monde « cloud-native ».

Avant d'entrer dans le vif du sujet, soyons clairs : il ne s'agit pas d'une simple modification mineure. Il s'agit d'un véritable changement de moteur. C'est comme si vous remplaciez le moteur crachotant de votre vieille voiture par une bête turbocompressée finement réglée. L'objectif ? Une vitesse fulgurante.

Selon l'annonce d'Anders Hejlsberg, ce portage natif promet une amélioration de 10 fois des temps de construction, une réduction de l'utilisation de la mémoire et une expérience d'édition plus rapide et plus fluide. Si ces chiffres se confirment, nous sommes en train de changer la donne. Imaginez que votre pipeline CI/CD devienne soudainement un sprint au lieu d'un marathon.

Lisez l'annonce ici : "Un TypeScript 10x plus rapide : Anders Hejlsberg, architecte principal de Microsoft pour TypeScript, présente un nouveau portage de TypeScript, qui offrira aux développeurs un outil de haute performance"

Ou regardez la vidéo d'annonce ici :


Pourquoi Go ? Pourquoi maintenant ?

La question évidente est : pourquoi GO ? Après tout, TypeScript a été écrit en TypeScript (inception !). La réponse, comme toujours, est la performance. GO est réputé pour sa vitesse, sa concurrence et sa gestion efficace de la mémoire. C'est le genre de langage qui vous permet de construire des choses qui marche efficacement.

C'est Anders Hejlsberg qui l'a le mieux exprimé : TypeScript doit évoluer pour gérer des bases de code de plus en plus importantes. Les développeurs veulent un remaniement instantané, une navigation rapide et des outils alimentés par l'IA qui ne les font pas attendre. L'implémentation actuelle, bien que solide, a ses limites. GO offre un moyen de dépasser ces limites et d'offrir aux développeurs une expérience vraiment exceptionnelle.

L'annonce d'Anders Hejlsberg ne concernait pas seulement la vitesse brute, même si la promesse d'une amélioration de 10 fois les performances est indéniablement séduisante. Il s'agissait de l'évolutivité, de la facilité de maintenance et de la possibilité d'offrir aux développeurs des expériences entièrement nouvelles. À mesure que les bases de code augmentent en taille et en complexité, les outils sur lesquels nous nous appuyons doivent évoluer pour suivre le rythme. C'est le pari de Microsoft sur la façon d'y parvenir.

Au-delà de la simple optimisation

Soyons clairs : le TypeScript existant, écrit en TypeScript, est une merveille d'ingénierie. C'est un témoignage de la puissance expressive du langage et du dévouement de l'équipe à la performance. Cependant, tout système a ses limites. Au fur et à mesure que l'adoption de TypeScript a explosé et que les projets se sont développés pour englober des millions de lignes de code, les contraintes de performance sont devenues de plus en plus évidentes.

C'est là que GO entre en scène. GO n'est pas seulement un langage « rapide » ; il est conçu pour construire des systèmes évolutifs, concurrents et fiables. Ses points forts sont les suivants :

  • Gestion efficace de la mémoire : Le ramasse-miettes de GO est conçu pour une faible latence et un débit élevé, ce qui est essentiel pour minimiser les pauses dans les outils interactifs.
  • Primitives de simultanéité : Les goroutines et les canaux de GO facilitent l'écriture de code concurrent qui peut exploiter plusieurs cœurs, accélérant les temps de construction et les opérations de l'éditeur.
  • Des performances simples et prévisibles : La conception de GO met l'accent sur la simplicité et la prévisibilité, ce qui facilite le raisonnement sur les goulots d'étranglement des performances et l'optimisation du code.

Soyons clairs : le TypeScript existant, écrit en TypeScript, est une merveille d'ingénierie. C'est un témoignage de la puissance expressive du langage et du dévouement de l'équipe à la performance. Cependant, tout système a ses limites. Au fur et à mesure que l'adoption de TypeScript a explosé et que les projets se sont développés pour englober des millions de lignes de code, les contraintes de performance sont devenues de plus en plus évidentes.

Le choix de GO ne consiste pas à rejeter les capacités de TypeScript ; il s'agit plutôt de reconnaître qu'un outil différent est mieux adapté à un travail spécifique. C'est un peu comme choisir la bonne structure de données pour la tâche à accomplir, mais aussi parfois une hashmap, et parfois un B-tree.

Décoder les benchmarks

L'article de blog comprend des benchmarks impressionnants :


Une accélération de 10 fois dans tous les domaines ? Je suis preneur ! Bien sûr, il est important de se rappeler qu'il s'agit de résultats préliminaires. Mais même si les chiffres définitifs...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 03/04/2025 à 10:11
Citation Envoyé par jf.larvoire Voir le message
1) Je ne vois pas le rapport avec Gopher, qui à ma connaissance est un vieux protocole qui n'a strictement rien à voir avec le langage Go. J'ai d'abord pensé à un poisson d'avril, mais l'article original en Anglais date d'une semaine avant, et mentionne aussi Gopher dans son titre!?!
Le Gopher avant d'être un protocole est le nom en anglais d'un animal qui sert de mascotte au langage Go.

Citation Envoyé par jf.larvoire Voir le message
2) La vraie question qui m'interpelle sur le choix du langage, c'est pourquoi ils ont choisi Go, qui est un langage de la concurrence, et pas C#, le langage maison de Microsoft. Si tout ça est vrai, ça ressemble à un sacré désaveu de C#!
Probablement pour la même raison pour laquelle Rust n'a pas été choisi comme l'explique Pyramidev au dessus. Ils ont du considérer que le code JavaScript existant était plus simple a transformer en Go qu'en C#.
4  0 
Avatar de jf.larvoire
Nouveau Candidat au Club https://www.developpez.com
Le 03/04/2025 à 9:35
Deux remarques:

1) Je ne vois pas le rapport avec Gopher, qui à ma connaissance est un vieux protocole qui n'a strictement rien à voir avec le langage Go. J'ai d'abord pensé à un poisson d'avril, mais l'article original en Anglais date d'une semaine avant, et mentionne aussi Gopher dans son titre!?!

2) La vraie question qui m'interpelle sur le choix du langage, c'est pourquoi ils ont choisi Go, qui est un langage de la concurrence, et pas C#, le langage maison de Microsoft. Si tout ça est vrai, ça ressemble à un sacré désaveu de C#!
1  0 
Avatar de marc.collin
Membre émérite https://www.developpez.com
Le 04/04/2025 à 21:06
Citation Envoyé par jf.larvoire Voir le message
Deux remarques:

2) La vraie question qui m'interpelle sur le choix du langage, c'est pourquoi ils ont choisi Go, qui est un langage de la concurrence, et pas C#, le langage maison de Microsoft. Si tout ça est vrai, ça ressemble à un sacré désaveu de C#!
on pourrait dire la même chose avec angular... pourquoi prendre typescript au lieu de dart
1  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 17/07/2025 à 6:53
Citation Envoyé par la.lune Voir le message
La question n'est pas là, la question fondamentale réside sur les performances car Go est sans le moindre débat plus performant que C#. De base Go était conçu par Google pour concurrencer le C avec l'intention de palier les défauts du C tout en étant plus performant que ce dernier même si le pari n'est pas 100% réussi.
J'aimerais bien savoir sur quoi tu te bases pour l'affirmer. Techniquement les deux langages ont une base assez comparable au niveau des points essentiels qui impactent les performances : ce sont deux langages statiquement typés avec un garbage collector.

Google a en effet créé Go pour palier à certains défauts du C, principalement pour le simplifier. Mais pour cela, il a du faire le même genre de compromis techniques qu'ont fait Java et C# par rapport au C++. Sur le papier, il n'y a pas de raison qu'il soit plus rapide, il se situent dans la même famille. Dans la pratique, on a même plutôt tendance à constater que C# et Java sont souvent légèrement plus rapides, probablement parce qu'il ont un plus gros historique en matière d'amélioration de l'optimisation. En tout cas le résultat du Benchmark Game (a prendre avec des pincettes quand même) est en faveur du C#.

Citation Envoyé par la.lune Voir le message
Il ne faut pas comparer un langage managé qui s'exécute sur un Runtime(.Net) et un langage qui se compile en langage machine pure et s'exécute indépendamment d'un Runtime. C'est une question de performances qui est en jeux ici.
Go a aussi un Runtime, comme tous les langages, c'est juste qu'il est intégré au programme dans l'exécutable alors que historiquement les Runtime de Java et .Net étaient distribués séparément et c'est eux qui démarraient le programme. C'est d'ailleurs moins vrai de nos jour vu que le Java comme le C# peuvent être facilement compilés en AOT, comme en Go.

Ce qui est important pour les performance, ça n'est pas si le runtime est intégré ou externalisé, mais les fonctions qu'il assure :
  • Dans le cas de C, C++ ou Rust, son impact est minimum : il sert principalement à la gestion de l’arrêt et des messages de crash.
  • Pour Go, Java ou C#, il doit aussi gérer le Garbage Collector, ce qui a un impact sur les performances.
  • Pour Java et C#, le Runtime va éventuellement avoir à gérer la compilation en JIT, mais ça n'est plus obligatoirement le cas, et l'impact sur les performances est généralement modéré.


Citation Envoyé par la.lune Voir le message
D'autres part un grand travail de ce genre ne se fait par question de passion, c'est une question purement technique que seul la preuve scientifique parle avant de décider.
En théorie oui, en pratique c'est quand même plus compliqué : le choix d'un langage ne se fait souvent pas que sur des aspects de performance technique mais aussi sur des aspects pratiques (développeurs disponibles, facilité de développement, ...). Et même un choix pris pour des raisons techniques peut s'avérer sous-optimal car certains points n'ont pas été anticipés ou ont été mal considérés.
La justification d'un choix de langage est généralement très loin du niveau de ce qu'on appelle une preuve scientifique.
1  0 
Avatar de nhugodot
Membre habitué https://www.developpez.com
Le 28/05/2025 à 14:46
"on pourrait dire la même chose avec angular... pourquoi prendre typescript au lieu de dart"
Si, Angular Dart existe et est utilisé par Google pour ses pages les plus importantes: l'admin pub...
0  0 
Avatar de selmanjo
Membre régulier https://www.developpez.com
Le 15/08/2025 à 1:43
L'argument du Go par rapport à C pour parler de typescript n'a pas de sens. On ne sait pas sur quels base et sur quels critères cela se base.
0  0 
Avatar de la.lune
Membre chevronné https://www.developpez.com
Le 16/07/2025 à 19:33
Citation Envoyé par Uther Voir le message

Ils ont du considérer que le code JavaScript existant était plus simple a transformer en Go qu'en C#.
La question n'est pas là, la question fondamentale réside sur les performances car Go est sans le moindre débat plus performant que C#. De base Go était conçu par Google pour concurrencer le C avec l'intention de palier les défauts du C tout en étant plus performant que ce dernier même si le pari n'est pas 100% réussi.
Citation Envoyé par jf.larvoire Voir le message

2) La vraie question qui m'interpelle sur le choix du langage, c'est pourquoi ils ont choisi Go, qui est un langage de la concurrence, et pas C#, le langage maison de Microsoft. Si tout ça est vrai, ça ressemble à un sacré désaveu de C#!
Il ne faut pas comparer un langage managé qui s'exécute sur un Runtime(.Net) et un language qui se compile en langage machine pure et s'exécute indépendamment d'un Runtime. C'est une question de performances qui est en jeux ici. D'autres part un grand travail de ce genre ne se fait par question de passion, c'est une question purement technique que seul la preuve scientifique parle avant de décider.
0  2