Linguaggi e framework di programmazione: perché dovresti scavarne più a fondo

📖 19min read

L’azienda non mi dà scelta

“Ho sentito che Python è popolare di questi tempi. Dovremmo usare anche Python?” Un nuovo sviluppatore può dire qualcosa del genere in un’azienda? È impossibile.

Prima di trovare un lavoro, potevo scegliere la lingua da utilizzare. Per il test di codifica, ho utilizzato Python perché era vantaggioso e, per lo sviluppo web, ho approfondito Java perché ho sentito che Java è utile per trovare lavoro. Tuttavia, la realtà per i piccoli team che entravano nel mercato del lavoro era diversa.

Lo stack tecnologico dell’azienda era già deciso. Il codice legacy era in esecuzione in Java (Spring Boot), le schermate venivano disegnate in JavaScript (Vue.js) e all’improvviso avevo esaurito la manutenzione dell’app Android e dovevo occuparmi di XML e di un altro Java.

Non ho mai scelto. È solo che l’ambiente (struttura) mi ha imposto quel linguaggio. All’inizio avevo paura di essere bombardato da questa lingua e grammatica sconosciute. Tuttavia, mentre leggevo e scrivevo il codice in modo casuale, ho realizzato una cosa importante.

“Eh? Questo è lo stesso concetto Java che hai studiato prima?”

Una volta che hai una buona comprensione di una lingua, è solo questione di tempo prima di aprire la porta a un’altra lingua.

La grammatica può essere diversa, ma l’essenza è la stessa (Trasferimento di concetti)

Durante i miei giorni di scuola, ho studiato leggermente il linguaggio C e ho approfondito Java. Poi, quando è arrivata la stagione di preparazione al lavoro, ho sentito nella comunità che “Python è il cattivo quando si tratta di test di programmazione”, quindi ho aperto un libro su Python per la prima volta.

All’inizio la grammatica non mi era familiare, ma sorprendentemente sono riuscito ad abituarmi in pochi giorni. Non era perché Python fosse facile. Questo perché conoscevo già “l’essenza della programmazione” attraverso Java.

Quello che ho fatto non è stato imparare una nuova lingua da zero. Il compito era sovrapporre un “nome di luogo chiamato Python” alla “Mappa chiamata Java” nella mia testa. Questo si chiama “trasferimento dell’apprendimento” in termini educativi. Più approfondisci una lingua, più velocemente potrai comprendere altre lingue.

L’interfaccia utente è in definitiva una struttura ad albero

Questa esperienza ha brillato anche in un ambito completamente diverso. Quando ero a scuola, usavo HTML e CSS per rinnovare il sito web della scuola e guadagnare una paghetta. All’epoca non avrei mai pensato che avrebbe aiutato la mia carriera di sviluppatore.

Tuttavia, dopo essere entrato in azienda, ho dovuto improvvisamente modificare l’interfaccia utente dell’app Android. Android utilizza un linguaggio di markup chiamato XML per costruire l’interfaccia utente. Era la prima volta che sviluppavo un’app mobile, quindi ero molto nervoso, ma ho riso quando ho guardato il codice.

<!-- Android XML -->
<LinearLayout orientation="vertical">
    <TextView text="Hello World" />
    <Button text="Click Me" />
</LinearLayout>

<!-- HTML -->
<div style="display: flex; flex-direction: column;">
    <span>Hello World</span>
    <button>Click Me</button>
</div>

Solo il nome del tag era diverso, ma la struttura di “inserimento di un elemento figlio in un elemento genitore e modellamento con un attributo” era esattamente la stessa dell’HTML. Poiché comprendo la struttura ad albero del DOM e il modello a scatola, sono stato in grado di creare rapidamente il mio layout Android.

Anche se la piattaforma cambia, l’essenza della “gerarchia” non cambia.

Quadro, non lo insegnavano a scuola

In effetti, ciò che mi ha confuso più della lingua è stata l’esistenza di un “Quadro”.

A scuola venivano insegnate solo le “abilità fisiche di base” come la grammatica del linguaggio C, le strutture dati, gli algoritmi e la teoria linguistica. Naturalmente non è che non abbiate sentito i nomi “React” o “Spring”. Dopo aver sentito dalla community che “React è il migliore al giorno d’oggi”, sono andato in una libreria e ho comprato un libro React.

Ma ho chiuso il libro prima ancora di leggerne la metà. Perché non riuscivo a capire perché il codice dovesse essere scritto in questo modo. “No, puoi semplicemente creare una funzione e chiamarla. Perché devo ereditare Component e inserirlo nella funzione render? Perché non ho il controllo?”

All’epoca non lo sapevo. La differenza fondamentale tra “Libreria” e “Framework”.

