web-dev-qa-db-fra.com

Quel est le meilleur IDE pour le développement C / Pourquoi utiliser Emacs sur un IDE?

donc, conformément à l'une de mes questions précédentes, je revois mes compétences en C.

Ma question est, qu'est-ce que les gens utilisent pour développer C?

Beaucoup de gens utilisent Emacs depuis des années, mais vaut-il mieux apprendre à utiliser emacs qu'avec un IDE comme Geany ou KDevelop?

Serait également intéressé d'entendre de ces toujours en utilisant emacs, et pourquoi ils l'utilisent sur d'autres applications?

Veuillez noter que je ne suis vraiment intéressé que par IDE gratuits/éditeurs.

EDIT:

Merci d'avoir posté des liens qui répondent à certaines de mes questions, mais je suppose que ce que je me demande vraiment, c'est:

Que ce soit pour apprendre à éditer avec emacs/vim et pour compiler/déboguer avec gcc-toolchain en vaut la peine plutôt qu’en utilisant simplement un IDE, et pourquoi?

Quelles sont les raisons des gens pour ne pas migrer vers un IDE?

Quelqu'un at-il passé du développement centré sur le terminal au développement IDE), et pourquoi ont-ils déménagé?

62
Matthew Rathbone

J'ai commencé par utiliser des IDE, Microsoft ou non. Ensuite, alors que je travaillais sur QNX il y a longtemps, j'ai été obligé de le faire avec un éditeur de texte + compilateur/éditeur de liens. Maintenant, je préfère cette combinaison simple –– un éditeur de coloration syntaxique + compilateur C et éditeur de liens cli + make –– à n’importe quel environnement de développement intégré, même si l’environnement le permet.

Les raisons sont, pour moi:

  1. il y en a partout. Si vous programmez en C, vous avez le compilateur et vous pouvez généralement vous procurer un éditeur. La première chose que je fais - je me suis nedit sur Linux ou Notepad ++ sur Windows. J'irais avec vi, mais les éditeurs d'interface graphique fournissent de meilleures polices, et c'est important quand on regarde le code toute la journée

  2. vous pouvez programmer à distance, via ssh, quand vous en avez besoin. Et cela aide beaucoup parfois de pouvoir ssh dans la cible et de faire des choses rapides là-bas

  3. cela me maintient proche de la CLI, de préférence la CLI UNIX/Linux. Donc, toutes les commandes sont sur le bout de mes doigts, et quand j'en ai besoin, je n'ai pas besoin d'aller lire un livre de référence. Et UNIX CLI peut faire des choses que les IDE ne peuvent pas souvent –– parce que leurs développeurs ne pensaient pas que vous en auriez besoin

  4. plus important encore, cela ressemble beaucoup à voir la matrice en code brut. Je gère des fichiers, je suis donc obligé de les garder gérables. Je trouve des éléments dans mon code manuellement, ce qui me permet de rester simple et organisé. Je fais explicitement la gestion de la configuration, donc je sais quand et comment je suis synchronisé. Je connais mes Makefiles car je les écris et ils ne font que ce que je leur dis.

    (si vous vous demandez si cela fonctionne dans de "très gros projets" - ça marche, et plus le projet est grand, plus il gagne en performance)

  5. quand les gens me demandent de regarder leur code, je n'ai pas à apprendre le IDE qu'ils utilisent

62
n-alexander

Je suis passé d'un environnement d'édition de texte terminal + make à Eclipse pour la plupart de mes projets. Spanning from C and C++, to Java et Python pour nommer quelques langues avec lesquelles je travaille actuellement).

La raison était simplement la productivité. Je ne pouvais pas me permettre de passer du temps et des efforts pour garder tous les projets "dans ma tête" car d'autres choses devenaient plus importantes.

Il y a des avantages à utiliser l'approche "hardcore" (terminal) - comme cela, vous avez une couche beaucoup plus fine entre vous et le code, ce qui vous permet d'être un peu plus productif lorsque vous êtes tous "à l'intérieur" du projet et que tout est en ordre. sur le dessus de votre tête. Mais je ne pense pas qu'il soit possible de défendre cette façon de travailler uniquement pour elle-même lorsque votre esprit est nécessaire ailleurs.

