[Node.js] - Est-ce que ce langage à un quelconque intérêt ?

Parce qu'il en faut pour tout le monde, discutez ici d'ADA, de shell et autres Wolfram...

Modérateur : Francois

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par Artemus24 » mer. 10 avr. 2019 13:50

Salut à tous.
Bud Spencer a écrit :ps: tu peux me tutoyer. Des 'vous monsieur', je bouffe toute la journée au boulot et ca me suffit bien. Rassure toi, je ne le prendrais pas pour de la familiarité mais simplement pour de la convivialité.
J'ai été éduqué ainsi où le vouvoiement est devenu une habitude afin d'être respectueux envers mon interlocuteur.
Je ne sais pas trop pourquoi, le vouvoiement dérange certaines personnes.
Inversement quand une personne, que je ne connais pas, me tutoie, ça me parait étrange, bizarre. C'est plus une question d'habitude qu'autre chose.
Bud Spencer a écrit :Non non, je voulais bien dire une multitude de taches différentes dans un même thread.
On ne doit pas avoir la même définition de ce qu'est une tâche et un processus.
Un processus ou daemon est ce qui s'exécute en arrière plan et que l'on voit en faisant un TOP. On les identifie par le PID (Process Identifier).

Une tâche ou fil d'exécution ou thread est une unité d'exécution indépendante.
La différence avec un processus, est qu'une tâche n'a pas de mémoire puisqu'elle utilise celle du processus.
Autrement dit, une tâche est toujours rattachée à un processus.
La tâche possède sa propre pile d'exécution et est donc indépendante des autres tâches.

Tâche ou thread, pour moi, ce sont des synonymes. Une tâche père peut déclencher une multitude de tâches fils au sein même d'un processus.
La désignation de synchrone ou asynchrone dépend comment on va gérer toutes ces tâches.
Il est vrai que j'ai tendance à faire du synchrone, c'est-à-dire que la tâche père se termine quand toutes les tâches fils se sont terminées.
Et par asynchrone, je n'attends pas que la tâche fils se termine pour terminer celle du père.

Votre remarque me parait bizarre dans le sens que vous désigner cela comme une qualité de Node.js alors que cela existe couramment en 'C/C++'.
Ou alors, je n'ai pas compris ce que vous entendez par asynchrone.
Bud Spencer a écrit :Entendons ici taches comme des opérations ou des procédures distinctes.
Ce ne sont pas des procédures, mais bien des unités d'exécutions. La comparaison est mauvaise.
Bud Spencer a écrit :Et bien tu te trompes lourdement. Que tu fasses du multithreading, du multitasking, du multiprocessing, du parallélisme, tu ne feras toujours que partager du temps processeur(s) entre des taches qui sont SYNCHRONES ce qui n’a absolument rien à voir avec spécificité de NodeJS qui est lui NATIVEMENT ASYNCHRONE et par définition fait exactement l'inverse en partageant son temps LIBRE entre des taches asynchrones.
Je ne comprends votre définition de l'asynchrone. Les tâches peuvent-être synchrones ou asynchrones. Pourquoi voulez-vous qu'elles soient toujours synchrones ?
Bud Spencer a écrit :Tout le reste étant directement lié a ca, pas besoin d'y apporter de commentaires.
A moins que vous faites la confusion entre tâche et processus puisqu'un processus est toujours asynchrone à l'inverse des tâches qui peuvent être synchrone ou asynchrone.
Pour gérer les processus, on utilise des files d'attentes, et si l'on veut que cela soit synchrone, on utilise les sémaphores.

Peu importe, on ne va pas se fâcher pour une divergence de définitions.
Bud Spencer a écrit :Pas de problème et comme je suis généreux Je double la mise.
Merci pour votre exemple que j'apprécie grandement.

Je vois que vous utilisez "var rpio = require('rpio');". par ailleurs, j'ai vu cela : "var Gpio = require('onoff').Gpio;".
C'est quoi la différence ? Je suppose que l'une des ces bibliothèques est plus fournie que l'autre.
Bud Spencer a écrit :Ce que tu vas devoir apprivoiser ce n'est pas ca mais bien l'asynchronisme fondamental que tu ne connais visiblement pas encore.
Si si, je connais l'asynchrone, mais je pense que l'on ne parle pas de la même chose.
Bud Spencer a écrit :Si vous pensez avoir des méthodes plus facile plus belle moins lourde plus rapide ou moins n'importe quoi, arrêtez d'en parler dans le vide. Faites en concrètement la démonstration comme je l'ai fait et tout le monde en profitera.
Je n'ai aucune prétention et je suis encore moins un donneur de leçon.
Je débute en électronique et quand j'aurai compris ce que j'essaye de faire, j'en fera part en créant un sujet.
On pourra alors complexifier le sujet à outrance.
Peut-être que je parle de trop. :oops:

Merci pour votre intervention qui est très enrichissante.

Cordialement.
Artemus24.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par Bud Spencer » mer. 10 avr. 2019 17:40

rpio et onoff sont juste des packages npm différents (pakage npm, bibliothèques …, on parle de la même chose). Perso, j‘utilise plutôt rpio, mais il y en a d‘autres.

Très bien, vus que l’on parle de NodeJS, oublions toutes ces histoires de thread et de processus multiples qui ne nous mèneront nulle part puisque NodeJs n’en a pas besoin du fait qu’il est monothread et asynchrone ….

