Newsgroup: it.comp.programmare
Titolo: strutture dati dinamiche

salve a tutti
mi ponevo alcune questioni sulle strutture dati dinamiche e mi farebbe
piacere sentire qualche parere...
Tutti i linguaggi nati per essere compilati non supportano ( per
quanto ne sappia, potrei non essere sufficientemente documentato)
strutture dati di tipo dinamico, ad esempio liste e alberi. La
giustificazione mi sembra abbastanza ovvia e dovrebbe risiedere nel
fatto che queste strutture necessitano di allocatori e deallocatori,
per i quali e' preferibile sia il programmatore a scegliere.
Cosi' mi chiedevo cosa comporterebbe espandere un linguaggio, come il
C ad esempio, con la gestione automatica delle liste;
Supponiamo di disporre di un tipo 'list', sul quale sono predefiniti
alcuni operatori, con il quale dare senso a codice di questo tipo :
int X {} ;  /* dichiarazione di X come lista di interi */
X <- 1 ; /* appende l'intero 1 alla lista X */
int (*p) {} ;/* definisco p come puntatore ad un elemento di una lista
di interi */
p = X ; /* p punta al primo elemento della lista */
p++ ; /* p avanza nella lista */
*p = 7 ; /* assegna un valore all'elemento puntato */
X = 0 ; /* svuota la lista */
che ne pensate ?
Grazie per eventuali commenti
Luca

 C ad esempio, con la gestione automatica delle liste;
Prova il C++.
Kiuhnm

 che ne pensate ?
Visto quello che scrivi, studiati Python: lo adorerai :-)
-- 
Andrea Bergia - studente              Linux Registred User #281550
"The one thing we're all waiting for, is peace on Earth and an end to war,
it's a miracle we need, the miracle, the miracle, 
Peace on earth and end to war today,
That time will come one day you'll see when we can all be friends"

 
Sono d'accordo, ma alcune scelte progettuali dipendono comunque dalla
"destinazione" originale del linguaggio; mi viene da pensare alla
gestione delle liste nel tcl; oppure alla dichiarazione delle funzioni
in C, pensata per la compilazione separata ed il linker...
Pensa ad un interprete C; quando dai il prompt all'utente dovresti
essere teoricamente all'interno della funzione main, perche' al di
fuori di tutte le funzioni, nella scope globale, non e' possibile
eseguire alcuna istruzione; ma la funzione main, dal punto di vista
del linguaggio, e' una funzione qualsiasi che assume significato
soltanto per mezzo del linker. E' per questo che forse e' legittima
l'assunzione che il C e' stato progettato per essere 'compilato'.
ciao
Luca

 strutture dati di tipo dinamico, ad esempio liste e alberi. 
Non e' vero in generale. In alcuni linguaggi e' piu'facile che in
altri avere strutture dinamiche e ricorsive.
Parecchi linguaggi hanno gia' queste strutture definite tra i loro
tipi nativi o sono facilemente realizzabili -- si tratta in generale
di linguaggi che hanno livelli di astrazione superiori al C ma che
possono anche essere compilati.
Marco

 
Forse nel post precedente mi sono spiegato male . E' chiaro che
esistono infinite soluzioni al problema della creazione di strutture
dinamiche; in C posso creare una lista in 3 minuti, in C++ posso
addirittura ridefinirmi degli operatori ad hoc.
L'oggetto del mio ragionamento era quello di cercare le implicazioni
dell'implementazione di un tipo 'lista' nel linguaggio stesso, cioe'
nel _compilatore_
ciao e grazie comunque
Luca

 nel _compilatore_
Allora non ne vedo i vantaggi.
Ogni volta che serve una struttura nuova bisogna aggiornare il compilatore?
Meglio usare un linguaggio generico come il C++ che permetta di creare
oggetti e definire operatori arbitrari.
Kiuhnm

 l'assunzione che il C e' stato progettato per essere 'compilato'.
Penso di sģ, esistono comunque interpreti C e C++.
-- 
Marco Barisione  (ICQ 84277092)
Vota per la creazione di it.comp.software.editor seguendo le istruzioni
contenute nel messaggio news://
MK.it.comp.soft...@news.nic.it

 oggetti e definire operatori arbitrari.
E che definisce già nella sua libreria standard molte di questi oggetti.
