Newsgroup: it.comp.java
Titolo: Java sara' il linguaggio giusto?

Buon giorno al ng.
Non conosco Java, pero' sto cercando di capire se puo' fare o meno al 
caso mio, oltre 10 anni fa avevo preso un paio di libri, rimasti pero' 
sempre a prendere polvere (avevo dato un'occhiata ai costrutti 
fondamentali ma niente piu'). Conosco la programmazione ad oggetti 
(borland pascal prima e delphi dopo) e stavo cercando un linguaggio 
aperto multipiattaforma diffuso e possibilmente gratuito (visto che per 
ora e' solo uno studio personale).
I grossi dubbi che ho riguardano due aspetti ben precisi, e per questo 
chiedo consiglio a voi su quale riterreste sia una buona partenza e su 
quali siano gli strumenti piu'adatti.
Il primo aspetto e' il campo di applicazione, a me interessa 
particolarmente il mondo dei controlli automatici, che richiedono 
operazioni su file, dialogo attraverso la porta seriale e, ultimamente, 
dialogo attraverso LAN con ptotocolli TCP/UDP ed eventualmente 
applicazioni server per il telecontrollo. Inoltre dovrei poter 
rappresentare grafici, misure ecc. Mi interesserebbe anche capire quanto 
siano interfacciabili ad esempio degli script PHP con un applicazione 
Java (ipotizzando di avere in funzione un server apache con un 
applicativo web di controllo).
IL secondo aspetto riguarda lo sviluppo vero e proprio di applicazioni 
complete (non applet). Da quanto ho visto il JDK comprende "solo" 
compilatore a riga di comando e runtime environment. Come si ottengono 
le classiche "finestre e bottoni" di windows? Scrivere codice non mi 
spaventa, ma il non sapere dove e come trovare le informazioni e gli 
esempi si...
grazie per l'attenzione
Claudio_F

 esempi si...
Dai uno sguardo al package javax.swing
Saluti
Giuseppe

 esempi si...
Usa la libreria Swing...ci sono manuali appositi su come utilizzarla, è 
immensa :))

 troppi, mi pare ci sia una libreria da installare, java.comm se non sbaglio.
Per la seriale usa rxtx (
www.rxtx.org
).
Ciao Jack

 Claudio_F
Purché butti via i libri di 10 anni fa (ne sono passati di JDK sotto i 
ponti...) e tu sia disposto a leggerne un bel po' di nuovi, 
assolutamente sì. Tra l'altro, se sei in ambito Java potresti fare a 
meno anche del PHP, ma è una tua scelta.
pole
-- 
ammentos - a lightweight persistence framework for Java
http://ammentos.biobytes.it


Se e' per hovvy Java e' iperflessibile e iperapplicabile a tutti i
campi e documentato da libri corsi e tutorial alla nausea.
Se e' per lavoro io oggi imparerei Ruby

 Se e' per lavoro io oggi imparerei Ruby
Potresti spiegare meglio perché per lavoro impareresti Ruby? 
L'affermazione mi pare inaspettata perché personalmente trovo che i 
motivi per cui hai consigliato Java per hobby si applicano a maggior 
ragione all'ambito lavorativo. Dato che l'affermazione mi pare 
inaspettata mi aspetto che la tua risposta sarà interessante.

On 14 Feb, 14:33, Andrea Francia <afrancia@galielianplus._remove_it>
wrote:

Il motivo e che come ha detto non mi ricordo piu' chi..
"Non puoi tirare una pietra a caso in giro senza prendere un
programmatore Java"
Insomma a meno di non essere un esperto che lavora con Java da anni,
il prog java  e' una figura iperinflazionata (e sottopagata). Quindi
incominciare oggi con java non mi sembra una grande strategia. Ruby
non e' veramente nuovo, ha piu' meno l'eta di Java, ma e' venuto alal
ribalta di recente e ha parecchi sostenitori 'importanti', tipo
http://www.davidflanagan.com/
.. cioe' i tipi che pe rprimi avevano
annusato la convenienza di specializzarsi in Java. Un altro settore
(piu' difficile e non veramente in ambito di programamzione ) in cui
mi specializzerei oggi x lavoro  e' la sicurezza informatica e l
informatica forense)

 meno anche del PHP, ma è una tua scelta.
