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