...

Imparare a programmare in Javascript

Imparare a programmare in Javascript

Imparare a programmare in Javascript (parte 1).

Ti voglio raccontare, in questo articolo, la mia personale esperienza e dirti cosa penso a riguardo di imparare o meno a programmare in Javascript. Probabilmente avrai già sentito nominare il linguaggio Javascript (o JS), il più delle volte se ne parla “male”, non per cattiveria, ma per “ignoranza”.

Pensa che fino a qualche anno fa non veniva considerato neanche come un vero linguaggio di programmazione. Questo è falso.

La verità è che tutte le più grandi aziende mondiali informatiche considerano Javascript come il nuovo “messia” della programmazione. Non a caso è il linguaggio più richiesto tra le aziende innovative, le start-up e le Fortune 500.

L’obiettivo di questo articolo è quello di tenerti informato su quelle che sono le caratteristiche e le reali possibilità lavorative di un programmatore che apprende il linguaggio Javascript.

Programmare in Javascript

Sfortunatamente in Italia molti programmatori sono ancora fermi al 2006, quando nel mondo si difendeva l’utilizzo di jQuery (una delle tante “estensioni” di Javascript). Purtroppo molti programmatori non si sono resi conto che, negli ultimi dieci anni, Javascript è diventato, in molti casi, un linguaggio di punta.

Forse non sei a conoscenza che Facebook abbia scritto la sua applicazione per smartphone (Android e iOS) completamente in Javascript in maniera nativa (React Native). Esattamente la stessa app che anche tu hai installato nel tuo smartphone. Questa è una rivoluzione nello sviluppo mobile, avvenuta sostituendo linguaggi come Java (per Android) e Objective-C/Swift (per iOS).

PayPal, LinkedIn e Groupon utilizzano nei loro web server tecnologie Javascript (Node.js) con miglioramenti in velocità ed efficienza. E qui c’è moltissimo su cui parlare perché la rivoluzione ha toccato anche il mondo dello sviluppo web, sostituendo tecnologie lato server come PHP, Java o Ruby on Rails.

Microsoft ha creato il suo nuovo editor di testo per programmatori chiamato Visual Studio Code. Un programma tradizionale, un software per computer, che può essere installato indifferentemente su Windows, Mac o Linux. Indovina con quale linguaggio è stato scritto? Utilizzando un solo codice Javascript (Electron) che poi viene confezionato per i vari sistemi operativi. Sostituendo linguaggi per la creazione di software come Java o C#.

Javascript: scopriamolo

Javascript è un linguaggio di programmazione nato con internet. Il suo scopo iniziale era semplice: rendere interattive le pagine web.

Come vedi, facendo una ricerca su Google e scrivendo “steve jobs”, noterai che mentre digiti le lettere qualcosa cambia. Il box di ricerca, che prima sembrava così “statico”, prende vita e appare una finestrella con dei suggerimenti legati alla parola che si cerca. Questi testi sono stati aggiunti dinamicamente grazie al linguaggio Javascript.

Questo vuol dire rendere le pagine web più “interattive” – ma è solo uno dei mille esempi che si possono fare.

Da allora il nostro Javascript ne ha fatto tanta strada, fino ad arrivare alla creazione di applicazioni per smartphone, creazione di software (programmi), gestione di server e a tante altre parti che tra poco approfondiremo.

Javascript: perché impararlo

Rispetto ad altri linguaggi di programmazione è più semplice. Quindi Javascript è sicuramente quello più appetibile nei confronti di chi non ha mai programmato.

Programmare in Javascript mette nelle condizioni di non dover preparare alcunché prima di iniziare a sviluppare. Ogni browser è dotato di un Javascript Engine che permette di leggere e interpretare il codice attuandolo nel contesto di una pagina.

Tieni presente che il Javascript è un linguaggio interpretato e non compilato. Ciò vuol dire che il codice non verrà eseguito direttamente dal processore del tuo computer, ma passerà attraverso un software installato in tutti i browser e che si occupa di interpretare ed elaborare il codice.

Il messaggio che voglio passarti è che con il passare degli anni il Javascript sta diventando sempre più completo.

Le capacità che maturerai studiandolo potranno essere sfruttate per apprendere altri linguaggi come Python o Java.

1# Programmare in Javascript è facile?

Javascript è un linguaggio semplice, moderno e potente. E’ un moderno linguaggio di programmazione, definito di Alto Livello. I primi linguaggi di programmazione erano molto vicini al “modo di ragionare” del computer, il basso livello. Questo vuol dire che chi programmava in questi linguaggi doveva “pensare” come un computer.

