|
|
|
![]() |
|
Strumenti |
![]() |
#101 | |||
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19138
|
Quote:
la mia cmq era una battuta, non voglio mancare di considerazione né verso Torvals né verso Tanembaum. solo che si beccavano come due galletti e la cosa era piuttosto buffa Quote:
Quote:
e leggetevi il loro battibecco perché è una figata ![]() http://groups.google.it/group/comp.o...5c4a78723eeef5 |
|||
![]() |
![]() |
![]() |
#102 | |||
Senior Member
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
|
Quote:
![]() Quote:
![]() Quote:
Io ho sempre affermato che e' falso che il Kernel di un SO come Linux non possa essere scritto in C++, affermato soprattutto da chi adduce come argomento il fatto che il C++ sarebbe piu' lento del C e presenterebbe un overhead al programmatore. E' falso anche questo, ed e' vero il contrario: spesso e volentieri non e' possibile scrivere codice C veloce, compatto ed efficiente come l'equivalente codice C++, per svariati motivi, fra i quali il fatto che un compilatore C++ "conosce" internamente concetti che un compilatore C non conosce ed e' in grado di usarli per produrre codice piu' ottimizzato. Un esempio potrebbe essere implementare una tabella di dispatch virtuale, oppure ordinare un vettore di elementi dove il tipo degli elementi non e' conosciuto a priori. E' vero pero' che per chi non conosce il C++ e' piu' facile scrivere codice inefficiente, rispetto a chi non conosce il C. Infatti faccio spesso questa battuta rifermendomi a Torvalds e alla sua famosa affermazione: "Non si puo' scrivere un kernel in C++ perche' in C++ non si possono scrivere allocatori custom". Quando fece quest'affermazione probabilmente non sapeva che in C++ si possono scrivere allocatori custom e sono piu' efficienti che in C. Avrebbe potuto impararlo meglio ![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" |
|||
![]() |
![]() |
![]() |
#103 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() ma non sottovalutare le tette!!! ![]() ![]() ![]() ![]() vabbè, basta va' ^^' cmq imho il C++ sarebbe perfetto per scrivere un kernel: un kernel normalmente ha necessariamente delle caratteristiche che richiamano immediatamente la OOP, per le quali il C++ è ottimo; ma è anche vero che non è necessario scrivere solo classi, come in Java: in qualunque momento puoi usare variabili e funzioni di livello globale, come tante ce ne sono in un kernel. il kernel infatti può anche essere implementato in C++, ma le interfacce messe a disposizione dei programmi devono comunque essere C perché non è detto che il programma applicativo che gira sul sistema operativo sia scritto in C++ o in un linguaggio che supporta le classi. Ultima modifica di 71104 : 12-06-2005 alle 11:42. |
|
![]() |
![]() |
![]() |
#104 |
Senior Member
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
|
dato che questo thread è andato completamente OT, l'avete provato hurd?? che ne pensate?
__________________
GNU MyServer Wants YOU!! We live thinking we will never die. We die thinking we had never lived. Jason Becker |
![]() |
![]() |
![]() |
#105 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
![]() |
#106 | |
Senior Member
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
|
Quote:
![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" |
|
![]() |
![]() |
![]() |
#107 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#108 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() scusa, ora perché funzioni e variabili globali sarebbero dannose?? ![]() considera che oggi numerosissime librerie (sia in Windows che in Linux) hanno interfacce basate su funzioni globali... |
|
![]() |
![]() |
![]() |
#109 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#110 | |
Member
Iscritto dal: Aug 2004
Messaggi: 156
|
Quote:
Ultima modifica di Brazorv : 12-06-2005 alle 16:10. |
|
![]() |
![]() |
![]() |
#111 | |
Senior Member
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
|
Quote:
![]() Lo sai che esistono linguaggi che non ti permettono neppure di definire variabili globali? Alcuni linguaggi come Eiffel arrivano anche a non permetterti di definire in maniera semplice un campo statico di una classe.
__________________
"We in the game industry are lucky enough to be able to create our visions" |
|
![]() |
![]() |
![]() |
#112 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
se definisco una variabile globale vuol dire che nel design che ho progettato nella mia testa, il contenuto di quella variabile è concettualmente globale, cioè è accessibile ovunque nell'ambito del modulo corrente. per quale motivo questo implicherebbe che il mio design è errato o non è buono? |
|
![]() |
![]() |
![]() |
#113 | |
Senior Member
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
|
Quote:
![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" |
|
![]() |
![]() |
![]() |
#114 | |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 235
|
Quote:
Il problema purtroppo e' nell'implementazione dei linguaggi correnti piu' usati (Java, C++ ..), nei quali le classi non sono oggetti veri e propri, ma strutture sintatiche diverse. Quindi usando metodi/variabili globali si perdono le funzionalita' proprie degli oggetti (Ereditarieta', polimorfismo, overloading, override). Inoltre la classe ha un ciclo di vita (ad es. in java deve essere caricata dal classloader in momenti ben precisi, in C++ non entro nei dettagli ...... non e' il mio forte ![]() Non e' detto che tutti i linguaggi devono essere cosi': In smalltalk ad esempio la classe e' un oggetto vero e proprio, i metodi di classe sono normali metodi dell'oggetto e seguono esattamente le stesse regole (ad esempio avrei un istanza della classe String. La classe String e' un oggetto, istanza della classe MetaClass, che e' un oggetto .. etc ... )
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt) |
|
![]() |
![]() |
![]() |
#115 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#116 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
che vuol dire che le classi non sono oggetti veri e propri? una classe è una cosa, un oggetto un'altra... ma poi cosa c'entrano le classi e gli oggetti con le funzioni e variabili globali? se dichiaro una cosa come globale non voglio mica usare l'ereditarietà e il polimorfismo su di essa... e poi ancora devo capire che limitazioni ci sono nel testing; e nel riusarla poi??? Quote:
|
||
![]() |
![]() |
![]() |
#117 | ||
Senior Member
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
|
Quote:
![]() In altri linguaggio come C# e Java si chiama reflection. In C++ non esiste reflection. Quote:
Se hai variabili globali usate dai test (oppure oggetti singleton), vuol dire che ogni test ha potenzialmente effetto su gli altri test via le variabili globali e deve ricordarsi di ripristinare il loro valore dopo averle usate. In un progetto grosso diventa molto complicato seguire queste regole e poi capire quando si dimentica di seguirle. E' meglio evitare le variabili globali totalmente; il design ne esce di solito piu' pulito e modulare, piu' semplice e piu' facilmente testabile.
__________________
"We in the game industry are lucky enough to be able to create our visions" |
||
![]() |
![]() |
![]() |
#118 | ||||||||||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
ecco la risposta che mi hai chiesto
![]() Quote:
Quote:
Quote:
Quote:
Quote:
![]() Quote:
Quote:
Quote:
Quote:
![]() Quote:
cioè, prima la paura causa la rabbia ![]() adesso l'"ottimizzazione precoce" (qualunque cosa sia... ![]() i rapporti causa-effetto più sballati li trovano loro ![]() secondo loro qualsiasi errore che si possa commettere in programmazione è causato da un'ottimizzazione precoce? se mi dimentico di liberare una variabile in un server tcp/ip e un hackerazzo da 4 soldi sfrutta il memory leak per creare un DoS, è stata colpa di una ottimizzazione? ![]() mmmmmaahhhh... ![]() Ultima modifica di 71104 : 13-06-2005 alle 00:21. |
||||||||||
![]() |
![]() |
![]() |
#119 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7027
|
Quote:
Quote:
![]() |
||
![]() |
![]() |
![]() |
#120 | |
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Certo, dare del non preparato a me, "progettare" una nuova architettura, dire che l'aumento della complessita' e' minimo e poi sta ancora a imparare la pericolosita' delle variabili globali ![]() Ultima modifica di mjordan : 13-06-2005 alle 02:10. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:01.