Questa
rubrica affronta il linguaggio Java e la sua macchina astratta JVM. Attraverso
un insieme di quiz cercherò di affrontare gli angoli più
astrusi, strani, difficili, incomprensibili del linguaggio in modo da conoscerlo
di più e quindi poterlo utilizzare meglio. Ogni due mesi proporrò
un diverso quiz, darò la soluzione del quiz precedente e discuterò
pubblicamente tutti i commenti che mi farete avere (dariol@mokabyte.it)
sui quiz passati in modo da sviscerare tutti i lati nascosti di questo
linguaggio.
Le
uniche conoscenze necessarie per risolvere i quiz sono relative alla conoscenza
del linguaggio e della sua macchina astratta, per cui gli unici riferimenti
bibliografici sono:
[1]
James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The
Java Language Specification, Second Edition,
[2]
Code
Conventions for the Java Programming Language,
[3]
Tim Lindholm, Frank Yellin: The
Java Virtual Machine Specification, Second Edition.
Personalmente
la percentuale di tempo che dedico a ognuno di questi testi è la
seguente:
[1]
90%
[2]
9%
[3]
1%
I quiz
presentati in questa rubrica trattano esclusivamente del linguaggio Java,
così non sono richieste conoscenze di applets, servlets, Beans,
etc.. Le uniche classi predefinite che possano eventualmente essere utilizzate
sono quindi solo quelle appartenenti al package java.lang (classi come
ad esempio: Thread, Class, ClassLoader, System, Runtime, etc...).
Per
risolvere i quiz non serve inoltre editare, compilare o testare nessun
tipo di codice. Si tratta di quiz mentali che devono essere risolti
solo con la testa e non con il computer. Assomigliano quindi di più
agli esperimenti
mentali (il diavoletto di Maxwell, l'ascensore di Einstein, il gatto
di Schrödinger, etc...) che a quelli fisici.
Un
brevissimo cenno storico: gran parte di questi quiz arrivano da analoghi
test che ho fatto girare tra i miei collaboratori/colleghi/amici appassionati
di Java e di linguaggi. Statisticamente ho notato che questi quiz:
-
erano
sufficientemente complessi, ma non impossibili (media di risposte esatte
del 70%);
-
sono stati
un'occasione riuscita per imparare dai propri (e dagli altrui) errori;
-
hanno
effettivamente aiutato a scoprire molti errori in reali applicazioni Java
sviluppate per il mercato.
Questo mese
L'esercizio
di questo mese lo puoi trovare qui
I quiz precedenti
|