Questo richiedeva ore ed ore di programmazione nel gestire complessi aspetti tecnici come, ad esempio: definire data segment, allocare zone di memoria, variare il codice in base all’architettura hardware e altri casi.

I linguaggi di alto livello invece cercano di allontanarsi dal modo di “ragionare” dei computer (il basso livello) per avvicinarsi al nostro. in questo modo puoi immaginare un codice, o un programma, e tradurlo immediatamente in qualsiasi linguaggio di alto livello, come Javascript.

E’ un enorme vantaggio per chi vuole imparare a programmare in Javascript ed inoltre renda la l’apprendimento veloce – WOW.

Capisci subito che puoi concentrare tutti i tuoi sforzi e le tue aspirazioni nei due punti più importanti per un principiante autodidatta:

  • Studiare la programmazione.
  • Sviluppare il tuo codice nel minor tempo possibile.

Ma c’è di più: Javascript è anche immediato da usare, perché puoi iniziare subito a programmare in Javascript senza dover installare nessun nulla di strano nel computer, senza nessun ambiente di sviluppo particolare.

Il fatto che Javascript sia molto semplice da eseguire, lo rende uno dei migliori linguaggi per chi vuole avvicinarsi allo studio della programmazione.

Quando inizi a programmare vieni spinto principalmente dalla curiosità e da una fortissima voglia di imparare cose nuove, almeno così è stato per me. Un linguaggio dovrebbe cercare di assecondare il più possibile questa voglia, e Javascript lo fa alla grande.

Devi sapere che nella programmazione esistono diversi “sitli” di programmazione (chiamati paradigmi) e che Javascript supporta tutti e tre i paradigmi di programmazione comunemente usati: la programmazione imperativa, la programmazione ad oggetti, ma anche la programmazione funzionale.

Quindi, Javascript è:

  • Facile da imparare e immediato.
  • Un linguaggio di alto livello.
  • Ottimo sia per principianti che per esperti.

2# Cosa posso fare con Javascript?

In realtà la lista delle “cose” che permette di fare Javascript è veramente lunga. Il motivo è che si sta diffondendo rapidamente in quasi tutti i maggiori settori, ed ora ti spiego il perché.

# Sviluppo web tradizionale

Javascript viene usato all’interno delle pagine per modificare gli elementi e renderli più “vivi”, più dinamici. Ogni pagina web è formata da due elementi:

  1. L’HTML che definisce la struttura della pagina: il titolo, i vari riquadri e box, i testi e le immagini.
  2. Il CSS invece riguarda la grafica: colori, bordi, dimensioni. In poche parole gestisce l’aspetto estetico, tutto quello che vedi concretamente con i tuoi occhi.

Con l’HTML e il CSS possiamo creare i contenuti testuali e grafici ma questi contenuti sono “fissi”, fermi, immobili. Senza l’aiuto di Javascript, che ha il potere di farli muovere, sono quasi completamente statici.

Ricordi l’esempio della ricerca della parola “steve jobs” su Google?

La finestrella che appare è un codice HTML che viene generato dinamicamente da Javascript. Anche la lista dei suggerimenti, e la loro selezione, è gestita sempre da Javascript, che attiva un evento per lanciare la ricerca.

Puoi trovarlo in qualsiasi azione “interattiva” fatta sul web, come cliccare “mi piace” su Youtube: l’icona si illumina. Un altro esempio sono le notifiche su Facebook.

Anche se Javascript è nato per manipolare gli elementi HTML, non viene quasi mai usato in maniera “pura”. Molto spesso si preferisce utilizzare alcuni codici già pronti e confezionati in delle “librerie”.

Le librerie non sono altro che un insieme di codici Javascript scritti da altri sviluppatori (o aziende come Google e Facebook), che servono a risolvere dei problemi comuni. Il vantaggio nell’usare delle librerie è che si risparmia tempo e fatica dato che tutti i codici delle funzioni sono già state scritte.

Prendiamo come esempio pratico usando sia Javascript puro sia jQuery (una delle librerie Javascript più diffuse):
Sfida: Supponiamo di voler aggiungere un controllo in Javascript nella registrazione del nostro nuovo Social Network. Obiettivo è avvisare l’utente nel caso il nickname che ha scelto sia già occupato da un altro utente.
Soluzione: Possiamo programmare in Javascript puro oppure possiamo farlo usando una libreria.

CODICE IN JAVASCRIPT PURO

var request = new XMLHttpRequest();
request.open('GET', '/registration/check/nickname', true);
request.onload = function() {
  if (request.status >= 200 && request.status < 400) {
    var data = JSON.parse(request.responseText);
  } else {
    // We reached our target server, but it returned an error
  }
};
request.onerror = function() {
  // There was a connection error of some sort
};