Beh, a leggere non c'e' problema ;) Semmai e' trovare qualcosa con il 
giusto taglio pratico. Mi spiego meglio, proprio oggi sono passato in 
libreria, uno scaffale era dedicato a Java, alcuni libri erano anche in 
due o tre volumi. In tutti si parte da zero, i tipi, if then, filosofia 
OOP, e poi via liste infinite di classi appena accennate che vanno bene 
come riferimento per chi il linguaggio gia' lo conosce, ma personalmente 
non saprei come utilizzare, e quindi mi danno un forte senso di 
brancolare nel buio. Ora, e' ovvio che oggi come oggi non puo' esistere 
un testo o corso che faccia un esempio dettagliato di utilizzo di ogni 
classe/metodo, sarebbe un'impresa immane e forse inutile. Pero' sarebbe 
bello qualcosa che per categorie (il dialogo uomo macchina, la grafica, 
la comunicazione in rete, lettura scrittura di file, gestione eventi 
ecc) facesse esempi concreti anche minimali. Poi tutto il resto del 
discorso sulla filosofia ad oggetti e sulla programmazione in generale 
ben venga :)
Dalla libreria, invece di uscire con pesanti volumi sotto braccio, mi 
sono portato via solo un librino pocket della Apogeo Java6, ecco, questo 
e'il taglio pratico che speravo di trovare... ma ampliato in un paio di 
volumi da 800 pagine ;)
ciao
Claudio_F

 Dai uno sguardo al package javax.swing
Grazie
ciao
Claudio_F

 
Ciao
FF

applicazioni server per il telecontrollo.
Senza voler scatenare polemiche, in questo campo d'applicazione il
padrone indiscusso č il C. Anche il C++ viene utilizzato, ma la curva
d'apprendimento di quest'ultimo, rispetto al primo, č senza dubbio piů
lunga. Il C č un linguaggio decisamente obsoleto ed error-prone perň
per interfacciamenti di basso livello č impareggiabile.

 esempi si...
Google!

 per interfacciamenti di basso livello è impareggiabile.
Sono d'accordo, il Java mi interessa pero' per la sua "consanguineita'" 
con la rete, e' nato nella rete e mi sembra l'ideale per applicazioni 
web based. L'unico dubbio era appunto la possibilita' di creare un link 
seriale sulla porta del pc (o sulle seriali virtuali emulate su USB). 
Comunque si possono usare anche convertitori ethernet/RS232 che da un 
lato dialogano in TCP o UDP e dall'altro escono con semplici bytes 
seriali "standard".
Non ho ancora capito pero' se si e' sempre dipendenti da una macchina 
virtuale installata (JRE) oppure se le applicazioni possono anche essere 
autonome.
ciao
Claudio_F

 Naturalmente sono tutti e due utilizzabili gratuitamente...
Perfetto, e' il passo successivo che volevo provare.
Ho scaricato il JDK 6 SE giusto per vedere se funzionava il primo "hello 
world", e ho gia' dovuto rognare per il path.
In pratica per poter vedere javac il percorso non deve contenere nomi 
piu' lunghi di 8 caratteri, e la variabile path di windows viene 
troncata, per cui ho dovuto installare in C:\J\jdk\bin e ogni volta che 
avvio il prompt comandi devo scrivere path C:\J\jdk\bin ....
Per i libri si, se trovo qualcosa che non sia una "banale" lista di 
classi come dicevo nell'altro post ;)
ciao
Claudio_F

 Google!
...fosse semplice trovare gli esempi giusti ;)
ciao
Claudio_F

 Claudio_F
ciao Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 windows non lo farei neppure in C ;)
Da quello che dici secondo me Java non fa per te: troppo complesso e 
ricco/esteso per funzionalità tutto sommato semplici. Perderesti un 
sacco di tempo solo per familiarizzare un po' con i vari framework.
Il classico shuttle per fare la spesa (o cannone per uccidere una 
mosca)... :)
Fossi in te proverei qualcosa di più "agile", tipo Python con pyserial 
(guardati gli esempi qui: 
http://pyserial.sourceforge.net
).
Anche l'interfacciamento con librerie fatte in C/C++ è, secondo me, più 
immediato.
Puoi fare un confronto:
http://java.sun.com/docs/books/jni/html/jniTOC.html
http://www.suttoncourtenay.org.uk/duncan/accu/integratingpython.html
Per la pubblicazione web ci sono facili librerie come CherryPy e per i 
grafici puoi utilizzare molto semplicemente matplotlib (per grafici 
scientifici) o reportlab (per documenti e presentazioni).
Se hai bisogno di prestazioni con Java hai limiti abbastanza rigidi (più 
che altro dipendono molto dalle tue competenze, per cui ci vuole tempo 
per capire come ottimizzare adeguatamente il codice. E sulla VM più di 
tanto non si può fare) mentre con Python puoi usare tools come Psyco:
http://www.ibm.com/developerworks/library/l-psyco.html
Ciao,
Paolo

