Perchè NodeJS ?

di il
30 risposte

Perchè NodeJS ?

Salve a tutti,
scrivo qui perchè è una domanda che è da un po che mi gironzola nella testa ...
Non riesco proprio a capire il perchè si sono sognati di creare cose come node.js , che a quanto ho capito servono per creare ipertesti (anche se le chiamano app ) scrivendo quello che si scrive con asp, jsp, php, coldfusion e altri ancora, in Javascript .... quale vera utilità ha?
Puoi fare n chiamate asincrone chiamando una "server:porta" dal codice al posto di chiamare "server/pagina" ?

Domande mi sorgono perchè, essendomi un po isolato dal mondo web, quando mi sono riaffaciato ho scoperto che ci sono aziende che cercano esperti di angularJS ... che è nato poco tempo fa ma ha talmente tanti difetti che i pochi esperti che ci sono gia stanno migrando ad altra tecnologia ... e un'altra decina di librerie del genere, che dicono di creare app web in javascript usando strutture MCV ... (Cosa che trovo contorta in quanto esiste gia il DOM html come rifermento degli oggetti)

Io so che una pagina ipertestuale ovvero HTML ha bisogno di Javascript per le interazioni di calcolo e richiamo e di CSS per le interazioni dell'aspetto, C'è un lato client (browser), e un lato server (APACHE, IIS ... altri ).
Ora si stannno diffondendo carrozzoni di librerie che dicono di velocizzare il caricamento delle pagine aumentando la mole di dati e i cicli di clock dei processori per fare le operazioni più semplici; tipo per caricare una pagina di presentazione (scusate landing page ) basta un file html, con un foglio di stile, qualche immagine, magari con effetti di presetaizone usando javascript o i mitici CSS3 , ma no ora ti propondono NODE.js che apre una porta sul server in ascolto per far processare un codice javascript che crea una codice HTML, e dell'altro Javascript che verrà spedito al browser del client che ricompilerà quel codice HTML, richiamando i CSS coi javascript dopo ... Sarà che a me sembra uno spreco di risorse anche più di quello che si faceva creando i siti interamnete in flash ...