Se quello che imparavi a scuola era come martellare liberamente, la struttura pratica era come un’enorme fabbrica che ti costringeva a dire: “Noi martelleremo, quindi tu metti semplicemente il chiodo nel buco”. Dato che non conoscevo il concetto di “inversione del controllo”, per quanto leggessi il libro, mi sembrava una lingua aliena.

Se conosci la lingua, puoi vedere il framework

Tuttavia, quando mi sono buttato nel lavoro pratico e mi sono costretto a utilizzare il quadro, mi sono imbattuto in una verità paradossale. Non importa quanto sia complicata la magia di Spring Boot, alla fine è costituita da “codice Java”.

Annotazioni come

@Autowired iniettano magicamente dipendenza, ma se lo guardi, in definitiva è un’applicazione della tecnologia di riflessione di Java. Il sistema reattivo di Vue.js utilizza inoltre le funzioni di monitoraggio di oggetti e proprietà di JavaScript.

‘Se il linguaggio (fondamento) è forte, i principi operativi del framework (applicazione) sono visibili.’ Quando sono entrato in azienda per la prima volta, sono entrato senza sapere quale fosse la struttura MVC di Spring, ma poiché conoscevo Java, sono stato in grado di adattarmi rapidamente, pensando: “Oh, il framework invece esegue il mio codice. Devo solo lanciare oggetti secondo queste regole.”

Se le mie “nozioni di base su JavaScript” fossero state più forti quando ho letto il libro React, sarei stato in grado di capire perché React è diventato così.

[Suggerimento] Prescrizione per studenti con difficoltà decisionali

“Quale lingua dovrei studiare?” Questa è una delle domande più frequenti nella comunità. Che si tratti di un linguaggio o di una struttura, non devi necessariamente approfondire solo una cosa per il resto della tua vita. Tuttavia, paradossalmente, per essere bravo in più cose, devi prima “vendere chiaramente una cosa”.

Se sei uno studente che ha difficoltà a trovare una direzione per i suoi studi, chiudi il libro e apri subito il “sito di reclutamento”.

“Questa azienda utilizza Spring e quell’azienda utilizza Node. Cosa dovrei fare?” Non importa. Qualunque cosa sia, devi solo impararla correttamente. Come ho detto prima, l’essenza della programmazione è la comunicazione. Le persone che hanno imparato Spring si adattano rapidamente anche se l’azienda chiede loro di utilizzare Node.js dopo essere entrati in azienda. Tuttavia, chiunque abbia provato un po’ di questo e finirà per vagabondare di nuovo, indipendentemente dal quadro che gli viene lanciato.

Quando hai tempo per pensare, scegli una “competenza richiesta dal mercato (annuncio di reclutamento)” e approfondisci. Questo è il modo più veloce.

[Verifica codice] Le lingue possono essere diverse, ma la memoria è la stessa

Verifichiamo con il codice che, anche se le lingue sono diverse, ciò che accade all’interno del computer è in definitiva lo stesso. ArrayList di Java e list di Python hanno una sintassi diversa, ma il metodo per aumentare la memoria (Dynamic Array) è lo stesso.

Java:

// Java: quando e pieno, la dimensione aumenta di 1.5x e si trasferisce.
ArrayList<Integer> list = new ArrayList<>();
list.add(1); 
// Internamente: crea array -> aggiungi dati -> se lo spazio e insufficiente, crea un array piu grande e copia

Pitone:

# Python: quando e pieno, la dimensione aumenta di circa 1.125x + @ e si trasferisce.
my_list = []
my_list.append(1)
# Il meccanismo interno e quasi identico a Java (usa la logica di riallocazione array del C)

Indipendentemente dal linguaggio che utilizziamo, il modo in cui funzionano i centri di distribuzione digitale (computer) non cambia. Questo perché le regole per l’utilizzo dei lavoratori (CPU) e dell’archiviazione (memoria) sono universali.

Conclusione: curiosità invece di paura

Quando vivi come sviluppatore, arriverà inevitabilmente il momento in cui dovrai utilizzare linguaggi e framework che non desideri. Scapperai ogni volta dicendo: “Sono uno sviluppatore Java, quindi non mi piace Python”?

La lingua è uno “strumento”, non una religione. E il quadro è il “laboratorio” per l’utilizzo degli strumenti. Le persone che hanno una profonda esperienza nell’apprendimento di una lingua (la loro lingua madre) imparano rapidamente a utilizzare un nuovo strumento, anche se viene loro fornito.

Quindi non aver paura, anche se la tua azienda ti costringe a utilizzare uno stack tecnologico non familiare in questo momento. Solo il guscio è diverso, ma la sostanza all’interno è la stessa che già conosci.

Ora che ci siamo sbarazzati della paura del linguaggio, dal prossimo articolo entreremo nelle profondità della ‘Memoria’, il mondo reale in cui vive il codice. Una volta che sai dove è archiviato il codice che hai scritto nella RAM e come funziona, la barriera linguistica sarà più bassa.

Lascia un commento