programmatore Java"
Questa me la segno  :-)
Scorpio 


Se mi permettetete un'osservazione sulla preferenza tra java e python, 
mi sentirei di dire, anche se molto inesperto di python, che non è tanto 
la velocità, per cui neanche java brilla più di tanto, quanto la 
tipizzazione statica di java.
Quindi fondamentalmente la scelta, secondo me, dipende da quanto valore 
aggiunto può portarti la tipizzazione statica.
E' vero che java è decisamente più pedante, bisogna scrivere 
significativamente di più, ma è vero pure che il compilatore scova un 
bel pò di errori e che si può risparmiare quindi un bel pò di tempo in 
ricerche bug.
D'altra parte utilizzare python vuol dire sviluppare rapidamente senza 
complessità aggiuntive al costo di controlli molto più blandi.
Come parametro discriminante, quindi, mi sentirei di suggerire ad 
esempio, la dimensione del progetto.

windows non lo farei neppure in C ;)
Forse perché Windows non è un sistema operativo real-time esattamente
come molti Unix. Io comunque ho sviluppato applicazioni
mission-critical sotto Windows e non ho mai avuto alcun problema.

piattaforme *nix
Anche con Windows si può fare senza problemi.

web based.
Ma non mi sembra che tu voglia fare applicazioni web based, stavi
parlando di controlli automatici e, notoriamente, per questo campo
d'applicazione si usano linguaggi diversi da Java.

 Java e' interpretato e quindi necessita di una JRE sempre.
Più correttamente:
Il Linguaggio Java è compilato in bytecode Java.
Il bytecode Java è interpretato dalla Java Virtual Machine.
Il JRE è l'insieme della Java Virtual Machine più alcune librerie standard.

 ricerche bug.
Su questo non mi trovi d'accordo.
Esistono molti metodi di testing del codice (che andrebbero usati 
*sempre*, indipendentemente dal linguaggio usato) e il compilatore 
intercetta solo un numero parziale di errori (spesso fornendo una falsa 
illusione di correttezza).
Qui Eckel lo spiega bene:
http://www.mindview.net/WebLog/log-0066
 > Come parametro discriminante, quindi, mi sentirei di suggerire ad
 > esempio, la dimensione del progetto.
Ci sono progetti molto grandi (buona parte di quello che fa google, ad 
esempio) scritti usando linguaggi dinamici.
Ciao,
Paolo

 (guardati gli esempi qui: 
http://pyserial.sourceforge.net
).
Questo e' ben piu' di un parere, ti ringrazio. Per quanto riguarda il 
cannone per uccidere una mosca, in parte i programmi di oggi (e windows 
stesso) mi hanno abituato all'idea di usare pachidermi per spostare 
stuzzicadenti, i PC stessi hanno perso in interfacciabilita' "spiccola" 
in favore ad esempio della LAN e di protocolli di alto livello, percio' 
il basso livello e' sempre piu' spostato su controller esterni, e non mi 
sembra male usare come gestione un linguaggio a maggiore astrazione, che 
abbia se necessario maggiori potenzialita' anche in altri ambiti (e a 
tal proposito sarei curioso di sapere per quali cose e' attualmente 
piu' utilizzato e adatto Java).
Python era guarda caso il secondo candidato in lista (e' curioso che due 
tra i linguaggi piu' usati siano interpretati o semicompilati). Credo 
che abbia quel tipo di "semplicita'" che mi piace, e ho visto che viene 
usato anche come linguaggio di controllo in sistemi linux embedded... a 
questo punto temo non mi resti che provare a studiarli tutti e due ;)
ciao
Claudio_F

 writes:
CF> i PC stessi hanno perso in
CF> interfacciabilita' "spiccola" in favore ad esempio della LAN e di
CF> protocolli di alto livello,
Beh, dipende tutto da dove ti metti a guardare la RAM. Vero che una
volta "si aveva maggior controllo del ferro" con quelli che erano i
"sistemi operativi" per PC e home. Ma ora usare, i.e., il DOS su una
CPU multicore è uno spreco mostruoso di potenza.
D'altro canto, il poter usare la potenza richiede un qualcosa che
arbitri le risorse, e questo è un S.O. serio che si mette a fare
da arbitro: sulla seriale non ci andrai più rispondendo a degli
interrupt, ma ad esempio leggendo caratteri da un device.
CF> percio' il basso livello e' sempre piu'
CF> spostato su controller esterni,
Tornando al real time, un S.O. tradizionale multitasking manca di
una caratteristica fondamentale per l'uso real time, e che è la garanzia
che il sistema risponda ad uno stimolo esterno al più in un tempo T.
C'è poi da considerare che oramai, per ottenere prestazioni sempre
maggiori, si cerca di scaricare la CPU da compiti ausiliari. Uh, oh,
quello che si faceva con i vecchi mainframe :)
CF> e non mi sembra male usare come
CF> gestione un linguaggio a maggiore astrazione, che abbia se
CF> necessario maggiori potenzialita' anche in altri ambiti (e a tal
CF> proposito sarei curioso di sapere per quali cose e' attualmente piu'
CF> utilizzato e adatto Java).
Java ha una grande fortuna come linguaggio per applicazioni "enterprise"
e  web  (molto più  diffuse  le  seconde  delle prime).  Ultimamente  le
prestazioni come linguaggio  per applicazioni desktop stanno migliorando
e  si  cominciano  a  vedere  applicazioni  molto  interessanti  scritte
totalmente in Java.
Java finora è  stato frenato nella sua diffusione dal  fatto che non era
libero,  quindi molto poco  adattabile, ad  esempio, alle  varie distri-
buzioni di GNU/Linux  (e questo è un effetto  pratico, non una posizione
politica).   Inoltre fino  alla  1.4 le  prestazioni delle  applicazioni
desktop erano pietose.
CF> Python era guarda caso il secondo candidato in lista (e' curioso che
CF> due tra i linguaggi piu' usati siano interpretati o
CF> semicompilati).
Java ha preso questa strada perché  deve molte molte cose al LISP, che è
un linguaggio interpretato vero oltre byte-compilato. La presenza del
bytecode è stata impiegata per poter astrarre dal S.O. ospite più che
per un uso interattivo.
Python  invece  nasce come  linguaggio  interpretato  con  anche un  uso
interattivo dell'interprete.
E nasce  libero, per questo ha  avuto successo ache  se all'inizio, alla
epoca dei P133, non era così appetitoso.
Personalmente il suo progetto ha un paio di caratteristiche che non me
lo rendono simpatico. Per lavoro mi sa che dovrò conoscere groovy, per
diletto mi sa che approfondirò il common LISP :). E forse Ruby.
-- 
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                   e coltivatore diretto               not install
                               di software                   Debian"
a Cesare avrei detto di scrivermi | I would have told Caesar to write
a 
fn...@rat.vg
                    | me at 
fn...@rat.vg

 E forse Ruby.
Molti miei ex-colleghi, causa una leggera "saturazione" del mercato 
javista, sono passati o stanno passando a ruby. Li sento tutti contenti.
Personalmente ho optato per python, ma devo ammettere che ormai 
programmi sě e no 3-4 giorni al mese...
Tra l'altro avevo letto (parecchio tempo fa, quasi un paio d'anni) che 
entro le prossime release di Java l'idea era di includere anche JRuby e 
forse Jython. Si sa niente?
Ciao,
Paolo

 esempio, la dimensione del progetto.
Nel senso che se č grosso usi Python altrimenti non lo finisci (a meno
di non avere un team con i controcabasi); si, sono d'accordo.
-- 
cc = callcc {|cc| cc.call cc}; cc.call cc

 interattivo dell'interprete.
Python č un linguaggio bytecompilato. Spulciando la documentazione della
versione 1.0, direi inoltre che č *nato* bytecompilato.
Ovviamente nulla vieta di avere anche un interprete interattivo.