Moi je dis : grâce à son asynchronisme, NodeJS permet de faire avec une facilité déconcertante des choses qu'il serait beaucoup plus complexe à mettre en œuvre avec d’autres langages.

Tu me réponds : Votre remarque me parait bizarre dans le sens que vous désigner cela comme une qualité de Node.js alors que cela existe couramment en 'C/C++'.

Ok. Puisque l'on est entre développeurs avertis, le meilleur moyens de lever toutes ambiguïté d'interprétation, c'est d'écrire du code. Voilà l’exemple des leds que j’ais simplifié en les remplaçant par de simples booléens qui s’affiche en console. Et a coté la sortie obtenue.

expl.png
expl.png (61.4 Kio) Vu 4912 fois
A toi de me démontrer par du code comment tu résous ce simple exercice couramment en c et en c++

ps par simple esprit de culture générale:
Artemus24 a écrit :
mar. 9 avr. 2019 17:08
Je connaissais ce principe qui a été élaboré pour la première fois avec le langage pascal.
L'origine c'est le bcpl (avant le pascal) qui comme chacun sait est l'inspiration du B qui n'est autre que l'inspiration du ... C :lol:
Modifié en dernier par Bud Spencer le jeu. 11 avr. 2019 09:08, modifié 3 fois.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par destroyedlolo » mer. 10 avr. 2019 18:25

Salut,
Artemus24 a écrit :
mar. 9 avr. 2019 20:25
destroyedlolo a écrit :Non : JIT signifie généralement qu'il convertis le code en binaire natif comme le ferait un compilo C.
Je ne connaissais pas le terme JIT. J'ai fait une recherche sur le net et j'ai trouvé ceci :
--> Compilation à la volée

Puis dans la description, j'ai lu :
Dans un système dit bytecode-compilé (anglicisme de bytecode-compiled), le code source est compilé à l'avance ou à la volée (lors de l'exécution) dans une représentation intermédiaire, le bytecode. On dit du bytecode qu'il est portable entre différentes architectures. Ce bytecode est ensuite interprété ou bien exécuté par une machine virtuelle, pour dans tous les cas, exécuter le programme.
et cela m'a rappelé le langage pascal entre autre la version pascal UCSD qui tournait sur des Apple II+.

Par "compilation à la volée", je comprends juste avant le moment où l'instruction va être exécuté.
C'est différent du Pascal où il y a bien une compilation, comme en 'C/C++'.
La différence est que le pseudo code doit être interprété car celui-ci n'existe pas en tant que tel sur la machine.
N'empêche que même s'il existe une compilation de l'instruction, cela reste quand même plus lent que du 'C/C++'.
Et bien non :)

La partie importante était :
Dans le domaine de la programmation informatique, la compilation à la volée, aussi connue sous le nom de traduction dynamique (just-in-time compilation ou JIT compilation en anglais), est une technique visant à améliorer la performance de systèmes bytecode-compilés par la traduction de bytecode en code machine natif au moment de l'exécution. La compilation à la volée se fonde sur deux anciennes idées : la compilation de bytecode et la compilation dynamique.
C'est pourquoi certains s'échinent a faire croire que certaines JVM qui font du JIT arrive a atteindre les mêmes performance qu'un programme en C (car un binaire natif s'execute plutot qu'un bytecode) ... en passant sous silence tout ce qui est perdu par la gestion calamiteuse de la mémoire par leur infame GC qui a rendu dingue plus d'un admin.

Après JIT ou pas JIT dans NodeJS, j'en sais rien je n'ai pas vérifié et NodeJS va suffisamment vite pour ce que j'en fait :mrgreen:
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par Artemus24 » ven. 12 avr. 2019 11:03

Salut à tous.

Merci pour votre participation fort intéressante.
J'attends avec impatience ma commande de chez Kubbi qui est partie hier.
Je commencerai les premiers tests en électronique, en faisant le classique "blink" à savoir "faire clignoter une led" que je poursuivrai avec d'autres tests.
Tout ce que j'espère est de ne pas griller ma raspberry par une fausse manœuvre.

Quand j'aurai fait mon premier test, je donnerai le résultat dans le forum consacré au 'c/c++'.

Cordialement.
Artemus24
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

destroyedlolo
Raspinaute
Messages : 1583
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par destroyedlolo » ven. 12 avr. 2019 15:18

Salut,

Comme je le disais précédement, hormis attaquer un circuit vraiment spécifique, le mieux est encore de passé par SysFS : tout ce que tu (vous :) ) y fera sera compatible avec les nombreux autres SBC du marcher.
Utiliser la wiringPI nécessiterait qu'évidement elle y soit portée, Utiliser le bmc machin est encore pire car il me semble réservé uniquement à la Framboise.

Sinon, pour protéger mes PI des fausses manoeuvre je passe que faire se peu par des "expendeur" de bus soit en I2C, soit surtout en 1-wire.

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [Node.js]Est-ce que ce langage à un quelconque intérêt ?

Message par Bud Spencer » ven. 12 avr. 2019 23:15

Et mon petit exemple de 2 lignes de javascrit qui se résout couramment en c et c++, on le résout comment ?

Le problème de la théorie, c’est que ça résout tous les problèmes couramment, mais juste en théorie ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Autres langages »