7 motivi per cui i framework sono i nuovi linguaggi di programmazione

Negli anni '80, il modo più semplice per iniziare una lotta tra nerd era proclamare che il tuo linguaggio di programmazione preferito era il migliore. C, Pascal, Lisp, Fortran? I programmatori hanno passato ore a spiegare esattamente perché il loro modo particolare di creare una clausola if-then-else era superiore al tuo modo di fare.

Questo è stato allora. Oggi, le battaglie che coinvolgono la sintassi e la struttura sono in gran parte finite perché il mondo è convergente su pochi semplici standard. Le differenze tra punto e virgola, parentesi graffe e quant'altro in C, Java e JavaScript sono minori. Esistono ancora dibattiti interessanti sulla battitura a macchina e sulle chiusure, ma la maggior parte è discutibile perché l'automazione sta colmando il divario. Se non ti piace specificare un tipo di dati, ci sono buone probabilità che il computer sia in grado di dedurre esattamente cosa intendevi. Se il tuo capo vuole JavaScript ma ti piace Java, un cross-compilatore convertirà tutto il tuo Java digitato staticamente in JavaScript minimizzato, pronto per essere eseguito in un browser. Perché combattere quando la tecnologia ci dà le spalle?

Oggi, l'azione interessante è nei quadri. Quando mi sono seduto con altri docenti della Johns Hopkins University per pianificare un nuovo corso, i quadri hanno dominato la conversazione. Angular è migliore di Ember? Node.js è tutto questo?

Abbiamo progettato un corso di indagine che esplorasse l'architettura dei più importanti pacchetti software che sono alla base di Internet. Questo era il centro dell'azione, degno di un corso di indagine che esplorasse l'architettura dei più importanti pacchetti software che cingono l'Internet odierna.

In questo senso, i framework sono i nuovi linguaggi di programmazione. Sono dove si trovano le idee, le filosofie e gli aspetti pratici più recenti della programmazione moderna. Alcuni si spengono, ma molti stanno diventando i nuovi mattoni fondamentali della programmazione. Ecco sette sfaccettature che alimentano la tendenza dei framework e che rendono i framework il nuovo focolaio preferito per i combattimenti tra nerd.

La maggior parte del codice consiste nel mettere insieme le API

C'è stato un tempo in cui scrivere software significava distribuire tutta la tua conoscenza del linguaggio di programmazione per ottenere il massimo dal codice. Aveva senso padroneggiare la complessità di puntatori, funzioni e ambito: la qualità del codice dipendeva dal fare la cosa giusta. Oggigiorno l'automazione gestisce gran parte di questo. Se lasci dichiarazioni senza valore nel codice, non preoccuparti. Il compilatore rimuove il codice morto. Se lasci i puntatori penzoloni, il garbage collector probabilmente lo capirà.

Inoltre, la pratica della codifica è diversa ora. La maggior parte del codice è ora una lunga fila di chiamate API. C'è una riformattazione occasionale dei dati tra le chiamate API, ma anche quei lavori sono solitamente gestiti da altre API. Pochissimi fortunati riescono a scrivere codice intelligente, bit-bang e puntatore-giocoliere per le viscere delle nostre macchine, ma la maggior parte di noi lavora con i livelli più alti. Eseguiamo semplicemente pipe tra le API.

Per questo motivo, è più importante capire come si comporta un'API e cosa può fare. Quali strutture dati accetta? Come si comportano gli algoritmi quando il set di dati diventa più grande? Domande come queste sono più centrali nella programmazione odierna di quelle sulla sintassi o sul linguaggio. In effetti, ora ci sono una serie di strumenti che rendono semplice chiamare una routine in una lingua da un'altra. Ad esempio, è relativamente semplice collegare le librerie C al codice Java. Capire le API è ciò che conta.

Vale la pena stare sulle spalle dei giganti

Immagina di essere diventato un discepolo di Erlang o di un'altra nuova lingua. Decidi che offre la migliore piattaforma per scrivere un'app stabile e priva di bug. Questo è un bel sentimento, ma potrebbero volerci anni prima che tu riscriva tutto il codice disponibile per Java o PHP nella tua ultima lingua preferita. Certo, il tuo codice potrebbe rivelarsi notevolmente migliore, ma vale la pena dedicare tempo extra?

I framework ci consentono di sfruttare il duro lavoro di coloro che ci hanno preceduto. Potremmo non apprezzare l'architettura che hanno scelto e potremmo discutere sui dettagli di implementazione, ma è più efficiente soffocare i nostri reclami e trovare un modo per convivere con le differenze. È molto più facile ereditare tutto il bene e il male della base di codice attraverso un framework. Prendere la strada del macho scrivendo tutto da soli nella tua nuova lingua preferita piuttosto che in uno dei suoi framework più popolari non ti permetterà di goderti la crema della tua nuova scelta così rapidamente come sarebbe semplicemente rimandare ai creatori di framework e alle loro API.

Conoscere l'architettura è ciò che conta, non la sintassi

Quando la maggior parte della codifica sta mettendo insieme le chiamate API, non c'è molto vantaggio nell'apprendimento delle idiosincrasie del linguaggio. Certo, potresti diventare un esperto su come Java inizializza i campi statici negli oggetti, ma sarebbe molto meglio capire come sfruttare la potenza di Lucene o JavaDB o qualche altra pila di codice. Potresti passare mesi a cercare le routine di ottimizzazione dei compilatori Objective-C, ma imparare i dettagli dell'ultima libreria core Apple farà davvero urlare il tuo codice. Imparerai molto più a fondo i dettagli esigenti del framework rispetto alla sintassi del linguaggio su cui si basa il framework.

La maggior parte del nostro codice trascorre la maggior parte del tempo nei cicli interni delle librerie. Ottenere i dettagli della lingua corretti può aiutare, ma sapere cosa sta succedendo nelle biblioteche può ripagare notevolmente.

Gli algoritmi dominano

Imparare un linguaggio di programmazione può aiutarti a destreggiarti tra i dati nascosti nelle variabili, ma questo ti porta solo così lontano. Il vero ostacolo è ottenere gli algoritmi corretti, che di solito vengono definiti e implementati dai framework.

Molti programmatori comprendono che è pericoloso e dispendioso sprecare tempo a reimplementare algoritmi e strutture dati standard. Certo, potresti essere in grado di adattarlo un po 'alle tue esigenze, ma rischi di commettere errori sottili. I framework sono stati ampiamente testati nel corso degli anni. Rappresentano il nostro investimento collettivo in un'infrastruttura software. Non ci sono molti esempi di quando ha senso "uscire dalla griglia", mettere da parte il duro lavoro degli altri e costruire una cabina algoritmica con le proprie mani.

L'approccio giusto è studiare i framework e imparare a usarli al meglio. Se scegli la struttura dati sbagliata, potresti trasformare un lavoro lineare in uno che richiede un tempo che è una funzione quadratica della dimensione di input. È una grande seccatura una volta che diventi virale.