Un développeur sans solides connaissances en anglais est un développeur mal barré...
Version imprimable
Un développeur sans solides connaissances en anglais est un développeur mal barré...
Merci pour l'information, je ne m'en serais jamais douté...
En quoi la JVM est adaptée au mobile et à l'embarqué ? C'est plutôt l'inverse : l'embarqué qui s'est adapté à la JVM. Avant les systèmes étaient optimisés pour être utilisable avec des ressources limitées. Maintenant pour supporter la JVM, on est obligé de mettre du matériel plus puissant. Et si micropython existe, c'est peut-être aussi parce que la JVM n'est pas si adaptée que ça...
Complètement subjectif. Perso, je suis bien plus géné par la syntaxe verbeuse de Java.
Les performances de V8 sont très correctes. Sur du front, la performance dépend beaucoup de la qualité de la connexion et de la qualité du code. Si un dev a choisi un algo pourri, aucun langage ne le rendra efficace par magie.
Cet article n'a aucune valeur : il présente des points de détail ou de syntaxe comme si c'était d'une importance capitale, il ne prend pas vraiment en compte les normes récentes, certains arguments sont justes des préférences personnelles de l'auteur et beaucoup de critique ne sont pas des critiques du langage mais de mauvaises pratiques de développement qui auraient aussi lieu avec un autre langage.
mais encore ?
Pas vraiment : JS est apparu à peu près en même temps que VBScript. Et je ne vois pas en quoi c'est un défaut.
Non, il pointe des subtilités absurdes qui peuvent mener à des bugs difficiles à résoudre, une syntaxe difficile à écrire et à comprendre et surtout non standardisée puisqu'il y a souvent quatre ou cinq façon d'arriver à un même résultat. Quand il faut connaître 300 subtilités pour être sûr du résultat d'une égalité, je n'appelle pas ça un point de détail.
L'appréciation personnelle de JavaScript est subjective, ses faiblesses évidentes sont objectives.
Si ton seul argument est de sortir 6 mots de leur contexte pour jeter en bloc toutes mes remarques alors effectivement il vaut mieux "en arrêter là".
Sinon, j'attends avec impatience tes arguments montrant que la JVM est adaptée au mobile et à l'embarqué, que JS est moins adapté au backend que Python ou Ruby, que des features importantes manquent dans JS, que JS donne une importance particulière aux variables globales (point 5 de ton article), que les prototypes ne scalent pas (point 7), que JS n'a rien de commun avec lisp (point 9), etc, etc.
Je suis surpris que la côte d'Angular dégringole à ce point !
C'est que c'est un framework exigeant qui demande beaucoup de temps et d'efforts avant de commencer à travailler avec. J'ai d'ailleurs renoncé à l'imposer au sein de mon équipe pour ne pas gréver le projet, on est plutôt parti sur une solution bateau : Spring Java + Thymeleaf + Bootstrap + JQuery. Le projet terminé on ne regrette pas ce choix car tous le monde s'y est senti très à l'aise dès le départ et dans ce cas de figure c'est le prinicpal. Après même si les autres frameworks JS sont plus intéressants sur le papier il manquera toujour les nombreuses bibliothèques de composants dédiés de qualité pro dont Angular est richement doté et ça celà n'a pas de prix lorsqu'on developpe pour les entreprises.
le probleme c'est que javascript doit évoluer en gardant une compatibilité avec l'ancien et oui javascript est devenu complexe a cause de personnes comme toi qui veulent le beurre et l'argent du beurre deux exemples setTimeout qui servait a faire le l'asynchrone pour faire bien on a ajouter les promise et comme sa suffisait pas on a rajouter async await. Le deuxieme exemple c'est la poo on avait new une_class puis on a ajouter objet.create et enfin on a ajouter les class et tous ça pour ce retrouver avec du code qui mélange les class et les prototype (une nouvelle façon de faire de la poo qui melange les class et les prototype trop fort) et du coup quand tu veut faire un cours c'est le casse tête tous çà pour satisfaire la majorité des gens. J'aime pas les épinards et les pâtes c'est pas pour autant que je vais dire que c'est de la merde et que l'on doit pas en manger.Citation:
Non, il pointe des subtilités absurdes qui peuvent mener à des bugs difficiles à résoudre, une syntaxe difficile à écrire et à comprendre et surtout non standardisée puisqu'il y a souvent quatre ou cinq façon d'arriver à un même résultat. Quand il faut connaître 300 subtilités pour être sûr du résultat d'une égalité, je n'appelle pas ça un point de détail.
bonne année.
Les mots en question étaient simplement le résumé de ta persistance à ignorer aveuglement tous les problèmes de JavaScript. L'article en question est factuel point par point, avec des exemples concrets et ne contient pas grand-chose qui puisse être attaquable.
Donc il faut accabler les utilisateurs pour les errance d'un langage qui ne sait ni d'où il vient, ni où il est, ni où il va ?
Quand le code est dégueulasse, c'est bien que le langage évolue pour rendre le code plus lisible. Je vais copier-coller des codes de l'article Asynchronous JavaScript: From Callback Hell to Async and Await
que j'aime bien citer.
Code dégueulasse avec le continuation-passing style :
Code moins dégueulasse avec les promesses :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 const verifyUser = function(username, password, callback){ dataBase.verifyUser(username, password, (error, userInfo) => { if (error) { callback(error) }else{ dataBase.getRoles(username, (error, roles) => { if (error){ callback(error) }else { dataBase.logAccess(username, (error) => { if (error){ callback(error); }else{ callback(null, userInfo, roles); } }) } }) } }) };
Code lisible avec async et await :Code:
1
2
3
4
5
6
7
8
9
10
11 const verifyUser = function(username, password) { database.verifyUser(username, password) .then(userInfo => dataBase.getRoles(userInfo)) .then(rolesInfo => dataBase.logAccess(rolesInfo)) .then(finalResult => { //do whatever the 'callback' would do }) .catch((err) => { //do whatever the error handler needs }); };
Le code souffre toujours du problème décrit dans l'article What Color is Your Function? mais, au moins, par rapport au continuation-passing style, il y a eu du progrès.Code:
1
2
3
4
5
6
7
8
9
10 const verifyUser = async function(username, password){ try { const userInfo = await dataBase.verifyUser(username, password); const rolesInfo = await dataBase.getRoles(userInfo); const logStatus = await dataBase.logAccess(userInfo); return userInfo; }catch (e){ //handle errors as needed } };
Non pas du tout, c'est un ramassi d'inepties et d'arguments fallacieux. Déjà l'article est publié sur le blog "JavaScript Non Grata, Just say no to this abomination" par un fanboy de Smalltalk. Autant dire que niveau impartialité on va être servi...
Point 1 : JS n'a pas de type entier. Et alors ? Les flottants ne sont pas suffisants ? Bash ne gère pas les flottants de base, et c'est bien plus génant. Le C gère des entiers et des flottants : résultat quand on travaille avec des entiers les comparaisons ne posent pas de problème mais il faut faire attention lors des divisions, mais avec les flottants c'est l'inverse, mais parfois il y a des conversions implicites, et le type int peut être 32 bits ou 64 bits selon l'architecture... c'est effectivement beaucoup mieux que JS...
Point 2 : typage faible et conversions automatiques. Ce sont des choix de conception dont je ne suis pas fan personnellement mais qui se retrouvent dans pas mal de langages dynamiques. Une bonne partie des exemples est assez discutable voire franchement malhonnête. Je vous conseille l'exemple de "arr" qui mérite à lui seul l'oscar de la mauvaise foi.
Point 3 : ajout automatique du ";". Ok, un débutant fera l'erreur une fois dans sa vie, et ensuite ? En Python aussi il faut faire attention au découpage des lignes... et également à l'indentation. Et à peu près tous les langages ont leurs pièges de syntaxe.
Point 4 : JS est mal utilisé, "Much of the code in the wild, especially those in commonly used libraries, are very badly written". D'où vient cette affirmation ? Quelles sont ces libs ? Des stats d'utilisation ? Des rapports d'analyse de code ? Non, il faut croire l'auteur sur parole et admettre que c'est la faute de JS. Avec un autre langage on n'aurait certainement que du code propre et même l'ado qui se prend pour un codeur 2h après avoir découvert la console de son navigateur produirait magiquement du code parfait...
Point 5 : JS dépend fortement des variables globales. Et alors ? Les variables globales sont déconseillées dans quasiment tous les langages. Le C possède encore "goto" mais quasiment personne ne l'utilise pour autant; qu'il soit bien implémenté ou pas tout le monde s'en fout.
Point 6 : " JavaScript code can fail silently due to syntactical slip-ups. It has happened to me several times, and tracking down the reason can be most exasperating." Encore des détails de syntaxe mais cette fois on ne sait même pas lesquels. Mais on peut croire l'auteur sur parole car ça lui est arrivé plusieurs fois et c'était exaspérant...
Point 7 : les prototypes ne conviennent pas pour des grosses applications. Pas d'argument ni de source concrète. L'auteur étant un fan de Smalltalk, on ne doute pas de l'objectivité de son analyse... Il arrive même à citer C++ comme exemple de langage objet; mais il ne parle pas de l'héritage de classes en diamant ni de la gestion des exceptions levées dans un destructeur... étonnant...
Point 8 : la programmation asynchrone est compliquée en JS. Ben c'est surtout la programmation asynchrone en général qui est compliquée et comme JS est l'un des rares langages mainstream à l'utiliser autant alors forcément... En fait, la critique porte essentiellement sur la syntaxe et n'a plus vraiment lieu avec les promise et les async/await.
Point 9 : JS n'est pas comme Lisp. Et pour cause, JS a été inspiré par Scheme et non Lisp. Et apparemment c'est suffisamment bien fait pour que certains cours d'algorithmie migrent de Scheme à JS: https://en.wikipedia.org/wiki/Struct...ipt_Adaptation
Point 10 : le seul avantage de JS tient dans des frameworks comme Node.js et AngularJS. Bon là c'est carrément du délire, l'auteur a complètement craqué. Admirez : "Everyone understood that JavaScript was a terrible language, and so it was used only sparingly. But then, someone thought it was a good idea to put this awful language on the server."
"factuel point par point, avec des exemples concrets et ne contient pas grand-chose qui puisse être attaquable"...
En voilà un joli démontage partial en règle rappelant l'analyse des discours scientifique par des climatosceptiques ;)
Je ne vais pas m'amuser à démonter tes propos un par un, je n'ai pas que ça à faire et ça n'a aucun intérêt. Ca se résume en gros à "ouin, il dit du mal de mon langage préféré et c'est un méchant parce que c'est pas vraiiiiiiiiiiiiiii"
Le "ben oui c'est normal c'est JavaScript qui est pensé comme ça" n'est pas un argument non plus. Ca a été mal pensé, c'est tout.
j'ai testé React et Angular, je préfère Angular.
Je trouve qu'Angular est injustement trollé comme le fait principal qu'on lui reproche est qu'il soit fermé.... c'est faux.
Ensuite les versions, tous les 6 mois il y a une nouvelle version .... c'est exact, mais cela ne casse pas la compatibilité entre les versions 4, 5, 6, 7, 8, 9....
(avec une commande, on upgrade facilement et si jamais il y a une chose à modifier, c'est indiqué en warning...)
avec Angular 9 et le nouveau moteur ivy qui va permettre des performances au top et une taille minimale optimisé aux petits oignons j'espère que ça va reprendre du poil de la bete ....
sinon, je trouve pathétique la gueguere genre mon framework, mon langage est mieux que le tiens...
pour moi, tous les framework et langages se valent.
bien sur, il y a des petites différences, certains sont plus destinés dans un domaine que d'autres.
bien sur, certains ont des avantages ou inconvénients
MAIS AU FINAL, ils font tous le job. C'est bien là le principal, non ?
mais bon.... je vous laisse vous chamailler comme des gamins
Encore un débat aussi constructif qu'un avis sur la meilleure voiture du moment...
Dommage qu''on ne voie pas de spots publicitaires sur Javascript à la télé, ce serait drôle de voir ce que les marketeux pourraient nous pondre ...
Une voiture, chacun prend celle qu'il a envie et c'est marre.
Au niveau des langages, les erreurs de conception nous impactent tous au quotidien, rendant notre travail beaucoup plus difficile que ce qu'il ne devrait l'être, il y a donc de quoi susciter des débats passionnés.
Pour la voiture le choix n'est pas uniquement issu de l'envie, loin de là, c'est bien plus complexe, il y a bien d'autres facteurs qui entrent en ligne de compte.
Un choix n'est pas toujours issu d'une logique implacable. Chacun sa "stratégie" de choix.
Il n'y a plus qu'à créer une AI pour déterminer quel est le meilleur langage :ptdr: vu que visiblement l'humain n'est pas capable d'arriver à un consensus, mais du coup il aurait sans doute un parti pris :ptdr:
le but d'une voiture c'est d'aller d'un point A à un point B
toutes les voitures offrent se service.
le but d'un langage ou framework est de concevoir une application
tous les langages/framework offrent ce service
Venant d'Angular je trouve à titre personnel que c'est enfin le moment où le framework atteint une période de maturité et qu'il devient accessible (doc au top) à tous... qu'il est délaisse. Alors qu'il y a encore quelque temps tout le monde se jetait dessus alors qu'il y avait des patchs majeurs tous les 6 mois qui impliquaient toujours des incompatibilités de code qui étaient assez insupportable pour une montée en compétences sereine sur le framework. C'est un peu étrange et étonnant de mon point de vue mais le fait que je maitrise désormais bien l'environnement doit forcément biaiser mon opinion.
L'avantage certain que je vois avec React c'est une intégration au top sur le mobile avec React native qui fait du natif justement alors qu'on ne peut en dire autant sur ionic pour angular... qui pour le coup est assez incontestablement derrière son concurrent.
Merci pour ces remarques très constructives.
Perso, ça ne me choque pas qu'un topic sur "l'état de JS et de ses frameworks" discute des différents frameworks JS... En fait, je trouve même ça plus constructif que d'en choisir un au pif ou de perdre du temps à les tester tous.
Le parallèle avec la voiture n'a pas été choisi au hasard ...
Pas vraiment...Citation:
le but d'une voiture c'est d'aller d'un point A à un point B
toutes les voitures offrent se service.
Tout dépend du terrain à traverser... 4x4, voiture amphibie, bientôt les voitures volantes ...
Je pense qu'il s'agit surtout d'un manque de maturité de la communauté JavaScript. Angular impose une grande rigueur de travail, une véritable réflexion sur la manière d'architecturer l'application. Associé à TypeScript, il s'agit tout simplement du premier framework permettant de construire une application front-end qui ne soit pas du bricolage.
Sauf que pour une majorité de devs JavaScript, le bricolage est la seule chose qu'ils connaissent, React leur convient probablement mieux puisqu'il est beaucoup plus dans la philosophie de JavaScript, des bouts de code greffés les uns aux autres de manière assez sale et une liberté dans le choix des librairies qui donne forcément quelque chose d'assez bâtard.
Est-ce que ça vaut vraiment de se lancer dans un hors sujet sur une comparaison maladroite qui n'avait rien à faire là en premier lieu ?
du native donc rapide mais il faut écrire à la fois du code pour android et pour ios ? donc parfois des difficultés de compatibilité ? c'est l'inconvénient de l'avantage ...
du ionic donc plus lent mais plus simple et rapide à coder ? c'est l’inconvénient de l'avantage
pour ma part, je me fous des animations.... la rapidité est correct sans les animations donc je préfère ionic/Angular
Je serais curieux de savoir comment tu peux justifier la maladresse de la comparaison avec une voiture.
Sachant que la rapidité, la technicité, la simplicité, la capacité, la consommation, le réseau de maintenance, la durée de vie, certains rajouteront l'esthétique sont des critères de choix selon les besoins de l'utilisateur.
Déjà parce que pour 99% des usages, le besoin est effectivement uniquement d'aller d'un point A à un point B, le deuxième et pratiquement unique critère étant le symbole de richesse qu'elle représente.
Mais je peux me tromper hein, il y a peut-être plus de 30% de SUV sur les routes luxembourgeoises parce que les gens font régulièrement du hors-piste :roll:
Sérieux, vous voulez pas aller parler voiture dans un autre topic ?
Et après, ça se plaint que la discussion n'est pas constructive...
Cela veut juste dire que dans la stratégie de choix il n'y a pas que des critères purement logiques...
Cette stratégie s'applique également aux choix des langages
solution que j'ai opté pour quelques projets et je ne l'ai pas regretté.
l'appel ajax de fragment est intéressant et il y a quand même possiblité de faire du code propre
tu veux dire des bibliothèques de composant graphique pour angular?
je trouve que c'est quand même assez pauvre quand on regarde smartclient, extjs...
@marc.collin
il y a le material design de google https://material.angular.io/
et bien sur, les bootstrap 4 etc...
@Jitou
concernant le choix : Spring Java + Thymeleaf + Bootstrap + JQuery.
donc tu n'avais pas besoin d'un site dynamique et donc pas besoin d'un framework js
je ne trouve pas qu'Angular demande beaucoup d'investissement d'apprentissage.
faut juste comprendre le système des web composant, qui au final fait gagner du temps par sa re-utilisabilité
et la communication entre composant (parent-enfant et enfant-parent)
le reste : routing, form, services, model... c'est pareil que n'importe quel autre framework MVC .... (à la syntaxe près)
Angular est surtout compliqué parce qu'il n'y a pas de guidelines claires et précises sur la bonne façon d'organiser un projet.
c'est totalement en dessous de smartclient et extjs (sencha)
sencha a d'ailleurs fait ext angular pour pallier à ce manque
c'était la même chose quang gwt est sortie... très pauvre en composant, fallait prendre gxt( sencha) ou smartgwt pour avoir une richesse à ce niveau
en quoi qu'utilise ces technos ne permets pas d'avoir un site dynamique?
c'est justement un des points qui mis en son désavantage, la courbe d'apprentissage qui est assez élevé
j'en ai fait et ça été le premier point que j'ai négatif, sans compté le nombre de ligne de code à écrire pour faire pas grand chose
la roue est trop souvent réinventer en web pour pas vraiment de gain
en composant graphique GRATUIT !
en payant, il y a aussi :https://primefaces.org/primeng/#/
jQuery pour faire du dynamique .... ok je me rends !
le nombre de code pour pas grand chose ... ?????
---> c'est du délire :weird::aie: du grand n'importe quoi
c'est pourtant claire, c'est du web composant en MVC
MVC, classique sur de nombreux framework ... je ne vois pas ce qu'il y a de compliqu" à comprendre....
au pire, il y a des tutos, des forums comme ici heiin quand on ne comprends pas... les forums c'est pas seulement pour le plaisir de contredire tout le monde AH AH AH
Comme dis ci dessus, encore faut-il comparer ce qui est comparable (et pas gratuit vs payant). Et si, le nombre de ressources Angular est réellement conséquent, framework, UI, vraiment beaucoup d'éléments y passe. Après c'est comme partout tout n'est pas forcément bon à prendre.Citation:
Envoyé par marc.collin
C'est pas qu'il est pas dynamique, c'est qu'il est forcément moins dynamique.Citation:
Envoyé par marc.collin
Ne recharger qu'une partie de la page est évidemment beaucoup plus simple en utilisant ces nouveaux framework chaque composant ayant son cycle de vie indépendant les uns des autres ce qui rend un résultat plus fluide pour l'internaute.
Ce n'est vraiment pas une réinvention c'est beaucoup plus un upgrade qui se fait en fonction des attentes des utilisateurs. Les gains sont nombreux autant pour l'utilisateur final que pour le développeur tant sur le point performance que sur le point de vue esthétique.Citation:
Envoyé par marc.collin
Bien sûr que si, et même plus, un style guide rigoureux et justifié point par point: https://angular.io/guide/styleguide
Le framework Blazor de Microsoft va déjà dans cette direction.
Alors tu pars mal parce qu'Angular n'est particulièrement pas un framework MVC. AngularJS oui, mais tu as plusieurs guerres de retard.
Ce sont des guidelines génériques là, je parle d'une structuration beaucoup plus globale d'une grosse application. Dans une application Symfony, il y UNE manière globale d'organiser son projet. C'est clair, précis, elle est déjà générée lors de la création du projet et tout le monde la respecte. Lors de la création d'un projet Angular, on a un dossier app-component et c'est marre. C'est aux développeurs, avec l'expérience et beaucoup d'erreurs, de savoir comment tout ranger au mieux, gérer les inter-dépendances entre les composants, services, modèles, je mets ça où... oui là... ah mais finalement je vais en avoir besoin ici aussi... bon ben je vais créer un module alors, etc etc.
comme bon nombre de produit,
smart client possède une version gratuite, le $$$ ayant des extensions serveurs et cie
tu peux très bien faire cela avec en autre thymeleaf, vaadin avec encore moins de ligne de code
bof
pour angular c'est souvent les performances qui sont décrié quand on le compare à vue, react, backbone, ember, Mithril...
au hasard, ça date de plus de 11 ans...
http://gwt-ext.com/demo/