Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-02-2009, 12:44   #1
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
[Java] Neal Gafter - Language Parity: Closures and the JVM

Un talk molto interessante di mezz'oretta con Neal Gafter sul possibile futuro della JVM.

http://www.infoq.com/presentations/gafter-jvm-closures
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 14:25   #2
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
up

... perchè è un talk interessante
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 14:28   #3
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Immagino. Vorrei avere il tempo per godermelo, ma finora non l'ho trovato.

Non si trova per caso una versione testuale e/o una sintesi?
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 15:27   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Immagino. Vorrei avere il tempo per godermelo, ma finora non l'ho trovato.

Non si trova per caso una versione testuale e/o una sintesi?
Quoto, shinya hai altre fonti più fruibili? Purtroppo oggi sono un po' incasinato col lavoro, domani è probabile ci dia un'occhiata, grazie per la segnalazione
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 16:07   #5
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Ho cercato un pochino, ma non ho trovato una trascrizione del talk. Ma dura davvero solo mezz'oretta (comprese le domande alla fine), quindi si fa prima a guardarlo direttamente secondo me
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 16:59   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
Ho cercato un pochino, ma non ho trovato una trascrizione del talk. Ma dura davvero solo mezz'oretta (comprese le domande alla fine), quindi si fa prima a guardarlo direttamente secondo me
Benone, lo tengo buono per la pausa pranzo di domani
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 18:06   #7
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Grazie del talk shinya, mooolto interessante.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 16-02-2009, 18:51   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non è meno interessante quanto disse tempo addietro il buon Joshua Block

http://www.parleys.com/display/PARLE...wComments=true
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2009, 14:31   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Bene, ho ascoltato con interesse il talk, e mi piacerebbe sentire la vostra opinione.
Io ho poco da dire: un po' per il fatto che non sono un programmatore al 100% (nel mio lavoro la programmazione è solo una parte delle mie mansioni) e quindi ho anche poca esperienza in merito ma per quanto mi rigurada, personalmente, non riesco a vedere questa evoluzione nel linguaggio come rivoluzionaria; per lo stesso motivo non riesco a vederela ne come particolarmente positiva ne come particolarmente negativa.

Mi spiego, dopo aver visto del codice di chi programma con linguaggi funzionali e dopo aver dato occhiate a librerie tipo FunctionalJava ho avuto due reazioni:
-> di sconcerto, per la forma inizialmente "aliena" di certe sintassi non ortodosse per il programmatore Java, che sembrano (a prima vista) non avere niente a che spartire con lo stile del linguaggio (e quindi con la chiarezza immediata, con la facile e veloce lettura del codice);
-> di invidia, nel constatare che la forma "aliena" riusciva a sintetizzare molto bene (e, dopotutto a ben guardare, con eleganza) codice che nell'equivalente Java sarebbe stato al confronto molto più prolisso e verboso (a volte questo rende le cose più chiare, altre invece, specie se è troppo prolisso le rende comunque la lettura più ardua a causa della memoria a breve termine del lettore).

In sostanza queste sono state le mie reazioni; a onor del vero non mi sono preoccupato troppo dell'impatto che potrebbero avere sulla JVM queste "aggiunte" al linguaggio.

Dico "aggiunte" perchè di fatto mi pare che siano un qualcosa "in più" che non era previsto fin dalla nascita e la cui giustificazione all'introduzione è appunto che Java è uno dei pochissimi linguaggi mainstream a essere senza clojure e quindi dotiamolo di questa funzionalità, anche in vista di usare Java come "lingua franca" per poter far interoperare codice "straniero" (Ruby, Python, Scheme, eccetera...) con la JVM.

Vabbuò, così di primo acchitto io penso: se male non fa, va bene, finchè le funzionalità/costrutti nuovi introdotti non divengono "obbligatori" e/o non sono troppo "pervasivi" a me che fastidio mi danno?

Se poi apportano dei vantaggi, ben vengano.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 17-02-2009 alle 14:33.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2009, 10:07   #10
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Sostanzialmente credo sia una questione di porsi degli obiettivi.
Io ne vedo due, e li ritengo entrambi validi, basta scegliere.

