Descrizione
Nelle ultime settimane ho studiato e sperimentato Deno, un modernissimo strumento per lo sviluppo di software. In questo episodio ne condivido gli aspetti che mi hanno colpito di più.
I link dell’episodio di oggi:
La playlist su Deno di Francesco Sciuti (Acadevmy) - https://www.youtube.com/playlist?list=PLUObSrzJKG13UValIbk2MQuKZRHCxxo2h
Deno - https://deno.land/
10 Things I Regret About Node.js - Ryan Dahl - JSConf EU - https://www.youtube.com/watch?v=M3BM9TB-8yA
What Is Deno and Why Is Everyone Talking About It? - https://www.jeremymorgan.com/blog/programming/what-is-deno/
What is Deno? - https://aws.amazon.com/it/blogs/opensource/what-is-deno/
——————————————
Sito ufficiale di Pensieri in codice - https://pensieriincodice.it
Attrezzatura:
Microfono Blue Yeti* - https://amzn.to/3kSE35f
Filtro anti-pop* - https://amzn.to/3baPMsh
Filtro anti-pop* - https://amzn.to/2MH0Wf1
Schermo fonoassorbente* - https://amzn.to/3sOZE0P
- Link affiliato: il costo di un qualsiasi acquisto non sarà maggiore per te, ma Amazon mi girerà una piccola parte del ricavato.
I miei progetti social:
Pensieri in codice - https://pensieriincodice.it
Canale Twitch - https://valeriogalano.it/twitch
Daredevel blog - https://valeriogalano.it/daredevel
Newsletter - https://valeriogalano.it/newsletter
Per essere aggiornati sulle novità:
Canale Telegram - https://pensieriincodice.it/canaletelegram
Profilo Instagram - https://valeriogalano.it/instagram
Profilo Twitter - https://valeriogalano.it/twitter
Per partecipare alla discussione:
Gruppo Telegram - http://bit.ly/joinPicTelegram
Servizi professionali:
Lezioni private su Docety - https://valeriogalano.it/docety
Consulenza professionale - https://valeriogalano.it
Sostieni il progetto
Sostieni tramite SatispaySostieni tramite Revolut
Sostieni tramite PayPal
Sostieni utilizzando i link affiliati di Pensieri in codice: Amazon, Todoist, Readwise Reader, Satispay
Partner
GrUSP (Codice sconto per tutti gli eventi: community_PIC)Schrödinger Hat
Crediti
Montaggio - Daniele Galano - https://www.instagram.com/daniele_galano/Voce intro - Costanza Martina Vitale
Musica - Kubbi - Up In My Jam
Musica - Light-foot - Moldy Lotion
Cover e trascrizione - Francesco Zubani
Mostra testo dell'episodio
Quella che segue è una trascrizione automatica dell'episodio.
Pensieri in codice. Idee dal mondo del software a cura di Valerio Galano. Salve a tutti e ben ritrovati su Pensieri in codice. Se siete assidui ascoltatori del podcast magari lo sapete già e se non lo sapete ve lo dico io adesso. Professionalmente parlando io mi occupo di sviluppo software ed in particolare di sviluppo di back-end in php. Tuttavia sempre se siete ascoltatori del podcast saprete anche che mi piace sperimentare nuovi strumenti e nuove tecnologie. Per questo motivo qualche settimana fa ho chiesto ai ragazzi del gruppo telegram di Pensieri in codice di suggerirmi una qualche tecnologia interessante da sperimentare per lo sviluppo di back-end. Tra le varie risposte, tutte abbastanza interessanti, quella che però mi ha colpito di più è stata quella di Gaetano che mi ha suggerito di sperimentare Deno. Da una rapida ricerca sul web infatti il prodotto mi è sembrato molto interessante e pertanto nei giorni successivi mi sono dedicato a studiarne la teoria e a fare qualche piccolo esperimento e quindi eccoci qui oggi per parlarne insieme in questo episodio. Ovviamente come nello spirito di questo podcast non è mia intenzione elencarvi semplicemente caratteristiche tecniche o tecnologie su cui è basato Deno, piuttosto vorrei provare a fare delle osservazioni personali e darvi le mie impressioni. Cercherò quindi di non scendere troppo nel tecnico ma di illustrarvi quella che secondo me è la filosofia di Deno, almeno per come l’ho capito io sempre tenendo presente che non sono certo un esperto. Se invece siete interessati a qualcosa di più tecnico in rete si trovano articoli abbastanza interessanti, ve ne metto qualcuno in descrizione e in particolare vi consiglio di andare a guardare i video di Francesco Sciuti del canale Academy che in pochissimi minuti vi daranno un’idea generale del funzionamento di questo strumento. Ovviamente già che siete lì mi raccomando iscrivetevi al suo canale che è molto interessante e sul quale trovate moltissimo materiale a tema sviluppo software, javascript, angular, interviste e molto altro. Mi raccomando iscrivetevi. Detto questo passiamo all’argomento di oggi. Iniziamo dunque col chiederci che cos’è in effetti Deno? Beh come riportato nella documentazione ufficiale Deno è un ambiente di esecuzione sicuro per javascript e typescript. Questi due linguaggi infatti, che poi non sono proprio due linguaggi sono uno all’estensione dell’altro ma non è importante in questo momento, sono dicevo linguaggi che inizialmente potevano essere eseguiti solo all’interno di browser e quindi sulle macchine client ma grazie ad ambienti di esecuzione come Deno, ma forse l’avrete sentito nominare come Node.js, è diventato possibile eseguire i linguaggi come javascript anche lato server quindi per lo sviluppo di backend, microservizi o altri prodotti del genere. Ciò ha dato la possibilità a moltissimi sviluppatori javascript che prima potevano lavorare solo in frontend di passare anche allo sviluppo lato server e quindi di backend e ovviamente con il sempre più massiccio utilizzo di questo ambiente di runtime, mi riferisco a Node.js, a poco a poco nell’arco di circa una decina d’anni sono venuti fuori un po’ quelli che erano i limiti progettuali iniziali. Per questo motivo lo stesso sviluppatore che nel 2009 aveva creato Node.js, nel 2018 ha annunciato la nascita di Deno con la dichiarata intenzione di sopperire a quegli errori e quelle mancanze che si sono rivelate in Node. Ora dopo un paio di settimane nelle quali ho potuto studiare la documentazione ufficiale e fare qualche esperimento, a mio modesto parere direi che l’obiettivo è stato pienamente centrato ma probabilmente non sono io la persona più adatta a fare una valutazione del genere. Per questo motivo come vi dicevo all’inizio piuttosto che soffermarmi nel fare una distinzione tra Node.js e Deno.js preferisco parlarvi di quello che io ho percepito utilizzando quest’ultimo. E dunque fin da subito ho percepito una particolare attenzione per tre aspetti. Il primo, come riportato praticamente dovunque nella documentazione, è la sicurezza che si concretizza in una serie di strumenti atti a proteggere l’ambiente, il server nel quale il software sta girando. Il secondo è la velocità di messa in produzione del codice. Iniziare infatti a scrivere un software con Deno è veramente rapido, ci sono veramente pochissimi passaggi da fare e si è subito pronti e operativi. Infine il terzo, e questo devo dire che mi ha sorpreso più di tutti, è una forte attenzione per gli sviluppatori. Utilizzare Deno infatti richiede quasi zero sforzo aggiuntivo, ovviamente rispetto allo sviluppo del software che stiamo producendo, e anzi in vari casi permette anche allo sviluppatore di non doversi preoccupare di alcuni aspetti dell’implementazione. Una volta però individuati i punti di forza di questo ambiente di esecuzione, mi sono chiesto come abbia fatto l’autore ad ottenerli, o anche come mai siano apparsi così evidenti ai miei occhi, e sono arrivato alla conclusione che Deno rispetto ai suoi predecessori faccia fondamentalmente tre cose, tre operazioni, potremmo definirli tre passi avanti, ed in particolare semplifica, esplicita e include strumenti. Ora vediamo subito che intendo per ognuno di questi passi, però è importante che teniate a mente che non c’è un legame diretto rispetto alle tre caratteristiche elencate nel blocco precedente. Piuttosto io ritengo che sia l’insieme di questi passi avanti che va a formare uno strumento il quale poi presenta le caratteristiche di sicurezza, di velocità di messa in produzione e di attenzione per lo sviluppatore. Cominciamo dunque dalla semplificazione. In che senso Deno semplifica? Beh nel senso che proprio diminuisce il numero di operazioni necessarie per sviluppare. Ad esempio supporta TypeScript in modo nativo e di default, quindi non c’è bisogno di fare inclusioni o configurazioni per chi desidera utilizzarlo. Un altro esempio è che gestisce autonomamente il download e l’installazione di eventuali dipendenze. Basta infatti specificare l’indirizzo di un package da utilizzare e alla prima esecuzione del software sarà Deno stesso a scaricarlo e installarlo. E ancora implementa e si impegna a mantenere il più possibile la compatibilità con i browser in modo che lo stesso codice scritto per il frontend funzioni esattamente senza modifiche anche nel backend. Ora questi sono solo alcuni esempi ma se siete sviluppatori vi renderete subito conto del fatto che tutti questi piccoli aiuti diciamo così allo sviluppo rappresentano in realtà una spinta in termini di velocità della produzione del software e al tempo stesso permettono anche una migliore esperienza per lo sviluppatore. La seconda operazione, che prima ho definito il secondo passo in avanti che fa Deno, è quello di esplicitare determinate operazioni e configurazioni. Questo rispetto a quanto abbiamo detto prima potrebbe sembrare un passo indietro cioè si dà al programmatore più lavoro da fare ma in realtà queste particolari esplicitazioni si trasformano in un vantaggio perché permettono allo sviluppatore di non doversi preoccupare di alcuni aspetti molto importanti fra tutti il primo è la sicurezza. Infatti il maggiore esempio di questa esplicitazione delle configurazioni si trova nel fatto che per permettere ad un qualsiasi software che gira in Deno di accedere a filesystem, connessioni di rete o ambiente nel quale sta girando è necessario specificare un speciale flag, un parametro, al momento dell’esecuzione del software. Ciò seppur richiedendo di specificare parametri in più dà il vantaggio di non doversi preoccupare di determinati aspetti di sicurezza, ad esempio nell’accesso ai file, se il proprio software non è proprio pensato per accedere ai file. E sempre nell’ottica della sicurezza anche un eventuale aggiornamento delle dipendenze deve essere eseguito in maniera esplicita, altrimenti di default ogni libreria verrà scaricata nel momento della prima esecuzione e non sarà più aggiornata a meno che non sia lo sviluppatore a volerlo. Ciò ha il vantaggio che una volta trovata una libreria stabile non si avrà il rischio di trovarsi con delle versioni differenti che potrebbero dare problemi di funzionamento o introdurre problemi di sicurezza. Infine il terzo aspetto innovativo di Deno è quello che include al proprio interno tutta una serie di strumenti. Infatti in un eseguibile che alla fine pesa circa 15 megabyte è possibile trovare non solo il motore di esecuzione del javascript ma anche strumenti come il Package Manager, un Dependency Inspector, un Framework di Test e persino il Debug e il Formatter del codice. Potrebbe sembrare banale, d’altronde questi sono tutti strumenti presenti per qualsiasi linguaggio o qualsiasi ambiente di sviluppo, ma l’aspetto interessante è che in Deno sono già tutti presenti all’interno dell’unico eseguibile necessario. Questo risparmia agli sviluppatori di andarsi a cercare strumenti esterni integrativi, di dover fare tutta una serie di configurazioni e ovviamente tutto ciò gioca in favore della velocità di produzione del codice e ovviamente dell’esperienza per lo sviluppatore. Bene, siamo giunti dunque alla fine di questo episodio. Io spero di essere riuscito a trasmettervi quello che ho percepito io utilizzando Deno e di avervi dato un’angolazione diversa rispetto a quelle che si possono trovare qui e là su internet. Ovviamente voi potete contribuire con la vostra visione, le vostre esperienze, sia con un commento, se la piattaforma che state utilizzando per ascoltare il podcast ve lo permette, ma anche e soprattutto nel gruppo Telegram nel quale si svolgono tante conversazioni interessanti e del quale trovate il link in descrizione. Non mi resta quindi che chiedervi, come al solito, di condividere il più possibile gli episodi in modo da far crescere il progetto e salutarvi e darvi appuntamento alla prossima settimana ricordandovi che un programmatore risolve i problemi, a volte anche usando il computer.Nascondi