ricerche bug.
Però questo, ahimé, non ti mette al riparo da guai più seri. E'
importante applicare, in programmazione, quello che sono in pochi ad
applicare, nella realtà, e cioè lo unit testing. Il test è una
disciplina che andrebbe insegnata alle elementari, una regola di vita.
La realtà è che si è sempre impelagati nella propria righina del Gantt
e si preferisce dare priorità ad altre cose.
Il compilatore può sicuramente fare un'analisi statica e quindi
salvarti da un bel po' di errori, però i test fanno sicuramente molto
di più, tanto da ridurre il lavoro del compilatore ad un ambito quasi
marginale.

punto di vista filosofico. 
Anche perché se Java somiglia a LISP, tutti i linguaggi di alto
livello gli somigliano ;-)

> Per lavoro mi sa che dovrò conoscere groovy
PX> Non male, non l'ho usato seriamente ma mi sembra un buon compromesso
PX> tra java e ruby.
Non vorrei dire una fesseria ma è usato in Spagic...
PX> prossime release di Java l'idea era di includere anche JRuby e forse
PX> Jython. Si sa niente?
Mah so solo che Jython è incluso in WebSpere Adminsitration Console ;)


>> 
Una cosa simile non la posso fare con Java.


> puň risparmiare quindi un bel pň di tempo in ricerche bug.
c6> Oh, ma di lint mai sentito parlare? test?
Molti non ne hanno sentito parlare. 
Mi č capitato da poco di dover lavorare col ProC di Oracle.
Dal cliente facevano  un megafile di circa 5k righe,  con problemi se la
funzione  X  veniva dopo  la  funzione Y  o  viceversa  (colpa del  pre-
compilatore ProC).
Dopo il  passaggio del team  di cui io  ero 50%, una funzione  per file,
Makefile, programma per l'esecuzione dei test ...
L'informatica č la vera magia:
              anima la materia inanimata ed evoca servitori immateriali
 
              si esprime attraverso linguaggi iniziatici
              č piagata da una marea di ciarlatani.


> un punto di vista filosofico.
AL> Anche perché se Java somiglia a LISP, tutti i linguaggi di alto
AL> livello gli somigliano ;-)
Certo che hai qualche problemino anche con la semantica
dell'italiano... :):)
Dovere molte cose (essere in debito o ereditare) non mi pare che sia
sinonimo di assomigliare ... ;)


>> me lo rendono simpatico.
PX> Sì ma non lanciare il sasso e nascondere la mano: toglici la
PX> curiosita! ;) Caratteristiche tecniche o "altro"?
GUL> Non mi piace che le funzioni lambda siano limitate
Su insistenza di mia moglie ho fatto il mio primo scriptino in python
e devo dire che il fatto che le funzioni anonime siano limitate non 
pregiudica in alcun modo le possibilità del linguaggio. 
Però è brutto, ecco! Guido è stato molto cattivo con le lambda forms!
 :) :) :) :) :) :)


dell'italiano... :):)
Anche mettendoci le faccine, le offese rimangono offese e non capisco
cosa ti dia il diritto d'offendere. I problemi con l'italiano, semmai,
ce l'avrai tu, io ho risposto ad Enrico, il quale ha parlato appunto
di "similitudini". Evidentemente, quindi, a non capire quello che
scrivi siamo in due. Hai poi qualche problema anche coi linguaggi di
programmazione, perché "dovere MOLTE cose", quando applicato a un
linguaggio di programmazione rispetto a un altro, significa parlare,
implicitamente, di una qualche forma di somiglianza. Io non credo che
userei l'espressione "Delphi deve molto al Pascal" se NON volessi
sottointendere che Delphi ha costrutti molto simili al Pascal.

 livello gli somigliano ;-)
Molto di più, fra l'altro! :)


 Molti non ne hanno sentito parlare.
Eh, ma allora non diamo la colpa ai linguaggi dinamici!
Per inciso, io non sarei capace di buttare fuori in tempi non biblici un
programma in quasi qualunque linguaggio senza scrivere test unitari[0].
-----
[0] in effetti se il progetto non è troppo grosso lo ho fatto sia in
Prolog che in Haskell.


 ricerche bug.