request.send();

CODICE IN JQUERY

 $.getJSON('/registration/check/nickname', function(data) {
// code - ps: questa riga è un commento!
});

Come puoi vedere c’è una notevole differenza nelle righe di codice e questo, per alcuni programmatori, è un ottimo motivo per preferire l’uso delle librerie a Javascript puro. 

Il mio personale parere e consiglio è di programmare in Javascript puro, senza alcuna libreria (quando questo è possibile).

# Sviluppo front-end

Prima di procedere sevi sapere che quando si sviluppa un progetto, che sia un sito internet, un’applicazione per smartphone o un software, possiamo dividere lo sviluppo “tendenzialmente” su due livelli:

  • Il front-end: lo sviluppo del progetto che riguarda tutta la parte visiva, la finestra che l’utente vede quando usa il nostro sito/app/programma.
  • Il back-end: lo approfondiremo tra poco, ma posso dirti che è la parte che elabora i dati generati dal front end.

Se proprio vogliamo essere pignoli, anche lo “sviluppo web tradizionale” (quello di poco fa) rientra nello “sviluppo front-end”. Ma siccome non siamo più nel 1995, quando Javascript veniva utilizzato nel cosiddetto “sviluppo web tradizionale”, per rendere le pagine dinamiche.

In questi anni, Javascript è maturato, grazie al suo diffuso utilizzo, e ha portato ad un nuovo modo di creare le pagine web. In poco tempo è diventato il perno di interi siti e non solo delle singole pagine.
Parliamo quindi dei front-end frameworks.

Ma cos’è un frameworks?

Possiamo immaginarlo come una sorta di libreria più evoluta, più potente, che non serve solo a raccogliere tante funzioni al suo interno ma ad offrire una vera e propria struttura generale, su cui possiamo basare lo sviluppo del nostro progetto. Ad esempio se vogliamo fare un’interfaccia dinamica come Gmail scegliamo un framework come Angular o React.

La potenza dei front-end framework è quella di creare delle schermate che si adattino all’utente. Una schermata che si modifica in base alle sue azioni, aumentando l’interattività di ogni singolo elemento. 

È proprio questo il futuro dello sviluppo web e approfondiremo il discorso sia nello sviluppo mobile sia nell’ambito lavorativo.

# Sviluppo back-end

Come anticipato prima il back-end è la parte che elabora i dati generati dal front end. Immaginiamo di inserire un sistema di ricerca nel nostro sito: il codice che materialmente effettua la ricerca (quindi la parte nascosta, che non vediamo) viene definito nel back-end.

Questo è un esempio molto semplificato, ma il discorso dello sviluppo back-end è un argomento da approfondire a lungo, ma per il momento ti basti sapere che lo sviluppo back-end è una delle aree più importanti nella programmazione moderna, e Javascript, negli ultimi anni si è guadagnato un ottimo posto nel podio.

Grazie ad una tecnologia chiamata Node.js (Javascript lato server).

Poco fa ti ho fatto l’esempio del codice della ricerca, ricordi?
Ecco, fino a qualche anno fa per scrivere la funzione di ricerca avrei potuto utilizzare delle tecnologie lato server come PHP, Java o Ruby on Rails, ma nel 2009 la storia è cambiata con l’avvento di Node.js.

Node.js permette di eseguire codici Javascript lato server, e in pochi anni ha conquistato il settore dello sviluppo. Il motivo per cui è stato così rivoluzionario è dato dalle sue caratteristiche, che sono:

  • La straordinaria velocità di esecuzione del codice.
  • Il risparmio nell’utilizzo delle risorse, come CPU e memoria RAM.
  • La gestione di un enorme numero di “utenti” (richieste) al secondo.
  • La semplicità di utilizzo.
  • Le numerose librerie a disposizione.

Queste caratteriste lo hanno reso molto apprezzato sia dagli sviluppatori esperti sia grandi aziende come PayPal, LinkedIn o Amazon, che lo usano nei loro servizi.

# Sviluppo mobile

Javascript viene utilizzato anche per creare applicazioni smartphone su qualsiasi sistema operativo (Android, iOS, Windows Phone, ecc). 

Anche in questo settore sta facendo straordinari progressi per:

  • Applicazioni Ibride
  • Applicazioni Native

Devi sapere che ogni sistema operativo per smartphone (Android, iOS oppure Windows Phone) utilizza un diverso linguaggio “nativo” per la creazione delle proprie applicazioni. 

Android usa Java, iOS usa l’Objective-C oppure Swift, mentre Windows Phone (esiste ancora?) usa C#.

