Newsgroup: it.comp.aiuto
Titolo: Il C e' veloce? ma quanto e' veloce?

ciao a tutti
 
sto' imparando il C, anzi, sto' 'cercando' di imparare il C :-)
Alle prime esperienze mi sono trovato di fronte ad un fatto strano:
 
    ----------------------------------------------------------------
    il programma in C gira molto piu' piano del corrispondente BASIC
    ----------------------------------------------------------------
 
Porto un esempio concreto.
I seguenti programmi BASIC e C generano entrambi 100 sequenze tutte 
uguali.
Ogni sequenza disegna 10 finestre in 10 posizioni diverse
Le istruzioni/funzioni usate sono solo quelle di base, nessun ricorso
a trucchi, interrupt etc...
Non conoscendo ancora tutte le funzioni del C ho semplificato la 
funzione WNDWdisplay in modo tale che la larghezza delle finestre siano 
in realta' fissate a 20 caratteri.
Per il BASIC ho usato il Quick Basic 4.5, quindi nessun tipo di 
ottimizzazione.
Per il C ho usato il Turbo C 2.0 predisposto per generare codice 
ottimizzato per la velocita' e per processore 286. 
Risultati su AT 286 a 16 MHz:
 
QB ->  17.6 sec
TC ->  30 sec circa (misurati 'a mano')
 
Del C, oltre a molte altre cose viene vantata anche la velocita'
dell'eseguibile.
La domanda che mi pongo, come per i figli :-) , e':
WHY? POURQUOI? PECCHE'?
DOVE HO SBAGLIATO ?
 
grato a chiunque voglia darmi qualche dritta, riporto qui' sotto i
due programmini, ricordando solo che mentre in QB i parametri sono
passati per reference, in C sono passati per valore (giusto?) e questo
potrebbe aumentare il tempo di esecuzione della routine in C
 
ciao
Roby
 
PS per favore non cominciamo una rissa su
 
  e' meglio il BASIC o e' meglio il C ?   :-))))
 
riciao
 
 
REM PROGRAMMA BASIC -----------------------------------------------
 
DECLARE SUB WNDW.Display (WndRow%, WndCol%, WndWdt%, WndHgt%, WndFgd%, 
                         WndBgd%)
DEFINT A-Z
 
COLOR 7, 0
CLS
SCREEN 0
WndWdt% = 60
WndHgt% = 10
WndFgd% = 14
WndBgd% = 3
N% = 100
T! = TIMER
FOR L% = 1 TO N%
  FOR I% = 1 TO 10
    CALL WNDW.Display(I%, I%, WndWdt%, WndHgt%, WndFgd%, WndBgd%)
  NEXT
NEXT
T! = TIMER - T!
COLOR 7, 0
LOCATE 22, 1
PRINT "tempo impiegato:"; T!
 
SUB WNDW.Display (WndRow%, WndCol%, WndWdt%, WndHgt%, WndFgd%, WndBgd%)
 
WndWdt2% = WndWdt% - 2
 
COLOR WndFgd%, WndBgd%
LOCATE WndRow%, WndCol%
PRINT "Ú"; STRING$(WndWdt2%, "Ä"); "¿";
FOR I = 1 TO WndHgt% - 2
  LOCATE WndRow + I, WndCol%
  PRINT "³"; SPACE$(WndWdt2%); "³";
NEXT
LOCATE WndRow% + WndHgt% - 1, WndCol%
PRINT "À"; STRING$(WndWdt2%, "Ä"); "Ù";
END SUB
 
 
 
 
 
/* PROGRAMMA C --------------------------------------------------- */
 
#include <conio.h>
#include <stdio.h>
 
void WNDWdisplay( int WndRow, int WndCol, int WndHgt, int WndWdt, int 
WndFgd, int WndBgd);
 
main ()
 
{
  int i,l;
  textcolor (WHITE);
  textbackground(BLACK);
  clrscr();
  for(l=1;l<100;++l)
    for(i=1;i<10;++i)
      WNDWdisplay(3+i,3+i,10,10,14,3);
}
 
void WNDWdisplay (WndRow, WndCol, WndWdt, WndHgt, WndFgd, WndBgd)
 
{
int i,l;
int WndHgt2, WndWdt2;
 
textcolor (WndFgd);
textbackground(WndBgd);
 
gotoxy(WndCol,WndRow);
cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
 
for (i=1;i<WndHgt;++i)
  {
  gotoxy(WndCol,WndRow+i);
  cprintf("³                  ³",i);
  }
 
gotoxy(WndCol,WndRow+WndHgt);
cprintf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
 
return ;
}
 
 
 

  e' meglio il BASIC o e' meglio il C ?   :-))))
e' meglio il C++ ;-) 
Gianpaolo Bottin
Bruino (TO) - Italy
E-Mail: 
bott...@mbox.vol.it
-----------------------------------------

e' meglio il C++ ;-) 
non ne dubito, ma io per controllare, non ho visto il tempo di
esecuzione, ma la dimensione dell'eseguibile
ho scritto un piccolo programma che dando il numero di scatti mi dava
il prezzo, sia in basic che in C, e l eseguibile C era 20K meno a
quello basic!!!!
20K in meno vuol dire molta piu' velocita'..
che sarebbe aumentata se usavo l'assembler (che purtroppo ancora non
conosco)
CIAO

Marco Paladini (
pala...@mbox.vol.it
) wrote:
: 
: >>sto' imparando il C, anzi, sto' 'cercando' di imparare il C :-)
: anche io, anzi sarei grato a chi mi dia consigli su come cominciare
: (libri, siti web..)
: 
: >>    ----------------------------------------------------------------
: >>    il programma in C gira molto piu' piano del corrispondente BASIC
: >>    ----------------------------------------------------------------
: credo che non si potre' mai fare un vero confronto fra due linguaggi,
: visto che sono diversi, e' come confrontare un mac con un pc..
certamente se parli di un confronto generico, e' possibile pero' 
confrontare il modo in cui vengono svolte determinate funzioni.
: 
: >>Del C, oltre a molte altre cose viene vantata anche la velocita'
: >>dell'eseguibile.
: esatto.. visto che e' un linguaggio a medio livello i programmi sono
: piu' veloci del basic che e' ad alto livello
pero' nel mio caso questo non era vero.
L'atto di scrivere sullo schermo un certo numero di caratteri ha dato 
tempi quasi doppi con il C.
Certamente e' possibile che il mio programma in C potesse essere 
migliorato o fare ricorso a librerie specializzate ma questo era 
possibile anche con il QB.
: >>  e' meglio il BASIC o e' meglio il C ?   :-))))
: >e' meglio il C++ ;-) 
Credo sarete d'accordo con me che il linguaggio migliore e' quello con 
cui si riesce a lavorare piu' velocemente... il che ovviamente e' 
totalmente soggettivo :-)
: non ne dubito, ma io per controllare, non ho visto il tempo di
: esecuzione, ma la dimensione dell'eseguibile
: ho scritto un piccolo programma che dando il numero di scatti mi dava
: il prezzo, sia in basic che in C, e l eseguibile C era 20K meno a
: quello basic!!!!
: 20K in meno vuol dire molta piu' velocita'..
: che sarebbe aumentata se usavo l'assembler (che purtroppo ancora non
: conosco)
Non sono d'accordo.
Soprattutto in assembly e' ben noto che esistono due modi per fare una 
routine:
-  ottimizzandola in funzione della quantita' di memoria occupata
-  ottimizzandola in funzione della velocita'
un esempio in BASIC potrebbero essere i cicli FOR/NEXT:
  FOR I=1 to 100
    PRINT "A"
  NEXT
creera' meno eseguibile di 100 righe
 
  PRINT "A"
ma sara' sicuramente meno veloce perche' dovra' eseguire il caricamento 
nel program counter dell'indirizzo di inizio del ciclo FOR onde eseguire 
il salto.
Se sbaglio "corigetemi"... e se ho detto qualche baggianata che Dio abbia 
pieta' di me :-)
ciao
-- 
Roberto Marchini

> e' meglio il BASIC o e' meglio il C ?  :-))))
GB> e' meglio il C++ ;-)
E' meglio il C del C++
o   oooooo	Gian Uberto Lauri        "So, are you working on finding
      o    o	
sa...@maya.dei.unipd.it
   that bug *now* or leaving it until
     o o				  later?" - "Yes!" 

 writes:
MP> 20K in meno vuol dire molta piu' velocita'.. 
Questa affermazione non e' vera in generale.
Ad esempio il ciclo
for(i=0;i<100;i++)
    a[i]=0;
e` piu` lento di 
a[0]=0;
a[1]=0;
a[2]=0;
a[3]=0;
a[4]=0;
.......
a[95]=0;
a[96]=0;
a[97]=0;
a[98]=0;
a[99]=0;
che e' sicuramente piu'  lungo. Se cosi' non fosse,  fate un ciclo  di
1000  o 10000 iterazioni  e confrontatelo con una  sequenza  di 1000 o
10000 operazioni senza ciclo.
Poi ci sono casi in cui 2 istruzioni sono piu' veloci di una (IBM 360,
aveva una istruzione  per muovere blocchi  di memoria che, nel caso di
una sola parola, era piu' lenta che caricare la  parola in un registro
e scriverla  nella nuova destinazione), e  casi in cui processori piu'
lenti di clock, pur facendo un  numero maggiore di istruzioni, battono
processori piu' veloci di clock.


totalmente soggettivo :-)
Si e' vero.. io infatti mi trovo bene con il pascal...
Ciao!
Don Marco
don....@iol.it
Fan #1 Della Clinica Dell'amore...
Iacer (Membro di it.arti.cartoni)
Http://www.dragonfire.net/~Zippo/Aspetta
 una po che arriva!
...Il numero di malattie tra i dipendenti è direttamente proporzionale
alla salute dell'azienda.

> e' totalmente soggettivo :-)
DM> Si e' vero.. io infatti mi trovo bene con il pascal...  Ciao!
Non penso  che il linguaggio migliore  sia quello  che soggettivamente
pone  il programmatore   in grado di   risolvere   piu` facilmente  il
problema.  Ad  esempio  l'orribile  FORTRAN   (quello dove  e'  facile
sbagliarsi tra  loop  e assegnazioni)  e' ancora  una manna  dal cielo
quando ti trovi a dover usare cose come i numeri complessi. Inoltre e'
terribilmente  efficente e ne esiste anche  una versione parallela che
non e' male.
Il basic ha la stessa utilita' della shell di unix, risolvere in breve
un problemino facile. Ma e'  assai meno potente  della shell di Unix o
di Perl.
Ci sono cose che in LISP sono molto facili, in C (o c++) molto meno.
Ma un programma in Lisp, anche se  compilato in byte code (stessa cosa
che faceva anni fa lo UCSD Pascal e ora fa  Java), e' assai piu' lento
di uno in C (o c++).
Un programma in   C++ ben impostato   puo' permettere di  giungere  al
completamento  di un progetto in  maniera piu' sicura del  C.  Ma il C
rimane  piu'     efficente   e  da   preferire    al   C++  nei  punti
caldi. L'assembler  e' ancora  migliore  come velocita'(*), ma non  e'
portatile.
(*) Con le CPU attuali, i migliori ottimizzatori (i.e. Watcom) possono
fare un lavoro di scheduling delle istruzioni migliore di quello di un
programmatore in assembler, a meno che a questo non venga dato MOOOLTO
tempo per pensare ogni singola istruzione.
Il Pascal comunque non permette un costrutto come questo :
void duff_device(register ELEM *from, 
		 register ELEM *to, 
		 register int count)
/*
 * from e to vengono alterati. 
 *
 * Scoprite da soli cosa fa :)...
 *
 * Programmatori per Intel : non meravigliatevi dell'abbondanza di
 * dichiarazioni register. Ci sono architetture e compilatori che ne
 * onorano anche una ventina...
 *
 * (C) Tom Duff, AT&T Bell Labs (gia' alla Lucasfilm)
 */
{
	register n;
        n = (count + 7) / 8;      /* count > 0 assumed */
        switch (count % 8)
        {
        case 0:        do {  *to++ = *from++;
        case 7:              *to++ = *from++;
        case 6:              *to++ = *from++;
        case 5:              *to++ = *from++;
        case 4:              *to++ = *from++;
        case 3:              *to++ = *from++;
        case 2:              *to++ = *from++;
        case 1:              *to++ = *from++;
                           } while (--n > 0);
        }
}
( Cosi' non dovete piu' prendere lo Stroustroup per leggere l'esercizio
3.5.9 :) )


Simone T. (
sim...@mbox.vol.it
) wrote:
: 
marc...@Torino.ALPcom.it
 (Marchini) wrote:
: 
: >: >>    il programma in C gira molto piu' piano del corrispondente BASIC
: 
: ?!?!?!?!?!?!?! COME ????
: 
: Secondo te, se il C fosse stato un cesso, ci avrebbero riscritto 
: UNIX in C ?? E poi, parlo nei primi anni '70, i compilatori
: ottimizzati mica esistevano !
: 
: Conclusione : non sono d'accordo. Usa il GCC per Linux _come si
: deve_ (cioe' con tutte le ottimizzazione del caso) e ti ricrederai.
dunque, temo che ti sia perso qualcosa.
1) parlavo di compilatori per MSDOS, nello specifico di TC 2 e QB 4.5
2) ho postato i listati, se non ci credi compilali e vedi da te
3) non ho mai detto che il C e' un cesso, anzi, ho chiesto dove avrei 
   sbagliato perche' mi sembrava stranissimo, e qualcuno, molto gentilmente
   mi ha anche indicato spiegazioni del fenomeno
   il mio appunto si rivolgeva alla routine esposta che svolgeva un lavoro
   molto comune in un programma
: 
: >: >>Del C, oltre a molte altre cose viene vantata anche la velocita'
: >: >>dell'eseguibile.
: >: esatto.. visto che e' un linguaggio a medio livello i programmi sono
: >: piu' veloci del basic che e' ad alto livello
: 
: 
: Piu' o meno il discorso e' questo ... il C ha tantissime
: caratteristiche dei linguaggia ad alto livello (e' un po' ostico, non
: lo metto in dubbio), ma per chi vuole arrivare direttamete
: all'hardaware, la strada e' tutta in discesa.
: 
: Secondo me il C e' un linguaggio dalle grande potenzialita', ma e'
: _neccessario_ essere consapevoli di cosa poi' avvera' in assembly.
: Ad esempio come nel caso di dichiarazione delle variabile e/o stringhe
: (che in C non esistono : sono array di caratteri)
: 
: Insomma, sono contentissimo di aver imparato il C dopo un po'
: di gavetta (prima in Pascal) e dopo ore e ore di programmazione
: in assembly, e secondo me questa e' la strada da seguire.
: 
: >L'atto di scrivere sullo schermo un certo numero di caratteri ha dato 
: >tempi quasi doppi con il C.
: 
: Effettivamente la printf della borland (ha un C compiler della
: borland ?) non e' un mostro di velocita', in quando a tantissimi
: parametri da fare il parsing e quindi ruba un sacco di istruzioni.
: Ma sotto Unix/Linux le cose migliorano....
mi spiace, ma io lavoro sotto MSDOS e non posso cambiare
: >: >>  e' meglio il BASIC o e' meglio il C ?   :-))))
: >: >e' meglio il C++ ;-) 
: 
: Ripeto : se vuoi sfruttare _bene_ il C, impara un po' di assembly.
: Il C++ ?!? Impara prima in C !
beh, ragazzi, mettetevi d'accordo, io con la programmazione ci lavoro
non posso mica imparare tutti i linguaggi del mondo :-)
come si dice dalle mie parti "dventa dei la produsiun", "bisogna dare 
la produzione" :-)
: 
: >: non ne dubito, ma io per controllare, non ho visto il tempo di
: >: esecuzione, ma la dimensione dell'eseguibile
: >: ho scritto un piccolo programma che dando il numero di scatti mi dava
: >: il prezzo, sia in basic che in C, e l eseguibile C era 20K meno a
: >: quello basic!!!!
: >: 20K in meno vuol dire molta piu' velocita'..
: >: che sarebbe aumentata se usavo l'assembler (che purtroppo ancora non
: >: conosco)
: 
: Non sono d'accordo.
: 
: Primo perche' in un eseguibile c'e' tanta di quella roba, secondo
: perche' un programma piu' lungo non implica un maggior tempo di
: esecuzione.... (anzi e' il contrario!)
beh, adesso andiamo da un estremo all'altro, facciamo meta' e meta' :-)
Il mio pensiero l'ho scritto in un precedente post
Prima di lasciarvi pongo un interessante quesito:
Secondo voi c'e' un pizzico di follia in coloro che si interessano di 
programmazione (cioe' noi) ?
Io penso di si :-)
salutoni
-- 
Roberto Marchini

 writes:
: 
: DM> 
marc...@Torino.ALPcom.it
 (Marchini) wrote:
: >> Credo sarete d'accordo con me che il linguaggio migliore e' quello
: >> con cui si riesce a lavorare piu' velocemente... il che ovviamente
: >> e' totalmente soggettivo :-)
: 
: DM> Si e' vero.. io infatti mi trovo bene con il pascal...  Ciao!
: 
: Non penso  che il linguaggio migliore  sia quello  che soggettivamente
: pone  il programmatore   in grado di   risolvere   piu` facilmente  il
: problema.  Ad  esempio  l'orribile  FORTRAN   (quello dove  e'  facile
: sbagliarsi tra  loop  e assegnazioni)  e' ancora  una manna  dal cielo
: quando ti trovi a dover usare cose come i numeri complessi. Inoltre e'
: terribilmente  efficente e ne esiste anche  una versione parallela che
: non e' male.
era una battuta, era una battuta...
Mi riferivo, ovviamente, a linguaggi nati per compiere operazioni simili.
: Il basic ha la stessa utilita' della shell di unix, risolvere in breve
: un problemino facile. Ma e'  assai meno potente  della shell di Unix o
: di Perl.
conosco pochissimo la shell di Unix, ma io parlavo di mondo MSDOS
tu a quale Basic ti riferisci ?
Quando si parla di Basic molti pensano al GW-BASIC o BASICA, quelli con 
ancora i numeri di linea.
Io mi riferisco al Quick Basic 4.5 (neanche al PDS 7 o al Visual basic 
per MSDOS) e posso dire che ho fatto dei lavori tutt'altro che semplici
in cui venivano gestiti archivi, grafica, simulazione di strumenti 
analogici e digitali, ricorsione, controllo di seriale, parallela e port 
vari, librerie di gestione menu'pull-down, visualizzazione e 
scorrimento testi, files etc...
L'unico problema e' sempre stato la difficolta' di reperire informazioni
sia sulla macchina che sull'uso avanzato del linguaggio (la 
documentazione MS e' veramente carente!)
Tanto per fare un esempio sono arrivato molto tardi all'utilizzo degli 
interrupts del BIOS e dell'MSDOS, li avessi scoperti prima mi sarei 
evitato tanti di quei mal di pancia :-) ( grazie ancora Balena!)
Proprio non capisco la MS, e' come se la Ferrari ti vendesse una macchina 
ma non ti dicesse come si mettono le marce oltre la quarta :-)
: Ci sono cose che in LISP sono molto facili, in C (o c++) molto meno.
: 
: Ma un programma in Lisp, anche se  compilato in byte code (stessa cosa
: che faceva anni fa lo UCSD Pascal e ora fa  Java), e' assai piu' lento
: di uno in C (o c++).
: 
: Un programma in   C++ ben impostato   puo' permettere di  giungere  al
: completamento  di un progetto in  maniera piu' sicura del  C.  Ma il C
: rimane  piu'     efficente   e  da   preferire    al   C++  nei  punti
: caldi. L'assembler  e' ancora  migliore  come velocita'(*), ma non  e'
: portatile.
sono d'accordo
ciao
-- 
Roberto Marchini

ottenendo in questo modo prestazioni migliori. 
Confermo quanto scritto da Gianpaolo, effettivamente il QB ha delle routine di
accesso video ottimizzate (le fantomatiche librerie esterne di accelerazione
su schermo DOS hanno infatti risultati non apprezzabili), mentre la printf e'
quanto di piu' standard e generico ci possa essere, basti pensare che puoi
tranquillamente mandare l'output su file o stampante.
Prova a modificare la routine in C accedendo direttamente alla memoria
video...
MATRO
Too many random sheets on your desk? "Reminder" is the right answer!
http://www.geocities.com/SiliconValley/8383/reminder.htm

ma non ti dicesse come si mettono le marce oltre la quarta :-)
la non conoscenza di BIOS e MSDOS pero' non e' una carenza MS, ci sono
ormai un sacco di libri e documentazione on-line che descrivono ogni
minimo dettaglio documentato e non documentato dell'MSDOS, basta
sapere cosa cercare. :-)


programmazione (cioe' noi) ?
SI !!!!
Ciao
Simone Tugnoli

In un articolo, 
sa...@dei.unipd.it
 (Gian Uberto Lauri)
stava parlando di Il C e' veloce? ma quanto e' veloce? e ha scritto:
)E' meglio il C del C++
E` MOLTO meglio il C del C++
Giuseppe
-- 
Giuseppe Zanetti       Internet: 
be...@dei.unipd.it
 
be...@freddy.iperv.it
Phone 
++39 348 2220811
 
http://www.iperv.it/BEPPE/ZANETTI/zanetti.html

video...
?? che vuol dire??
e come si fa?
CIAO

E` MOLTO meglio il C del C++
perche'?????
che ha il c che il c++ non ha?
 tra parentesi specifico che non so nulla di c++ e sto imparando il C
CIAO

Io penso di si :-)
perche' mai follia???
CIAO

Gianpaolo Bottin (
bott...@mbox.vol.it
) wrote:
: >Tanto per fare un esempio sono arrivato molto tardi all'utilizzo degli 
: >interrupts del BIOS e dell'MSDOS, li avessi scoperti prima mi sarei 
: >evitato tanti di quei mal di pancia :-) ( grazie ancora Balena!)
: >Proprio non capisco la MS, e' come se la Ferrari ti vendesse una macchina 
: >ma non ti dicesse come si mettono le marce oltre la quarta :-)
: 
: la non conoscenza di BIOS e MSDOS pero' non e' una carenza MS, ci sono
: ormai un sacco di libri e documentazione on-line che descrivono ogni
: minimo dettaglio documentato e non documentato dell'MSDOS, basta
: sapere cosa cercare. :-)
beh, a io sono in rete da poco, diciamo 8 mesi, di certe informazioni ne 
avrei avuto bisogno 6 anni fa'.
E anche per i libri 6 anni fa' c'era poca scelta
Comunque io mi riferivo alla mancanza di esempi.
Voglio dire che nella documentazione, nell'help e negli esempi
hanno meno spazio dell'sitruzione PRINT.
Insomma, si vergognavano di avere messo la CALL INTERRUPT ?
ciao
Roby

 video...
Prima  ancora  prova a  usare cputs,   che e'  una funzione  messa li'
apposta per le situazioni   di stampa di  stringhe generiche  (ai Bell
Labs lavorano delle belle teste...).


