PDA

View Full Version : [C] compilatore


Daniel Dolphin
03-10-2011, 17:54
Potete consigliarmi un buon compilatore C per windows possibilmente leggero che devo istallarlo netbook che porto all'università (va bene anche il solo compilatore che assocerei a notepad++)?

Un'altra piccola domanda da principiante del mondo C: Un compilatore C++ può essere usato tecnicamente come un compilatore C?

Freaxxx
03-10-2011, 18:07
Potete consigliarmi un buon compilatore C per windows possibilmente leggero che devo istallarlo netbook che porto all'università (va bene anche il solo compilatore che assocerei a notepad++)?

Un'altra piccola domanda da principiante del mondo C: Un compilatore C++ può essere usato tecnicamente come un compilatore C?

installa gcc tramite Cygwin, alcuni IDE per Windows installano automaticamente una versione di gcc come ad esempio CodeBlocks.

un compilatore C++ tendenzialmente accetta anche codice C.

Daniel Dolphin
03-10-2011, 18:13
installa gcc tramite Cygwin, alcuni IDE per Windows installano automaticamente una versione di gcc come ad esempio CodeBlocks.

un compilatore C++ tendenzialmente accetta anche codice C.

grazie infinite ma c'è quel "tendenzialmente" che mi tiene un po' in allarme

Freaxxx
03-10-2011, 18:17
grazie infinite ma c'è quel "tendenzialmente" che mi tiene un po' in allarme

A) non esiste 1 solo compilatore
B) ogni produttore è libero di implementare il suo compilatore come meglio crede, lo standard C/C++ non definisce tutto altrimenti i compilatori sarebbero tutti uguali.
C) se non troverai 1 compilatore per entrambi ( ma g++ riesce ) ne userai 2, non vedo particolari problemi.

Daniel Dolphin
03-10-2011, 18:28
A) non esiste 1 solo compilatore
B) ogni produttore è libero di implementare il suo compilatore come meglio crede, lo standard C/C++ non definisce tutto altrimenti i compilatori sarebbero tutti uguali.
C) se non troverai 1 compilatore per entrambi ( ma g++ riesce ) ne userai 2, non vedo particolari problemi.

infatti è più una curiosità, mi incuriosiva più che altro il punto B: a livello di standard il linguaggio C è compatibile con C++.

Sopratutto la domanda nasce dal fatto che ci consigliano visual c++ express il quale comunque fa creare file .cpp e non .c e volevo capire se ci sono problemi sia dal lato del codice che vado a scrivere e sia dal lato del file che poi lui produce.

WarDuck
03-10-2011, 18:33
infatti è più una curiosità, mi incuriosiva più che altro il punto B: a livello di standard il linguaggio C è compatibile con C++.

Sopratutto la domanda nasce dal fatto che ci consigliano visual c++ express il quale comunque fa creare file .cpp e non .c e volevo capire se ci sono problemi sia dal lato del codice che vado a scrivere e sia dal lato del file che poi lui produce.

Basta cambiare l'estensione e lui produrrà codice C ;).

Freaxxx
03-10-2011, 18:39
infatti è più una curiosità, mi incuriosiva più che altro il punto B: a livello di standard il linguaggio C è compatibile con C++.

Sopratutto la domanda nasce dal fatto che ci consigliano visual c++ express il quale comunque fa creare file .cpp e non .c e volevo capire se ci sono problemi sia dal lato del codice che vado a scrivere e sia dal lato del file che poi lui produce.

Microsoft attualmente offre un supporto piuttosto limitato al C e C++, il suo compilatore che trovi nelle varie suite Visual Studio supporta fino allo standard C90, per quanto riguarda il C99 e il C0X c'è un supporto parziale a quanto dichiara l'azienda perché alcuni utenti chiedevano feature del C99 e altri del C0X ( ? ), che poi vorrei capire che significa, ed alla fine Microsoft di completo non ha nulla da offrire rispetto i nuovi standard; se ti hanno consigliato il Visual C++ per studiare il C e il C++ cambia classe, professore e regalagli un bel cappello da asino.