Questo vuol dire che per creare la stessa applicazione sia su Android che su iOS devi riscrivere il codice in 2 diversi linguaggi. Ciò significa anche il doppio del tempo e sicuramente il doppio del prezzo, dato che a tutti gli effetti risultano due applicazioni diverse. 

Il settore dello sviluppo mobile ibrido esiste solo grazie a Javascript.

Dato che Javascript può essere eseguito in qualsiasi programma per navigare su internet, le applicazioni di questo tipo possono essere usate sia su Android, sia su iOS, sia su Windows Phone, scrivendo un solo ed unico codice.

Questo è il grande vantaggio delle applicazioni ibride.

Ovviamente scrivere app di questo tipo ha anche degli svantaggi, soprattutto in termini di velocità dell’applicazione e siccome l’applicazione non è scritta con un linguaggio nativo, non riesce a sfruttare al meglio tutte le risorse del dispositivo – questo vuole dire che c’è la possibilità che vada a scatti.

Detto ciò, rimane comunque un’ottima soluzione, veloce ed economica, per creare applicazioni “comuni”.

Ora conoscendo il significato di applicazioni native ed ibride ha ancora senso affermare che programmare in Javascript permette di creare applicazioni native ?

Fino al 2013, effettivamente la risposta sarebbe stata NO, poi qualcosa è cambiato, è nato il primo progetto che cercava di fare qualcosa di diverso: React Native (di Facebook).

Facebook ha aperto la strada ad un nuovo tipo di sviluppo mobile utilizzando sempre Javascript ma, in questo caso, il linguaggio interagisce in maniera nativa con il sistema operativo in uso.
Una rivoluzione straordinaria che molti neanche conoscono! 

# Software

Se abbiamo detto che le applicazioni ibride non sono altro che della pagine web, confezionate come applicazioni per smartphone. Ecco, per i software hanno pensato esattamente la stessa cosa.

Parliamo quindi di software framework che utilizzano Javascript, html e css per creare veri e propri programmi multipiattaforma (che possono essere installati su Windows, Mac o Linux), scrivendo un unico codice.

È un campo molto recente (2013) ma già grandi nomi hanno cominciato ad utilizzarlo, come Microsoft per Visual Studio Code oppure GitHub per il software Atom.

# Videogiochi

Con Javascript tutto può succedere ecco perché parliamo di sviluppo di videogames, giochi mobile, per pc, online, offline, 2D, 3D, qualsiasi cosa diventa possibile e differenziamo lo sviluppo in due aree principali.

1# Game Framework (2D)

game framework ci offrono strumenti analoghi per creare giochi. Una serie di strumenti che ci aiutano e ci guidano nella creazione di videogames scritti in Javascript/HTML/CSS.

I giochi realizzati con questa tecnologia possono essere usati in qualsiasi dispositivo/piattaforma, che sia uno smartphone (convertendolo in un’app ibrida) o che sia in un normale browser navigando su internet, e volendo anche in un software “tradizionale”
Un unico codice per creare un gioco utilizzabile ovunque!
Magnifico.

Ovviamente ci sono anche dei svantaggi e sono analoghi al discorso delle applicazioni ibride. Utilizzare una tecnologia del genere per creare giochi “fortemente grafici”, con molti elementi, animazioni o simili non è un’ottima idea. Questo perché non riesce a sfruttare al meglio le risorse del dispositivo in cui viene eseguito (che sia un pc, un tablet o uno smartphone).

2# Game Engine (2D e 3D)

In italiano lo possiamo tradurre con il nome meno affascinante di “motore grafico”, un esempio è Unity3D. I game engine sono programmi altamente specializzati per la creazione di videogames che, al suo interno, offrono tutte le tecnologie necessarie alla creazione di un gioco. Inoltre, semplificano lo sviluppo e l’esportazione del gioco stesso su diversi sistemi (console, pc mobile). Includono un motore di rendering dei modelli 2D e 3D, il motore fisico, gestione delle collisioni, del suono, delle animazioni, la possibilità di inserire script (e qui entra in gioco Javascript) e tante altre funzionalità divertenti.

I Game Engine non rientrano pienamente nella “programmazione”, ma mi sembrava importante farti sapere che Javascript può essere usato anche in questo campo.

Come avrai intuito la lista delle “cose” che permette di fare Javascript è veramente lunga e sommandolo al fatto che Javascript è più facile da apprendere rispetto altri linguaggi … è facile comprendere perché Javascript sia tanto richiesto in diversi settori lavorativi.

Per questo se questo articolo ti è piaciuto vorrei parlarti del rapporto di Javascript con il mondo del lavoro ed in quali settori lavorativi è richiesto. Fammi sapere nei commenti se ti è piaciuto e cose ne pensi