Généralement, lorsque vous utilisez des outils en ligne de commande, vous devrez souvent résoudre de nombreux problèmes qui vous empêchent d'être productif. Vous aurez besoin de connaître les outils en détail pour exploiter pleinement leurs potentiels. De plus, maintenir un projet demandera beaucoup plus d'efforts. Le refactoring entraînera des mises à jour dans les fichiers de création, etc.

Pour résumer: si vous ne travaillez que sur un ou deux projets, de préférence à temps plein sans trop de distractions, le "codage basé sur le terminal" peut être plus productif qu'un IDE complet. Cependant, si vous avez besoin de dépenser votre énergie de réflexion pour quelque chose de plus important, un IDE) est sans aucun doute la voie à suivre pour maintenir votre productivité.

Faites votre choix en conséquence.

34
Anders Hansson

Emacs est un IDE.

edit: OK, je vais élaborer. Qu'est-ce qu'un IDE?

Comme point de départ, développons l’acronyme: Environnement de développement intégré. Pour analyser cela, je commence par la fin.

Un environnement est, en général, la partie du monde qui entoure le point de vue. Dans ce cas, il s’agit de ce que nous voyons sur notre moniteur (entendons peut-être nos enceintes) et que nous manipulons via notre clavier (et peut-être une souris).

Développement est ce que nous voulons faire dans cet environnement, son but, si vous voulez. Nous utilisons l'environnement pour développer des logiciels. Cela définit les sous-parties dont nous avons besoin: un éditeur, une interface vers le REPL, resp. le compilateur, une interface pour le débogueur et l'accès à la documentation en ligne (cette liste peut ne pas être exhaustive).

Intégré signifie que toutes les parties de l'environnement sont en quelque sorte sous une surface uniforme. Dans un IDE, nous pouvons accéder aux différentes sous-parties et les utiliser avec un minimum de commutation; nous n'avons pas à quitter notre environnement défini. Cette intégration permet une meilleure interaction des différentes sous-parties. Par exemple, l’éditeur peut connaître le langage dans lequel nous écrivons et nous indiquer l’achèvement automatique des symboles, la définition directe, la mise en retrait automatique, la coloration syntaxique, etc. Il peut obtenir des informations du compilateur, passer automatiquement aux erreurs, et les mettre en évidence. Dans la plupart des IDE, sinon tous, l'éditeur est naturellement au cœur du processus de développement.

Emacs fait tout cela, il le fait avec un large éventail de langues et de tâches, et le fait avec excellence, car il est extensible de manière transparente par l'utilisateur partout où il manque quelque chose.

Contre-exemple: vous pouvez développer quelque chose comme Notepad, accéder à la documentation via Firefox et XPdf, et diriger le compilateur et le débogueur à partir d'un shell. Ce serait un environnement de développement, mais ce ne serait pas intégré.

15
Svante

J'ai utilisé Eclipse avec le plug-in CDT avec assez de succès.

10
fluffels

Emacs serait mieux s'il avait un éditeur de texte ... :-)

6
Jimmy J

Netbeans a excellent support C et C++ . Certaines personnes se plaignent de sa lourdeur et de sa lenteur, mais je l'utilise presque exclusivement pour des projets personnels et je l'adore. La fonctionnalité d'assistance au code est l'une des meilleures que j'ai vues.

5
Joshua Rieken

Utilisez Code :: Blocks . Il a tout ce dont vous avez besoin et une interface graphique très propre.

5
soulmerge

Comment se fait-il que personne ne mentionne Bloodshed Dev C++? Je ne l'ai pas utilisé depuis un moment, mais j'ai appris le c/c ++ dessus. très similaire à MS Visual c ++.

3
santo101

Si vous recherchez un éditeur multi-plateformes gratuit et agréable à la recherche, essayez Komodo Edit . Ce n'est pas aussi puissant que l'IDE de Komodo, mais ce n'est pas gratuit. Voir tableau des caractéristiques .

Un autre éditeur gratuit et extensible est jEdit . Crossplatform en tant que Java pur à 100%. Pas le plus rapide IDE sur la Terre, mais pour Java effectivement très rapide, très flexible, pas si agréable à regarder cependant.

Tous deux ont un pliage de code très sophistiqué, une coloration syntaxique (pour toutes les langues que vous pouvez penser!) Et sont très flexibles en ce qui concerne sa configuration pour vos besoins personnels. jEdit est BTW très facile à étendre pour ajouter la fonctionnalité dont vous pourriez avoir besoin (il a un langage de script ultra simple, qui ressemble à Java, mais qui est en fait "scripté").

1
Mecki