|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | |||
|
Nouveau Membre du Club
![]() jason Développeur informatique Inscription : décembre 2012 Messages : 16 ![]() |
Effectivement le code de l'exemple n'est pas bon, mais c'est pour montrer les capacites reflexive du langage, et la simplicite de json.
Citation:
Citation:
Citation:
http://nodejs.org/about/ il s'agit du fichier jsconf2009. (lien direct: http://s3.amazonaws.com/four.livejou...117/jsconf.pdf) tout ça pour dire que javascript avait son importance lors du choix du langage, apparemment la loop-event utilisé n'est pas dans v8. De plus les loop-event performantes existent dans tous les principaux langages. les frameworks mvc sont bases sur une loop event, Qt par exemple, donc Ils ont quand meme fait un choix, un vrai concernant le langage. D'ailleurs ils utilisent de plus en plus de JS dans le code de node.js. ça ne m’étonnerait pas qu'il y en ait même plus car il y a 3 ans il y avait 11000 lignes de C++, 6000 lignes de JS, et ils avaient déclare qu'il y aurait de plus en plus de javascript. Pour conclure, JAVASCRIPT a quand même quelques avantages et Ces avantages ont pesé dans le choix du langage (plus que V8, qui n'a rien d'exceptionnel, si ce n'est qu'il est rapide). |
|||
|
|
22
|
|
|
#22 | ||||
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Je plussoie sur l'intérêt du Javascript pour deux raisons principales:
1) la production de code dans un projet où la plus grande partie du 'business' est basée sur la gestion d'événements (typiquement, un projet avec des problématiques réseau ou de l'IHM). La programmation en asynchrone est évidemment la règle, et dans ce domaine, Javascript apporte un énorme avantage: non pas l'asynchrone en lui-même (qui est effectivement possible avec tout langage), mais les closures. C'est la capacité de capturer un contexte au moment où on définit la callback qu'on va pouvoir réutiliser quand cette dernière sera appelée, plus tard. Et c'est primordial puisque quand une callback nous approte la 'réponse' à notre 'demande', on va vouloir la traiter en fonction du contexte qui était celui quand on a fait ladite demande: Code :
Un exemple: le pattern observer, en Javascript, c'est trivial, il n'y a rien de spécial à faire du côté des observateurs (myObj1, myObj2), si ce n'est définir le callback qui nous intéresse, avec pour seule convention, son nom: Code :
Autre chose: l'évaluation dynamique du code: perso, dans mon projet, le code est au chaud sur mon serveur ; quand un client lance mon programme, il lance une sorte de bootstrap qui va récupérer la dernière version du code sur le serveur ; si je veux changer un bout de code, je le publie sur le serveur, le déploiement est instantané et ne nécessite aucune action supplémentaire. Vous l'aurez compris, plus les choses avancent, plus je ne veux plus faire du JS dès que c'est possible (et ça ne l'est pas toujours, ou pour l'ensemble du projet), tellement l'efficience est grande pour écrire du code. Je rejoins néanmoins une critique à demi formulée ci-dessus: dans le contexte d'un projet perso où on est leur seul à développer, avec ses habitudes, ses conventions, ses 'bonnes pratiques', et donc avec un code totalement cohérent du début à la fin, c'est parfait. Mais dans le cadre d'un projet plus ambitieux, avec de nombreux codeurs, qui vont et viennent, avec une expérience et une rigueur hétérogènes, ça demande une rigueur et un formalisme qu'il me paraît de plus en plus difficile à atteindre au fur et à mesure que l'équipe grossit. Autre critique, qui dépend plus du 'business model' du projet: faire du 'closed source' avec du JS, grosso modo on peut oublier ; c'est pas avec la piètre obfuscation que permet un tel langage interprété qu'on peut espérer ralentir ou décourager longtemps celui qui voudra faire du reverse engineering ou vous piquer votre code pour le réutiliser dans son projet. Bref, le Javascript, ça peut vraiment être super productif, mais pour le développeur chevronné, qui a déjà pas mal de bouteille et beaucoup d'expérience passée dans plusieurs langages 'plus stricts'. Sinon, c'est le bouillon assuré, car la frontière est mince entre un beau code efficient et un gros plat de spaghettis bourré de bugs et in-maintenable. My 2 cents.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
||||
|
|
72
|
|
|
#23 |
|
Membre confirmé
![]() ![]() Inscription : octobre 2006 Messages : 39 ![]() |
Que propose Node.js pour la sécurité?
Autant que je sache, il n'y a pas de gestion de session, ni d'authentification! Que se passe-t-il en cas d'exception? S'il n'y a qu'un thread et qu'il plante, on se trouve devant un DoS. |
|
|
10
|
|
|
#24 | |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Le Javascript permet intrinsèquement moins d'attaques, car il offre déjà une surcouche d'abstraction par rapport au système qui l'exécute en dessous.
Un exemple comme un autre, tu ne risques pas de faire de buffer overflow avec du JS. Pour le reste, j'aurais tendance à penser que la sécurité dépend pour beaucoup de l'API exposée par le soft qui embarque l'interpréteur JS. Il faut comprendre que JS est un univers totalement clos par défaut ; les seules ouvertures qu'on autorise vers l'extérieur sont celles qui ont été délibérément ajoutées dans l'API. Un exemple concret: JS a été choisi pour Elixir, le 'SDK' proposé par free au 'grand public' pour développer des applications sur l'ancienne freebox (HD) ; la raison première était justement que ça minimisait les risques de hack de leur box. Citation:
N'oublions pas qu'on est dans de l'événementiel: saborder la pile d'exécution en cours de traitement n'empêchera pas d'être toujours là pour répondre à l'événement suivant.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
|
30
|
|
|
#25 |
|
Membre habitué
![]() Inscription : septembre 2009 Messages : 78 ![]() |
Vous expliquez vos choix avec des arguments techniques, mais je vais apporter un coté plus de principe :
Utiliser Javascript à la fois coté serveur et coté client est une erreur, car cela apporte de la confusion dans les rôles de chaque scripts. Surtout que, je vous le rappelle, les scripts client sont stockés sur le serveur eux aussi... Bref, chacun chez soit serais je tenté de dire. |
|
|
05
|
|
|
#26 |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Pour l'aspect "de principe", il est facile de vous répondre qu'au contraire, cela apporte une vraie bonne cohérence entre ce qui est exécuté du côté client et ce qui l'est du côté serveur.
Les deux vont être amenés à échanger des données (et donc à la sérialiser/désérialiser), à faire des vérifications et des traitements identiques, etc... Il paraît donc beaucoup, beaucoup plus efficient de n'avoir qu'un lanage unique et surtout un seul et même code commun à maintenir pour la partie 'business' de l'application, code qui sera réutilisé des deux côtés.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
31
|
|
|
#27 | ||
|
Membre confirmé
![]() Inscription : février 2008 Messages : 191 ![]() |
Citation:
Citation:
C'est très différent, et je crois que c'est l'ignorance ou l'incompréhension de ce concept qui fait que beaucoup de développeurs critiquent le JS. C'est sûr que si on essaie de faire du Java-like en JS, on rencontre de nombreux problèmes. Parce que ce n'est tout simplement pas fait pour ça.
__________________
11001.00101.10010.10000.00111 |
||
|
|
41
|
|
|
#28 |
|
Futur Membre du Club
![]() Inscription : janvier 2011 Messages : 23 ![]() |
Et dire qu'il y a encore des applications tournant sur IWS / SSJS
IWS : iplanet web server (Netscape) SSJS : server side javascript (Netscape) j'aimais bien l'iterfacage avec JAVA avec les objets LiveConnect |
|
|
00
|
|
|
#29 | |
|
Nouveau Membre du Club
![]() Inscription : mai 2006 Messages : 7 ![]() |
Citation:
De la même manière que l'on télécharge une application bureau de n'importe quel serveur, il est normal que les scripts viennent de quelque parts. Le fait est que le serveur ne fait que les stocker et ne fait rien d'autre à part les fournir aux navigateurs qui les demandent. On pourrai même utiliser un serveur externe pour cette tache (e.g. Amazon). |
|
|
|
21
|
|
|
#30 | ||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
Citation:
Citation:
|
||
|
|
03
|
|
|
#31 | ||
|
Membre confirmé
![]() ![]() Inscription : octobre 2010 Messages : 165 ![]() |
Citation:
Sinon je rejoins les avis de jason42 et nouknouk sur les qualités de JavaScript Citation:
|
||
|
|
11
|
|
|
#32 | |
|
Nouveau Membre du Club
![]() jason Développeur informatique Inscription : décembre 2012 Messages : 16 ![]() |
@p3ga5e
Citation:
Comment fais tu pour "encrypter" du code cote client ? (Je n'ai jamais été confronté à ce genre de chose car moi je fais la plupart du temps des webservices (API REST) ou web-socket.) |
|
|
|
00
|
|
|
#33 | ||||
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 18 087 ![]() |
Citation:
Citation:
D'une part, this ne peut pas valoir null. Si tu fais un alert(this) dans la console du navigateur, ça t'affiche [object Window], si tu fais un console.log(this) dans Node, tu obtiens {}. Ensuite, si tu connais un peu le fonctionnement d'un callback et le mécanisme asynchrone de JavaScript, tu es sensé pouvoir savoir à quoi correspond this quand tu l'utilises, mais il faut surtout comprendre que cette valeur n'a pas le même comportement que dans d'autres langages. Pour ce qui est de l'encapsulation, là aussi, elle est faisable (et facilement même) en JavaScript : Code :
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
||||
|
50
|
|
|
#34 | |
|
Membre confirmé
![]() ![]() Inscription : octobre 2010 Messages : 165 ![]() |
Citation:
Désolé de t'avoir créé une fausse joie
|
|
|
|
11
|
|
|
#35 | ||||||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
A propos de this
Citation:
Citation:
Voir l'explication dans le code ci-dessous pour éclairer mes postes précédents. Code :
Code :
Du coup beaucoup de traitement sur la qualité et le traitement des bug qui sont implémentes dans les habituels moteur de compil ne sont pas présent et par conséquent ils doivent être fait manuellement la plupart du temps ce qui est une source de bug. Autre source de BUG la pseudo encapsulation du js Impossible de protéger (private) un attribut même avec le mot clef. Source de bug à foison. |
||||||
|
|
03
|
|
|
#36 | |||
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Citation:
Un marteau n'est pas un mauvais outil en soi bien qu'on puisse s'en servir pour tuer quelqu'un. Même principe ici. Citation:
Ce serait un défaut du lanage si JS ne permettait pas de définir des variables avec des portées distinctes, mais ce n'est absolument pas le cas: il suffit de savoir qu'une variable, en Javascript, ça se déclare avec "var maVariable", et JS propose l'ensemble des notions de portée qu'il faut. Citation:
Pour rappel, un attribut private ou public ça n'a pas de sens au niveau du code exécuté ; un attribut est un attribut, point barre. Ca n'a de sens que comme garde fou imposé par le compilo d'un langage qui propose ce genre de 'feature' pour empêcher le codeur peu rigoureux de faire n'importe quoi.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|||
|
|
40
|
|
|
#37 | |
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
Citation:
Avec le C/C++ on fait des OS , des moteurs 3D ... les possibilité quasi infini offerte peuvent être un gain pour le performance (passage par ref ou par copie, gestion de la parallélisation, Multi Threading, Modèle de compilation spécialiser ,surcharge d’opérateur... ) avec aussi tout un lot d'emmerde qui va avec (Surtout avec le modèle de compilation spécialiser et la surcharge d’opérateur). avec le Javascript on manipule surtout d'autre API (souvent en C++) on est toujours en bout de chaine. Je trouve cela très regrettable de ne pas inclure le minimum de qualité attendu de la part du compilateur. Il y a qu'a voir Dart ou AS 3 (ou plus éloigné C#, Java, PHP). C'est la seule voie retenue par les leaders de l'industrie est celle la http://fr.wikipedia.org/wiki/Classe_%28informatique%29. Il est tellement plus rationnel de gérer les un maximum de problème via le compilateur plutôt que de le laisser au développeur. C'est le pourtant les développeurs qui devrait être le plus outillé avec des outils informatiques qui les aide à produire. Tous les "grands" pousse pour ce modèle pour les ECMAScript http://fr.wikipedia.org/wiki/ECMAScript mais bon ils poussent pas tous exactement vers la même direction. L'ultra permissivité du Javascript n'est pas une feature mais la conséquence d'un héritage malheureux. Elle n'apporte rien d'autre que des soucis. Après ça ne fait que 14 ans que je bosse avec c'est pas peut être pour ça que je vois encore des défauts. |
|
|
|
05
|
|
|
#38 | |
|
Nouveau Membre du Club
![]() jason Développeur informatique Inscription : décembre 2012 Messages : 16 ![]() |
Javascript a ses defauts, comme tous les langages.
tu reproches a javascript son manque d'evolutivité, d'autres y verraient de la stabilité. c'est plus facile de forker le javascript, si on veut le corriger, sinon on risque fort (surtout les exemples que t'avais cité a propos de this) de ne pas être retro-compatible; c'est pourquoi il est preferable de passer par des modules tiers, ou autres. Comme Coffeescript (qui corrige une bonne partie de ce que tu reproches, mais qui introduit une etape de compilation) Citation:
par exemple en C++, depuis combien de temps parle t-on de remplacer include (qui provoque un temps de compilation enorme), ce n'est pas aisé (ni standardisé il me semble) de faire de la reflexivité/introspection en C++. en Java j'aimerais pouvoir capturer l'environnement lorsque je fait une innerClass (principe des closures en JS). Tous ces langages n'ont pas les avantages des langages fonctionnelle, comme Ocaml (qui est français cocorico Tout ce qui manque a JS en POO il le "rattrape" en fonctionnelle. |
|
|
|
21
|
|
|
#39 | |
|
Membre confirmé
![]() ![]() Inscription : octobre 2010 Messages : 165 ![]() |
Citation:
A cela j’ajoute que les applications multi-threadés génèrent nombre de bug de type "deadlocking", la correction de ces bugs accéléraient le transit intestinal du plus constipé des développeurs. ![]() Bref étant un deadlockingphobe , travailler sous Node est quasi thérapeutique , ça m’a même été prescrit par mon médecin traitant Plus sérieusement, j’ai, avec mes collègues développeurs, récemment convaincu ma direction de migrer du Framework .Net de Microsoft à Node.js. La démonstration a été faite en réécrivant totalement une application, sous Node en moins de 4 jours, d’un code en C# multi-threadé en cours de débogage depuis plus 2 ans, cette application pilote une connerie de capteur laser qui répond dans le désordre et de manière totalement aléatoire a la série de commande qu’on lui assigne, générant ainsi de nombreux bugs de deadlocking en C#. Certe il y a eu, dans le premier temps de bug sous Node, mais ils ont tous été identifier et corriger en moins de 10 minutes contrairement à l’implémentation C#. Bien que mon entreprise n’a rien avoir avec les "grands" de ce monde, cette migration concerne des applications critique, du tracking sur signal RADAR, thermique et vidéo , Cela nécessite un autre point que tu as soulevé : le parallelisme Sur ce point Node.js est un poil en avance sur les navigateurs car il dispose d’une implémentation WebGL (dispo, également sur le navigateurs, sauf IE ) mais également d’une implémentation de WebCL , que j’espère être rapidement implémenter sur les navigateurs Concernant, la surcharge d’opérateur, tu as pointé du doigt l’énorme lacune du langage JavaScript, avec la surcharge d’opérateur ou du moins l’implémentation arithmétique matricielles cela me permettrais d’utiliser des scripts matlab directement en JavaScript … le pied ^^ ![]() Personnellement, j’ai misé gros sur la place du JavaScript coté traitement, si je me trompe je serai rapidement au chômage … mais je suis plutôt confiant … |
|
|
|
41
|
|
|
#40 | |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Citation:
Et s'ils ont raison dans ce cadre là (typiquement celui d'un serveur web, voir d'un serveur tout court), le monde de l'informatique n'est pas composé QUE de ce type de besoin, loin de là.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com