Una lingua per governarli tutti

Nascosto sotto uno strato di codice giace un linguaggio, desideroso di essere appreso.

Una lingua per governarli tutti

Al momento della scrittura di questo articolo, la ricerca "quale linguaggio di programmazione studiare per primo" restituisce 517 milioni di risultati. Ognuno di questi siti loderà un linguaggio specifico, e il 90% di essi, alla fine, consiglierà Python o JavaScript.

Senza indugi, vorrei dichiarare ufficialmente che tutti questi 517 milioni di siti si sbagliano e affermare che il linguaggio da studiare per primo è la logica fondamentale.

Sapere semplicemente come programmare non è sufficiente. Il mercato è così saturo di laureati provenienti da istituti e corsi che la posizione di junior è praticamente scomparsa*. Per avere successo nel mondo di oggi, devi sia programmare sia avere un pensiero logico fondamentale avanzato.

* qui e in seguito, si prega di ricordare che questa è una traduzione, e la situazione del mercato del lavoro per l'autore e nel tuo paese potrebbe essere diversa (così come altri dettagli), che, tuttavia, non rende di per sé l'articolo originale peggiore — nota del traduttore.

La mia prima lezione di informatica

Il mio primo incontro con l'informatica è stato un corso facoltativo che ho seguito in terza media. Il primo giorno, entrando nell'aula, sono rimasto colpito nel vedere davanti a me un grande numero di secchi di gelato e una varietà di guarnizioni. Una volta che tutti si sono sistemati, l'insegnante ha dichiarato:

"Oggi assaggeremo i gelati fatti in casa. Ma con una condizione: dovete scrivere un elenco di istruzioni specifiche su come preparare il dessert, e io seguirò quelle istruzioni"

"Nessun problema," ho pensato, "questa lezione non sarà lunga". Circa un minuto dopo ho buttato giù una straordinaria ricetta per il gelato dei miei sogni:

  1. Prendere e mettere tre palline di gelato ai lamponi in una ciotola
  2. Aprire la salsa di cioccolato e aggiungere due cucchiai nella stessa ciotola
  3. Aggiungere della panna montata nella ciotola
  4. Cospargere tutto con dei bastoncini di zucchero e mettere una ciliegina sopra

La mia insegnante — "computer" in questa dolce metafora — ha recitato in modo più sarcastico e letterale di quanto avessi mai visto prima. Ha iniziato a colpire con fervore il secchio di gelato con un cucchiaio per gelato, senza nemmeno toccare il coperchio.

«Va bene, va bene, ma prima bisogna aprirlo!» — esclamai, cercando di ottenere il dolcetto il prima possibile.

«Non l'hai scritto nelle istruzioni, e io non sono riuscita a prepararti il gelato. PROSSIMO!»

Avanziamo nel tempo fino al tentativo n. 2

  1. Aprire il gelato di lamponi togliendo il coperchio
  2. Prendere e mettere tre palline di gelato ai lamponi in una ciotola
  3. Aprire la salsa di cioccolato e aggiungere due cucchiai nella stessa ciotola
  4. Aggiungere della panna montata nella ciotola
  5. Cospargere tutto questo con bastoncini di zucchero e mettere una ciliegia sopra

Beh, adesso non ci dovrebbero essere problemi. Mi sono persino assicurato che tutti gli ingredienti per realizzare il mio capolavoro culinario siano stati aperti.

La maestra ha tolto il coperchio, ha preso il gelato e ha messo tre palline in una ciotola. «Finalmente il mio meraviglioso gelato ha iniziato a prendere forma!» Poi ha aperto la salsa di cioccolato e ha aggiunto due cucchiai nella ciotola. Non «ha aggiunto la salsa di cioccolato da due cucchiai» — non pensate — lei ha, ovviamente, messo nella ciotola le stesse cucchiaiate. Senza salsa in esse. Di nuovo non mi sono preso la briga di descrivere tutto con precisione. Dopo che il resto è stato fatto nello stesso modo, ho ricevuto una ciotola di gelato e due cucchiai, appena visibili sotto un mare di panna montata. Sopra c'erano un paio di bastoncini di zucchero.

Sembra che in questo momento finalmente mi sia chiaro: il computer è logica in un vuoto. Non sa delle circostanze circostanti e non fa ipotesi. Esegue solo istruzioni formulate chiaramente e le segue parola per parola.

Il mio risultato finale era il frutto di una lunga, ma necessaria serie di prove ed errori:

  1. Apri, se non l'hai già fatto, ciascuno dei seguenti pacchetti: gelato di lamponi, salsa di cioccolato, panna montata, bastoncini di zucchero.
  2. Prendi una ciotola e mettila di fronte a te
  3. Prendi un cucchiaio per gelato e, uno dopo l'altro, metti tre palline di gelato di lamponi nella ciotola. Rimetti a posto il cucchiaio per gelato.
  4. Prendi il barattolo di salsa di cioccolato, prendi la salsa e versa nella ciotola il contenuto del cucchiaio. Ripeti l'azione di prendere e versare la salsa un'altra volta. Rimetti a posto il cucchiaio e il barattolo.
  5. Prendi e capovolgi il pacchetto di panna montata e, tenendolo sopra la ciotola, cospargila sul gelato per 3 secondi, dopodiché rimetti il pacchetto a posto.
  6. Prendi il barattolo dei bastoncini di zucchero, versa circa quaranta bastoncini nella ciotola e rimetti il barattolo a posto.
  7. Prendi una ciliegia dalla ciotola con le ciliegie e mettila sopra il gelato.
  8. Passa all'allievo la ciotola con il gelato pronto e un cucchiaio.

