Sotto uno strato di codice si trova un linguaggio desideroso di essere imparato.

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 elogia un linguaggio specifico, e il 90% di essi, alla fine, raccomanderà Python o JavaScript.
Senza tanti preamboli, vorrei ufficialmente dichiarare che tutti questi 517 milioni di siti si sbagliano e affermare che il linguaggio da studiare per primo è la logica fondamentale.
Sapere solo come programmare non è più sufficiente. Il mercato è così saturo di laureati e corsisti che la posizione di junior praticamente non esiste più*. Per avere successo nel mondo di oggi, è necessario saper programmare e possedere un pensiero logico fondamentale avanzato.
* qui e oltre, si prega di ricordare che questa è una traduzione e la situazione del mercato del lavoro per l'autore e nel vostro paese può differire (come anche altri dettagli), il che, però, non rende l'articolo originale di per sé 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 quarta superiore. Il primo giorno, entrando in aula, sono rimasto affascinato nel vedere davanti a me un grande numero di contenitori di gelato e vari topping. Dopo che tutti si sono sistemati, l'insegnante ha dichiarato:
«Oggi assaggeremo dei gelati preparati da noi. Ma con una condizione: dovete redigere un elenco di istruzioni specifiche per preparare il dessert, e io seguirò quelle»
«Nessun problema», ho pensato, «questa lezione non durerà a lungo». Dopo circa un minuto, ho abbozzato una fantastica ricetta per il gelato dei miei sogni:
- Prendere tre palline di gelato ai lamponi e metterle in una ciotola
- Aprire la salsa al cioccolato e aggiungere due cucchiai nella stessa ciotola
- Aggiungere la panna montata nella ciotola
- Cospargere il tutto con bastoncini di zucchero e mettere una ciliegina sopra
La mia insegnante — «computer» in questa dolce metafora — ha recitato un'interpretazione più sarcasticamente letterale di quanto avessi mai visto prima. Cominciò a infilare il cucchiaio per il gelato nel contenitore, senza nemmeno toccare il coperchio.
«Va bene, va bene, ma prima bisogna aprirlo!» — ho esclamato, cercando di avere la mia delizia il prima possibile.
«Non l'hai scritto nelle istruzioni e non sono riuscita a fare il gelato per te. PROSSIMO!»
Aspettiamo fino al tentativo n. 2
- Aprire il gelato ai lamponi rimuovendo il coperchio
- Prendere tre palline di gelato ai lamponi e metterle in una ciotola
- Aprire la salsa al cioccolato e aggiungere due cucchiai nella stessa ciotola
- Aggiungere la panna montata nella ciotola
- Cospargere tutto con bastoncini di zucchero e mettere una ciliegina sopra
Ora non dovrebbero esserci problemi. Ho verificato che tutti gli ingredienti per realizzare il mio capolavoro culinario siano aperti.
L'insegnante ha rimosso il coperchio, ha preso e messo tre palline di gelato nella ciotola. «Finalmente il mio meraviglioso gelato ha iniziato a prendere forma nella realtà!» Poi ha aperto la salsa di cioccolato e ne ha aggiunto due cucchiai nella ciotola. Non ha «aggiunto salsa di cioccolato con due cucchiai» — non pensate male — ha, ovviamente, messo nella ciotola le stesse cucchiaiate. Senza salsa in esse. Ancora una volta non mi sono preso la briga di scrivere tutto con precisione. Dopo che il resto è stato eseguito nello stesso spirito, ho ricevuto una ciotola di gelato con due cucchiai, appena visibili sotto un mare di panna montata. Sopra c'era un paio di bastoncini di zucchero.
Sembra che in questo momento io abbia finalmente capito: il computer è logica nel vuoto. Non è a conoscenza delle circostanze esterne e non fa supposizioni. Esegue solo istruzioni formulate chiaramente e le segue alla lettera.
Il mio risultato finale è stato il frutto di una lunga, ma necessaria serie di tentativi ed errori:
- Apri, se non l'hai già fatto, ciascun dei seguenti contenitori: gelato ai lamponi, salsa di cioccolato, panna montata, bastoncini di zucchero.
- Prendi una ciotola e posizionala davanti a te.
- Prendi un cucchiaio per il gelato e, uno dopo l'altro, metti tre palline di gelato ai lamponi nella ciotola. Rimetti il cucchiaio al suo posto.
- Prendi il barattolo con la salsa di cioccolato, prendi un po' di salsa e versa nella ciotola il contenuto di un cucchiaio. Ripeti l'azione di prelievo e versamento della salsa un'altra volta. Rimetti il cucchiaio e il barattolo al loro posto.
- Prendi e capovolgi il contenitore della panna montata e, tenendolo sopra la ciotola, copri il gelato con essa per 3 secondi, poi rimetti il contenitore al suo posto.
- Prendi il barattolo dei bastoncini di zucchero, versa circa quaranta bastoncini nella ciotola e rimetti il barattolo al suo posto.
- Prendi una ciliegia dalla ciotola di ciliegie e mettila sopra il gelato.
- Passa allo studente la ciotola di gelato pronto e un cucchiaio.
L'ultimo punto era particolarmente importante, poiché senza di esso, l'ultima volta l'insegnante ha semplicemente iniziato a mangiare il mio gelato.
Ma questo è programmazione. È un'attenta creazione di un insieme di istruzioni per il computer. Fondamentalmente, è ciò a cui si riduce ogni linguaggio di programmazione: alla redazione di istruzioni.
Carriera nella programmazione
La programmazione ha raggiunto un punto in cui è difficile discuterla come un'unica industria, così come è difficile usare una sola parola "programmatore" per descrivere una posizione. Due sviluppatori possono essere ugualmente richiesti dal mercato, conoscendo linguaggi completamente diversi, e quindi la capacità di sviluppare è più importante della conoscenza di un linguaggio specifico. L'attributo universale che contraddistingue tutti gli sviluppatori di successo è la logica fondamentale.
Il miglior programmatore è in grado di guardare il codice da una nuova prospettiva. Questo è fondamentale, poiché la maggior parte dei prodotti software è un insieme di frammenti di codice scadente non documentati. È necessario integrarli continuamente, colmando le lacune all'occorrenza. Le persone incapaci di connettere i punti disconnessi in una linea unica rimarranno per sempre sullo sfondo.
Tutto ciò mi porta a un'altra dichiarazione, questa volta in grassetto: le conoscenze fondamentali sono sempre state e saranno prioritario per un programmatore.
I linguaggi vanno e vengono. I framework invecchiano, e le aziende rispondono alla domanda cambiando il loro stack tecnologico. C'è qualcosa che non cambierà mai? Sì: le conoscenze fondamentali, che si chiamano così proprio perché sono alla base di tutto!
Come migliorare le conoscenze fondamentali
Foto di Christopher con
Se stai cercando un punto di partenza per migliorare il tuo pensiero logico fondamentale, prova a cominciare da qui:
Conosci la complessità del tuo programma
Altrimenti conosciuta come Big O La «complessità dell'algoritmo» si riferisce alla dipendenza del tempo di esecuzione di un programma dalla dimensione dei suoi dati di ingresso. (n). Mantenere il controllo sugli algoritmi utilizzati è un passo importante.
Conosci le tue strutture dati
Le strutture dati sono alla base di qualsiasi programma moderno. Sapere quale struttura utilizzare in ciascun caso è una disciplina a sé stante. Le strutture dati sono direttamente correlate alla complessità del runtime e la scelta di una struttura errata può portare a problemi fondamentali di prestazioni. La ricerca di un elemento in un array è pari a O(n), il che indica l'elevato costo dell'uso degli array come dati di ingresso. La ricerca in una tabella hash è O(1), il che significa che in questo caso il tempo di ricerca del valore non dipende dal numero di elementi.
In un colloquio, mi sono presentati persone che affermavano che cercare in un array fosse più veloce che in una tabella hash. Questo era un chiaro segno che non valeva la pena assumerli: conosci le tue strutture dati.
Leggi / guarda / ascolta
Siti come , e — è una scelta eccellente per imparare nuovi linguaggi di programmazione. Tuttavia, per le basi, consulta libri sui principi generali, pratiche e stili di codifica. I libri più consigliati sono "Design Patterns", "Refactoring: Improving the Design of Existing Code", "Code Complete", "Clean Code" e "The Pragmatic Programmer". Infine, ogni sviluppatore dovrebbe avere una copia di "" a portata di mano.
Pratica!
Non puoi fare una frittata senza rompere le uova. Siti come , , , e offrono migliaia di interessanti problemi per mettere alla prova la tua conoscenza delle strutture dati e degli algoritmi. Prova a risolvere un problema che ti piace, pubblica la tua soluzione su GitHub e poi guarda come lo hanno affrontato gli altri. Questo ci porta all'ultimo punto:
Leggi il codice degli altri
Il più grande errore che si possa fare nel percorso di sviluppo è affrontarlo da soli. Sviluppare software è principalmente un lavoro di squadra. Creiamo insieme gli standard, commettiamo errori insieme e, nonostante tutte le difficoltà, miglioriamo insieme. Il tempo speso a leggere il codice degli altri ripagherà ampiamente. Assicuratevi solo che si tratti di codice di qualità.
Il miglior consiglio che posso dare è di non vergognarsi mai di non sapere qualcosa. Come già detto, il nostro settore è vasto e le tecnologie, innumerevoli. Ci vogliono tempo e impegno per costruire un quadro generale, ancora di più per diventare professionisti in un ambito specifico e di gran lunga di più per perfezionare l'arte nel proprio campo. Vi farò sapere quando ci riuscirò.
Fonte: habr.com