manco vero. pensa a tutte le volte che fai un cast esplicito.
a compiler-time c'è sicuramente un controllo sui tipi, ma le regole si 
allentano nel caso ci sia di mezzo l'ereditarietà. in pratica il 
compilatore si deve "fidare" quando dichiari valida una assegnazione di 
un oggetto di tipo padre ad una reference di tipo figlio, perchè lo sai 
te se a runtime quell'oggetto sarà del tipo giusto.
-- 
Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://softvalley.blogspot.com

 Molto di più, fra l'altro! :)
non lo volevo dire... :-)


 Java e' interpretato 
evvai! :-)


 Mah so solo che Jython è incluso in WebSpere Adminsitration Console ;)
Sì, è uno dei due linguaggi di scripting per l'amministrazione di WebSphere 
che IBM ha previsto. L'altro è JACL se non mi sbaglio.
Ad ogni modo un conto è farci degli script per amministrare WebSphere, un 
conto è svilupparci programmi "pesanti"...
Scorpio. 

 marginale.
Ormai lo credo anche io. Rimande da dire pero', che i linguaggio statici 
per loro natura consentono ai vari IDE un lavoro eccezionale.
Cosi' recuperiamo un po' del tempo perso a codare ;)

 Una cosa simile non la posso fare con Java.
A parte che mi pare stiano cercando di fare dei magheggi per farcela (in
Java intendo), quello che volevo fare notare è che di per se Python ha
un vero e proprio compilatore che compila su bytecode e poi una vm che
lo esegue.


 non lo volevo dire... :-)
io l'ho detto. :)


> dell'italiano... :):)
AL> Anche mettendoci le faccine, le offese rimangono offese e non
AL> capisco cosa ti dia il diritto d'offendere.
L'offesa č solo nella tua mente, quindi problemi tuoi.
AL> Hai poi qualche problema
AL> anche coi linguaggi di programmazione, perché "dovere MOLTE cose",
AL> quando applicato a un linguaggio di programmazione rispetto a un
AL> altro, significa parlare, implicitamente, di una qualche forma di
AL> somiglianza.
No.  Questo  casomai  vale  solo   per  la  tua  testa  che  attribuisce
significati diversi alla lingua  italiana rispetto a quelli che dovrebbe
avere.


> Molti non ne hanno sentito parlare.
c6> Eh, ma allora non diamo la colpa ai linguaggi dinamici!
Sia mai. La colpa è sempre delle persone, mai delle cose usate.
c6> Per inciso, io non sarei capace di buttare fuori in tempi non
c6> biblici un programma in quasi qualunque linguaggio senza scrivere
c6> test unitari[0].
É un saggio modo per esser sicuri che le cose funzionino. La saggezza
purtroppo non è comune...
Potrei parafrasare a questo punto il  Nexus di Blade Runner, mi limito a
citare un mio amico che lavora su nel team di un noto S.O. proprietario:
"Gian, noi facciamo merda, però anche i nostri concorrenti fanno merda e
 quindi mi consolo..."


 Cosi' recuperiamo un po' del tempo perso a codare ;)
Beh, mi pare come introdurre un problema per lodarne la soluzione. :P


 pregiudica in alcun modo le possibilità del linguaggio. 
Cosa intendi con 'lambda' limitate?
In particolare noi pythonisti generalmente usiamo più spesso funzioni
con nome (in effetti, dal momento che la definizione di una funzione è
uno statement come un altro, la cosa non è un grosso problema).
Oppure list-comprehensions. E meglio ancora generator-expressions.


 Mi vengono in mente il linguaggio con la F e quello con la C :)...
A me viene in mente Haskell, invece.


 conto è svilupparci programmi "pesanti"...
Che vengono regolarmente fatti e funzionano senza problemi. Ergo...


> Una cosa simile non la posso fare con Java.
c6> A parte che mi pare stiano cercando di fare dei magheggi per farcela
c6> (in Java intendo),
C'è la beanshell volendo, è quella che usa Emacs (in pipe) per fare
tutte le cose che richiedono reflection. Mai usata direttamente 
c6> quello che volevo fare notare è che di per se
c6> Python ha un vero e proprio compilatore che compila su bytecode e
c6> poi una vm che lo esegue.
Si, ma digerisce anche i sorgenti "in chiaro" ed i comandi diretti.
E questo è  un vantaggio perché a volte fai prima  a far interpretare un
paio di comandi che a scrivere il sorgente, compilare ed eseguire.
Apre la strada ad una marea di usi immediati che non è niente male.
Pensa solo al fatto che in  Java hanno creato Jython, Groovy e JRuby per
permettere di fare applicazioni rapidamente estendibili.


