Io penso che qualsiasi persona che abbia un minimo di senso pratico ed un obiettivo da raggiungere possa applicare un ragionamento simile.
Io penso che qualsiasi persona che abbia un minimo di senso pratico ed un obiettivo da raggiungere possa applicare un ragionamento simile.
Tutto ciò è molto triste, ti sarai mica laureato in Ingegneria Informatica studiando sui riassunti dei tuoi amici? Secondo il tuo ragionamento chiunque abbia un minimo di senso pratico dovrebbe fare così.Originariamente Scritto da ChernoIo penso che qualsiasi persona che abbia un minimo di senso pratico ed un obiettivo da raggiungere possa applicare un ragionamento simile.
eh, non litigate mo' !
Non ho la laurea, ho intrapreso gli studi ma poi ho iniziato a lavorare professionalmente nello sviluppo (videogames e non se può interessare) aprendo una mia società. La mia affermazione deriva unicamente dall'esperienza: con gli anni ho imparato che alla fine nessuno fa le cose fine a loro stesse, ma per ottenere un risultato: sia che si tratti di muovere due pixel in bianco e nero, sia che si tratti di una produzione tripla A. Quello che è importante è imparare a conoscere bene i propri strumenti ed utilizzarli al meglio, questo implica anche dire a volte "no questa tecnologia seppur ottima in generale, nel caso specifico non è appropriata".
Tutto qua.
ca**o ho sbagliato utente.Non ho la laurea, ho intrapreso gli studi ma poi ho iniziato a lavorare professionalmente nello sviluppo (videogames e non se può interessare) aprendo una mia società. La mia affermazione deriva unicamente dall'esperienza: con gli anni ho imparato che alla fine nessuno fa le cose fine a loro stesse, ma per ottenere un risultato: sia che si tratti di muovere due pixel in bianco e nero, sia che si tratti di una produzione tripla A. Quello che è importante è imparare a conoscere bene i propri strumenti ed utilizzarli al meglio, questo implica anche dire a volte "no questa tecnologia seppur ottima in generale, nel caso specifico non è appropriata".
Tutto qua.
L'esempio della laurea era funzionale alla critica che volevo fare, non era da prendere alla lettera.
Il tuo ragionamento parte da una posizione in cui già si conoscono vari strumenti, cioè C#, C++, xna etc e si opera una scelta.
La questione differisce dal punto di vista didattico. Per me imparare a programmare videogiochi con C# e Xna, senza passare per C/C++, è come imparare la letteratura italiana sul bignami. Questo era il senso di quello che volevo dire.
Si ma è relativo. Per esempio c'è da dire che uno non fa videogiochi. Al massimo uno si occupa di una parte di sviluppo e non tutte richiedono la medesima conoscenza profonda della macchina a basso livello. Certo uno può fare il factotum ed essere un mostro in tutto, ma sfido chiunque a farlo: di professionisti davvero bravi nelle ottimizzazioni a basso livello e tutte quelle robe dure e pure c/asm, si contano sulle dita della mano in Italia, per esempio. Con professionisti intendo persone stipendiate per farlo eh
Comunque stiamo andando oltre, il punto è che mi sembrava assurdo parlare di una roba simile con quei toni da gne gne gne in un topic incentrato su xna. Io le chiamo guerre dei poveri, poi fate voi. Ripeto, l'autore del topic non ha chiesto aiuto sulla programmazione: ha semplicemente detto che sta usando una api e si sta divertendo.
Fra parentesi xna è una API, quindi di fianco a C# e C++ non andrebbe proprio messo
Non si è fatta nessuna guerra di linguaggi, si sono espresse opinioniIntendo che vi mettete a fare paragoni inutili fra linguaggi quando in realtà quello che si guarda, quando si inizia un progetto, è la portata e gli obiettivi.
Mi spiego: se come programmatore devo studiare un'api grafica o devo fare un prototipo di gameplay, sarò molto più contento se l'occuparmi delle risorse a basso livello sia l'ultimo dei miei problemi. Tendenzialmente si tenta di raggiungere un obiettivo, quindi il punto centrale è l'obiettivo, non il mezzo.
In c# ho scritto diversi editors per i miei progetti con una facilità estrema, allo stesso modo con C++ ho scritto la base di un motore di gioco perchè era più performante così. Insomma uno conosce i mezzi, li valuta e li usa. Eccome se li usa.
Non mi sembra che l'autore del topic abbia scritto che vuole assolutamente fare un gioco, c'è scritto che sta provando XNA e si sta divertendo un sacco: per questo che secondo me è perfettamente inutile e retrogrado in un post simile fare la guerra C# vs Java vs C++. E' fuori luogo, tipico errore del programmatore che è comodo con una cosa ed è convinto sia la migliore sempre e comunque
Opinioni che tra l'altro hai sottolineato con questo post, quindi...
<sdrammatizz_mode>
anche perchè si sa che pungono ...
</sdrammatizz_mode>
Alla fin fine comunque, se si può ottenere un risultato godibile a livello personale, va bene qualsiasi cosa, se il programmatore wannabe si diverte, quello che conta sopratutto all'inizio, è vedere che fa qualcosa.
Poi il resto verrà, se e quando vorrà farlo diventare qualcosa di più approfondito.
cmq Cherno noi non ci si vede da secoli e stiamo a Milano! stard ...
Ultima modifica di Mithrandir; 29-05-09 alle 07:59:34
Games that run on the framework can technically be written in any .NET-compliant language, but only C# and XNA Game Studio Express IDE and all versions of Visual Studio 2005 are officially supported.
Intendeva dire che non si può fare una comparazione tra un linguaggio di programmazione e una libreria di funzioni ( che è l'artefatto, cioè un prodotto di un determinato linguaggio ).
Un po' come dire: è meglio il latte parzialmente scremato o il gelato confezionato?
Ora arriva cherno e mi contraddice, lo so già
Ma infatti noi non comparavamo XNA a C++, ma C# a C++. Dato che il Framework è supportato al 100% e guide et co. sono per C#, pareva più che giusto domandarsi il perché. Dopo varie discussioni siamo giunti anche ad un punto, tra l'altroIntendeva dire che non si può fare una comparazione tra un linguaggio di programmazione e una libreria di funzioni ( che è l'artefatto, cioè un prodotto di un determinato linguaggio ).
Un po' come dire: è meglio il latte parzialmente scremato o il gelato confezionato?
Ora arriva cherno e mi contraddice, lo so già
Comunque Haruki quello che hai postato non è propriamente vero: ho usato xna con visual c++ express 2008 tranquillamente
Ecco, ho contradetto qualcuno
visual c++ express 2008 -> .NET-compliant language
tuttavia
C# and XNA Game Studio Express IDE and all versions of Visual Studio 2005 are officially supported.
Ciao! Come ha detto un po' piú su qualcuno, "quante affermazioni scorrette su C#/Java"...
La differenza fondamentale (to the extent of my knowledge) tra C# e Java sta nelle seguenti caratteristiche presenti in C# e assenti in Java:
1) rimozione della GC -> differenziare tra class (heap/GC) e struct (stack/deep copied)
2) generics corretti *non* type erased, ossia non é castato tutto ad object dal compilatore
3) covarianza e controvarianza dei delegate
4) delegate anonimi (si, lo so, in Java ci sono le inner classes, andatelo a dire ad uno sviluppatore funzionale e vedrete quanto si incazza...)
5) LINQ
6) LINQ
7) LINQ
LINQ
9) LINQ
10) LINQ
11) LINQ
12) LINQ
13) LINQ
...
N) LINQ
...
Ciononostante Java é e resta un bel linguaggio e un grande "apritore di porte" alla massa degli sviluppatori!
Il signore per caso ha detto LINQ?
A uno sviluppatore funzionale qualunque cosa dici non va bene Quello è un universo a parte.
Questo thread è un contatore di post modulo 3Ciao! Come ha detto un po' piú su qualcuno, "quante affermazioni scorrette su C#/Java"...
La differenza fondamentale (to the extent of my knowledge) tra C# e Java sta nelle seguenti caratteristiche presenti in C# e assenti in Java:
1) rimozione della GC -> differenziare tra class (heap/GC) e struct (stack/deep copied)
2) generics corretti *non* type erased, ossia non é castato tutto ad object dal compilatore
3) covarianza e controvarianza dei delegate
4) delegate anonimi (si, lo so, in Java ci sono le inner classes, andatelo a dire ad uno sviluppatore funzionale e vedrete quanto si incazza...)
5) LINQ
6) LINQ
7) LINQ
LINQ
9) LINQ
10) LINQ
11) LINQ
12) LINQ
13) LINQ
...
N) LINQ
...
Ciononostante Java é e resta un bel linguaggio e un grande "apritore di porte" alla massa degli sviluppatori!
Ma guarda che anche C# lo è. Vi doveste credere che C# è un linguaggio evoluto ed innovativo...
no, C# è un Java ridondante e pieno zeppo di meccanismi contingenti, nel puro stile concreto ed utilitarista di microsoft.
Yep. LINQ, contenitori monadici lazy, lambda expressions, tipi anonimi, extension methods. Luke Hoban ha scritto un raytracer in una sola, smorgasmboardica query linq...Non é neanche lontanamente legato ai databases e all'accesso ai dati, contrariamente a quello che il 99% degli sviluppatori crede di aver capito. LINQ é la meravigliosa conseguenza di aver iniettato nel mondo .Net le conoscenze di designer di linguaggi del calibro di Anders Hejilsberger, Don Syme, Luca Cardelli e Simon-Peyton Jones. Costoro sono grandissimi architetti di linguaggi, e probabilmente tra loro quattro hanno scritto la storia dei linguaggi funzionali moderni. Grazie a loro C# si avvale di LINQ, che é uno stile di programmazione molto efficiente quanto a garbage collection/memory allocation grazie alla laziness, permette cose strutturalmente impossibili senza salti mortali in altri linguaggi come collezioni infinite (le magie di yield...) e consente ad un programmatore che lo sa usare di scrivere codice elegantissimo, provabilmente certamente corretto (niente side-effects = maggiore dimostrabilitá del codice). Dulcis in fundo, le queries LINQ sono codice inerentemente parallelo, quindi un game engine che usi molto LINQ nel loop della logica puó essere reso multi-core friendly senza nessun cambiamento a parte dei cast a ParallelEnumerable invece che Enumerable.
Sorry per il tono da "lezione", sono un po' stanco per fare di meglio :(
Beh, io sono uno sviluppatore funzionale e penso che quello che hai appena detto sugli sviluppatori funzionali non vada bene (uno sviluppatore funzionale esperto di sistemi di tipi ti direbbe che questa frase non compila senza un sistema di tipi ricorsivi)
Ma io Java e C# li metto sullo stesso livello, quindi non mi lancio proprio in una guerra in difesa di Java
Ma butterei lì così, le properties come meccanismo ridondante e appunto linq come meccanismo contingente.
Non te l'ho nemmeno chiesto se lo fossi, perché lo avevo intuito dal post da te scrittoYep. LINQ, contenitori monadici lazy, lambda expressions, tipi anonimi, extension methods. Luke Hoban ha scritto un raytracer in una sola, smorgasmboardica query linq...Non é neanche lontanamente legato ai databases e all'accesso ai dati, contrariamente a quello che il 99% degli sviluppatori crede di aver capito. LINQ é la meravigliosa conseguenza di aver iniettato nel mondo .Net le conoscenze di designer di linguaggi del calibro di Anders Hejilsberger, Don Syme, Luca Cardelli e Simon-Peyton Jones. Costoro sono grandissimi architetti di linguaggi, e probabilmente tra loro quattro hanno scritto la storia dei linguaggi funzionali moderni. Grazie a loro C# si avvale di LINQ, che é uno stile di programmazione molto efficiente quanto a garbage collection/memory allocation grazie alla laziness, permette cose strutturalmente impossibili senza salti mortali in altri linguaggi come collezioni infinite (le magie di yield...) e consente ad un programmatore che lo sa usare di scrivere codice elegantissimo, provabilmente certamente corretto (niente side-effects = maggiore dimostrabilitá del codice). Dulcis in fundo, le queries LINQ sono codice inerentemente parallelo, quindi un game engine che usi molto LINQ nel loop della logica puó essere reso multi-core friendly senza nessun cambiamento a parte dei cast a ParallelEnumerable invece che Enumerable.
Sorry per il tono da "lezione", sono un po' stanco per fare di meglio :(
Beh, io sono uno sviluppatore funzionale e penso che quello che hai appena detto sugli sviluppatori funzionali non vada bene (uno sviluppatore funzionale esperto di sistemi di tipi ti direbbe che questa frase non compila senza un sistema di tipi ricorsivi)
Come ti ho detto, siete su un universo a parte.
E con ciò non intendendo che il vostro sia un universo sia sbagliato, ma le divergenze di pensiero sono fin troppe.
contingente=non necessario ma non impossibile?
Non sono esattamente abbagliato dalla profonditá della tua dissertazione: puoi elaborare in piú di due ("meccanismo", "contingente") parole?
PS: le qualitá di LINQ non sono le stesse di caratteristiche superficiali di un linguaggio, siano un parco librerie, ambienti di sviluppo, zucchero sintattico, etc. Si tratta piuttosto di un modo eccezionale per risolvere una serie di problemi della programmazione contemporanea con estrema eleganza e con conoscenze accademicamente profonde!
Ultima modifica di giuseppemag; 30-05-09 alle 21:27:59
Peró C# (e la deadly combo C#+F#) sono molto ibridi come paradigma. Non é proprio come scrivere Haskell, ecco!
Comunque scrivere codice massivamente parallelo non é cosa da fare in paradigma X, dove X!=funzionale: mutex, semafori, monitor, deadlock, etc. sono da fare gelare i testicoli anche al programmatore piú coraggioso...In codice funzionale niente di tutto ció puó accadere, e il parallelismo non costa maggiore complessitá al programmatore. Su quad cores la differenza comincia a essere notevole!