Avendo "programmato" per quasi 35 anni, direi che, con tutto quello che so ora che avrei voluto conoscere, andrò funzionale, almeno in parte, per cominciare!
Se dovessi indicarti alcune lingue per iniziare, direi:
LISP (o Scheme e c'è Clojure che ti porta nell'arena JVM)
(Un giorno triste per le persone LISP oggi, il suo creatore è scomparso oggi ... link )
o
Smalltalk, in particolare Squeak in quanto è molto ben supportato e ha anche e-toys con cui può aiutare a dare un fondamento nelle basi della programmazione.
Perché quei due? Semplicemente perché la sintassi è così semplice da captare ... I dialetti LISP hanno esattamente UNA regola di sintassi da apprendere e Smalltalk è un secondo vicino. IIRC, Smalltalk ha solo cinque parole riservate: self super true false nil e l'intera lingua è basata sull'invio di messaggi agli oggetti.
In LISP la regola della sintassi è questa: (funzione arg1 arg2 ... argN) e il gioco è fatto!
Quindi, quando apprendo i "concetti" di programmazione per la prima volta, direi che ti libera di non combattere il compilatore o l'interprete per la tua lingua scelta, assicurandoti che siano molto facili da usare. Java o PHP hanno un sacco di parole riservate.
Una volta che hai scelto una lingua, inizia a hackerare furiosamente finché non capisci i concetti semplici come variabili e associazioni, funzioni, I / O, ecc. Il mio modo di imparare una nuova lingua era scrivere una versione di "Pong" come hai bisogno di sapere come leggere la tastiera, salvare e caricare punteggi più alti, disegnare cose ecc.
Inizia in piccolo però, anche stampando 2 + 2 e ottenendo la risposta giusta ti senti bene.
Quindi fai in modo che l'utente inserisca i numeri.
Leggi un elenco di numeri da un file, stampa la somma di quei numeri.
Costruisci su piccoli successi in ogni momento e se commetti un errore, divertiti a capirlo! Ho scoperto che più errori ho fatto in anticipo più velocemente ho imparato la lingua che stavo imparando.
Buona fortuna, è un processo di apprendimento permanente!
:)