Newsgroup: it.comp.programmare
Titolo: Compilatre per linguaggi interpretati

Salve,
tempo fa mi dissero che si scrivesse un compilatore per Python o Ruby, 
si perderebbero molte caratteristiche come il garbage collection. Ma 
l'unico modo di implementare il GC è tramite un'interprete (es.: JVM di 
Java)? Inoltre ci sarebbbero per caso problemi anche dal punto di vista 
della gestione dei tipi come le liste? Insomma, un codice del tipo
# Codice Python
var = ["Stringa", 1, 3.5]
var = {1 : "uno", 2 : "due"}
sarebbe difficilmente gestibile (dal punto di vista della memoria 
sprattutto) da un compilatore non essendoci il GC? Sarebbe necessario 
allocare prima la memoria necessaria per la variabile, ma non sapendo 
cosa conterrà dovrà necessariamente essere gestita in maniera dinamica, 
quindi con i puntatori... ma per liberare la memoria non in uso?
Grazie
--
Noixe
Inviato da 
www.mynewsgate.net

si perderebbero molte caratteristiche come il garbage collection. 
non so cosa si perderebbe, ma non la gc. 
Esistono vari sistemi di GC automatica per c e c++, come anche vari
compilatori per linguaggi con gc integrata.

 ma per liberare la memoria non in uso?
Un programma scritto bene non necessita di garbage collector perchè NON 
genera garbage. 
-- 
Luc

 genera garbage.
Quindi un programma che ha un lista dinamica che da n celle si può 
ridurre anche a n-k (per qualche k <= n) siccome genera garbage, a priori 
non è un programma scritto bene?
Ciao


 non è un programma scritto bene?
No, ha una lista dinamica implementata male, cioè che non libera man 
mano gli elementi "extra". 
-- 
Luc

 mano gli elementi "extra".
Allora devi dire che un programma implementato correttamente gestice bene 
anche il garbage prodotto e non che non genera garbage.


 anche il garbage prodotto e non che non genera garbage.
Ok, è quello che intendevo. Quindi il GC automatico serve solo per chi 
non sa ben programmare... ;) 
-- 
Luc

 non sa ben programmare... ;)=20
Eh eh, ma anche per chì non vuole perdere tempo. Imho, la soluzione migliore 
sarebbe offrire sia GC che gestione manuale della memoria.




Staresti sostenendo che non e' possibile scrivere un buon programma in
Smalltalk, Lisp, Java, C#, Javascript, Python, Eiffel, ...?
Perche' in tali linguaggi e' impossibile fare qualcosa di utile senza
allocare memoria dinamica, ma non esistono istruzioni per disallocarla.
L'alternativa e' non disallocare mai, ma credo sia difficile sostenere
che i programmi che disallocano memoria non siano buoni programmi.
-- 
	Carlo Milanesi
 
http://digilander.libero.it/carlmila

 allocare memoria dinamica, ma non esistono istruzioni per disallocarla.
Veramente non si può disallocare dinamicamente in quei (sub)
linguaggi!?!? Meno male non li uso... ;) 
-- 
Luc

 che i programmi che disallocano memoria non siano buoni programmi.
Io ho esperienza solo di lisp, e solo scolastica.
Da quello che ho imparato è un linguaggio pretenzioso
e impraticabile (TROOPPE parentesi), e che alla fin
fine è solo un altro linguaggio imperativo, nonostante
tutte le arie da "intelligente artificiale".

 Smalltalk, Lisp, Java, C#, Javascript, Python, Eiffel, ...?
<...>
Purtroppo è un modo di pensare che molta gente si porta ancora dietro
(e parla senza conoscere).  Primo indice per riconoscere un cattivo
programmatore è quello di capire se vuole avere sotto controllo la
situazione ;-)  Si vede che non ha ancora ben compreso qual è il
compito principale di un programmatore, che è quello di far funzionare
le cose che crea.  Che si deallochi forzatamente o meno, poco importa
(anzi, importa, se *ci si scorda* di deallocare).  Se ho un garbage
collector che lo fa per me, io sono contento.  Molti programmi
producono errori per una cattiva gestione della memoria (è uno dei
motivi per cui i puntatori sono da chiudere in un armadietto con su
scritto "da usare solo in caso di guerra!" e prova ne è il fatto che
il C++ ha introdotto i "reference" e i moderni linguaggi ne sono
sprovvisti).

 Io ho esperienza solo di lisp, e solo scolastica.
La domanda era retorica e presupponeva una risposta legata alla
garbage collection.  La qualità di un linguaggio non si valuta in base
alla possibilità che ti consenta di gestire tutto a mano.

 situazione
E perchè mai? Io, come programmatore, SE VOGLIO, pretendo di avere il 
potere su quello che creo.
Ribatti a questo, Tenente Laforge... :-P
-- 
Luc

>>>
E perchè mai? Io, come programmatore, SE VOGLIO, pretendo di avere il
potere su quello che creo.
<<<
Shhh.. silenzio.

 Shhh.. silenzio.
....(bisbigliando)... perchè? 
-- 
Luc

 Shhh.. silenzio.
LOL!

 tutte le arie da "intelligente artificiale".
quindi secondo te e` impossibile scrivere un buon programma in lisp? Guarda
un po' emacs e dimmi se secondo te non e` un buon programma...
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 tutte le arie da "intelligente artificiale".
LOL, a parte come ha detto Antonio di Emacs leggiti questo:
http://www.paulgraham.com/hundred.html
-- 
Lawrence