Newsgroup: it.comp.lang.c++
Titolo: differenze tra c e c++

salve a tutti, per prima cosa con questa domanda non voglio offendere
nessuno, ma vorrei sapere che differenza esiste tra questi 2 linguaggi, e se
è utile conoscerli entrambe oppure ciò non è necessario.
penso che talvolta intavolare discorsi diciamo di natura filosofica sia
utile a tutti esperti e non,quindi non sarebbe poi male che venisse fuori
una bella discussione.
grazie a chi partecipa
DEF



La differenza esiste ed è sostanziale: C++ è un linguaggio OO, orientato
agli oggetti (anche se puoi usarlo benissimo come linguaggio procedurale).
In effetti il C può essere visto come un sottoinsieme proprio del C++ (con
pochissime eccezioni), il che significa che puoi scrivere un programma in
C++ stile C, ovvero senza usare classi e oggetti. Il problema non è
filosofico, ma di progetto. In genere se studi BENE il C++, conosci al 98%
anche il C, ma non scriverai mai un programma in C, a meno che non devi
gestire dispositivi hardware.

 gestire dispositivi hardware.
vedi io sono proprio interessato a controllare dispositivi hardware, quindi
mi consigli di usare il c?
potresti darmi ulteriori indicazioni, ad esempio l'ambiente di sviluppo
DJGPP è valido?sono costretto ad usare questo perchè è quello che adoperiamo
per il corso di calcolatori elettronici.
per cominciare nella direzione di controllo hardware quali passi mi consigli
di fare?
ti chiedo molto lo so, ma qualsiasi consiglio anche minimo è ben accetto
grazie DEF

 consigli di fare?
Dipende la S.O.: tu scrivi da un sistema Windows - il che ovviamente non
significa che i programmi che dovrai fare dovranno girare sotto Windows -
e la gestione delle periferiche in Win è diversa da quella in Unix.
Come primo passo io consiglierei lo studio delle syscall del kernel e dei
metodi che il kernel già fornisce.
SiMoStro

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
SiMoStro wrote:
| Dipende la S.O.: tu scrivi da un sistema Windows
...dubito, in tal caso perché usa il GCC di DJGPP?
Se usasse Windows avrebbe molto più senso usare il GCC di CygWin...
(o al limite di MingW)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkAJtBwACgkQaJiCLMjyUvt1JACfa8GDoI4sa6D4K/XO1jnKjST5
1eYAn3EOIhEdramfGyuByoSh1P8LA+Se
=ZOwQ
-----END PGP SIGNATURE-----



No, non ti consiglio di usare il C, puoi usare il C o il C++, ma di certo
non userai estensioni ad oggetti, almeno per la parte "core", e il codice
sarà molto dipendente dalla piattaforma che scegli, ovvero su che tipo di
hardware dovrà girare il tuo programma e su che S.O. DJGPP è validissimo,
ma è solo per DOS. se usi windows ti consiglierei il MINGW che è comunque
un porting del GCC...ti sconsiglierei i prodotti M$ e anche Borland, se
esiste un compilatore del livello di GCC gratuito e free nn vedo perchè
non usarlo se non si hanno esigenze particolari!

 (o al limite di MingW)
Io pensavo che usasse Win$ perché posta con "Autlůc" ed in linea
di principio il DJGPP della Delorie č per sistemi DOS, anche se
credo ce ne siano per OS/2 e Linux.
Certo, GNU GCC č meglio e il compilatore di Intel č ancora meglio...
SiMoStro

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
SiMoStro wrote:
| La risposta
| "ufficiale" era "è gratuito ed usabile e distribuibile
| liberamente perché sotto licenza GNU".
Allora *usa* CygWin.
Dato che è GCC, solo che è per Win32.
| Io pensavo che usasse Win$ perché posta con "Autlùc" ed in linea
| di principio il DJGPP della Delorie è per sistemi DOS, anche se
| credo ce ne siano per OS/2 e Linux.
No, non esiste alcun DJGPP per Linux.
Né per OS/2, AFAIK; ma sono anni che non vedo OS/2.
| Certo, GNU GCC è meglio e il compilatore di Intel è ancora meglio...
GCC è meglio di DJGPP? 0_o
Chiariamo un attimo le cose ^_^
GCC è un compilatore della GNU nato su Linux/BSD
DJGPP è il port DOS di alcuni tool, compreso GCC
CYGWIN è il port Windows di alcuni tool, compreso GCC
Dire che "GCC è meglio di DJGPP" è come dire che il comando "dir" è
"meglio di Windows"...
In ogni caso suppongo che ti consiglino DJGPP semplicemente per
ignoranza (non sanno cos'è o non sanno che esiste anche per Windows), tu
usa CygWin e vai tranquillo, dato che è lo STESSO compilatore, coperto
ovviamente dalla stessa licenz.. ma quantomeno ti produrrà codice Win32
e non DOS16.... ^_^""
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkAKaXkACgkQaJiCLMjyUvtTtgCg6Fw1uINPvZla8Kh6jcRVeLpM
OCkAoLjxN9FzyGzNmvrMm3+BOVMTawtc
=MTlf
-----END PGP SIGNATURE-----

 e non DOS16.... ^_^""
Beh, dare dell'ignorante ad un docente di Calcolatori Elettronici è quanto
meno avventato... ;-) ci sono esigenze didattiche ed economiche che vengono
prima di qualsiasi altra considerazione, soprattutto in ambito accademico.
Poi - ma qui ribadisco la mia ignoranza - non capisco cosa intendi per
codice DOS16: se pensi che il GCC del DJGPP non generi codice a 32 bit
forse questa riga tratta dalla FAQ del DJGPP può fugare qualche dubbio:
 "GCC generates 32-bit code, so DJGPP programs are 32-bit programs."
credo che sia go32 a risolvere i limiti architetturali del DOS.
Il mio citare il DJGPP era dovuto solo al fatto che, purtroppo, sono
stato anch'io costretto ad usarlo.
Giusto per concludere :-) per il mio "divertimento quotidiano" uso
GCC sotto FreeBSD; e se potessi re-installerei Linux e mi scaricherei
il compilatore di Intel...
SiMoStro

 ma quantomeno ti produrrà codice Win32 e non DOS16.... ^_^""
DJGPP *non* produce codice a 16 bit. Il poco codice a 16 bit di DJGPP è 
tutto scritto a mano in assembly. Il problema nell'uso di DJGPP sta nel 
linker, che produce eseguibili *DOS* a 32 bit, che in quanto eseguibili 
DOS fanno uso delle system call DOS in modalità reale, che sono emulate 
e tutt'altro che efficienti
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.5. C, C++ and ASM developers
                               and beta testers are welcome!

 
Beh ci sono docenti con conoscenze limitate ai soli ambienti commerciali,
e questa si può chiamare ignoranza! Cmq il DJGPP *genera* codice a 32 bit,
ma è comunque codice DOS, ovvero senza sfruttare i meccanismi del s.o.
windows, che sebbene non sia a mio avviso un grande sistema, è di certo
come architettura molto meglio del semplice DOS, no?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
SiMoStro wrote:
| Permettimi di "continuare a credere" che prima di usare il DJGPP (porting
| del GCC sotto Win$)
è proprio qua che sbagli: DJGPP è "un ambiente" che contiene (anche) un
porting di GCC per DOS. (che poi puoi eseguire programmi DOS da dentor
windows poco conta, restano programmi DOS limitati al modo di vedere la
memoria di DOS, etc. etc.)
l'ambiente "equivalente" per Windows (che comprende il porting di GCC
per windows) lo ritrovi in cygwin o mingw.
OS: FreeBSD, Linux, DOS, Winddows+DLL, Windows
Ambienti: (senza nome), (senza nome), DJGPP, CYGWIN, MINGW
...in ognuno di questi avrai il porting di fari programmi come: GCC, LS,
RM, MKDIR, MORE, LESS, CAT, ...
Quindi il compilatore è sempre lo stesso, è l'ambiente che cambia.
Sotto Windows è indubbiamente meglio usare un compilatore per Windows
che un ocmpilatore per DOS.
Riguardo al tuo "prima di usare GCC qualunque altra cosa è meglio" mi
permetto di dire che, innanzitutto in quanto a prestazioni/perzzo GCC è
infinitamente melgio "del resto"; inoltre anche in assoluto ha delle
prestazioni affatto male.
Lapo
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkALL74ACgkQaJiCLMjyUvsqMQCePHl+54Coo/RTs2EHqrAbZOZ9
UyAAn1I5d+ixhRx/alw71eBerLbsygDG
=cVyg
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Bubuti Bauontico wrote:
| cazza... ehm, falso. Ci son persino delle build ufficiali del DJGPP per
| Linux (e se non ci sono, ci sono almeno le istruzioni per costruirselo)
Non riesco a *concepire* come possa essere utile avere il "port linux"
di un ambiente che è un "port dos" di un programma nato su unix e che su
linux, per l'appunto, c'è "nativamente".
Su linux esiste DJGPP come "target" in un GCC "cross-compilatore",
certo... ma questo non c'entra molto con quello di cui parlavo...
| DJGPP *non* produce codice a 16 bit. Il poco codice a 16 bit di DJGPP è
| tutto scritto a mano in assembly. Il problema nell'uso di DJGPP sta nel
| linker, che produce eseguibili *DOS* a 32 bit, che in quanto eseguibili
| DOS fanno uso delle system call DOS in modalità reale, che sono emulate
| e tutt'altro che efficienti
Modalità reale, appunto... con "16 bit" intendevo quello, non certo che
tu non possa usare EAX & soci ^_^
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkALRukACgkQaJiCLMjyUvt8qwCffUsdi7Wzvx/emjlype8/f8OC
BrcAnAzlKkDr54/yKl/H2Ah4IhWTrHUW
=efS0
-----END PGP SIGNATURE-----

 come architettura molto meglio del semplice DOS, no?
Indubbiamente, io questo sostenevo.
SiMoStro

 di principio il DJGPP della Delorie è per sistemi DOS, anche se
in effetti adopero windows2k, ed ho un sacco di problemi perchè per l'esame
debbo usare il DJGPP che ho provato e non gira sul mio pc di casa. sto
infatti approntando un mio vecchio pentium 100MHz solo per quello ed
eventualmente per fare qualche esperimento di controllo hardware

 compilatore intel è una versione modificata e ottimizzata del GCC?
La prima che hai detto. Il compilatore intel e' basato sul front-end EDG.
Ciao,
Nicola

 GCC č un compilatore della GNU nato su Linux/BSD
Naah. GCC e' nato ben prima di Linux, su sistemi Unix. Semmai e' Linux
che deve la sua esistenza alla disponibilita' di GCC.
Ciao,
Nicola

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Nicola Musatti wrote:
|>GCC č un compilatore della GNU nato su Linux/BSD
| Naah. GCC e' nato ben prima di Linux, su sistemi Unix. Semmai e' Linux
| che deve la sua esistenza alla disponibilita' di GCC.
Lo so bene, scusami l'imprecisione... ho detto Linux/BSD intendendo
"tutto quel mondo che deriva da unix"; č una (brutta) abitudine che
proviene dal fatto che troppe volte mi sono sentito dire "unix? e che
c'entra unix (con Linux o con FreeBSD, per esempio)"... dicesi anche:
molta gente sa cos'č linux (ne parlano in tv =P) e molta meno sa cos'č
unix ^_^""
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (Cygwin)
Comment: Using GnuPG with Mozilla - 
http://enigmail.mozdev.org
iEYEARECAAYFAkALzNwACgkQaJiCLMjyUvuCwQCglKvQ/Gfs6r6gyWh6BbMgQAsg
h4YAn1a6/A+iKQqcH6a4isu4qagPvH4H
=elVX
-----END PGP SIGNATURE-----

 che deve la sua esistenza alla disponibilita' di GCC.
Confermo, AFAIK.
Credo che dopo Emacs (o a cavallo) nelle idee di Stallman
ci fosse il progetto GNU (ufficialmente datano una 10ina
d'anni tra l'uno e l'altro); se non ricordo malissimo il
GCC non è un "nascituro puro", nel senso che il nucleo
del compilatore già esisteva da un altro progetto
(all'inizio avevano cominciato a scrivere un "loro"
compilatore ma avevano problemi di memoria per la
dimensione che raggiungeva l'albero nella prima fase
di compilazione) e scelsero di utilizzare il codice di
quell'altro da modificare. Ad oggi ne sarà rimasto ben
poco del codice originario...
si trovano molte notizie sulla sua pagina, ma ora non ho
molto voglia di mettermi a leggere... :)
SiMoStro