Newsgroup: it.comp.lang.c++
Titolo: I nuovi linguaggi e il c++

premessa: io adoro il c++ e la sua enorme potenza
mi chiedevo, perché mai TUTTI i nuovi linguaggi non supportano delle
belle cose tipo i puntatori, l'ereditarietà multipla (e poi la
ripescano utilizzando le interfacce), i template, l'overloading degli
operatori (e fanno usare orribili cose tipo if (a.equals(b)) invece
del molto più semplice if (a==b))?
dicono "per semplificare la vita a chi scrive programmi"... solo che,
pensavo, se io non voglio usare quelle cose in c++ mica ne sono
costretto, quindi?
]\/[ad]\/[age
"Un Maestro nell'arte della vita, non fa nessuna precisa distinzione tra lavoro
e gioco, fatica e riposo, mente e corpo, educazione e ricreazione. 
Insegue semplicemente la sua visione di Eccellenza attraverso qualunque cosa sta facendo e lascia agli altri decidere se sta lavorando o giocando. A lui sembra sempre che sta facendo entrambe le cose." - Anonimo.
.-~-.-~-. 
www.madmagelab.cjb.net
 .-~-.-~-.

del molto più semplice if (a==b))?
Nuovi mi sembra un concetto un po' vago...
Comunque dipende dalla filosofia del linguaggio, ad esempio ti posso
parlare di python (che ha overloading di operatori e ereditarietà
multipla) visto che lo conosco, in questo linguaggio non esisto i
template semplicemente perché non servono, esempio:
def min(a, b):
    if a < b:
        return a
    return b
Questo va bene per qualsiasi tipo di dati che abbia un operatore di
confronto, in C++ non potresti invece farlo senza i template, dovresti
infatti scrivere:
int min(int a, int b){return a < b ? a : b}
float min(float a, float b){...}
std::string min(std::string a, std::string b){...}
e così via.
Anche per tutte le altre scelte ci sono motivi simili o semplicemente
per rendere più semplice il linguaggio.
-- 
Marco Barisione (ICQ 84277092)
Su it.news.gruppi si sta discutendo della creazione di it.comp.lang
dove si parlerà dei linguaggi senza un proprio newsgroup e dei
confronti fra i diversi linguaggi.
Se sei interessato unisciti alla discussione.

per rendere più semplice il linguaggio.
questa è una cosa che mi sfugge... rendere più semplice il linguaggio
per chi?


per chi?
Bhé non puoi dire che il meccanismo usato per gli operatori o per i
template in c++ sia semplicissimo.


template in c++ sia semplicissimo.
ok per i template, ma gli operatori? in fondo sono funzioni, niente
più né meno



Per i poveracci laureati in "scienze del comportamento umano" che
non trovando lavoro ripiegano nell'essere programmatori Java
dopo un corso di 10 ore.
*sigh*
Ciao
Gaetano.
-- 
Posted from 
dell-01.mm.eutelsat.org
 [194.214.173.17] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 del molto più semplice if (a==b))?
L'overloading degli operatori ha grosse conseguenze sulla definizione
del linguaggio. Intanto dobbiamo distinguere fra linguaggi a tipizzzione
dinamica e linguaggi a tipizzazione statica. In caso di tipizzazione
statica gli operatori ti obbligano ad avere le reference (che sono state
introdotte in C++ proprio per questo). Secondo ti obbliga ad introdurre
delle asimmetrie nel linguaggio stesso (ovvero a trattare alcuni tipi in
maniera diversi dagli altri). Terzo complicano notevolmente il
linguaggio (dal punto di vista dell'implementazione di un parser dello
stesso e quindi anche di un compilatore). Pertanto viene considerata, in
generale, una "brutta cosa". Diverso il discorso dei linguaggi a
tipizzazione dinamica nei quali, in genere, gli operatori sono metodi a
tutti gli effetti.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

come Python.
Quindi secondo te l'ereditarietą multipla in linguaggi come python č
inutile (o solo comoda in alcuni casi)?
-- 
Marco Barisione (ICQ 84277092)
Su it.news.gruppi si sta discutendo della creazione di it.comp.lang
dove si parlerą dei linguaggi senza un proprio newsgroup e dei


 inutile (o solo comoda in alcuni casi)?
Sicuramente č comoda. Ma non č necessaria. Non conosco bene Python, ma
se il linguaggio permette la tipizzazione dinamica praticamente ogni
tipo si comporta come un generico. Pertanto la sostituibilitą non
dipende direttamente dall'ereditarietą.


 dipende direttamente dall'ereditarietà.
Non condivido questo discorso. Tutti i costrutti dei linguaggi evoluti
sono solo "comodi" dal momento che Boehm e Jacopini hanno dimostrato che
non serve niente di piu' che ciclo e condizione. Resta il fatto che
implementare via eredita' singola di implementazione cose che si
rappresentano naturalmente con l'eredita' multipla porta a codice piu'
contorto. L'importante e' come sempre scegliere bene il costrutto piu'
adatto alla situazione.
Per quanto riguarda Python la tua intuizione e' corretta.
Ciao,
Nicola

 adatto alla situazione.
Molto dipende da come è fatto il tuo codice. Se tieni separate le
interfacce dalle implementazioni dal binding dei messaggi ti accorgi che
per le interfacce necessiti di ereditarietà multipla per i linguaggi a
tipizzazione statica e di nessuna ereditarietà per i linguaggi a
tipizzazione dinamica, per le implementazioni non serve nessuna
ereditarietà, per il binding fra messaggio e metodo ti serve un potente
meccanismo di delega.
Quindi tutto dipende da come è disegnato il linguaggio. In C++, che è a
tipizzazione statica, non ci piove: serve l'ereditarietà multipla. Il
Python lo conosco poco quindi non saprei. In Smalltalk, l'ereditarietà
multipla non serve.
In Smalltalk tutte le classi derivano da un'altra classe eccetto la
classe di Object (che fa da radice dell'albero). Inoltre sia la
tipizzazione che il binding fra messaggio e metodo sono dinamici (e per
di più Smalltalk è completamente riflessivo).
Pertanto è semplice, se necessario, classificare un messaggio
all'interno di un protocollo e definire che il protocollo viene
implementato da un oggetto contenuto. Inoltre questo è raramente
necessario perchè comunque le interfacce non sono specificate a livello
di classe (proprio perchè tutti gli oggetti sono generici e quindi puoi
mandare qualunque messaggio a qualunque oggetto).
Che poi esistano dei tentativi di estendere smalltalk con l'ereditarietà
multipla (falliti perchè nessuno nella comunità smalltalk la usa ne la
vuole usare) è un altro discorso.


non serve niente di piu' che ciclo e condizione.
Bhé allora a questo punto programmiamo tutti in brainfuck (lo
conoscete?)  ;-)


conoscete?)  ;-)
no, però il nome è tutto un programma... :-DDD


no, però il nome è tutto un programma... :-DDD
Certo, gli unici comandi accettati sono:
+ - > < [ ] . ,
Io proverei a scirverci un OS  :-D
-- 
Marco Barisione (ICQ 84277092)
Su it.news.gruppi si sta discutendo della creazione di it.comp.lang
dove si parlerà dei linguaggi senza un proprio newsgroup e dei
