Ciao, ho 28 anni e faccio più o meno il lavoro che vorresti fare tu.
Se potessi tornare indietro a quando avevo 13 anni studierei i libri di informatica che usano al primo anno dei corsi di informatica all'università. Non farti spaventare dal livello perché sono scritti anche per persone che non hanno quasi mai programmato prima (pensa a tutti gli studenti che arrivano all'Università da un Liceo Classico) In particolare esistono corsi serali, per esempio questo: [http://www.ccdinf.unimi.it/it/corsiDiStudio/2013/F1X/F1X-A/F1X-56/F1X-56.13.2/index.html] che sono a ingresso libero. In altre parole puoi seguirli, le lezioni sono pubbliche (se riesci a convincere qualcuno ad accompagnarti) ma non puoi accedere ai laboratori né, ovviamente, dare l'esame. Non so se alla tua età puoi iscriverti. Dovresti chiedere in Segreteria Studenti. So che ci si può iscrivere a corsi singoli. Se non puoi seguirli basati comunque sugli stessi libri di testo. In quello che ti ho indicato, che ho seguito io e che ho trovato a dir poco PERFETTO, insegnano Java partendo da zero sino a un OTTIMO livello.
Stai molto attento a non studiare oggi le tecnologie di ieri.
Dieci anni fa cominciai anch'io studiando C col libro "Informatica: arte e mestiere". Il testo è ancora attuale, ma solo per quanto riguarda l'interazione fra hardware e software a livello base. Oggi cominciano quasi tutti studiando Java o C#, un domani, probabilmente, si comincerà da Ruby o Python. Anche perché i programmi enterprise sono sempre più Web-based. Al punto che non mi stupirei se un giorno si cominciasse da Javascript.
Non perdere tempo con ECDL [...].
Sicuramente, almeno per i prossimi 10 anni, si continueranno a utilizzare i DBMS (Data Base Management System), che sono il "cuore" di tutti i programmi gestionali, basati su SQL e con proprietà ACIDe. Quindi come secondo testo studia qualcosa che ti insegni le Basi di Dati. E come primo progetto serio crea un piccolo gestionale che utilizzi un Database. Non importa tanto il linguaggio di programmazione, vanno bene sia Java, C#, Ruby e Python, basta che il database sia di tipo SQL. Ti consiglio PostgreSQL (MySQL è un po' limitante).
Purtroppo non conosco nessun testo gratuito che raggiunga la qualità di un testo universitario e che, pertanto, sia degno di nota. L'unico forse è questo su Ruby on Rails, potentissimo framework basato su Ruby col quale sto attualmente sviluppando un gestionale per piccole e medie imprese: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
Se vuoi fare sul serio, impara assolutamente l'inglese. Perché i testi migliori e più innovativi li scrivono tutti inizialmente in quella lingua. [...]
Morale della favola:
1) Inglese;
2) Scegliti il linguaggio di programmazione che ti piace di più fra Java, C# o Ruby & co. e imparalo bene (io ti consiglierei Ruby o Java (in Java è scritta tutta la suite opensource OpenOffice.org, pensa che vantaggio poterne comprendere e modificare il codice! ma la scelta alla fine è personale. Solo stai attento a non sceglierne uno obsoleto);
3) Studia i DBMS basati sul linguaggio SQL.
4) Unisci le ultime due cose con un tuo semplice progettino da realizzare in parte con uno dei linguaggi di cui al p.to 2 e in parte in SQL.
In bocca al lupo!
PS: Alla tua età non togliere tempo agli amici per studiare informatica! Al massimo toglilo ai videogames e alla TV spazzatura. Per avere successo nel mondo del lavoro le capacità relazionali sono essenziali :-)
Ps#2: Io restringerei la scelta ai 3 più interessanti che sono Java, Ruby e .NET.
Scegli in base a quello che vuoi fare da grande ma anche a quello che ti piace di più, che ti fa venire più voglia di programmare perché sei in una fase di apprendimento in cui la produttività è in secondo piano.
Scegli .NET se ti piacciono soprattutto le piattaforme Microsoft e vuoi specializzarti in quelle.
Scegli Java se vuoi scrivere programmi che vadano discretamente bene su quasi tutte le piattaforme.
Scegli Ruby se ti piace come linguaggio e ti interessano particolarmente le applicazioni Web-Based.
Ciò che differenzia Ruby dagli altri due è il fatto che è un linguaggio interpretato (invece che compilato) e non tipizzato. Qui non ho spazio per spiegarti... cerca su wikipedia. Io sono forse sono troppo di parte ma il dato di fatto è che in Java si scriverebbe così:
public class CiaoMondo
{
public static void main(String[] args)
{
System.out.println("Ciao Mondo");
}
}
Con gli altri linguaggi tipizzati cambierebbe la sintassi ma non la sostanza, dovresti comunque scrivere più o meno la stessa quantità di codice. Mentre in Ruby, lo stesso programma, si scrive così:
puts "Ciao Mondo".