Originariamente inviato da serenasere24
Spero che la domanda non sia troppo generica.
Vorrei imparare a programmare bene ad oggetti, secondo voi qual'è il linguaggio migliore a questo scopo da un punto di vista "didattico"?
Per me un linguaggio è solo uno strumento, quindi non mi faccio problemi di "ideali", mi interessa solo avere un buono strumento che mi aiuti a concretizzare le idee che ho in mente, mi piace programmare per divertirmi e non penso che lo farò mai per lavoro, anche perché non sono laureata e dubito che con l'autodidattica si possa raggiungere un livello di conoscenza vasto come quello che si acquisisce all'università, studiando sistemi operativi, compilatori, algoritmi, matematica avanzata (tutte materie che mi affascino e studio a tempo perso ma non pretendo certo di arrivare ad un livello universitario) ecc..
Perciò mi limito ad usare la programmazione come uno strumento per divertirmi, per creare qualcosa che mi piace, quindi non mi interessa quale linguaggio è più richiesto dal mercato :P
Mi interessa soprattutto imparare bene i vari algoritmi e e strutture dati (liste, stack, algoritmi di sorting ecc..), perché lo trovo divertente, quindi non mi interessa neanche se il linguaggio ha già delle funzioni automatizzate per queste cose, così come per i design pattern (ho letto che Java ha alcuni design pattern già di suo). Insomma mi piace spremere le meningi, quindi non userei mai algoritmi e funzioni scritti da altri (certo se dovessi creare un prodotto commerciale non mi porrei certo questo problema e anzi userei il più possibile soluzioni già pronte, sarebbe assurdo riscrivere ciò che esiste già, anche perché spesso sono progetti che esistono da anni e sono portati avanti da tante persone esperte, e pretendere di poter fare da sola le stesse cose è una pazzia).
Ho poca esperienza con la programmazione, tutto ciò che ho fatto è un piccolo motore di ricerca in php, e una specie di platform tipo super mario in C++ più librerie Allegro, ma apparte questo la mia conoscenza è più teorica che pratica, tranne un po' di C e di C++.
La mia domanda è, per imparare bene la programmazione ad oggetti mi consigliate Java o C++? E che mi dite di C#? Dal momento che utilizzo Linux lo devo escludere a priori?
Un'ultima cosa, se un giorno volessi scrivere un videogioco in 3d, dovrei passare per forza al C++? A quanto vedo tutti i motori 3d più utilizzati sono in C++, secondo voi Java ha una possibilità in questo campo o è poco reattivo per poterci scrivere un videogioco (ovviamente mi riferisco a pc, non a cellulari o palmari)? In tal caso avrei difficoltà a passare da Java a C++?
Un'ultimissima XD cosa, in Java è possibile non utilizzare il Garbage Collector in alcuni casi? Ad esempio quando devo essere sicura che un oggetto dev'essere distrutto in un determinato momento e non posso permettermi che questo non avvenga, è possibile farlo?
Scusate per il poema XD un saluto e grazie per l'attenzione!
Benvenuta nel forum di HTML.it

La tua richiesta è molto dettagliata e quindi chiara: da ciò che scrivi denoto almeno 2 *filosofie* emergenti, cioè che intendi perseguire e seguire.
La prima è quella prettamente matematica, ossia lo studio di algoritmi, strutture dati et simila, il cui linguaggio principe è, senza ombra di dubbio, il C o il C++, imparando i quali si può apprendere qualsiasi altro linguaggio in circa 1 settimana; ovviamente se sei indirizzata verso l'OOP concentrati su C++ e no su C, questo mi sembra ovvio.
La tua seconda attitudine è più commerciale, ma nel senso "musicale" del termine: ti interesserebbero linguaggi che ti permettono di creare applicazioni visuali o comunque software piu "leggeri", meno impegnativi da un punto di vista logico-matematico-informatico ma altrettanto potenti.
Ci vorrebbero giorni per descrivere le caratteristiche di tutti i linguaggi di programmazione, ed inoltre questo tipo di discussioni evocano sicuramente una serie di risposte di preferenza per motivi sia oggettivi che soggettivi e di abitudine; per questo motivo non mi esprimo su un linguaggio piuttosto che su un altro, visto anche il tuo desiderio di "grafica": impara il C++ per la parte *matematica*, e studia un altro linguaggio di alto livello tipo Java, VB.NET per la parte visuale.
Coniungando le potenzialità di Java e/o VB.NET con quelle stratosferiche e trascendenti del C++ (dopo molto studio) potrai finalmente fare *quasi* tutto, che non è poco.
Per qualsiasi altro chiarimento, siamo qua.


Ciao