Daniel Dolphin
03-10-2011, 20:06
Microsoft attualmente offre un supporto piuttosto limitato al C e C++, il suo compilatore che trovi nelle varie suite Visual Studio supporta fino allo standard C90, per quanto riguarda il C99 e il C0X c'è un supporto parziale a quanto dichiara l'azienda perché alcuni utenti chiedevano feature del C99 e altri del C0X ( ? ), che poi vorrei capire che significa, ed alla fine Microsoft di completo non ha nulla da offrire rispetto i nuovi standard; se ti hanno consigliato il Visual C++ per studiare il C e il C++ cambia classe, professore e regalagli un bel cappello da asino.

Già ma non penso a lui interessi tanto questo nel nostro corso, sono più problemi che mi faccio io perché voglio capire le cose davvero

senti ma con gcc tramite Cygwin posso compilare codice C per windows? o compila solo codice C per Unix?

Freaxxx
03-10-2011, 20:48
Già ma non penso a lui interessi tanto questo nel nostro corso, sono più problemi che mi faccio io perché voglio capire le cose davvero

senti ma con gcc tramite Cygwin posso compilare codice C per windows? o compila solo codice C per Unix?

certo che compila per windows.

se non ti interessa quello che hai tra le mani: cosa studi? il compilatore è "quello" che prende in carico il tuo codice e ne fa linguaggio macchina, se non sai cosa supporta e come lavoro come lo scrivi il codice? E come capisci le differenze? E come sai cosa aspettarti?

Daniel Dolphin
03-10-2011, 21:09
Capisco ciò che dici ma si tratta di un corso di sistemi operativi e le sue priorità sono altre. La cosa veramente sbagliata è arrivare ad un corso di sistemi operativi senza mai aver visto C in faccia, e ti dico pure che in alcune università nemmeno a sistemi operativi si fa C (per esempio all'unical da cui sono scappato appena mi sono reso conto di quanto fosse pessima la didattica)

WarDuck
03-10-2011, 23:56
Microsoft attualmente offre un supporto piuttosto limitato al C e C++, il suo compilatore che trovi nelle varie suite Visual Studio supporta fino allo standard C90, per quanto riguarda il C99 e il C0X c'è un supporto parziale a quanto dichiara l'azienda perché alcuni utenti chiedevano feature del C99 e altri del C0X ( ? ), che poi vorrei capire che significa, ed alla fine Microsoft di completo non ha nulla da offrire rispetto i nuovi standard; se ti hanno consigliato il Visual C++ per studiare il C e il C++ cambia classe, professore e regalagli un bel cappello da asino.

Devi distinguere quando parli di C e di C++.

Il compilatore Microsoft è particolarmente orientato sul secondo.

Inoltre, cito da Wikipedia:
GCC version 4.6 adds initial support for some features from the C1X draft.

Tra l'altro, faccio notare che sono specifiche ancora in bozza, per cui sarebbe abbastanza irresponsabile sviluppare qualcosa usando feature del linguaggio non ancora definite totalmente.

PS: Visual C++ è stato uno dei primi compilatori a supportare il TR1 del nuovo standard.

Freaxxx
04-10-2011, 00:13
Devi distinguere quando parli di C e di C++.

Il compilatore Microsoft è particolarmente orientato sul secondo.

Inoltre, cito da Wikipedia:
GCC version 4.6 adds initial support for some features from the C1X draft.

Tra l'altro, faccio notare che sono specifiche ancora in bozza, per cui sarebbe abbastanza irresponsabile sviluppare qualcosa usando feature del linguaggio non ancora definite totalmente.

PS: Visual C++ è stato uno dei primi compilatori a supportare il TR1 del nuovo standard.

si ma con Microsoft è sempre tutto in bozza, non ricordo più da quanto tempo sento parlare di parziale supporto al C++ e al C, praticamente un vero supporto non c'è mai stato ed curioso notare come prodotti come GCC siano anni luce avanti in molto meno tempo.

tengono in piedi il C++ con il lumino giusto per usare le librerie native di windows con il Visual C++, usare il Visual Studio per imparare questo linguaggio è semplicemente cattiva didattica.

WarDuck
04-10-2011, 00:19
si ma con Microsoft è sempre tutto in bozza, non ricordo più da quanto tempo sento parlare di parziale supporto al C++ e al C, praticamente un vero supporto non c'è mai stato ed curioso notare come prodotti come GCC siano anni luce avanti in molto meno tempo.

tengono in piedi il C++ con il lumino giusto per usare le librerie native di windows con il Visual C++, usare il Visual Studio per imparare questo linguaggio è semplicemente cattiva didattica.

Diciamo che questo è il solito luogo comune, anche perché tutti i costrutti del linguaggio sono perfettamente usabili in Visual Studio, per cui...

Che poi MS spinga più su altro (.NET) è fuor di dubbio.

lishi
04-10-2011, 00:56
Microsoft attualmente offre un supporto piuttosto limitato al C e C++, il suo compilatore che trovi nelle varie suite Visual Studio supporta fino allo standard C90, per quanto riguarda il C99 e il C0X c'è un supporto parziale a quanto dichiara l'azienda perché alcuni utenti chiedevano feature del C99 e altri del C0X ( ? ), che poi vorrei capire che significa, ed alla fine Microsoft di completo non ha nulla da offrire rispetto i nuovi standard; se ti hanno consigliato il Visual C++ per studiare il C e il C++ cambia classe, professore e regalagli un bel cappello da asino.

Il C della microsoft non è aggiornato al'ultimo standard (per loro stessa ammissione)


Ma con vs2010 il support c++0x è molto migliore rispetto alle versioni più diffuse del g++, le ho provato entrambi.
Anzi il g++ a mio personale parere è fortemente indietro. A meno di installare la 4.6, non lo ancora provato ma almeno nel lato feature sembra che sia sullo stesso livello di supporto che ha vs2010

Per ambito accademico usa tranquillamente il Gcc, anzi evita come la peste qualsiasi IDE che ti faccia la compilazione automatica. Sporcati per gli primi mesi con la linea di commando.

nico159
04-10-2011, 13:18
Devi distinguere quando parli di C e di C++.

Il compilatore Microsoft è particolarmente orientato sul secondo.

Inoltre, cito da Wikipedia:
GCC version 4.6 adds initial support for some features from the C1X draft.

Tra l'altro, faccio notare che sono specifiche ancora in bozza, per cui sarebbe abbastanza irresponsabile sviluppare qualcosa usando feature del linguaggio non ancora definite totalmente.

PS: Visual C++ è stato uno dei primi compilatori a supportare il TR1 del nuovo standard.
Piccola lancia in favore di GCC

Lo standard C++11 è stato approvato. E' standard ISO

Alcuni dipendenti stessi di MS, dopo essere stati accusati delle pochissime novità riguardanti il supporto a C++11 in Visual Studio 11 hanno ammesso che in Microsoft c'è sempre più interesse verso linguaggio di alto livello

As we've admitted these last months (in this blog, at Channel 9 with my colleague and friend Charles Torre, etc.) native development in general and C++ in particular got a lower priority amongst the many languages that Visual Studio features. Not to justify my employer here, but it should be accepted that it was an industry trend that school of thinking that "modern languages" were managed ones, while native languages were expected to become legacy for mainstream development over the time.

Since January 2007 (when I moved from Outlook Search to VC Libraries), I've been the only MS dev working on the STL. I work with Dinkumware, headed by P.J. Plauger - the original author of the C++ Standard Library implementation that MS has licensed.

Una società che ha entrate di milioni l'anno, ha solo 1 persona a lavorare sulla STL

Se si vuole un compilatore che supporti l'ultimo standard si dovrebbe come consigliato puntare su GCC, altrimenti ICC di Intel pare anche proseguire bene

A meno di installare la 4.6, non lo ancora provato ma almeno nel lato feature sembra che sia sullo stesso livello di supporto che ha vs2010
Non mi pare

lishi
04-10-2011, 14:03
Piccola lancia in favore di GCC

Una società che ha entrate di milioni l'anno, ha solo 1 persona a lavorare sulla STL

Se si vuole un compilatore che supporti l'ultimo standard si dovrebbe come consigliato puntare su GCC, altrimenti ICC di Intel pare anche proseguire bene


Non mi pare

Tutta la libreria std è stata affidata a una società esterna. Quindi effettivamente non viene più sviluppata internamente da ms, che poi questo sia un bene o male dipende dai punti di vista, ma non penso che nessuno si sia mai lamentato della implementazione che hanno.

Per il supporto puoi vedere qui

http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

Il supporto della 4.4 lascia molto a desiderare.
Dalla 4.6 forse come feature ha superato la microsoft. Ma è un passaggio relativamente recente.

marco.r
04-10-2011, 14:14
si ma con Microsoft è sempre tutto in bozza, non ricordo più da quanto tempo sento parlare di parziale supporto al C++ e al C, praticamente un vero supporto non c'è mai stato ed curioso notare come prodotti come GCC siano anni luce avanti in molto meno tempo.

tengono in piedi il C++ con il lumino giusto per usare le librerie native di windows con il Visual C++, usare il Visual Studio per imparare questo linguaggio è semplicemente cattiva didattica.
E giusto per compilare quei due-tre progetti come Windows, Office e la piattaforma .NET :O
E' vero che una volta il supporto al C++ di VS era lacunoso, ma in questi anni la situazione e' sostanzialmente cambiata. Il supporto al C++11 non fa testo... lo standard definitivo e' di agosto e nessun compilatore lo supporta ancora completamente.

Ci credero' che Microsoft sta abbandonando il C++ solo quando vedro' una versione di Office in C#...

WarDuck
05-10-2011, 10:46
Ad ogni modo sarebbe ora di creare un nuovo linguaggio nativo, il C++ ha rotto le palle, e le nuove estensioni mi sembrano solo incasinare ulteriormente una sintassi ai confini della follia :asd:

pabloski
05-10-2011, 10:55
Scusate ma non fa prima ad installare codeblocks con mingw??? Che se ne sa degli ultimissimi, fighissimi standard del c e c++.

Certo il c99 è bello, c'ha pure il tipo bool, ma per l'università sicuramente non gli faranno usare quelle novità.

Tanto vale andare sul semplice e installare in due click l'ide e il compilatore.

Freaxxx
05-10-2011, 11:02
Ad ogni modo sarebbe ora di creare un nuovo linguaggio nativo, il C++ ha rotto le palle, e le nuove estensioni mi sembrano solo incasinare ulteriormente una sintassi ai confini della follia :asd:

la tendenza non è questa purtroppo, ci saranno sempre più linguaggi sempre più astratti e che saranno basati su librerie con un particolare design che si indirizzerà verso l'information hiding più spinto; inoltre questo genere di linguaggi solitamente genera il cosidetto "boilerplate code" che è praticamente il mostro combattuto da qualsiasi industria del software.

basti vedere gli ultimi prodotti software, nessuno è ottimizzato, si preferisce mettere una CPU da 800Mhz pure nel tostapane per far girare software java piuttosto creare codice ottimizzato, oramai pure il kindle è basato su java ed è un aggeggio che di cose non ne fa moltissime ...

Scusate ma non fa prima ad installare codeblocks con mingw??? Che se ne sa degli ultimissimi, fighissimi standard del c e c++.

Certo il c99 è bello, c'ha pure il tipo bool, ma per l'università sicuramente non gli faranno usare quelle novità.

Tanto vale andare sul semplice e installare in due click l'ide e il compilatore.

c99 una novità?

Freaxxx
05-10-2011, 11:25
all'uni ti insegnano ansi C. non capisco tutte queste pippe mentali sugli standard. vanno bene tutti i compilatori e tutti gli IDE per l'ANSI C, tranne devcpp che è pieno di bug e ormai senza più sviluppo alle spalle.

zi impara zolo uzando gcc ebbasta :O

pabloski
05-10-2011, 11:33
c99 una novità?

considerando che quasi nessun compilatore lo implementa seriamente, direi di si :D