Beata gioventu'!
1) Innanzi tutto, quello che si fa a scuola non e' il 10% di quello che serve, e meno dell 1 per mille! Ma anche meno. Non c'e' solo il sapere scrivere un programma, ma serve anche sapere come strutturarlo, come renderlo flessibile, come renderlo espandibile, mantenibile, testabile, resistente ai malfunzionamenti volontari ed involontari, efficiente, parsimonioso delle risorse disponibili, ... tanto per fare alcune osservazioni
2) ci sono tanti linguaggi di programmazione per due motivi fondamentali: a) perche' i linguaggi di programmazione, cosi' come le tecniche di programmazione, evolvono nel tempo. b) perche' ogni linguaggio di programmazione ha un ben specifico contesto di utilizzo.
Ora, non e' possibile elencare tutti i linguaggi esistenti, perche' ne compaiono di nuovi ogni giorno. Spesso sono semplici varianti di qualcosa che gia' esiste.
Si possono classificare, pero' in un numero abbastanza limitato di categorie:
a) linguaggi di programmazione procedurale (C, Pascal, Assembler, COBOL, Fortran, ...)
b) linguaggi ad oggetti: un'evoluzione dei linguaggi procedurali (C++, Java, C#, ...)
c) linguaggi funzionali (il caro e vecchio Lisp - L)ista I)nfinita di I)nutili P)arentesi come e' chiamato dai cultori di questo linguaggio, usato in Intelligenza Artificiale e nei sistemi di calcolo simbolico)
d) linguaggi logici (il Prolog, usato in Intelligenza Artificiale, in Robotica)
e) linguaggi a regole (OPS5, Drools, usati in Intelligenza Artificiale e nei sistemi di decisione automatica)
Poi ci sono altre classificazioni:
- linguaggi interpretati/compilati
- linguaggi pensati per sistemi monoprocessore/multiprocessore (migliaia di processori)
ecc.
3) che ci fai con un linguaggio di programmazione? Nulla, il linguaggio serve per comandare un pezzo di harware che fa qualcosa. Ad esempio il Curiosity su Marte e' comandato da un programma che gira su un computer. Gli ascensori, la lavatrice, i cellulari, i siti Web, ... la centralina dell'automobile, i film di animazione ... Ed a aseconda di quello che devi fare, c'e' un linguaggio adatto allo scopo
4) Nota per quelli che trattano male il Pascal: il Pascal e' un ottimo linguaggio per imparare. Passare da Pascal a C++ (e i concetti fondamentali) e' questione di un giorno di lettura del reference manual (boh, forse qualcosa di piu' ma non tanto ). Saper usare bene il C++ e le sue peculiarita' (template, ereditarieta' multipla, overloading degli operatori, classi friend, ...) richiede per prima cosa aver non solo capito, ma assimilato come una seconda natura i concetti della programmazione. Mi piacerebbe conoscere chi ha capito perfettamente (con tutte le relative implicazioni) il concetto di ereditarieta' multipla e classi base virtuali! Si, lo so che cosa e': ma quando mai e' servito? Ma serve veramente? Tutti i linguaggi successivi l'hanno bellamente eliminato a favore di concetti molto piu' chiari (interfacce).
4.1) Java e' un'ottima alternativa al C++ per imparare. Per passare da Java a C++ basta mezza giornata. Alla fin fine e' solo una questione sintattica. Chi sa programmare bene in Java, sa programmare bene anche in C++. Ma al contrario del C++, Java e' piu' pulito, piu' coerente, elegante e ben organizzato. Ed sono disponibili un vastissimo numero di librerie, per fare praticamente qualsiasi cosa.
4.2) un'altra alternativa al C++ e' C# e la piattaforma .NET di Microsoft. Non e' elegante come Java, ma e' abbastanza diffuso. E qui' mi fermo perche' a me .NET non piace.
Ora, sapere quale direzione prendere a 17 anni e' un po' presto.
Per ora devi studiare, e tanto, ma parecchio tanto. Ma non solo. Quando avrai finito l'Universita', dovrai continuare a studiare, perche' gli strumenti evolvono con la conoscenza e l'informazione. E la conoscenza non si ferma.