Ma c'e' di peggio:
Smalltalk 80 (il capostipite), C++, C#, Java, Python, Objective-C, D,
ed n-mila altri (
List of object-oriented programming languages - Wikipedia, the free encyclopedia)
fanno parte tutti della categoria dei
object oriented programming languages.
Se l'obbiettivo e' imparare il
paradigma di programmazione Object Oriented, si puo' quasi dire che uno vale l'altro.
Poi si possono fare le pulci al singolo linguaggio:
-
strong typed or
non typed?
-
nativo o
interpretato?
- con gestione della memoria
automatica o
manuale?
Ci sono pro e contro per ognuna di queste scelte.
Al momento, per un neofita, la scelta da fare e' relativamente semplice:
1) quale e' quello per cui c'e' la maggior documentazione ed il miglior ambiente di sviluppo? La lista si riduce a C++, C#, Java, Python
2) quale sistema operativo? Se linux, la lista si riduce a: C++, Java, Python
3) come nelle interminabili contrapposizioni tra Linux/Windows, iPhone/Android, ecc, c'e' la diatriba tra chi considera la gestione automatica della memoria un''eresia, e chi considera la gestione manuale una pazzia. Personalmente conosco
perfettamente pro e contro di entrambe le teconologie e per chi e' alle prime armi, si puo' tranquillamente risparmiare le notti insonni per un dandling reference (problemi con la gestione manuale della memoria). La lista si riduce a C#, Java, Python (usano la gestione automatica della memoria)
4) invece, sono assolutamente a favore dei linguaggi fortemente tipati, cioe' in cui si specifica esplicitamente di che tipo deve essere una variabile. I linguaggi non tipati non semplificano lo sviluppo del codice, perche' comunque, si deve sapere che tipo di oggetto si trova memorizzato in una variabile! Ed invece di far si che sia il complatore a tenerne traccia, ecco che ne dobbiamo tenere traccia noi a manina. Inutile. Ecco che la lista si riduce a C#, Java
Quindi, alla fine, la scelta e' tra C# e Java se sotto Windows, e Java se sotto Linux.
E tra i due, ovviamente Java