L'ultimo punto era particolarmente importante, poiché senza di esso, per l'ultima volta l'insegnante ha semplicemente cominciato a mangiare il mio gelato.

Ma questo è proprio il programma. La creazione faticosa di un insieme preciso di istruzioni per il computer. Fondamentalmente, questo è ciò a cui si riduce ogni linguaggio di programmazione: alla scrittura di istruzioni.

Carriera nella programmazione

La programmazione ha raggiunto un punto in cui è difficile discuterne come un'unica industria, così come è difficile usare la parola "programmatore" come descrizione del lavoro. Due sviluppatori possono essere ugualmente richiesti dal mercato, conoscendo linguaggi assolutamente diversi, e quindi la capacità di sviluppare è più importante della conoscenza di un linguaggio specifico. L'attributo universale che accomuna tutti gli sviluppatori di successo è la logica fondamentale.

Il miglior programmatore è colui che riesce a guardare il codice da una nuova angolazione. E questo è fondamentale, perché la maggior parte dei prodotti software è un insieme di frammenti di codice scadente non documentati. Devono essere costantemente riuniti, colmando le lacune quando necessario. Le persone che non sono in grado di collegare punti disconnessi in una linea unica saranno destinate a rimanere sempre in secondo piano.

Tutto ciò mi porta a un'altra dichiarazione, questa volta in grassetto: le conoscenze fondamentali sono sempre state e saranno prioritarie per un programmatore.

I linguaggi vanno e vengono. I framework invecchiano, e le aziende rispondono alla domanda, cambiando il set delle tecnologie utilizzate. Esiste qualcosa che non cambierà mai? Sì — le conoscenze fondamentali, che infatti si chiamano fondamentali perché sono alla base di tutto!

Come migliorare le conoscenze fondamentali

Una lingua per governarli tuttiFoto di Christopher Yeshke in Unsplash

Se stai cercando un punto di partenza per migliorare il pensiero logico fondamentale, prova a iniziare da qui:

Conosci la complessità del tuo programma

Nota anche come Big O la "complessità dell'algoritmo" si riferisce alla dipendenza del tempo di esecuzione di un programma dalla dimensione dei suoi dati di input (n). Mantenere il polso sugli algoritmi utilizzati è un passo importante.

Conosci le tue strutture dati

Le strutture dati sono alla base di qualsiasi programma moderno. La conoscenza di quale struttura utilizzare in ogni caso è una disciplina a sé stante. Le strutture dati sono direttamente collegate alla complessità del runtime e la scelta errata di una struttura può portare a problemi fondamentali di prestazioni. La ricerca di un elemento in un array equivale a O(n), il che evidenzia il costo elevato dell'utilizzo degli array come dati di input. La ricerca in una tabella hash è O(1), il che significa che, in questo caso, il tempo di ricerca di un valore non dipende dal numero di elementi.

Durante i colloqui mi sono presentati persone che sostenevano che cercare in un array fosse più veloce che in una tabella hash. Questo era un chiaro segnale che non bisognava assumerli: conosci le tue strutture dati.

Leggi / guarda / ascolta

Siti come UdemyPluralsight CodeAcademy sono ottime scelte per imparare nuovi linguaggi di programmazione. Ma per le basi, fai riferimento ai libri sui principi, le pratiche e gli stili di codifica generali. I libri più raccomandati sono "Design Patterns", "Refactoring: Improving the Design of Existing Code", "Clean Code" e "The Pragmatic Programmer". Infine, ogni sviluppatore dovrebbe tenere a portata di mano una copia di "Algorithms".

Esercitati!

Non puoi preparare l'uovo senza rompere le uova. Siti come HackerRankCodeWarsCoderByte, TopCoderLeetCode offrono migliaia di interessanti problemi per testare la tua conoscenza delle strutture dati e degli algoritmi. Prova a risolvere un problema che ti piace, pubblica la tua versione su Github e poi guarda come l'hanno affrontato gli altri. Questo ci porta all'ultimo punto:

Leggi il codice degli altri

Il più grande errore che si possa fare lungo il percorso dello sviluppo è affrontare questo cammino da soli. Lo sviluppo software è, in larga misura, un lavoro di squadra. Creiamo standard insieme, commettiamo errori insieme e, nonostante tutte le avversità, miglioriamo insieme. Il tempo speso a leggere il codice di altri sarà ripagato profumatamente. Assicurati solo che si tratti di codice di qualità.

Il miglior consiglio che posso dare è: non vergognatevi mai di non sapere qualcosa. Come già detto, il nostro settore è vasto e le tecnologie sono infinite. Ci vuole tempo e impegno per costruire un quadro generale, e ancora di più per diventare professionisti in un campo specifico, e molto di più per affinare la propria maestria. Vi informerò quando ci riuscirò.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster