2009-10-31 10 views
5

Se si è utilizzato un IDE java o .net decente, è possibile vedere l'abbondanza di funzionalità che forniscono che non esistono in IDE c/C++ o esistono in una forma molto più limitata.Perché lo strumento IDE C e C++ supporta ciò che è disponibile per le piattaforme gestite?

Sto pensando di caratteristiche come:

  • completamento del codice
  • errori di sintassi (e gli errori di compilazione senza bisogno di compilare)
  • refactoring
  • Debug (la quantità di informazioni che il debugger può mostrare oggetti)
  • Esplorazione e analisi del codice (visualizzazione delle gerarchie di tipi, chi chiama questa funzione ecc ...)

Qual è la caratteristica principale dei linguaggi gestiti che consente loro di fornire questo (il più direbbe) un supporto superiore negli strumenti?

+0

Ma Visual Studio è un IDE .NET e supporta C++, quindi l'ipotesi è falsa. Anche la VC++ Express Edition gratuita esegue la maggior parte delle tue funzionalità (escluso il refactoring). – Clifford

+1

Mentre sto imparando C, sono molto sorpreso del limitato supporto di editing in VS 2008. Non chiude nemmeno parentesi/parentesi. – Ree

+0

Dopo aver utilizzato sia Visual C++ che Visual C# (ed Eclipse anche per Java) ampiamente, so esattamente cosa intendi. Il completamento del codice per C++ è inaffidabile, gli errori non sono evidenziati nella fonte, non vi è alcun supporto per il refactoring (nemmeno la ridenominazione delle variabili locali), e così via. – Thomas

risposta

11

C++ è un estremamente difficile da analizzare. Per i parser che lo elaborano con successo (compilatori), sono troppo lenti e non abbastanza flessibili da supportare il supporto del codice in stile IDE. A differenza di un compilatore, in un IDE, il parser deve essere molto veloce ed essere in grado di elaborare codice sintatticamente errato. Fino ad ora, nessuno si è preso il tempo di farlo perché le persone con le competenze richieste per farlo si concentrano esclusivamente su compilatori reali.

Visual Studio 2010 ha un motore IntelliSense C++ rinnovato. Ci sono voluti molti, molti anni per farlo ma il suo massicciamente migliorato.

+1

"Intellisense" è la disfunzione più fastidiosa in qualsiasi editor di testo. Apre finestre di dialogo sanguinose sul mio codice mentre sto provando a scriverlo. I veri programmatori possono trovare la dichiarazione della funzione che stanno chiamando e leggere la documentazione. –

+2

@alex: considerandomi un vero programmatore (C++), mi trovo spesso a imprecare quando cerco di localizzare manualmente la dichiarazione di una particolare funzione. – xtofl

+0

Per quanto riguarda vs2010 hanno inserito un parser esterno solo per l'IDE. Per quanto riguarda la complessità, includere anche file, macro e oggetti modello. –

2

Nonostante la difficoltà di analizzare C++, ritengo che la vostra premessa sia eccessivamente ampia e che non si tratti necessariamente di un problema gestito o non gestito.

Visual Studio, ad esempio, ha il completamento del codice, edit-and-continue (per build a 32 bit), controllo della sintassi (a partire dalla prossima versione 2010), ampie funzionalità di debug e funzionalità di esplorazione del codice per progetti C++ nativi .

5

Lingue come C e C++ rendono più difficile eseguire il completamento e la correzione della sintassi perché le sintassi sono più complicate di (per esempio) Java. Ad esempio, il preprocessore rende le cose molto più difficili.

Il refactoring è più difficile perché i sistemi di tipo più deboli del C/C++ rendono più difficile sapere se un refactoring preserverebbe il significato del codice originale.

Il debugging è più difficile perché i sistemi di tipo più deboli di C/C++ significano che è più difficile sapere quali siano effettivamente i "veri" tipi di valori di runtime.

4

Recentemente ho riso i codificatori c/C++ che ancora utilizzano vim, finché non mi hanno sfidato a trovare un IDE che gestisca in modo pulito la compilazione condizionale in un progetto di grandi dimensioni e collegamenti all'istanza corretta di un metodo compilato condizionalmente definito per più fattori. Nessuno è arrivato alla sfida.

Morale: mantieni pulito il tuo design, vim è il tuo IDE.

+0

hm .... allora ho bisogno di smettere di usare vim come un semplice editor, quindi. – xtofl

-2

Gli IDE sono solo stampelle per programmatori che non conoscono il loro mestiere. Procurati un buon editor di testo e impara a leggere i messaggi di errore del compilatore.

+1

Dai, questa è solo un'osservazione inutile. Ogni strumento ha il suo scopo, se vuoi mantenere il tuo editor di testo adatto a te, ma molte funzionalità dell'IDE spostano il nostro mestiere (sì artigianale) un passo avanti semplicemente digitando il codice –

+0

È OK usare un editor di testo. .but preferirei usare un IDE - mi rende molto più produttivo. –

+0

Se vuoi, puoi utilizzare un IDE, ma ti garantisco che non ti renderà un programmatore migliore (o più produttivo). Prendi Intellisense - pensi che ti renda più produttivo perché significa che non devi andare a cercare una dichiarazione di funzione o leggere la documentazione. Io sostengo che, a lungo andare, leggere la documentazione e conoscere le dichiarazioni delle funzioni ti renderà ancora più produttivo. –

1

Se si desidera l'open source e la piattaforma multipiattaforma, il plug-in NetBeans C/C++ ha la maggior parte, se non la totalità, di ciò che si desidera in un IDE C/C++.

Problemi correlati