
(c'est une question rhétorique, un Amercain baverait là devant. J'ai jamais pu comprendre.)
robinHood (./148) :
https://medium.com/friendship-dot-js/i-peeked-into-my-node-modules-directory-and-you-wont-believe-what-happened-next-b89f63d21558#bananaramanana
Godzil (./149) :Un troll? Les dépendances qu'il relève sont vraiment abusives! L'adware qui envoie des likes en le nom de l'utilisateur, l'Encyclopedia Britannica bundlée pour une seule définition utilisée dans un easter egg inutile, l'image énorme cachée en easter egg dans le code source, dans les 3 cas: WTF?!
un troll quoi
Zerosquare (./165) :En fait, la situation est pire : là il ne liste que les technos à utiliser, alors qu'en plus il faut faire gaffe au contenu si tu veux faire les choses proprement jusqu'au bout (les 15 versions de la favicon, la CSS qui doit s'adapter à tous les écrans, les images en deux tailles, …)
https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f
Je ne sais pas si c'est réaliste, mais c'est "amusant" à lire ^^(et si la vie des développeurs web ressemble vraiment à ça, je vous plains, sincèrement)
Brunni (./169) :Je ne suis pas vraiment d'accord. D'un, beaucoup de code client est toujours écrit en C++98 voire en C, où toutes ces histoires de closures, promises etc. sont des mots totalement étrangers. On s'est très bien passés de ces concepts pendant des décennies. Et de deux, je ne vois pas pourquoi toute cette complexité aurait sa place dans un navigateur! Un navigateur sert à la base à naviguer, c'est-à-dire présenter du texte avec des liens cliquables, ce n'est pas à la base une VM à applications arbitraires. Un navigateur était – il y a encore quelques années seulement – quelque chose de simple, il y avait plusieurs navigateurs légers tout à fait utilisables. Maintenant, essaie d'utiliser par exemple Dillo ou Lynx… Une partie de plus en plus grande du web ne marche qu'avec les "gros" moteurs qu'on peut compter sur les doigts d'une main, qui semblent tous participer à une compétition où le gagnant est celui qui consomme le plus de place sur le disque, de RAM, de temps CPU etc.
Ouais enfin bon, la plupart de ces choses sont quand même à priori bien, et là pour une certaine raison. Alors oui le javascript client devient une usine à gaz ça sans doute, mais une bonne partie de ces choses on les a, voire on les attend par défaut, dans pratiquement tous les langages client.
Et aujourd'hui ben on fait en Javascript des applications qui paraissent parfois plus natives qu'avec d'autres toolkits (ex. Atom).Alors là, pas du tout! Atom est l'application pour laquelle a été créé le toolkit Electron, une énorme usine à gaz qui se veut toolkit desktop. En gros, quelqu'un qui voulait absolument coder une application desktop en JavaScript (Atom, en l'occurrence) s'est rendu compte que Node.js et Chromium partagent le même moteur JavaScript (V8) et que Node.js permet l'accès à des ressources locales comme les fichiers, mais est démuni d'interface graphique, alors que Chromium permet de créer des interfaces graphiques en HTML+CSS, mais pas l'accès aux ressources locales. D'où l'idée de mélanger les deux en un seul processus, voilà donc Electron.
Quand il y a eu jQuery on ne s'en est pas offensé.Si. Je m'en suis offensé parce que c'était avec ça que les sites incompatibles avec KHTML ont commencé, à une époque où KHTML n'était pas encore aussi mort que maintenant. (jQuery marche maintenant plus ou moins sous KHTML, mais ça a pris du temps. C'est KHTML qui a dû adapter son code parce que jQuery a refusé de supporter explicitement KHTML depuis la version 2.) [EDIT: Et jQuery 3 nous rejette à zéro de nouveau, ça ne marche plus du tout sous KHTML.]
Ces transpilers pour pouvoir utiliser ES6 ou ES2016 c'est surtout parce qu'on veut être en avant et que la réalité n'y est pas, donc c'est assez cool d'avoir un wrapper.Euh non, ce n'est pas cool du tout. Ça donne des usines à gaz énormes. C'est cette attitude des développeurs web "je veux utiliser ça, le navigateur n'a qu'à le proposer, ou sinon je passe par tous les hacks qu'il faut pour lui faire avaler mon code ultra-moderne" qui fait que les sites web soit rament à fond, soit ne marchent pas du tout avec certains navigateurs. Développeurs, si votre code ne marche pas sous mon navigateur, ou s'il a besoin d'une "transpilation" à la con pour marcher, c'est que votre code est foireux! C'est au code à s'adapter aux navigateurs, pas l'inverse!
Dans le même esprit que jQuery a permis de dire "fais ça" à un navigateur et que… ça se fasse, même si le navigateur n'est pas à jour derrière ou s'il faut bypasser des dizaines de bugs.jQuery 1 a encore essayé de gérer à peu près tous les navigateurs, jQuery 2 a déjà été beaucoup plus exigeant. [EDIT: Et jQuery 3 est encore pire.]
Bref on peut enfin coder.On a toujours pu coder. Il suffit de s'adapter aux fonctionnalités du langage tel qu'il est. Le JavaScript a toujours été Turing-complet.
Là c'est la même chose. Javascript passe d'un langage de script juste prévu pour préprocesser un formulaire ou afficher une alerte à un vrai langage normalisé, avec des features modernes et plus de sécurité à un langage avec lequel on fait de vraies applis complètes et fonctionnelles.Ce que je vois, moi, c'est que JavaScript passe d'une norme fixe, où tout développeur JavaScript savait ce que le langage propose quel que soit le navigateur et son âge, et où tout développeur de navigateur savait exactement quoi implémenter pour que tous les sites passent, à une norme modifiée sans arrêt, où on attend des navigateurs qu'ils proposent de plus en plus de fonctionnalités inutiles dont on se passait très bien et qui alourdissent le moteur JavaScript (et il en est de même pour le HTML 5, malheureusement). (Ça ne m'arrive pas souvent de dire du bien de Microsoft, mais pour le web, ils avaient réussi longtemps à freiner cette course folle aux fonctionnalités qui rend le web un objectif d'implémentation qui s'éloigne sans arrêt quand on s'y rapproche (le fameux "moving target"). Malheureusement, Microsoft participe maintenant aussi à la course.)
Et HTML/CSS en terme d'UI c'est sans doute dans ce qui se fait de mieux à l'heure actuelleHein?! Non, absolument pas!
(ça n'inclut juste pas les contrôles qu'on attend usuellement d'un desktop OS comme les treeviews et autres mais c'est ultra puissant)L'absence de ces contrôles (sans bibliothèques tierces, qui ne peuvent de par les limitations de la plateforme proposer aucune intégration au look&feel natif) rend le HTML+CSS totalement inadapté pour le développement d'applications desktop. Et je ne vois pas en quoi "c'est ultra puissant", ça ne propose même pas les fonctionnalités de base d'un toolkit desktop.
donc comme les outils client sont là et relativement matures désormais, coder des applis desktop qui en plus peuvent s'ouvrir directement dans un browser c'est plein de sens je trouve.Je ne trouve pas, moi. Je ne vois pas du tout le sens. Pourquoi un site web ne peut-il pas rester un site web et une application desktop ne peut-elle pas rester une application desktop? Je ne comprends pas cette manie de vouloir à tout prix mélanger les deux. On n'obtient au final que les désavantages des deux.
La seule chose qui manque pour l'instant c'est une vraie standardisation sur encore plein de domaines jeunes de ces technos. C'est un peu comme un C++ dont la STL serait codée par la communauté petit à petit, et où le marché lui-même choisirait ce qui doit rester ou pas, avec un layer en plus qui permet pour l'instant à chacun d'utiliser des bouts de sa STL et de les compiler chez quelqu'un qui préfère utiliser d'autres bouts. Et à l'occasion un gros framework qui définit et standardise un layer supplémentaire de la lib de base arrive.La fragmentation empire effectivement le problème, mais même s'il y avait une seule usine à gaz "standard", ça resterait une usine à gaz.
Kevin Kofler (./171) :(je suis assez d'accord, mais en tant qu'utilisateur de Linux, ça devrait te réjouir : ça te donne accès à des applications qui n'auraient jamais été portées sur ton OS en natif, parce qu'il n'y a pas assez d'utilisateurs comparé à l'effort que ça représente)
Je ne trouve pas, moi. Je ne vois pas du tout le sens. Pourquoi un site web ne peut-il pas rester un site web et une application desktop ne peut-elle pas rester une application desktop?
Vive le AUR de Arch, alors \o/
Kevin Kofler (./171) :Quant au packaging, les systèmes de compilation des distributions GNU/Linux ne permettent pas d'aller récupérer du code sur le web pendant la compilation, il faut donc le récupérer avant et créer un tarball.
où tout développeur JavaScript savait ce que le langage propose quel que soit le navigateur et son âge, et où tout développeur de navigateur savait exactement quoi implémenter pour que tous les sites passentAu contraire, c'est bien plus uniforme maintenant qu'il y a 10 ans.
Zerosquare (./172) :Pas du tout, parce que ça rend nettement plus facile de polluer GNU/Linux avec des applications propriétaires, et la disponibilité d'un logiciel propriétaire gratuit est un gros frein au développement d'alternatives libres (parce que pas mal des développeurs potentiels se contentent du blob propriétaire).Kevin Kofler (./171) :(je suis assez d'accord, mais en tant qu'utilisateur de Linux, ça devrait te réjouir : ça te donne accès à des applications qui n'auraient jamais été portées sur ton OS en natif, parce qu'il n'y a pas assez d'utilisateurs comparé à l'effort que ça représente)
Je ne trouve pas, moi. Je ne vois pas du tout le sens. Pourquoi un site web ne peut-il pas rester un site web et une application desktop ne peut-elle pas rester une application desktop?
Nil (./174) :Qt sait faire ça très bien, tu peux coder une application et elle marchera partout. Même QtWidgets est supporté sur Android et iOS. Sinon, en QML, tu as par exemple Kirigami, développé par le projet KDE pour automatiquement adapter ton application aux conventions PC et mobile.
D'une part, les usages changent, et la création d'applications universelles (tous OS) est un réel besoin, parce que les gens veulent pouvoir utiliser la même application sur leur ordinateur fixe, portable ou leur téléphone mobile, mais de façon à ce que ladite application sache tirer parti des spécificités de chaque environnement.
- Java propose une UI très riche, mais visuellement déprimante pour l'utilisateur (très 80's). Ca peut éventuellement être supportable dans un environnement pro, mais c'est impensable dans un environnement domestique où les écrans sont partout. Et même aujourd'hui, le rapport à l'outil informatique dans le milieu du travail a changé : les utilisateurs veulent un confort d'utilisation et un look'n feel qui soit au moins au niveau de ce à quoi ils ont accès chez eux.Utiliser le look&feel natif en Swing est une seule ligne de code. (Je ne comprends pas pourquoi ce n'est pas le choix par défaut.)
Du coup, la souplesse d'HTML+CSS (qui vient en fait de son absence de socle de base et où, du coup, on doit tout faire) apporte un plus. En fait, c'est un défaut qui a amené une qualitéEn HTML+CSS, tu dois coder tout ton look&feel à la main et ça ne s'intègrera à rien. Tu peux avoir ça aussi avec Swing, il suffit de coder ton propre look&feel Swing. Ou même avec Qt si tu veux absolument casser l'intégration native de Qt, Qt permet même d'utiliser du CSS pour modifier le style.
- HTML/CSS/JS permet au plus débutant des débutants de faire une page simple et d'avoir l'impression de pouvoir communiquer au monde entier. Java ne permet pas ça. Du coup, tu vas avoir un taux de pénétration des outils qui sera différente, des compétences qui vont se développer autrement, etc.Il est trivial d'écrire un Hello World en HTML statique, mais ça ne t'apportera aucune connaissance de tout le bordel de technologies JavaScript.
Après, pour devoir me plonger dans le dev frontend un peu plus que d'abitude, je trouve ça assez chiant, mais c'est surtout parce que je ne maîtrise pas la moitié de la souplesse (puissance ? faiblesse ?) offerts par le JS. Je viens de langages beaucoup plus "traditionnels", donc je suis vite dépassé. À tel point que, parfois, j'ai juste envie de mettre à jour mes div avec des innerHTML reçus du serveur plutôt que de travailler avec de l'XML à traiterPourquoi te retenir? C'est la solution la plus compatible et qui consomme le moins de ressources côté client.(mais je me retiens ˆˆ)
Kevin Kofler (./178) :probablement parce que gérer des composants dont on ne connais pas à l'avance le comportement/les dimensions peut poser problème pour la composition
Utiliser le look&feel natif en Swing est une seule ligne de code. (Je ne comprends pas pourquoi ce n'est pas le choix par défaut.)
Brunni (./177) :Je ne suis pas d'accord du tout. Il n'y a pas que le flat au monde.
et il est vrai que "look natif" n'a plus beaucoup de sens de nos jours
(un autre avantage pour les compagnies c'est qu'elles peuvent aliéner un peu plus l'utilisateur par la même occasion, se protéger du piratage et mettre à jour le contenu silencieusement tout en faisant disparaître toute preuve de comportement foireux d'un jour à l'autre)Pour l'utilisateur, tout ça, ce sont des désavantages (énormes).