PDA

View Full Version : Estasiato dal Java (Dov' è l' inganno?)


sonique
22-02-2005, 16:59
Ciao ragazzi..
Parto dalla domanda: Dov' è l' inganno?

Si nel senso che mi sono avvicinato al JAVA da circa un mese, e lo trovo estremamente semplice. Per esempio con il buon vecchio C, per implementare una lista a puntatori doppiamente concatenata e ordinata ci volevano una buona 40° o poco + di righe di codice, con il Java l' ho implementata si o no in 10 righe di codice usando Vector e metodi addElementAt(Object o , int k )....Allora la domanda nasce spontanea? Ma è un linguaggio per neofiti???

Cmq.....ho deciso di gestire in java il progetto di AI, in cui si deve implementare il gioco del lotto mediante l' utilizzo di A* con euristica ammissibile.
Chiunque sappia di cosa stia parlando mi potrebbe contattare??
Grazie

P.S: Ovviamente va bene in qualsiasi linguaggio.

anx721
22-02-2005, 17:22
Java non è un linguaggio per neofiti, ma è un linguaggio molto diverso dal C, innanzitutto perchè è orientato agli oggetti, e poi perche viene fornito con una libreria di supporto a dir poco immensa. Se lo studi da un mese ovviamente non hai potutto ancora scoprire tutto linguaggio, ma una volta che lo conosci ti da la possibilita di fare molto. Inoltre è stato studiato per essere un linguaggio chiaro, senza la sintassi barocca e a volte fuorviante tipica del c/c++, da cui ha ereditato molto lasciando pero fuori tutti gli aspetti inutilmente complicati e poco utili. Per questo è tra i linguaggi più facili da imparare all'inizio, anche se per sfruttarlo appieno bisogn s tudiare molto tutta la sua libreria e utilizzare molto la filosofia della programmazione ad oggetti.

Gli svantaggi di cui java sono:

- è sensibilmente piu lento del C; ma gli ambiti in cui questo conta sono veramente pochi
- non è adatto per fare programmazione di sistema o di basso livello, per questo il C è necessario
- la distribuzione di programmi implica la distribuzione della java virtual machine, anche se il gcc riesce a compilare in codice eseguibile sia per linux che per windows programmi java (1.2) senza interfaccia grafica.

71104
22-02-2005, 17:48
il C è un linguaggio di ricerca, il Java è un linguaggio di produttività.

PS: molto carina la definizione "sintassi barocca" :) :p

sonique
22-02-2005, 17:50
Ciao anx, condivido tutto cio ke hai detto...
Pero il java tralascia la gestione della memoria (di cui si interessa il garbage), e questo mi sembra un po troppo. Anke se la notazione a puntatori non è mai piaciuta a nessuno :muro:
Saranno anke diversi C e java pero è vero anke ke per ki proviene dal c, il java risulta molto + semplice

fbcyborg
22-02-2005, 17:52
Un grande utilizzo del java è nella programmazione di rete.
La "facilità" che riscontri deriverà anche dal fatto che sei un bravo programmatore, ma c'è da dire che quando si conosce già un linguaggio è molto semplice impararne uno nuovo. In particolar modo se si tratta di passare da java a c e viceversa.
Cmq come diceva anx721 quando imparerai ad usarlo maggiormente ti renderai conto di quanto sia immenso e quante siano le sue classi predefinite, in continuo aumento.

Una cosa: ma per il tuo progetto sulla ricerca A* non dovresti usare il prolog? Se hai intenzione di usare java per creare una vera applicazione grafica, preparati a scrivere centinaia di linee di codice ed a studiarti le swing e le awt.

ciao!

PS: se ti serve qualche linea di codice prova quì:
http://www.dis.uniroma1.it/~corsoai/
nelle varie sezioni trovi del codice...

sonique
22-02-2005, 17:53
Ciao 71104, questo me lo devi spiegare però!!

sonique
22-02-2005, 17:57
Ciao cyborg,
in effetti il prolog lo userò per risolvere il problema della scimmia e della banana e dell'addizionatore a 3 bit. Il gioco dell' otto poteva essere risolto con qualsiasi linguaggio.
Mi potresti aiutare?
Grazie

anx721
22-02-2005, 18:01
Originariamente inviato da sonique
Ciao anx, condivido tutto cio ke hai detto...
Pero il java tralascia la gestione della memoria (di cui si interessa il garbage), e questo mi sembra un po troppo.

Troppo in che senso? troppo bello ? :sofico:

se devi fare programmazione di basso livello o di sistema, o estremamente ottimizzate la memoria la devo gestire te, ma se devi sviluppare sistemi complessi è giusto che tale gestione sia affidata a procedure automatiche, e che le risorse creative degli programmatori siano orientate làddove l'automatismo non puo essere utilizzato, cioè la progettazione dei componenti e di come questi si relazionano scambiandosi messaggi.

non a caso tutti i linguaggi moderni per lo sviluppo software offrono il garbage collector

fbcyborg
22-02-2005, 18:03
Guarda, onestamente ti dirò che ho dimenticato un po' di cose di Ai.. cmq non ho capito.. vuoi l'algoritmo di soluzione del gioco dell'8?
sul russel & norvig ci dovrebbe essere !

ps... sul sito che ti ho dato ci sono tutte le slides del corso.. scaricale tutte... e vedi...

non so in che università sei.. magari quelle dispense le hai già!

sonique
22-02-2005, 18:18
X anx: Si si lo so è bellissimo...pero nn so mi sento un po declassato :mc:

X cyborg: Si vorrei il codice, sul russel norvig c' è solo la spiegazione del prob...Magari se mi indichi la slide da dove lo posso prendere.....


Grazie 1000

fbcyborg
22-02-2005, 18:22
x A* mi pare sia la lezione 5.. x il codice non mi ricordo.. onestamente non so se c'era del codice java per la ricerca A*, cmq guarda fra le esercitazioni

cionci
22-02-2005, 18:41
Il paragone C e Java è un po' troppo forzato... Magari un confronto più sostenibile è quello con il C++...

kingv
22-02-2005, 22:04
Originariamente inviato da cionci
Il paragone C e Java è un po' troppo forzato...


concordo, sono stati pensati in epoche diverse e per scopi diversi.

Sono pochi anche gli ambiti in cui si pestano i piedi, talvolta e' possibile scrivere lo stesso codice in C o in Java quando si estendono le funzionalità di alcuni prodotti, per cui vengono date sia le interfacce C (per privilegiare l'efficienza ) che Java (se sono piu' importanti la manutenibilità , il design e la rapidità di sviluppo)