--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "lescastcodeurs".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse lescastcodeur...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/21153249-75bc-4a60-aaac-93639b9c86ddn%40googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CAJ2HCd9W3%2B%3DOf_Mjcq04dOFddzf%3DA9A4bh9TQgmd_%2BavzyDqkA%40mail.gmail.com.
Frédéric Camblor
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADH39npg5%3DAZSxp8D2%2BWyWnaSiWzPER%2BkDiT3Xv_AFJZKD8dJA%40mail.gmail.com.
Je suis assez d'accord avec tout ce que tu as écrits,- à part sur la notion de Clever Dev, c'est un vrai problème (cf plus bas).- à part que je trouve que Microsoft fait de l'open source comme Google fait de l'open source, tu peux contribuer au code source mais pas à la gouvernance.
Pour moi, le prinicpale problème attribué à TypeScript est que cela force à voir TypeScript/JavaScript comme un vrai langage.On peut pas se contenter de faire de l'angular (exemple de framework choisi presque au hazard) sans savoir comment JS marche au dessus, puis comment TS marche par dessus.Donc râler sur TypeScript est plutôt un symptome d'une mauvaise compréhension de qui fait quoi, comment cela marche, ah bon c'est pas magique, coté front.
Cela dit, il y a aussi certain problèmes que je vois avec mes étudiants qui utilisent TypeScript.1) Le système de typage est complexe, c'est normal, l'idée est de typé du JavaScript après coup.Cela pose un vrai problème si tu as un bon étudiants qui se fait plaisir (CleverDev) car les autres de son équipe arrivent pas à comprendre les types écrits.Microsoft devrais définir des profiles différents quand tu veux typé une appli que tu es entrain d'écrire où tu as pas besoin de toutes la puissance de TS etquand tu veux typés une librarie/module où là tu veux tous les outils à ta disposition.
2) Tu as pas de système d'assertion des types à l'exécution (cela rejoint FalsePromise).Au moins pour les tests du devrais avoir une vérification des types (simples) à runtime. Peut-être sous forme de plugin ?
3) Le problème des fichiers d.ts. Si une lib utilise des fichiers d.ts, cela veut souvent dire que TypeScript est un "second class citizen".Dans le meilleur des cas, les exemples/doc de la lib utilise JavaScript et tu es obligé de lire les fichier d.ts pour comprendre le typage.Dans le pire, tu as une de-synchro entre les fichiers .js et les d.ts correspondant.(Une partie du problème vient du fait que les étudiants utlisent une lib sans se poser de questions sur la qualité de la lib).
4) Certains messages d'erreurs sont pas compréhensible sans un tableau blanc et du temps devant toi.Cela vient du fait que le système de type est structurelle mais Microsoft devrait payer des personnes à plein temps pour bosser sur le report des erreurs,trop souvent l'information pertinante est noyée au milieu de types qui sont pas intéressant pour comprendre l'erreur.
5) Les versions de TypeScript sont pas compatibles entre elle ET certaines libs demandent des versions différentes de TypeScript.Microsoft est vraiment mauvais là dessus, tu devrais pas avoir de problème de compatibilité sur des versions mineurs de TypeScript.Il devrait aussi y avoir une notion de LTS.
6) TypeScript fait pas que du typage, tu as des features de TS genre enums ou decorateurs qui n'ont pas d'équivalent en JS.Cela veut dire que, si dans le future, JS ajoute ces features cela va être le bazard (même problème que actuellement les modules en JS).
7) le fichier tsconfig est trop facilement éditable, c'est pas rare d'avoir une PR qui change les options de config (genre noImplicitAny) car tsc "ne marche pas".Cela rejoint le point (1).
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/432569438.775276.1674055693127.JavaMail.zimbra%40u-pem.fr.
From: "Frédéric Camblor" <fcam...@gmail.com>
To: "lescastcodeurs" <lescast...@googlegroups.com>
Sent: Wednesday, January 18, 2023 7:42:37 PM
Subject: Re: [LCC] Re: LCC 290 - Mettre tes lunettes dans ta base de données
Hello Rémi (et bonne année :))
Mes commentaires inline ! :)On Wed, Jan 18, 2023 at 4:29 PM Remi Forax <fo...@univ-mlv.fr> wrote:Je suis assez d'accord avec tout ce que tu as écrits,- à part sur la notion de Clever Dev, c'est un vrai problème (cf plus bas).- à part que je trouve que Microsoft fait de l'open source comme Google fait de l'open source, tu peux contribuer au code source mais pas à la gouvernance.Tu as raison, le modèle de Typescript est un modèle à la Google avec peu de PR "externes" qui sont finalement acceptées j'ai l'impression (les quelques PRs que j'ai pu faire en tous les cas, ont toutes été fermées)Ça ne me pose pas plus de soucis que ça tant que le projette avance et ne végète pas, l'avantage étant qu'on peut forker à tout moment si on n'est pas content d'un truc (c'est ce que j'ai fait sur les PR non mergées et dont j'avais besoin sur l'un de mes projets).
Pour moi, le prinicpale problème attribué à TypeScript est que cela force à voir TypeScript/JavaScript comme un vrai langage.On peut pas se contenter de faire de l'angular (exemple de framework choisi presque au hazard) sans savoir comment JS marche au dessus, puis comment TS marche par dessus.Donc râler sur TypeScript est plutôt un symptome d'une mauvaise compréhension de qui fait quoi, comment cela marche, ah bon c'est pas magique, coté front.Je plussoie.Quand je regarde mes collègues qui n'ont jamais fait de Typescript autrement que via Angular, j'ai l'impression qu'on ne parle pas du même langage.L'aspect "Framework" les rend fainéants à l'apprentissage du langage, c'est assez flagrant (et un peu triste aussi) combien les "exemples angular" ne les font pas se poser plus de questions que ça sur les features du langage :)
Cela dit, il y a aussi certain problèmes que je vois avec mes étudiants qui utilisent TypeScript.1) Le système de typage est complexe, c'est normal, l'idée est de typé du JavaScript après coup.Cela pose un vrai problème si tu as un bon étudiants qui se fait plaisir (CleverDev) car les autres de son équipe arrivent pas à comprendre les types écrits.Microsoft devrais définir des profiles différents quand tu veux typé une appli que tu es entrain d'écrire où tu as pas besoin de toutes la puissance de TS etquand tu veux typés une librarie/module où là tu veux tous les outils à ta disposition.Je suis assez mitigé, il y a toujours des gens qui approfondissent les sujets et pas d'autres.Ça me paraît dommage de limiter un langage du fait de son usage par les utilisateurs : est-ce qu'à la sortie de Java 5 on a dit que les Generics ne devaient être utilisés que par une élite ?A-t-on eu tort de ne pas le dire ?Est-ce que justement, de ne pas avoir fait ce type de ségrégation n'a pas démocratisé leur usage au cours du temps ? (aujourd'hui, pour moi, les Generics sont utilisés / utilisables par beaucoup plus de monde qu'en 2004)
C'est un peu pareil pour moi..2) Tu as pas de système d'assertion des types à l'exécution (cela rejoint FalsePromise).Au moins pour les tests du devrais avoir une vérification des types (simples) à runtime. Peut-être sous forme de plugin ?Tu as des choses comme reflect-metadata qui te permettent d'utilisation un équivalent de la reflection au runtime.Ça reste cependant pas mal de "magie noire" qui rajoute un overhead non négligeable dans le code JS généré.Je désespère de voir un jour un plugin du compilateur TS arriver et permettant de manipuler l'AST (cette issue notamment)
Au niveau des tests, tu as aussi la possibilité d'utiliser des libs pour tester tes types (cf cet article)Même si ça me paraît aller un cran trop loin, ça peut parfois être utile.3) Le problème des fichiers d.ts. Si une lib utilise des fichiers d.ts, cela veut souvent dire que TypeScript est un "second class citizen".Dans le meilleur des cas, les exemples/doc de la lib utilise JavaScript et tu es obligé de lire les fichier d.ts pour comprendre le typage.Dans le pire, tu as une de-synchro entre les fichiers .js et les d.ts correspondant.(Une partie du problème vient du fait que les étudiants utlisent une lib sans se poser de questions sur la qualité de la lib).Les d.ts, c'est le problème de l'oeuf et de la poule : tant que TS n'est pas considéré par l'écosystème comme ce "first class citizen", les gens l'utilisent pas de facto.Aujourd'hui, j'ai quand même l'impression qu'on a de moins en moins ce soucis et que c'est devenu mainstream (68% d'adoption de TS dans le state of JS 2022)
4) Certains messages d'erreurs sont pas compréhensible sans un tableau blanc et du temps devant toi.Cela vient du fait que le système de type est structurelle mais Microsoft devrait payer des personnes à plein temps pour bosser sur le report des erreurs,trop souvent l'information pertinante est noyée au milieu de types qui sont pas intéressant pour comprendre l'erreur.100% d'accord avec toi ... les erreurs restent assez cryptiques ... c'est un peu comme les stacktraces Spring, on met du temps avant de comprendre qu'il faut partir de la fin pour comprendre le problème :-)
5) Les versions de TypeScript sont pas compatibles entre elle ET certaines libs demandent des versions différentes de TypeScript.Microsoft est vraiment mauvais là dessus, tu devrais pas avoir de problème de compatibilité sur des versions mineurs de TypeScript.Il devrait aussi y avoir une notion de LTS.Je suis d'accord avec toi : pour moi, on a un gros trou dans la raquette quand il s'agit d'exprimer la version minimum/maximum de Typescript qui est requise pour que le code de la lib qu'on importe fonctionne.C'est mis au second plan car au runtime, tout finit par être du JS.Mais c'est vrai que compile time, ça pourrait aider de détecter qu'une lib ne devrait pas être utilisée dans une version trop récente de TS car utilisant des éléments dépréciés du langage (je n'ai personnellement jamais trop eu de gros problèmes là-dessus .. mais le jour où ils mettront à la poubelle leurs saletés d'enum, ça en deviendra un)
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CADH39npg5%3DAZSxp8D2%2BWyWnaSiWzPER%2BkDiT3Xv_AFJZKD8dJA%40mail.gmail.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/lescastcodeurs/CAEW2RjLC1Z5ZR_YiFxEu-O%2BLwHQP7MWJ%3DntPNvLJnv%2BVYU74ZA%40mail.gmail.com.