> ;)
S> Ad ogni modo un conto è farci degli script per amministrare
S> WebSphere, un conto è svilupparci programmi "pesanti"...
Lì il  problema grosso è  l'ambiente. Comunque c'è una  bella differenza
tra  il fare  uno scriptino  in  Python per  estrarre ripetutamente  due
valori e scrivere un programma in Java che faccia lo stesso...


crxor 666 ha scritto:

Cosi' cominci il solito flame.
Puntandoti la pistola alla tempia ti intimo di ammettere subito che il 
supporto degli IDE e' importante e non e' solo una necessita' nata dalle 
carenze di un linguaggio statico.

  quindi mi consolo..."
Eh. Fare merda è conseguenza ineluttabile del mangiare.


 carenze di un linguaggio statico.
In particolare personalmente non uso alcun IDE ne in C++ ne in C
(entrambi linguaggi statici, in effetti). Non lo uso manco in Haskell
(ancora più statico). 
Lo uso in Java principalmente perchè ci sono *troppi* dettagli da tenere
a mente, spesso scelta di nomi poco ortogonale (anche se ora mi sembra
che la stiano mettendo a posto), etc etc etc. Poi per varie
semplificazioni nel deployment (mentre per dire C e C++ li gestisco con
gli autotools, per cui anche usando un IDE non farei che dirgli di
chiamare/testare etc etc etc interfacciandosi a comandi esterni, il che
ovviamente non lo rende più comodo di fare :make dentro vim :) )
Poi ognuno ha i suoi gusti, per carità.


 permettere di fare applicazioni rapidamente estendibili.
Direi che in particolare gli scopi (almeno del primo e dell'ultimo) sono
altri. Ma incidentalmente si, si possono usare anche per questo.


> pregiudica in alcun modo le possibilità del linguaggio.
c6> Cosa intendi con 'lambda' limitate?
Che sono limitate a espressioni di una sola riga.
Come ho  detto, non limita  le cose che  puoi fare. Infatti dato  che il
nome è locale alla funzione puoi usare l_ambda . Ma a me pare un eccesso
di antipadia di guido per le lambda form :)


> Mi vengono in mente il linguaggio con la F e quello con la C :)...
c6> A me viene in mente Haskell, invece.
Dovrei darci  un occhio.  Ma aver  dovuto usare il  linguaggio con  la F
lascia cicatrici brucianti. E mi è toccato anche scrivere del codice nel
linguaggio con la C (che non è il C o derivati, è roba da dinosauri) per
aiutare dei colleghi, oddio, ho dovuto curare le dita con l'apposito
unguento contro le cobol-fingers... :)


 unguento contro le cobol-fingers... :)
LOL.


 di antipadia di guido per le lambda form :)
Come dicevo, le lambda in Python sono puramente zucchero sintattico. 
Tipicamente se devo scrivere una funzione un po' lunga, preferisco
comunque una def (e di codice Python ne ho scritto tanto, eh!).
D'altra parte fare lambda multi-riga sarebbe stato un problema. Una
lambda è un'espressione; il corpo della lambda è a sua volta
un'espressione. Per cui c'è poco da fare.
Tipicamente lambda è pensato (in python) per funzioni davvero minimali e
buttate li. Da cui la sua natura.


 
Veramente questo e' l'unico punto in cui la comunita' Java fa a meno di 
un IDE ;). Nel senso che qualsiasi buon programmatore Java ha 
dimestichezza con Ant o Maven, che io lancio spesso da console (altri da 
un bottone dell'IDE ma ha poca importanza).

 un bottone dell'IDE ma ha poca importanza).
Tuttavia non è affatto scomodo partire da degli script di build
prefabbricati e solo da migliorare/personalizzare/aggiungere.
Specie tenendo conto di quanto è maledettamente verboso ant.


> Dovrei darci un occhio.
c6> Nota che complessivamente non mi vengono in mente cose che si fanno
c6> meglio in Haskell che in Lisp, a patto di conoscerli entrambi. O
c6> meglio: in Haskell si ragiona meglio a livello formale per il
c6> semplice motivo che la valutazione è *sempre* lazy e *non* ci sono
c6> side effect. In nessuna maniera[0] e in nessun caso.
Grazie, introduzione molto interessante.
