Sun Certified Java COMPILER

Ieri ho dato il Certified Java Programmer per scaldarmi prima del Certified Java Developer, ma francamente mi ha un po’ contrariato.

Qualche settimana fa, in preparazione al test, avevo provato le venti domande di esempio che offre gentilmente mamma SUN e avevo già notato che in alcuni quesiti il criterio di valutazione era la conoscienza “meccanica” delle specifiche del linguaggio.

Qualche domanda gabola mi sta anche bene, ma l’esame vero e proprio però porta questo approccio all’estremo. Una quantità di domande comporta un’analisi minuziosa del codice proposto per trovare la gaboletta che eventualmente fa fallire la compilazione e, solo allora, si può escludere la scelta “la compilazione fallisce” e pensare effettivamente a ciò che avviene al runtime. Ora capisco perchè ti danno due ore per rispondere a sessanta quesiti a risposta chiusa. Questo tipo di paranoia da “manca forse una virgola?” rende ogni quesito estenuante e l’intero test decisamente noioso, mentre io me lo aspettavo più divertente.

Nella maggioranza dei casi poi la virgola manca davvero..

Altri quesiti invece andavano a evidenziare problematiche che forse solo un programmatore C caffeinomane considererebbe vitali. Scrivere del codice Java in cui le differenze tra ++i e i++ diventano critiche significa entrare nella mentalità “You are not supposed to understand this”. Ora, il sottoscritto è un po’ maniaco e quindi se l’è cavata egregiamente, ma addirittura tre quesiti pieni di j– e –j mi sembra divergente dall’idioma Java e dagli obiettivi di chi sviluppa usando questo linguaggio. E questo è solo un esempio.

Avessi avuto una persona davanti a me invece che a un computer penso che a molti di questi quesiti, alla domanda “cosa non va in queste venti linee?” la mia prima risposta non sarebbe stata “Lancia una IndexOutOfBoundsException”, quanto piuttosto : “Quello che non va è che questo è del pessimo codice a prescindere dalla correttezza dell’algoritmo.”

Quello che distingue un bravo programmatore non è sapere la differenza tra ++i e i++, quanto sapere scrivere del codice che risolve i problemi, invece di crearne. Ma forse non era quella la sede.

Una mezza dozzina di domande invece mi sono molto piaciute : proponevano in modo indiretto e sottile questioni effettivamente fondamentali della programmazione Java, così da assicurare che non solo si conoscano alcune caratteristiche di base del linguaggio (pass by value/reference per esempio), ma che si siano sviscerate a sufficienza per riconoscerne gli effetti anche in casi meno ovvii.

Confido che il “Developer” conterrà più domande di quest’ultimo tipo e della vera programmazione OO.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s