Se si vuole che java diventi un 'workhorse' stabile, semplice, con il quale tutti i linguaggi su JVM possano interfacciarsi senza problemi, comprensibile da tutti i programmatori pigri che non hanno voglia di studiare niente di più di quello che sanno, e di farlo diventare, di fatto, il nuovo cobol, va bene, non aggiungiamo una virgola al linguaggio. Ma a questo punto bisognerebbe chiedersi se l'aggiunta, che ne so, dei generics sia stata una buona scelta (io non credo, soprattutto perchè sono solo a compile-time).

Se invece si vuole che java diventi un'alternativa moderna a linguaggi molto più avanti (tipo c#, che storicamente ne è la controparte... storicamente ho detto, non che lo sia) allora perchè fermarsi ai generics?? Mettiamo anche tutte le altre cose che sono in giro dagli anni 70 (e forse prima), ad esempio le closure. Tanto più che i generics sono un'aggiunta di gran lunga più complicata delle closure, anche se sembrano semplici a livello superficiale.

Il mio punto di vista è che la strada da seguire avrebbe dovuto essere la prima, ma che per ragioni storiche l'unica strada percorribile sia la seconda. Cosi com'è adesso è un lavoro a metà.

Per quanto riguarda il discorso functional-java. A me piace, la utilizzo quando posso, ma è un totale abuso del linguaggio, lo riconosco. E' il tipico "The prisoner falls in love with his chains"
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2009, 10:48   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Ecco, avevo scritto un posto kilometrico pieno di cose intelligenti e m'è partito internet explorer. Dico due stupidaggini in sintesi.

Funzioni bene, sintassi { T => T } orrenda.

Tanto dopo i generici potremmo buttarci dentro anche una bomba atomica e sembrerebbe robetta.

C'è un altro talk, un po' lunghetto, sul futuro dei linguaggi di programmazione che dice un sacco di cose interessanti.

http://blog.jaoo.dk/2008/10/07/the-f...ing-languages/
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2009, 12:10   #12
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Ecco, avevo scritto un posto kilometrico pieno di cose intelligenti e m'è partito internet explorer. Dico due stupidaggini in sintesi.
Se puoi e vuoi ti invito a ripostare le tue osservazioni perchè mi interesserebbe ascoltarle (leggerle).

Mi interesserebbe sentire anche le opinioni di altri, sia Java user che user dei linguaggi che potrebbero interoperare con la JVM...
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2009, 15:07   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Non è meno interessante quanto disse tempo addietro il buon Joshua Block

http://www.parleys.com/display/PARLE...wComments=true
Visionato...
Orrore e disgusto per via dei problemi legati all'aspetto del non-local return nelle closure e delle variabili locali (ma "esterne alla closure") tenute in "animazione sospesa" dalle stesse e quindi potenzialmente modificabili da thread esterni

Comunque vista la datazione del talk che era relativo a BGGA spero che se proprio devono introdurre le closure in "modo violento" nel linguaggio il risultato non sia l'alienazione totale (almeno per me) che mi è sembrata da questo talk.

Spero invece in un approccio diverso, la soluzione syntatic sugar mi sembra meno stravolgente e comunque efficace, perchè sul discorso relativo alla possibilità di nuove strutture di controllo definite dalla libreria la mia opinione è che non ne sento tutto questo bisogno... almeno non tanto da pagarne il prezzo in quel modo.

Alla fine la considerazione di Joshua Block di usare Scala (il bytecode prodotto è JVM compatibile) come alternativa a Java qualora fosse necessario un approccio funzionale mi pare sensata.

Molto interessante invece l'introduzione di nuovi appositi costrutti specificamente indirizzati a semplificare/snellire singoli aspetti: come per esempio un apposito blocco ARM che chiude automaticamente le risorse allocate, da usarsi per snellire il codice dai try-catch-finally usuali ed evitare relativi errori, o come la sintassi più snella nell'implementare una interfaccia mediante classe definita e istanziata "on the fly" nel codice.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 19-02-2009 alle 15:09.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2009, 17:29   #14
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
http://tech.puredanger.com/2009/02/16/java7-update/

sembra che le closure non ci saranno in java7

bestemmie a piacere.

Sto provando ultimamente a creare interfacce e innerclass per simularle, ma pur funzionando è tedioso.


Una nota positiva è invece quella delle istruzioni a livello di bytecode per facilitare la scritture di linguaggi dinamici su JVM. (ne trarranno beneficio sicuramente JRuby e Groovy, probabilmente anche scala e clojure).
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2009, 18:15   #15
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Letto.

