Curiosità sui linguaggi...

Fabrizio Soppelsa fsoppelsa@oltrelinux.com
Dom 30 Dic 2007 10:11:13 CET


Massimo (2007-12-29, 15:13):
> Infatti, il "successo" di Java secondo me è molto "commerciale"... 
> d'altronde in Java è considerato più importante non rompere la 
> retrocompatibilità piuttosto che innovare (e la retrocompatibilità, lo 
> ammetto, su sw da mantenere non è cosa da sottovalutare...)

Questo piu` che altro per ragioni tecniche: infatti, ogni nuova aggiunta
al linguaggio deve essere implementata come workaround, visto che in Sun
nessuno ha voglia di rifare la JVM ;)

> In realtà non lo so così bene come credi, perchè con Ruby ho appena 
> iniziato (ed indovina un po' chi mi aveva messo "la voglia", con quel 
> bell'intervento al LinuxDay su Rails? Si, si... è colpa tua stavolta! 
> ^_^ ) ma cercherò di approfondire meglio. Tuttavia io mi riferivo al 
> "lato utente" (che in questo caso è il programmatore), che riesce a 
> raggiungere risultati simili con sforzo simile e strade, tutto sommato, 
> non così diverse...

Chiaramente c'e` il lato pratico (sintassi e uso quotidiano), come c'e`
quello teorico, il quale invece poggia su considerazioni di dimostrabilita`
matematica (correttezza ed efficienza).
Alcuni linguaggi non sono affatto utilizzabili dall'utente-programmatore
senza una certa conoscenza della grammatica e dell'implementazione del
parser. Mi riferisco per esempio a quella bestiaccia di Smalltalk, o a
Lisp, ma la considerazione resta validissima, anche se meno stretta, anche
per affari come C++ (che non si conosce mai abbastanza a fondo).
Tanto per dire e restare in tema C++, conoscendo come funziona il garbage 
collector, che C++ non ha :), si puo` capire come dichiarare un array
con dimensioni specificate da un'espressione non-costante costringa il
compilatore a generare codice che piazza un puntatore sullo stack, che 
punta ad un'area dell'heap in cui questo array dalle dimensioni 
misteriose (conosciute solo a tempo di esecuzione) puo` trovare 
spazio senza problemi; d'altronde g++ non puo` fare diversamente, onde 
evitare eventuali problemi di linking. Eccetera, eccetera.

> ...ad ogni modo, a piccole dosi, se ti va di iniziare con il "papiro" e 
> non siamo troppo OT sarebbe interessante approfondire un po' i vari 
> meccanismi interni di cui sopra... :p

Non conosco approfonditamente come e` implementato l'interprete Python,
ahime`, so solo come funziona quello di Smalltalk (per alcuni versi
simile a quello Ruby), in sostanza qui la lezione e`: "Non puoi ottenere
qualcosa per niente", cioe` aspettati di dover pagare un certo prezzo per 
la duttilita` estrema del paradigma OO puro ( != Java). Il prezzo e`
quello, non avendo i tipi statici che fanno la differenza, di un maggior
costo (cpu, memoria) in termini di rappresentazione run-time del programma.

> E' un po' come sparare sulla croce rossa... ^_^
> Si, ci sono le classi "old style" e quelle "new style", lo so... ^_^
> Si, anche Python converge verso un mondo tutto ad oggetti... ^_^
> Si, se vuoi continuo ancora un po'... -_^

Oops :)

> p.s. mmmhhh... a forza di fare "emoticons" in stile japponese ^_^ invece 
> che ammericano :) non è che mi stia Rubyzzando implicitamente? Mah... :p

HAHA!
Ciao.
fs.


-- 
/"\
\ /       ASCII Ribbon Campaign  
 X   against HTML email & .doc files
/ \


Maggiori informazioni sulla lista blug