Cher Journal,
bien tes nouveaux atours.
Sinon, je me demandais. J'ai lu avec intérêt la news sur la sortie de Node.js. Ça tombe bien, je vais être amené à bidouiller avec ça dans les jours qui viennent.
Du coup, je jette un oeil au langage JavaScript. Pour le coup, il ne s'agit pas du JavaScript kikoo lol pour animer des pages web, mais de JavaScript de daicidor pour programmer des services internet facilement.
Et je déchante. Je ne parviens pas à déterminer si ce langage est absolument génial, mais je n'arrive pas à comprendre (et le fait de programmer pour Node n'aide pas vraiment, l'API est pas stable du tout, c'est l'enfer pour trouver des tutoriaux un peu à jour). Je ne capte rien, je n'arrive pas à faire les exemples les plus simples sauf la centaine d'exemples de "Hello World!").
Je sais programmer. Je ne suis pas une bête, mais le jour où j'ai voulu programmer en Ruby, j'ai pris la doc et j'ai commencé à programmer. Le jour où j'ai voulu programmer en Python, j'ai pris la doc et j'ai commencé à programmer. Le jour où j'ai voulu programmer en Haskell, j'ai pris la doc et l'ai reposé.
Mais JavaScript quoi. C'est mes yeux ? Le langage est-il du pur génie, ou est-ce une énorme bouse complètement WTF, que les gens utilisent parce que c'est un langage qu'ils connaissent (parce qu'ils ont appris la programmation avec les exemples kikoolol pour faire des pop-up).
# Pourrais-tu être plus spécifique?
Posté par Fabimaru (site web personnel) . Évalué à 9.
Qu'est-ce qui te choque en particulier avec Javascript? T'as jamais dû faire de VBscript (j'ai toujours pas compris comment on gère les erreurs, mon esprit est peut-être formaté par l'utilisation de try/catch), c'est 100 fois pire.
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Duncan Idaho . Évalué à 8.
Effectivement, je n'ai jamais fait de VBScript.
Un exemple ici : Javascript in Ten Minutes dans la section "Object Prototype". Ils essaient de faire un truc un peu orienté objet. Le premier exemple ressemble effectivement pas mal à ce que l'on attend, mais on fait on t'explique qu'il faut pas faire comme ça, mais un truc complètement wtf à coup de objet.prototype (et parfois objet.prototype.proto, mais le proto est pas supporté par tous les navigateurs).
Il y aussi une notion d'héritage, j'ai rigolé fort !
Finalement, les gens qui utilisent JS mettent en avant la puissance des /closures/, j'y vois surtout un grand n'importe quoi, complètement bug-o-gène et impossible à tester/débugger correctement. Mais c'est pour ça que je demande un avis, parce que c'est peut-être complètement du au fait que je ne connais pas JS.
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Thomas Douillard . Évalué à 7.
Les closures c'est pas un avantage de javascript, puisque c'est possible dans à peut prêt n'importe quel langage un peu récent.
Pour le reste javascript c'est un langage comme un autre à mon avis, avec effectivement le côté prototype qui peut être déroutant. C'est un langage dynamique qui pousse le concept à l'extrême, tu crées des types à l'exécution par exemple, les objets sont des tableaux associatifs ...
Après ça permet de faire des choses quand même, par exemple le json pour échanger des données dans un contexte web ça combine les avantages d'être complètement naturel en javascript, facilement échangeable et lisible dans n'importe quel autre langage.
[^] # Re: Pourrais-tu être plus spécifique?
Posté par patapon . Évalué à 2.
On me susurre à l'oreille que ce n'est toujours pas disponible en Java. Un vague histoire de gouvernance du JCP qui n'a pas été capable de se mettre d'accord sur une des nombreuses specs soumises en 3 ans...
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Krunch (site web personnel) . Évalué à 5.
Le monsieur a dit « langage un peu récent ». Je pense qu'il voulait dire « langage à la syntaxe un peu moderne ». Java n'entre clairement pas dans cette catégorie.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Brioche4012 (site web personnel) . Évalué à -1.
Salut,
C'est vrai que faire de la POO en javascript c'est difficile au début.
Sans prétendre être un dieu de prog non plus, j'ai fait une petite classe pour implémenter des Hash (tableaux associatifs). Voici mon code, en espèrant qu'il te soit utile (AGPL):
http://pastebin.com/4gMhJPmz
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Jean B . Évalué à 10.
Oh mon dieu !!
Je vous en prie n'utilisez pas ça !!
Pour ceux qui ont la flemme d'aller voir, le monsieur stocke ses données à plat dans un tableau. Ex [key1, val1, key2, val2]. Résultat les accès sont loin d'être en O(1).
Pour un implémentation correcte des Hash en JavaScript:
Et je ne parle même pas de ta façon de créer des "classes" à la mode C.
Des codes comme le tiens montre bien que le plus gros problème de JavaScript c'est que la majorité des gens qui l'utilise ne le comprennent pas.
PS: oui si vous avez des clés comme 'proto' vous aurez des comportements bizare, mais bon au pire vous pouvez utiliser celle là: https://github.com/sstephenson/prototype/blob/master/src/prototype/lang/hash.js.
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Guillaume Denry (site web personnel) . Évalué à 5.
Marrant, c'est un peu la réaction que j'ai eu de prime abord, "pourquoi créer des outils de hash alors que javascript dispose déjà de {} ?" :)
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Brioche4012 (site web personnel) . Évalué à 0.
pour apprendre la poo en javascript par exemple...
[^] # Re: Pourrais-tu être plus spécifique?
Posté par Arthur Accroc . Évalué à 0.
Les promoteurs de Ruby aussi, pour enfumer ceux qui reprochent l’absence de destructeurs, mais dans cette utilisation c’est moins souple.
Perl supporte les closures aussi, mais pour ce que j’en sais, c’est peu utilisé. Dans un langage OO complet, je n’ai pas l’impression que ce soit vraiment utile tous les jours, même s’il y a certains cas où c’est une solution pratique (ça m’a servi... une fois ; bon, je ne suis pas développeur, non plus).
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
[^] # Re: Pourrais-tu être plus spécifique?
Posté par claudex . Évalué à 3.
Je trouve que ça a beaucoup d'intérêt avec l'utilisation des callback
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
# WTF
Posté par superna (site web personnel) . Évalué à 9.
Je penche sincèrement pour une bouse complètement WTF, un mélange de plusieurs façon de voir et concevoir un language interprété...
# Hype ?
Posté par DLFP est mort . Évalué à 4.
J'ai eu affaire récemment à un truc similaire — que je n'ai pas choisi, c'était pour le boulot.
Plein de gens qui en parlent, qui « suivent » sur github, des conférences des auteurs mais :
Je me suis retrouvé à patcher leur truc sans vraiment savoir si c'était ça que c'était sensé faire. Enfin bon, de mon côté ça marche mais devant l'absence d'informations claires j'ai juste publié mes patches sans demander leur intégration.
Finalement, ça ne m'a pas vraiment simplifié la tâche. Maintenant, je me méfie de ce genre de projet.
Note : je ne juge pas Node.js, je ne l'ai jamais utilisé. Mais je me méfie ;-)
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Hype ?
Posté par Gabin . Évalué à 1.
Le hype sans doute, mais Google l'utilise pourtant en prod et on ne peut pas dire qu'il sagit d'webapp moisis.
Si je dis une connerie, je suis avide d'apprendre.
[^] # Re: Hype ?
Posté par groumf . Évalué à 1.
Est-ce que ça commence par un 'z' ?
# et RoR ?
Posté par solsTiCe (site web personnel) . Évalué à 6.
pour lancer un troll, j'aurais plutôt choisi RoR, vu l'actualité du changement de linuxfr.org.
[^] # Re: et RoR ?
Posté par suJeSelS . Évalué à 3.
Clair ce serait terrible d'avoir un interpréteur Ruby dans les navigateurs web!!
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: et RoR ?
Posté par DLFP est mort . Évalué à 4.
les dévelop²eurs Web compétents
…que l'on retrouve souvent à côté des licornes.
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: et RoR ?
Posté par dyno partouzeur de drouate . Évalué à 0.
Dans le sens anglo-saxon du mot <i>terrible</i> ?
# javascript : un peu plus loin
Posté par Dreammm . Évalué à 10.
Javascript attire du monde parce qu'il tourne dans les navigateurs, ,et que tout le monde converge vers là.
Modèle à objet sympathique (basé sur des prototypes), variations syntaxiques insupportables, langage figé à cause des plateformes sur lesquelles il tourne et de l'existant : si tu ne peux changer le langage, construit par dessus !
Pour cela :
Les librairies en javascript qui donnent une bonne base :
Cela devrait t'occuper cette après-midi et améliorer ta vision du langage.
[^] # Contre jquery & co
Posté par Brioche4012 (site web personnel) . Évalué à 0.
Je m'inscris en faux.
C'est vrai que jquery et ses potes sont pratiques quand on veut faire un truc kikoolol sans s'ennuyer, mais dès qu'on veut faire de la vraie programmation et débuguer pas à pas avec firebug, jquery est un cauchemard.
Apprenez javascript avant d'apprendre jquery...
[^] # Pour jquery & co
Posté par MyLordAngus . Évalué à 5.
Certes, il n'est à mon avis pas une bonne idée d'apprendre directement le javascript via jquery (comme à peu près tout langages d'ailleurs, on n'apprend à faire du PHP en utilisant symfony par exemple). Mais une fois les bases du langages apprises, Jquery est un excellent framework qui simplifie grandement les choses. Et pas forcément que pour les effets "kikoolol" (qui sont du reste bien pratique si utilisés avec retenue et intelligence). Je l'utilise souvent pour cibler facilement les éléments (adieu le getElementBy*), et faire de l'ajax. De plus, la doc jquery est relativement claire.
[^] # Re: Pour jquery & co
Posté par windu.2b . Évalué à 4.
Sans oublier :
[^] # Re: Pour jquery & co
Posté par MyLordAngus . Évalué à 2.
On trouve certes quelques bons plugins, mais je suis toujours frileux avant de les utiliser, de crainte d'alourdir encore un peu le chargement de la page. De plus, on rencontre dès fois des bugs bien génants, et le développeur du plugin ne propose pas toujours un bon suivi de son projet.
[^] # Re: Pour jquery & co
Posté par DLFP est mort . Évalué à 2.
Pour ça tu as des outils qui peuvent réunir et compresser le code JavaScript en un seul fichier.
Sinon, se limiter à un seul fichier (JavaScript ou CSS) c'est pas terrible si tu te retrouves avec des fichiers illisibles d'un millier de lignes.
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Pour jquery & co
Posté par windu.2b . Évalué à 2.
Il existe ce site, qui centralise de bons plugins, et les rend compatibles entre eux. Je dois avouer que pouvoir coupler Sortable, Draggable et Droppable ensemble permet de faire des choses très sympa ! :-)
[^] # Re: Contre jquery & co
Posté par DLFP est mort . Évalué à 7.
J'aime bien jQuery, mais je suis tout à fait d'accord. (D'ailleurs je connais peu JavaScript mais au moins j'en suis conscient !)
Sinon, ça m'a fait bien rire : http://img180.imageshack.us/img180/3305/addanumbertoanothernumb.png
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Contre jquery & co
Posté par Xavier Maillard . Évalué à -2.
OMFG ! Comment garder son sérieux face à une telle question. Je veux bien qu'on a tous débuté un jour, mais, en ce qui me concerne, je lis des docs/tutoriels/livres avant d'éclabousser le web d'une question aussi primaire.
[^] # Re: Contre jquery & co
Posté par MyLordAngus . Évalué à -3.
La question est abusée, mais les réponses le sont encore plus. Pourquoi direct conseiller Jquery pour faire des additions??... Et ça a été primée comme la meilleure réponse. Ironie????
[^] # Re: Contre jquery & co
Posté par DLFP est mort . Évalué à 2.
À mon avis c'est surtout un faux, ou au moins, aucune réponse n'était sérieuse devant la nullité de la question. ;)
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Contre jquery & co
Posté par Guillaume Denry (site web personnel) . Évalué à 4.
Je pencherais même pour un montage, vu les liens suggérés à droite et le fait qu'aucun des intervenants n'existe sur stackoverflow.....
[^] # Re: javascript : un peu plus loin
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 1.
ah bon ? https://developer.mozilla.org/en/JavaScript (voir les pages de chaque version)
Et Ecmascript 5, que sont en train d'adopter tout les navs ?
[^] # Re: javascript : un peu plus loin
Posté par Gniarf . Évalué à 3.
toutes les NOUVELLES versions des navigateurs
le temps qu'elles sortent, soient stabilisées et adoptées ça peut prendre des années.
[^] # Re: javascript : un peu plus loin
Posté par Jean B . Évalué à 2.
C'est sur, et puis rare sont les gens qui peuvent se permettre de ne pas être compatible IE6. Donc adieu toute les fonctionnalités sympa qu'il ne supporte pas.
[^] # Re: javascript : un peu plus loin
Posté par Frank-N-Furter . Évalué à 6.
C'est sur, et puis rare sont les gens qui peuvent se permettre de ne pas être compatible IE6. Donc adieu toute les fonctionnalités sympa qu'il ne supporte pas.
Gmail, GDocs, GCals,Youtube,FB, effectivement juste pour le chat, et ne pas supporter n'implique que ton site ne soit pas vissible aux boulets sous IE6, juste qu'ils voient ce que les utilisateurs de Links voient.
Depending on the time of day, the French go either way.
[^] # Re: javascript : un peu plus loin
Posté par Jean B . Évalué à 2.
La tu parle des fonctionnalités d'HTML, moi je te parle des fonctionnalités de JavaScript comme les list comprehension les itérateurs les générateurs le __proto__ etc
# Plein de défauts mais puissant
Posté par Guillaume Denry (site web personnel) . Évalué à 6.
Je recopie ici un lien publié récemment dans une dépêche
Un livre (disponible entièrement en ligne) qui te présentera le langage de façon assez drôle et sans pour autant le porter aux nues.
http://eloquentjavascript.net/
Vraiment très très bien écrit.
# programmation fonctionnelle
Posté par Laurent J (site web personnel, Mastodon) . Évalué à 8.
Oui, donc, la programmation fonctionnelle n'est pas pour toi. Comme JS est à mis chemin entre la POO et la programmation fonctionnelle, donc ne te pose plus de question ;-)
Note: il ne faut pas essayer de faire de la POO avec JS, JS n'est pas un langage orienté objet, mais orienté prototype. C'est comme si tu essayais de faire un cube avec une machine conçue pour faire des balles.
# Mon avis
Posté par elloco (site web personnel) . Évalué à 4.
Je développe en Javascript (côté client) car c'est le seul langage de programmation supporté par les navigateurs. Mais si j'avais le choix, je ne le prendrais pas.
C'est un langage qui peut faire des merveilles, c'est vrai mais ce que je "déteste" le plus c'est qu'il n'y a pas de compilation, et que tout (variables, fonctions, etc) est trop générique.
Je préfère un langage comme Java/C#/C++, etc. qui fait un contrôle stricte de mon code source lors de la compilation. Ca permet d'éviter un paquet d'erreurs idiotes qui me font perdre un temps fou en JS.
Donc, si tu n'as pas le choix, alors oui prend JS mais si tu peux éviter, évite !
[^] # Re: Mon avis
Posté par devnewton 🍺 (site web personnel) . Évalué à 3.
Ca permet d'éviter un paquet d'erreurs idiotes qui me font perdre un temps fou en JS.
Alors qu'en C++, c'est la compilation qui te fait perdre ton temps!
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: Mon avis
Posté par case42 (site web personnel) . Évalué à 2.
(je ne comprends pas le "tout [...] est trop générique".)
Pour le problème de "pas de compilation", c'est un faux problème que l'on peut éviter.
En ce qui me concerne je bosse sur un serveur de taille moyenne en node.js, et ca se passe très bien. Pour palier a l'absence des vérifications que fournie d'habitude l'étape de compilation, on soumets systématiquement tous nos fichiers sources a JSLint, accompagnés de tests unitaires, et on s'assurent qu'ils offrent une couverture de 100% du code.
On a branche tout ca dans Hundson (intégration continue), jslint ou tests qui ne passent pas = rouge (= cassé ) , coverage < 100% = jaune (= instable) .
On perd un peu en vélocité mais on gagne énormément en confiance dans le code déjà écrit, on a pas peur de tout péter, c'est vraiment agréable comme environnement.
(note: on a aussi une petite partie cliente, qui est également testée et soumise a jslint)
Bref, pour moi javascript est un langage un peut spécial et parfois farceur, mais ma fois pas beaucoup plus qu'un autre.
[^] # Re: Mon avis
Posté par DLFP est mort . Évalué à 2.
Comment tu exécute les tests JavaScript ? Surtout la partie cliente, ça m'intéresse.
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Mon avis
Posté par case42 (site web personnel) . Évalué à 1.
Je ne me suis pas occupe de la mise en place de l'infrastructure de tests, je me contente d'en écrire, donc je ne voudrais pas te raconter de bêtises.
On passe par un makefile. Les tests et le coverage du serveur nodejs utilisent expresso, pour la partie cliente, on utilise QUnit et jscoverage (on doit lancer le makefile et visiter une url)
voila la règle en question:
checkclient:
clairement c'est relou pour les tests clients, on va peut-être s'orienter vers une solution de tests clients dans nodejs avec jsdom, mais c'est pas gagné.
[^] # Re: Mon avis
Posté par Moogle . Évalué à 2.
Sinon des tests fonctionnels à la Selenium, c'est possible aussi non ?
[^] # Re: Mon avis
Posté par Jean B . Évalué à 1.
Pour ça il y a JSLint qui permet repérer les bugs les plus courrants. Bien sur il ne vérifie pas les erreurs de type, mais ça c'est plus une question de style.
PS: Il a déjà été évoqué dans un autre commentaire mais discrètement alors je le reprécise.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Mon avis
Posté par hocwp (site web personnel) . Évalué à 1.
Et qui sait générer du javascript : parenscript
# Passe à GWT
Posté par Nicolas Antoniazzi (site web personnel) . Évalué à 3.
Passe à GWT, comme ça tu as le coté plus carré de Java et un code optimisé en javascript.
Tu as accès à une grosse API, de la programmation objet "classique" et un vrai débugueur.
[^] # Re: Passe à GWT
Posté par DLFP est mort . Évalué à 2.
Comment peut-on déverminer le code JavaScript généré ?
DLFP >> PCInpact > Numerama >> LinuxFr.org
[^] # Re: Passe à GWT
Posté par pasScott pasForstall . Évalué à 5.
GWT a un mode "hosted", en gros le code java est compile en bytecode java au lieu de javascript. Ensuite, le code tourne dans ton ide (eclipse/intellij au moins, netbeans je sais pas), rendu comme si c'etait un browser. Comme c'est du code java qui tourne, tu debugge comme d'hab. Tu t'occupes des problemes a ce niveau.
Ensuite, tu compiles en javascript, tu laches ca en pature a la QA et tu pleures quand ils te rapportent un bug IE ou que tu peux pas reproduire en mode hosted.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Passe à GWT
Posté par pasScott pasForstall . Évalué à -2.
Ouais, au prix de "au revoir l'integration spring" et de couche sur couche de generation de code. Ca depend beaucoup de ce que tu fais, mais a moins de faire une tres grosse appli ou l'absence de modele objet fort et de compilation, je conseillerais pas GWT.
If you can find a host for me that has a friendly parrot, I will be very very glad. If you can find someone who has a friendly parrot I can visit with, that will be nice too.
[^] # Re: Passe à GWT
Posté par Tobu . Évalué à 2.
Le code JS généré est monstrueusement lourd. Par exemple, la bibli de google pour faire des petits histogrammes sature le cpu pendant un bout de temps (freeze d'une minute à dessiner 15 histogrammes minables, avec une bonne machine et un bon navigateur), alors que Flot je ne la sens pas passer.
# Les deux
Posté par Pierre Bertet (site web personnel) . Évalué à 6.
En fait, JavaScript est mi-génial, mi-WTF. Le problème, c’est qu’il y a beaucoup, beaucoup de mauvaises ressources sur le web.
Pour ce qui est génial, je te conseille de lire « The Good Parts » de Douglas Crockford, et cette vidéo : http://video.yahoo.com/watch/630959/2974197
Pour le WTF : WTFJS
Tes difficultés avec NodeJS viennent peut-être du positionnement assez « bas niveau », comparé à Rails ou Django par exemple ?
En plus de la doc officielle, je peux te recommander le blog « How to Node », et les vidéos du « NodeCamp ».
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.