Quote:
Originariamente inviato da thebol Guarda i messaggi
sembra che le closure non ci saranno in java7

bestemmie a piacere.
Perchè?
Le closure sono così indispensabili?

Lo chiedo a causa della mia ignoranza.
Teoricamente so cos'è una closure, in senso stretto, ma, diciamo operativamente, no (anche se ho pasato del tempo a giochicchiare con SmallTalk).

Mi spiego: essendo abituato a programmare in Java e non in un linguaggio funzionale, ed essendo abituato a programmare solo in un ristretto contesto, non ho mai sentito la stringente mancanza delle closure.

Quello che vorrei capire, è in quali contesti, casi d'uso o situazioni risulta migliore come strumento, e di quanto.

Non lo chiedo come provocazione, ma come sincera richiesta di illuminazione perchè sono ignorante sull'argomento e vorrei capire quale reale utilità potrebbero apportare anche al mio lavoro.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2009, 23:54   #16
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Le closure sono così indispensabili?
Indispensabili no, soprattutto in un linguaggio ad oggetti, possono risultare pero' molto comode. In teoria non ne hai bisogno perche' tutto quello che puoi fare con le closure lo puoi fare con oggetti funzione o simili. Solo che sono molto piu' "leggere".

C'e' da dire prima di tutto pero' che nella proposta mostrata piu' sopra da PGI-Bis, hanno scelto un modo decisamente contorto per introdurla (aggiungo che l'autore ha calcato un po' la mano scegliendo esempi ad arte), che ne riduce parecchio l'utilita'. Riporto l'esempio riportato in una slide:
Codice:
static Pair<{ => int },{ => int }> joinedCounters( int initial ) 
{
    return Pair.<{ => int },{ => int }>of( { => initial++ }, { => initial++ });
}
Vedrei piu' piacevole poter scrivere qualcosa del tipo
Codice:
static Pair< int (), int () > joinedCounters( int initial )
{
    int f(){ return initial++; }
    return Pair< int (), int () >( f, f );
}
Che a me risulta un po' piu' chiaro (forse per l'abitudine ad altri linguaggi) anche se probabilmente non sarebbe inseribile cosi' come e' come estensione.

Detto questo, molto spesso l'uso di closure e' piu' conciso che non l'uso di oggetti, e soprattutto migliora la localita'. Ad esempio se devi passare un oggetto, lo devi definire fuori dal corpo della funzione, per cui invece che avere il codice relativo sotto mano devi andare a guaradre cosa fa. Oltre al fatto che in casi molto semplici (come quello sopra di un incrementatore) scrivi 5-6 linee di codice invece che una sola.

Un uso molto importante e' quello della gestione delle risorse. Vista la presenza del garbage collection, in Java in generale non sappiamo quando viene deallocato un oggetto e se a questo oggetto e' associato una risorsa "esterna" (collegamento a db, file, etc.) dobbiamo liberare la risorsa associata a mano oppure rischiare di esaurirle. Se pero' posso passare un pezzo di codice, allora posso scrivere una funzione/metodo che prende ad esempio il nome del file e il codice da eseguire, apre il file, esegue il pezzo di codice, e si preoccupa della pulizia non appena il codice e' stato eseguito.

Qualcosa del tipo (attenzione, e' pseudo-codice !)
Codice:
void withFile( String filename, {File => } snippet )
{
  File f = ... ;
  try 
  {
    snippet(f);
  }
  /* ... gestione eccezioni */
  finally
  {
    f.close();
  }
}

Che potrei usare piu' o meno cosi'.
Codice:
withOpenFile( "pippo.txt", { file =>
  file.writeLine("blabla");
});
Ora, come dicevo sopra la sintassi e' abbastanza orrenda, ma spero di aver reso l'idea (tenendo presente che scrivo codice Java di rado, e penso si noti )
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2009, 09:35   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
@marco.r
Grazie delle spiegazioni, alcuni punti che hai messo in luce mi stanno aiutando a comprendere, anche se non ho ancora capito se un bravo programmatore ad oggetti, uno che ha appreso best practices e design patterns e li sa applicare quando, dove e come serve, ne abbia realmente bisogno (per esempio rispetto al fatto che con le closure hai la possibilità di migliorare la località)

Quote:
Originariamente inviato da marco.r Guarda i messaggi
Un uso molto importante e' quello della gestione delle risorse. Vista la presenza del garbage collection, in Java in generale non sappiamo quando viene deallocato un oggetto e se a questo oggetto e' associato una risorsa "esterna" (collegamento a db, file, etc.) dobbiamo liberare la risorsa associata a mano oppure rischiare di esaurirle. Se pero' posso passare un pezzo di codice, allora posso scrivere una funzione/metodo che prende ad esempio il nome del file e il codice da eseguire, apre il file, esegue il pezzo di codice, e si preoccupa della pulizia non appena il codice e' stato eseguito.
Sì perfetto, ma nel talk di J. Block ci si indirizza alla soluzione dello stesso problema in un altro modo: intoduci un nuovo costrutto da usarsi al posto del tradizionale try{}cacth(Exception e){}finally{} quando hai a che fare con le risorse, per sempio con un semplice try{} che implicitamente chiude correttamente la risorsa quando si esce dal suo scope.

Molto semplice, e conciso, direi.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2009, 10:32   #18
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Letto.


Perchè?
Le closure sono così indispensabili?

Lo chiedo a causa della mia ignoranza.
Teoricamente so cos'è una closure, in senso stretto, ma, diciamo operativamente, no (anche se ho pasato del tempo a giochicchiare con SmallTalk).

Mi spiego: essendo abituato a programmare in Java e non in un linguaggio funzionale, ed essendo abituato a programmare solo in un ristretto contesto, non ho mai sentito la stringente mancanza delle closure.

Quello che vorrei capire, è in quali contesti, casi d'uso o situazioni risulta migliore come strumento, e di quanto.

Non lo chiedo come provocazione, ma come sincera richiesta di illuminazione perchè sono ignorante sull'argomento e vorrei capire quale reale utilità potrebbero apportare anche al mio lavoro.
non sono tanto le chiusure in senso stretto, ma la possibilità di creare funzioni da passare a un altra funzione, senza creare una classe ogni volta.

Sono comode, ci si può vivere senza e il costrutto java per fare quel lavoro sono le inner class o anonymous inner class.

Perchè sono comode? Facilitano l'estensibilità delle classi. L'esempio classico è fare un azione per ogni elemento di una collection. I vari metodi che trovi in ruby, groovy etc tipo collect, join, map, etc. Si fanno anche in java, ma hanno bisogno di più lavoro dietro.

Oppure hai una classe a cui passi dei parametri. Potresti aver bisogno di comportamenti custom non coperti dai parametri previsti. Se si riuscisse a passare una funzione per personalizzare quel comportamento rende il sistema più estendibile. Per fare questo in java devi passare una classe sempre. Avendo le funzioni come first class object, è più semplice gestire queste situazioni.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2009, 10:36   #19
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Codice:
static Pair<{ => int },{ => int }> joinedCounters( int initial ) 
{
    return Pair.<{ => int },{ => int }>of( { => initial++ }, { => initial++ });
}
in effetti la sintassi è brutta
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2009, 13:50   #20
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da thebol Guarda i messaggi
Oppure hai una classe a cui passi dei parametri. Potresti aver bisogno di comportamenti custom non coperti dai parametri previsti. Se si riuscisse a passare una funzione per personalizzare quel comportamento rende il sistema più estendibile. Per fare questo in java devi passare una classe sempre. Avendo le funzioni come first class object, è più semplice gestire queste situazioni.
Ok, ho capito, sei steto chiarissimo, grazie della spiegazione.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
LG UltraFine evo 6K: il primo monitor al...
DJI cambia direzione: investe in Elegoo ...
Black Friday Narwal 2025: risparmi da ca...
Phishing evoluto contro Apple ID: caso f...
Prestazioni in discesa nei giochi? NVIDI...
Addio ai banner dei cookie? L'UE spinge ...
Le offerte Black Friday per gli smartpho...
Il controllo qualità degli iPhone...
Qualcomm Snapdragon X Elite vola con il ...
A2RL Season 2: storia, innovazione e sor...
Core Ultra Series 3: Intel conferma l'ev...
Black Friday Amazon: la GeForce RTX 5070...
EcoFlow, il Black Friday porta grande ri...
Gli sconti più pesanti del Black ...
Smart #5 BRABUS segna il nuovo record di...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v