Le basi si trovano nei grandi classici, tipo "Algoritmi+Strutture dati = Programmi" di N. Wirth (genuflessione), ma partire da lì sarebbe come dire a chi volesse imparare ad andare in bicicletta (magari nel vialetto di casa, non al Giro d'Italia) di partire dalle leggi del moto rototraslatorio..
E' anche vero che imparare l'arte della programmazione (non entro nel dibattito se sia più scienza/tecnica che arte o meno) partendo dalle basi di uno specifico inguaggio senza avere idea di cosa siano variabli, costanti, funzioni, cicli etc aiuta fino ad un certo punto.
Quando
@dragonblu19 chiede un
maestro probabilmente centra l'obiettivo. Per me è come se dicesse "seguo il corso sul linguaggio X, leggo esempi di codice, ma se non ho uno che mi spieghi il
perchè di certe scelte, il dietro le quinte, io sarò sempre al punto zero o poco più, non sarò mai davvero autonomo".
Sempre il grande N. Wirth (genuflessione) inventò il Pascal come strumento per insegnare la programmazione e rimase sorpreso che in breve divenisse uno dei linguaggi preferiti per lo sviluppo di software in produzione (compito per il quale in seguito introdusse il Modula 2).
Ovviamente oggi non avrebbe senso consigliare lo studio del Pascal solo per imparare le basi della programmazione.
Un altro punto che mi consentirete di evidenziare è che una volta (yes, nel giurassico informatico) esistevano due distinte figure professionali: l'analista ed il programmatore. L'analista era quello con maggiore esperienza, quello che conosceva il mondo ed era in grado di ridurre un problema in sotto-problemi sempre più definiti grazie a disciplina e mente fortemente analitica, producendo la macroanalisi. Poi, partendo da quella, realizzava la microanalisi, ovvero la spiegazione in linguaggio naturale (italiano, inglese..) di ciò che il programma doveva fare passo-passo, relativamente a ciascun blocco funzionale. Una spiegazione molto dettagliata e rigorosa, non un tanto al chilo.
A quel punto interveniva il programmatore, che era l'equivalente del traduttore da una lingua ad un'altra. Questi leggeva la microanalisi e la riportava sotto forma di codice nel linguaggio che conosceva (quello che era stato scelto per lo sviluppo). Quasi una traduzione 1-1 del contenuto della microanalisi.
Il punto è che il programmatore non doveva inventare nulla. Doveva solo conoscere (e molto bene) caratteristiche e limiti del linguaggio di programmazione.
Per questione principalmente economiche (ma anche grazie all'esperienza accumulata negli anni dai programmatori) le due figure vennero unificate in quella dell'analista-programmatore.
In conclusione (spero che vogliate perdonare la prolissità dell'intervento), ritengo che le "basi" siano una buona capacità di analisi e la conoscenza degli elementi fondamentali presenti in tutti i linguaggi. Poi si può passare alle caratteristiche di uno specifico linguaggio, del sistema operativo (almeno in funzione di servizi e limiti imposti al sw prodotto con il linguaggio) ed altre "basi" (disegno UI, comunicazioni, database...).
Ci vuole tempo, determinazione e passione...ma per andare in bicicletta nel vialetto di casa (magari prima con le rotelline) basta un po' di aiuto e qualche consiglio (e se si dovesse cadere, una o due sbucciature..non hanno mia ucciso nessuno!)