Marco Paladini (
pala...@mbox.vol.it
) wrote:
: On 21 Aug 1996 10:47:51 +0200, 
be...@freddy.iperv.it
 (Giuseppe
: Zanetti) wrote:
: 
: >)E' meglio il C del C++
: >E` MOLTO meglio il C del C++
: perche'?????
: che ha il c che il c++ non ha?
Secondo me (ma e' solo un'opinione personale), il C++ ha sporcato
tutto quello che di di pulito, lineare e coerente aveva il C.
Con la sua programmazione a oggetti (e' il punto di forza del C)
ha fatto si' che la portabilita' sia notevolmente peggiorata,
e sempre piu' vadano instaurandosi degli standard che isoleranno
i vari gruppi di lavoro. Io amo il C, e spesso rabbrividisco di
fronte ad alcune soluzioni presenti in programmi C++.
Se uno ha intenzione di sviluppare programmi in ambiente 'finestre'
e' comunque necessario che si impratichisca con classi & Co.,
soprattutto per poter attingere da esempi e documentazioni varie.
Il mio consiglio e' di apprendere prima il C, se non altro per
acquisire quella forma mentis che ogni programmatore dovrebbe avere.
Per rispondere alla domanda, il C non ha nulla che il C++ non abbia,
poiche' ogni segmento di codice scritto in C gira anche in un
programma C++ (tranne rare eccezioni), ma anche la natura a volte
sbaglia nel proseguire l'evoluzione della specie. Per fortuna la
natura si accorge dell'errore e ci mette una pezza (spesso drastica).
Ogni critica a queste osservazioni e' ben voluta.
Ciao.
            _  _  _ _ _ _  ______________________________________
         _  _  _ _ _ _  __/__________________________________    )
                       /                                __   )  /
                      /         Claudio Mauceri        /_/  /  /
                     /      
mau...@torino.alpcom.it
       /  /
     _  _  _ _ _ _  /   
www.geocities.com/Colosseum/3000
  /__/
    _  _  _ _ _ _  /_____________________________________/
                          O                        O

 : _neccessario_ essere consapevoli di cosa poi' avvera' in assembly.
Mi permetto  di dissentire.  Non   e' strettamente necessario imparare
l'assembler di  una  certa  macchina, basta impararne  l'architettura,
cioe' sapere  come  viene gestita la   memoria, quanti registri ha  il
processore e a  cosa servono, e come  opera  il processore (se e'  una
macchina memoria-memoria con registri di uso generale, load-store o e'
un'accrocchio orrido chiamato 80x86. Inoltre bisognerebbe sapere quali
registri il compilatore usa per suoi scopi e come.  Ma questo solo per
applcazioni la cui velocita' di esecuzione e' critica.
Di solito basta sapere bene quanto spazio usano le variabili e dove le
mette il compilatore. Col fatto poi che compilatori intelligenti sanno
mettere le  variabili nei registri  interni del  processore -quando ci
sono, con 80x86  e' difficilino...- anche senza  specifiche istruzioni
da parte del programmatore, anche il DOVE le variabili vengono messe
sfugge un po' al programmatore.


 perche' mai follia???
Un buon programmatore di solito programma perche' si diverte. I soldi
sono solo un piacevolissimo extra.


 tutto quello che di di pulito, lineare e coerente aveva il C.
E come diceva Bjorne non e' a oggetti, permette solo di lavorare a
oggetti, ma non obbliga, anzi permette di violare facilissimamente le
regole della programmazione ad oggetti (e questo in barba a tutto
quello che ho letto sulla italica stampa).
Prova.
Per distribuire una classe e renderla utilizzabile oltre all'object
devo distribuire anche l'include file che descrive la classe. Ora il
primo furbacchione non fa altro che cambiare in public i membri
privati e comincia a manipolare allegramente tutto quello che vuole,
bypassando i controlli...


acquisire quella forma mentis che ogni programmatore dovrebbe avere.
su questo hai perfettamente ragione, anche perche' il C++ e' molto
piu' complesso, ancora adesso dopo piu' di un anno di utilizzo ci sono
cose che non mi sono proprio chiarissime.
Ciao
     _______ _____         
    / _____// ___ \     Gianpaolo Bottin  - 
bott...@mbox.vol.it
 
   / /____ / /__/ /     Bruino (TO) - Italy
  / //_  // ___  <      
 / /__/ // /__/ /       "Gli errori che non si trovano hanno un'infinita varieta',
/______//______/        mentre quelli che si trovano sono per definizione finiti."

(tranne rare eccezioni),
Be' le eccezioni non sono poi cosi'  rare.
Ogni controcommento e' altrettanto bene accetto
+------------------------------------------------------------+
| 
dant...@tn.village.it
                                     |
| 
marco...@elsag.it
                                       |
| Marco Danti, Via Morselli 24, 16158 Genova Italy           |
+------------------------------------------------------------+

sono solo un piacevolissimo extra.
proprio divertirsi forse no, visto che a volte mi trovo in situazioni
in cui non riesco a fare nulla per risolvere un certo problema..
quindi una piccola ricompensa per notti insonni passate davanti a un
manualone ci vuole :)
veramente io programmo e voglio programmare per passione :)
CIAO

 veramente io programmo e voglio programmare per passione :)
Siamo in 2. Se mi pagano meglio. Se no mi guadagno da vivere con
un'altro lavoro. E continuo a programmare !


un'altro lavoro. E continuo a programmare !
mi sa che se non vendo i programmi devo vendere il pc :-)
CIAO

 ..ma non e' il contrario ?!?!
Ahem. Se il C++ e' implementabile come preprocessore del C...