30 Risposte

  • Re: Perchè NodeJS ?

    Alcune motivazioni le puoi trovare su pagine come questa... poi ovviamente tutto è opinabile.

    https://blog.xervo.io/top-10-reasons-to-use-nod

    Allo stesso tempo mi rendo conto che esistano anche le mode, e Node.js è sicuramente assai in voga di questi tempi, così come lo è Rails... poi magari salta fuori qualcosa d'altro e nel giro di 5 anni nessuno usa più nè l'uno nè l'altro... io penso che ognuno debba scegliersi gli strumenti con cui lavora meglio, chiedere la conoscenza di uno strumento come angularJS da parte di un datore di lavoro mi sembra un po' restrittivo.
  • Re: Perchè NodeJS ?

    Ciao Ale,
    Su NodeJS non metto bocca (mai visto come linguaggio anche se ne ho sentito parlare).

    Per quanto riguarda invece AngularJS, non sono proprio d’accordo (ovviamente è un mio pensiero). Se vuoi realizzare una web-app con tanto di “MVC” puoi evitare l’uso di framework “complessi e pesanti” a differenza di Angular (facile da configurare visto che si tratta soltanto di un file.js). Puoi fare il binding bidirezionale (che gli altri framework se lo scordano) e creare applicazioni “single page” con poche difficoltà. Poi è supportato da Google
  • Re: Perchè NodeJS ?

    Mi sa che angualarJS è il framework più utilizzato da chi si è diplomato o laurato copiando le risposte!
    Perchè è complessimo da imparare, la struttura MVC in una interfaccia per cellulare (o APP), è inutile!
    Appena è uscito, ne hanno fatto un'altra versione chiamata angular2 che ha abbandonato MVC!
    L'aggiornamento successivo angualr3 è andato in malora per i troppi conflitti di aggiornamenti d codice che ci sono stati!
    Angualar4 che sarà molto differente sia dal primo che dal secondo uscirà a breve!
    Chi usa angualr è bravo a copiare! ovvero è un piano di lavoro ideale per i Programminkia!

    Node.JS non è nu linguaggio di programmazione ma un programma che permette di montare un webserver (tipo apache) al volo e che crea gli ipertesti dinamici col javascript!
  • Re: Perchè NodeJS ?

    Ciao Folle Calzolaio,
    se vuoi vedere un fito fatto completamente con angualr, guarda quello di *********
    per dire, ci mette un'ora a caricare, a casa con una connessine con ADSL linea buona.
    Da Firefox, non riesco a compilare i form perchè si incrocchia richiamando non so cosa ad uno nuovo focus.

    binding bidirezionale (che gli altri framework se lo scordano) Forse se nessuno l'ha mai sviluppato da 20 anni a questa parte è perchè non è un funzionamento ottimale, a meno che non navighi in una LAN in fibra ottica e hai server e router della NASA.

    La comodità di realizzazione spesso si scontra con l'efficienza del risultato.
  • Re: Perchè NodeJS ?

    Premetto che io sono prevalentemente un programmatore c/c++ e haskell da ormai 20 anni e di programmazione web mi occupo da poco tempo in alcune aziende molto grandi, però per quello che ho potuto vedere Node.js ha tanti punti a favore. Prima di tutto permette sviluppare full stack in javascript che a mio parere è un linguaggio estremamente espressivo e poi, non da poco, permette cose come le closure e la programmazione funzionale quasi stile ocaml per capirci. Ed è programmabile anche in c++. Poi Node lavora benissimo sia come application server e al contempo come web server anche se, pensa, è single process e single thread, questo è possibile grazie al meccanismo delle promise che rende la programmazione server side estremamente efficiente. Inoltre avere un sistema full stack javascript permette di uniformare i dati che viaggiano sulla rete, in tanti modi in primis usando api rest come fanno ad esempio ormai tutti gli antivirus per gli aggiornamenti, rendendo tutto un json, che non è male se pensi che usando un database NoSql (che ormai usano tutti, a partire da Facebook) come MongoDb, avresti uniformità nella gestione dei dati a ogni livello anche di database visto che i database a documenti come mongodb usano schemi json e non relazionali. Aggiungiamo che permette di liberarsi di php che ormai insieme a Java e la odiosa jvm è in Via d'estinzione nelle grandi (molto grandi) aziende (almeno da quello che ho visto io dal vivo). E poi in fine ha un ecosistema di librerie che si chiama npm che è il più grande del mondo al momento, battendo anche python. Che altro... È veloce e efficiente, in termini di sviluppo, hardware richiesto per l'infrastruttura server e scalabilità, fa anche il lavoro di apache o iis che altro serve?? . Io credo che il futuro vedrà node.js e lo stack mean, o magari meglio mevn (vue.js è molto più scalabile e comodo di angular), la programmazione funzionale e il webassembly come i tre principali attori del mercato server, web e mobile in generale. E si vede dal numero di progetti su github.com. E se ne sono accorti anche a Microsoft, basta pensare alle add-on functional style del dot net (e il suo creatore è un tipo in gamba, è lo stesso che creò il Borland TP e la VCL) o pensa a l'esperienza F# o ancora meglio se cerchi documentazione su node sul sito di Microsoft per accorgertene.
  • Re: Perchè NodeJS ?

    Ah dimenticavo, aleweb ti volevo dire che spesso gli esempi di base di node.js mostrano pagine statiche create usando jade o ejs e spedite tramite node.js. Se fosse così è facesse solo quello la tua affermazione sarebbe corretta ma Node non è quello, quelli sono esempi del cavolo, node è molto molto molto di più come ho spiegato nel commento prima.
  • Re: Perchè NodeJS ?

    Terzo commento, scusa mi vengo in mente dopo le altre cose, anche se io credo che vue.js sia molto meglio, angular fa paura, tanti siti VELOCI sono fatti con angular, quello di udemy, autodesk, GoPro (telecamere), YouTube per alcuni dispositivi mobili e per play station, MIT press, Sony picture store, Microsoft support, telegram web, il sito del NASDAQ!!! E tanti altri siti, quindi non che è lento o vecchio, è pauroso, veloce e potente, ma poco scalabile per i miei gusti. Appunto, io preferisco vue.js
  • Re: Perchè NodeJS ?

    Itakin ha scritto:


    ... rendendo tutto un json, che non è male se pensi che usando un database NoSql (che ormai usano tutti, a partire da Facebook) come MongoDb, avresti uniformità nella gestione dei dati a ogni livello anche di database visto che i database a documenti come mongodb usano schemi json e non relazionali. ...
    Non ho capito un granchè di quello che c'è scritto, me lo puoi spiegare meglio?

    Grazie.
  • Re: Perchè NodeJS ?

    Ciao a tutti sono nuovo del forum! Anche secondo me nodejs è ottimo.

    +m2+ io credo si riferisca al fatto che per scambiare dati da client a server e da server a database serva sempre un minimo di pre-elaborazione, invece usando node+mongo praticamente hai a che fare sempre e solo con JSON. Dalla definizione dello schema del database che in mongo è praticamente un JSON, fino alla comunicazione con il client specialmente quando usi un interfaccia restFull o socket.io.  Si crea una uniformità totale nel formato dei dati che orbitano intorno all'applicazione. E poiché si usa javascript hai la comodità che il JSON è direttamente usabile dal codice di client e server immediatamente, puoi seriazzare, spedire, storare dati/oggetti ecc tutto con lo stesso formato processato da javascript proprio perché JSON è javascript. Mi sembra molto meglio di usare altro come un xml soap.

    Itakin anche io credo che il futuro sia la programmazione funzionale. Ma hai studiato a Pisa? Te lo chiedo perché noi della vecchia guardia di una quindicina d'anni fa a Pisa eravamo tutti ocaml dipendenti volenti o nolenti e non conosco altri che apprezzano ocaml.
  • Re: Perchè NodeJS ?

    FabioBuono ha scritto:


    +m2+ io credo si riferisca al fatto che per scambiare dati da client a server e da server a database serva sempre un minimo di pre-elaborazione, invece usando node+mongo praticamente hai a che fare sempre e solo con JSON. Dalla definizione dello schema del database che in mongo è praticamente un JSON, fino alla comunicazione con il client specialmente quando usi un interfaccia restFull o socket.io.  Si crea una uniformità totale nel formato dei dati che orbitano intorno all'applicazione.
    Direi proprio di NO, anzi esattamente il contrario.
    A mio parere c'è una non-conoscenza di mongo, che è mooolto ma moooolto diverso (utilizzandolo davvero, in produzione intendo, per progetti "veri"), rispetto a quello che si "pensa" o "immagina" leggendo 4 sciocchezze su internet o facendo progettini minuscoli.
    Mongo (e i vari nosql simili) vanno bene solo, e solamente, in pochissimi scenari, e per trattare dati di modesta importanza.
    Certo, fa "fico" dire "io uso NoSQL, che è ben più fico di SQL normale", senza sapere però minimamente di cosa si sta parlando.
    Lo dico come costatazione, non con intento denigratorio.
    E poiché si usa javascript hai la comodità che il JSON è direttamente usabile dal codice di client e server immediatamente, puoi seriazzare, spedire, storare dati/oggetti ecc tutto con lo stesso formato processato da javascript proprio perché JSON è javascript. Mi sembra molto meglio di usare altro come un xml soap.
    Se il motivo per usare mongo è json, direi che vale quanto scritto prima.
    Itakin anche io credo che il futuro sia la programmazione funzionale.
    Io invece non credo proprio.
    Anzi direi che rimarrà tutto come oggi: procedurale forever, con quale "accrocchio" ad oggetti.
  • Re: Perchè NodeJS ?

    Su affermazioni del genere
    in javascript che a mio parere è un linguaggio estremamente espressivo
    si potrebbero aprire flame e flame di ogni genere e tipo.
    diciamo che javascript è un accrocchio dilettantistico, poi (come tante tecnologie di internet) "esploso" in modalità inflazionaria fino a diventare standard universale.

    resta il fatto che (come linguaggio in sè) è davvero ridicolo per il 2018.
    stessa cosa si può dire di PHP (il peggio del peggio che comunque fa funzionare il mondo intero, volenti o nolenti) etc.etc, non voglio "offendere" i vari evangelisti-javascript
  • Re: Perchè NodeJS ?

    Non sono molto d'accordo, anche ocaml o lisp sembrano linguaggi del cavolo ma ci si fanno applicazioni mission critical e molto altro. Allo stesso modo javascript nel suo essere estremamente facile permette di fare cose molto complesse e non banali, si può fare tranquillamente programmazione di ordine superiore e per certi aspetti quasi programmazione funzionale. Che è molto usata, pensa al nucleo di autocad, di mathlab, e così via... Ovviamente parliamo di javascript moderno e non di javascript inteso come quell'insieme di piccole routine che erano usate per per animare le pagine web d'un tempo. Quindi anche per me il futuro è funzionale, perché già ora il paradigma funzionale sta entrando ogni giorno di più. Anzi direi che il futuro è funzionale e asincrono. Chiaramente stiamo parlando di realtà aziendali grandi, come diceva Itakin, anche Microsoft ha introdotto un linguaggio funzionale in visual studio, il F#. E moltissimi linguaggi stanno adottando piccole nozioni che vengono dal paradigma funzionale. Se parliamo di piccole realtà questo non varrà per almeno sette o otto anni.

    Per quanto riguarda mongo e i database NoSql in generale, è il contrario, ci lavorano aziende enormi, guarda questa lista
    https://www.mongodb.com/who-uses-mongod
    E questi sono solo gli utenti mongodb,
    Facebook per esempio usa questo

    Insomma i fatti dicono che i NoSql sono e saranno sempre più usati.

    Però è certamente vero che javascript non sembra un linguaggio tanto espressivo e quasi nessuno lo usa davvero in modo tale. Ma il problema non è del linguaggio ma del fatto che è usato da tanta gente che non sa usarlo. Anche lisp, quello originale non sembra espressivo e potentissimo a un'occhiata poco attenta.
  • Re: Perchè NodeJS ?

    FabioBuono ha scritto:


    Non sono molto d'accordo, anche ocaml o lisp sembrano linguaggi del cavolo ma ci si fanno applicazioni mission critical e molto altro...
    Del tutto marginali, di supernicchia
    Allo stesso modo javascript nel suo essere estremamente facile permette di fare cose molto complesse e non banali...
    Mah. Si possono fare cose complesse con qualsiasi idioma, perfino Fortran e Cobol. E' un mezzo, non un fine.
    per certi aspetti quasi programmazione funzionale. Che è molto usata, pensa al nucleo di autocad, di mathlab, e così via...
    Mah al quadrato. Di nuovo si tratta di supernicchie, una goccia nell'oceano
    Quindi anche per me il futuro è funzionale, perché già ora il paradigma funzionale sta entrando ogni giorno di più...
    Come dice Yoda è difficile prevedere il futuro: mi pare assai probabile cge non sarà altro che C, o cugini vari del C.
    Per quanto riguarda mongo e i database NoSql in generale, è il contrario, ci lavorano aziende enormi, guarda questa lista
    https://www.mongodb.com/who-uses-mongod
    E questi sono solo gli utenti mongodb,
    Facebook per esempio usa questo

    Insomma i fatti dicono che i NoSql sono e saranno sempre più usati.
    I fatti dicono che NoSQL, e mongodb in particolare, non serve/no praticamente a nulla, se non per ambiti superridotti e di nicchia.
    Un forum come questo, tanto per dire, non funziona con mongo.
    facebook usa mysql e "cugini vari" da una vita, così come wikipedia eccetera.
    ed ha richieste (facebook) del tutto banali, rispetto ad esempio a quello ryanair (ho appena prenotato un biglietto, lo menziono per questo motivo)

    Nessun sito che abbia il sia pur minimo requisito di consistenza usa, userà, potrebbe usare, nosql e mongodb in particolare.
    Insomma... è solo questione di conoscerlo, e usarlo, quando possibile e corretto. Cioè in 1 caso ogni milione.
    Però è certamente vero che javascript non sembra un linguaggio tanto espressivo e quasi nessuno lo usa davvero in modo tale. Ma il problema non è del linguaggio ma del fatto che è usato da tanta gente che non sa usarlo. Anche lisp, quello originale non sembra espressivo e potentissimo a un'occhiata poco attenta.
    Difficilmente si può sostenere che LISP abbia avuto successo, così come la programmazione funzionale e - addirittura - il mondo "a oggetti-finti" (C++, C#, Java)

    Sono le classiche "mode" che ciclicamente si vedono, almeno dal 1985.

    Difficilmente vedremo mai un kernel linux in Javascript, o un rsync in lisp.
    O un sito di booking di voli con mongodb.

    Come saprai mongo non fa nessun genere di join: anche solo mettere un collegamento in un documento json a "qualcosa di diverso", tipo banalmente l'elenco dei messaggi postati, è praticamente impossibile.
    Così come individuare univocamente gli elementi del blobbone JSON (cioè capire banalmente se i dati inseriti sono duplicati o no, insomma ri-normalizzarli).

    L'unico ambito in cui funziona bene è quello di memorizzazione di un documento json con una chiave di ricerca, e non si ha alcuna necessità di informazioni attendibilmente serbate.
    Fine.
    Per tutto il resto... è inutile (più precisamente deleterio).

    Ci si accorge di questo fatto non appena si usa mongodb per un qualche progetto non banale, con i suoi limiti enormi.
    In sostanza mentre con SQL "canonico" puoi fare grosso modo tra il 90% e il 100% di quello che puoi fare con mongo (a seconda dei casi), con quest'ultimo puoi fare lo 0,1% di quanto normale, banale con i "classici" RDBMS.

    Insomma attenzione al classico "fa fico, non so cosa significhi di preciso, "tutti" (mio cuggino?) dicono che è fico, quindi sarà fico per forza, lo usa pure facebook (!)".
    Buzzword, o snakeoil.

    Purtroppo anche ggente ipoteticamente formata, quando non conosce questi strumenti, incappa nell'errore devastante di usarli inappropriatamente.
    Per poi tornare a SQL "normale", o (nel caso) a Postgres col suo "ibrido-json" (per gli amanti di queste situazioni, cioè in sostanza chi non sa progettare abbastanza bene i db fin dall'inizio), che praticamente fa tutto quello che fa mongo, ma molto più affidabilmente
    ... o magari per andare di CassandraSE, cioè usando un RDBMS "cugino di MYSQL" (cioè mariadb) per fare tutto, TRANNE quello per il quale un cluster cassandra è più adatto (cioè pochissimo)
  • Re: Perchè NodeJS ?

    Lisp, Ocaml, Epsilon, haskell.... Sono usati da quelli che si vede, dipende sempre dal campo di lavoro, però sono strumenti potentissimi, ricordiamo che il paradigma imperativo fu inventato dal creatore di Fortran per rendere la programmazione più semplice ma lui stesso un anno dopo aver creato fortran si rese conto nel suo famoso articolo di quanto la sua creazione fosse meno espressiva e potente di quella preesistente.

    Riguardo i db a documenti, sono usati anche da Facebook e molte altre aziende.

    Ti basta leggere qui

    http://blog.outsourcing-partners.com/2012/10/why-nosql-database-is-used-by-facebook-google-and-linkedin-applications/

    E non capisco perché continui a dire che non è vero.??

    Poi il tuo essempio di un kernel scritto in javascript non ha molto sensa, un kernel non si può scrivere in un linguaggio interpretato a meno di non avere un layer con l'interprete, assurdo, ci hanno provato a fare qualcosa del genere al mit con exokernel ma sai com'è andata...

    Comunque io conosco pacchi di aziende che lavorano funzionale, e se cerchi annunci di lavoro non scarseggiano all'estero. Poi al di fuori del mero aspetto di quello che piace o non piace saranno il numero di progetti su github e soprattutto il tempo a dire cosa il futuro ci riserva. Ma per ora al TPF 2017 nell'università del Kent non sembrava molto diverso il punto di vista, cerca gli atti della conferenza. E tutti i siti che parlano di trend di programmazione dicono lo stesso ad esempio un sito a caso trovato al volo :
    http://yoppworks.com/8-predictions-of-future-programming-based-on-2017-trends/

    Comunque il post iniziale era su node.js... Anche lì sarà il tempo a dirci quanto è buono... Secondo me molto buono, ma si vedrà.
Devi accedere o registrarti per scrivere nel forum
30 risposte