TypeScript se rapproche de sa version 1.0,
Microsoft dévoile la feuille de route de son alternative à JavaScript
TypeScript, le préprocesseur JavaScript fait par Anders Hejlsberg, père du C#, et soutenu par la branche Open Source de Microsoft se rapproche progressivement de sa version 1.0. A cet effet, l'entreprise a décidé de de proposer un téléchargement séparé pour TypeScript dans Visual Studio contrairement à la version 0.9.1.1 qui faisait partie intégrante de Visual Studio 2013 RC.
L'option d'installation pourra donc être trouvée comme un lien dans Visual Studio lors de la création d'un nouveau projet. Mais TypeScript sera aussi disponible en téléchargement direct.
Sans pour autant en préciser les dates butoirs, Microsoft a dévoiler sa feuille de route. L'entreprise prévoit la version 0.9.5 qui améliorera l'utilisation de la mémoire et du CPU et mettra également un accent sur la correction des problèmes signalés par les utilisateurs. Par la suite une RC de 1.0 verra le jour et apportera les derniers correctifs à la stabilité et à la conformité avec les spécifications de 1.0. Enfin la version finale 1.0 sera lancée.
Les avantages que le langage apporte par rapport à JavaScript sont entre autre la gestion des classes et des modules (POO), le typage fort optionnel ( meilleure détection d'erreurs et meilleure auto-completion ) ou encore la gestion des arguments et de leurs valeurs par défaut.
Télécharger Typescript
Source : Blog MSDN
Et vous ?
Avez-vous déjà utilisé TypeScript ou une toute autre alternative à JavaScript ?
Quels sont les points qui vous séduisent le plus ?
Pouvez-vous identifier les faiblesses du langage ou les difficultés que vous avez rencontré lors de son utilisation ?
Est-ce que C, C++, Java, C# sont des "rustines" pour le langage machine ou l'un ou l'autre p-code? Est-ce que la bibliothèque standard du C++, le framework .NET ou J2EE sont des rustines pour le C# et le Java? Si vous répondez oui, alors en effet, TypeScript est une rustine de plus.. Mais CoffeeScript, TypeScript, GWT ne sont pas des rustines, ce sont des langages que l'on traduit en JavaScript avec un compilateur; les framework JQuery, Prototype et autre MooTool ne sont pas des rustines mais des framework destiné à faciliter le développement d'applications.
Je pense que si on devait choisir un nouveau langage de script pour les navigateur, ce n'est pas vers un langage de haut niveau comme Dart que l'on devrait aller, mais vers un langage de plus bas niveau comme le Bytecode de la JVM ou le MISL de .NET. En attendant, faire évoluer JavaScript sachant qu'il doit rester compatible, le rendrait inutilement complexe et incohérent (il y aurait encore plus de manières de faire les choses), il vaut mieux le considérer comme un langage cible et proposer de nouveaux langages (même proches). La compilation est, en outre, susceptible de produire du meilleur code JavaScript en terme de performance (optimisation, agrégation des fichiers sources et "minification").
Pour l'avoir utilisé, je trouve cela super.
Et le code généré n'est pas trop dégueulasse.
Vouloir sauver le web de l'horrible Javascript est une bonne chose, mais à un moment, les promoteurs de Dart, CoffeeScript et TypeScript feraient mieux de se mettre d'accord. Sinon, soit ça va être le bordel, soit il ne se passera rien du tout et on va rester avec Javascript.
Et je suis d'accord avec erwanlb (comme quoi tout arrive...), les frameworks Javascript servent trop souvent à corriger des imperfections du langage ou de l'environnement (corriger les différences de comportement des navigateurs, par exemple). On appelle shims ou polyfills certains frameworks ou bibliothèques spécialisés dans ce type de sujet, d'ailleurs. C'est quelque chose qu'on ne voit pas en Java, C#, Objective C ou PHP.
HTML 5 a d'ailleurs encore accentué le problème, vues les différences de niveau d'implémentation entre les navigateurs. Il existe un polyfill permettant de simuler IndexedDB sur les navigateurs non-compatibles mais implémentant WebSQL. Vous imaginez le niveau de bordel ?
Typescript n'est pas un nouveau langage destiné a corriger les defaut de javascript , mais tous simplement la version Ecmascript 6 de javascript.
Typescript nous permet de profiter aujourdhui de la version ecmascript 6 de javascript en attendant qu'elle soit standart .
Et c'est d'ailleur ce qui m'a permis de l'utiliser sur des projets asp mvc avec reel succes !
Pourquoi est-ce que ce serait "le bordel"? Il y a un choix pléthorique de langages pour réaliser des programmes pour nos différents OS et tout ce passe bien. Un navigateur Web n'est plus juste un client HTTP, c'est une plateforme pour héberger la partie cliente d'une application Web. JavaScript est supporté par tous les navigateurs, les performances sont correctes, il permets de faire ce qu'il est possible de faire dans le cadre imposé par la plateforme, pourquoi vouloir le changer à tout prix?
Changer JavaScript en supprimant ses mauvais côtés mais en gardant la compatibilité est impossible, mais changer JavaScript en gardant tous ses mauvais côtés ne résoudra rien (sans compter qu'aucun langage ne fera jamais l'unanimité, quelques soient ses qualités). En revanche, puisqu'il est équivalent à n'importe quel autre langage Turing-complet, on peux choisir de développer avec un autre langage, Java avec GWT, CoffeeScript, Dart, TrueScript, peu importe, et compiler le code vers du JavaScript.
Comme je le disais plus haut, un autre avantage à cela est qu'une phase de compilation est nécessaire et qu'on peut la liée à des opérations comme l'agrégation de fichiers et de "minification" (notez que ces deux dernières opérations devraient déjà être faites lorsque l'on développe directement en JavaScript, mais il semble que beaucoup de gens pense que dans ce cas on déploie simplement le code source dans le site web, sans aucun traitement). Si l'on ajoute à cela qu'en permettant à un programmeur d'utiliser un langage qui lui est plus familier, on évite que ce dernier ne fasse des choses horrible en JavaScript et on fini par avoir du code JavaScript de meilleure qualité et plus performant.
En cherchant un peu, je me rends compte que c'est... faux. L'apport principal de TypeScript, comme son nom l'indique, c'est le typage statique optionnel. Et ce n'est pas du tout à l'ordre du jour dans EcmaScript 6 :
http://wiki.ecmascript.org/doku.php?id=harmony:harmony
Pourtant :
il c'est clairement cité ici :
http://en.wikipedia.org/wiki/TypeScr...ript_6_support
et ici :TypeScript adds support for features proposed for the upcoming ECMAScript 6 standard.
These are the constructs:
Classes (with inheritance)
Modules
Arrow function syntax
Although the standard is not ready, Microsoft has said that it aims to align TypeScript's features with the proposed standard.
http://en.wikipedia.org/wiki/ECMAScript
ECMA-262, edition 3, 5 and features from upcoming 6.
et ici :
http://en.wikipedia.org/wiki/TypeScript
En tous cas si je me trompe , merci pour la rectificationThat led to a JavaScript compiler with a set of syntactical language extensions, a superset based on the proposal, that transforms the extensions into regular JavaScript. In this sense TypeScript is a preview of what to expect of ECMAScript 6.
Est-ce que tu ne trouves pas paradoxal de soutenir d'un côté une vision de l'avenir (que je partage) où la programmation web se fera avec les langages de notre choix, et de l'autre de vouloir continuer à confier à javascript le rôle de langage intermédiaire ?
Certes au prix d'efforts titanesques les éditeurs de navigateurs web ont réussi à concevoir des machines virtuelles javascript dont les performances sont étonnamment décentes. Sauf que...
* Ces performances ne sont pas satisfaisantes sur mobiles pour les besoins quotidiens et restent incompatibles avec de nombreux scénarios même sur PC. Et il semble que les moteurs javascript n'apportent plus de gains très significatifs en moyenne : nous avons atteint le plancher.
* Ce sont des moteurs extrêmement lourds et complexes. Or je vois que les éditeurs ne cessent de réécrire ces parties, sans doute parce que la complexité et le niveau d'optimisation les rendent peu maintenables et évolutifs.
* Il est très difficile pour une tierce-partie d'écrire une machine virtuelle javascript performante ce qui rend compliqué le développement de certains outils. Et le fait d'avoir deux voire trois moteurs open-source n'aide pas tant que ça car ils sont lourds et complexes, très dépendants du reste du navigateur, tous en C/C++ et les licences ne sont pas toujours compatibles.
* Une fois la compilation vers javascript réalisée toute information de typage est perdue ce qui rend impossible ou également complexe certaines analyses à l'exécution ou sur du code tiers.
Un vrai langage intermédiaire, lui, aurait bien des avantages. Pour moi en refusant ce choix on ne fait que retarder toute l'industrie en freinant certaines évolutions naturelles. Il faut dire que c'est l'intérêt de certains acteurs.
Je crois qu'on ne parle pas de la même chose. Mon postulat est que remplacer Javascript par mieux est une bonne chose. Et tes histoires de phase de compilation qui serait une bonne chose ne sont pas convaincantes. S'il s'agit d'obscusifier, on peut très bien le faire si on veut même si on n'y est pas obligé par le processus normal de développement. Compiler vers du Javascript, ça veut dire qu'on estime que le Javascript est un langage trop mauvais pour qu'on l'utilise pour développer (sinon on n'utiliserait pas du TypeScript, Dart ou autre chose), mais qu'on ne peut plus s'en débarrasser parce qu'il est trop omniprésent. Je ne pense pas que ce dernier point soit vrai. Mais il faut pour ça que les différents acteurs qui cherchent à le remplacer s'entendent. On peut très bien avoir une phase transitoire de plusieurs (nombreuses ?) années où les navigateurs implémenteraient 2 langages de scripts, Javascript ET CoffeeDartType...
Grosso modo, un langage informatique doit être soit facile à lire et à comprendre par un être humain (langage de programmation), soit facile à exécuter (comprendre : performant) par un ordinateur. Javascript n'est ni l'un, ni l'autre.
Je ne dis pas que c'est une bonne chose que JavaScript reste indéfiniment un langage intermédiaire, bien au contraire. Mais il faut être réaliste, trouver un nouveau langage qui fasse l'unanimité va prendre du temps, l'utilisation de JavaScript comme un langage intermédiaire est donc selon moi une approche pragmatique de la situation en attendant un changement qui, je l'espère, ira vers un langage de plus bas niveau, ce qui permettrait à chacun de continuer à utiliser le langage de son choix. Une phase transitoire où les navigateurs supporterait deux langages pourrait aller dans ce sens, en amenant les éditeurs à développer une même machine virtuelle pour les deux langages... mais encore faudrait-il qu'ils s'accordent pour choisir celle qui deviendrait commune...
En outre, je n'ai pas parler d'obfuscation du code, mais simplement d'agrégation des fichiers sources et de "minification", car lorsque l'on développe, on écrit du code d'abord pour être lu par d'autres développeurs (ne serait-ce que pour la maintenance) mais le format utilisé pour développer (un fichier par classe, beaucoup d'espaces, de tabulations et de commentaires) n'est pas optimal pour l'exécution et le transfère. Et l'on voit ici que JavaScript a bien cette double identité de langage de programmation et de machine virtuelle du navigateur...
Oh ce troll !Grosso modo, un langage informatique doit être soit facile à lire et à comprendre par un être humain (langage de programmation), soit facile à exécuter (comprendre : performant) par un ordinateur. Javascript n'est ni l'un, ni l'autre.
Concernant le côté humain, cela dépendra du développeur et, aussi, sa façon d'appréhender / apprendre un autre paradigme de programmation que celui qu'on lui a inculqué durant sa scolarité.
Pour l'ordinateur, JavaScript n'est donc pas performant ? Côté client, cela dépend du poste de l'utilisateur, mais côté serveur, je ne crois pas que JavaScript soit si lent que ça comparé à certains autres langage. Ou alors, nous n'avons pas vu les mêmes benchmarks
Si tu fais allusion à Node.js, les performances n'ont rien à voir avec l'utilisation de Javascript. C'est l'utilisation d'un thread unique et d'entrées-sorties non-bloquantes qui expliquent les performances. Il faut comparer ce qui est comparable, et si tu compares Node.js à des outils similaires écrits dans d'autres langages, comme Vert.x en Java, ça rigole déjà beaucoup moins :
http://www.cubrid.org/blog/dev-platf...n-with-nodejs/
Vert.x, pour ceux qui ne connaissent pas :
http://vertx.io/
Juste à titre informatif, j'ai rédigé une introduction succincte sur ce langage ici : http://www.developpez.net/forums/d13...ge-typescript/
J'utilise Typescript depuis le début de l'année sur un projet web côté client, dont quelques versions sont parties en prod. Je l'ai allègrement marié à requireJs, Angular, jQuery UI, etc... Bref que du bon
J'aime bien le côté déclaratif et l'inférence de type sur ce langage. Par contre j'aime beaucoup moins le côté verbeux de certaines déclarations. J'aime beaucoup les côtés "fonctionnel" et "contractuel" de ce langage, la possibilité de déclarer les interfaces de façon fluide plutôt que de créer des types pour tout et n'importe quoi.
Il manque éventuellement quelques features intéressantes, comme les mot clés protected, abstract, async/await... J'apprécierais également d'avoir quelque chose se rapprochant de la syntaxe Linq, de manière à éviter l'intégration de librairies tierces comme lodash pour parcourir des collections...
J'ai eu du mal à comprendre la notion de module, qui n'est pas vraiment la même chose qu'un namespace. D'ailleurs les specs ont pas mal bougé sur ce point avec l'avancée des versions.
Par contre le gros point noir de Typescript n'est pas le langage, mais son compilateur. Les perfs avec Visual Studio sont catastrophiques. L'autocomplétion est laborieuse, et 1.5Go de RAM et 100% de CPU à la compilation pour un projet 100% web, ça craint ! L'extension WebEssentials améliore un peu l'expérience, mais franchement il y a beaucoup de progrès encore à faire. Je n'ai pas encore essayé d'autres IDE, il paraît que ça tourne mieux avec WebStorm, à voir... Et aussi, il manque une option bundle et minification de fichiers à la compilation.
Mon avis reste quand même positif. En fait avec Typescript, j'ai surtout appris à programmer proprement du javascript, plutôt que de faire la soupe
Partager