Outils utiles au développement

Démarré par Morwenn, 12 Juin 2011 à 00:32

0 Membres et 1 Invité sur ce sujet

12 Juin 2011 à 00:32 Dernière édition: 17 Janvier 2012 à 19:30 par Morwenn
    Outils utiles au développement

    Histoire de participer un peu à l'activité de cette section et d'aider les gens, j'ai décidé de créer une petite liste de logiciels gratuits utiles au développement. Cela comprend bien sûr les éditeurs de code et autres environnements de développement, mais également quelques utilitaires aux fonctions très pratiques :)

    Après tout, quoi de mieux que de bons logiciels pour bien programmer ? :D


    Editeurs de code

    Notepad++
    Avantages

    • Supporte de base un grand nombre de langages.
    • Très simple d'utilisation, rapide et prend peu de mémoire.
    • Coloration syntaxique très complète. Les types de mots-clefs changent en fonction des langages.
    • Très utile lorsqu'on doit programmer dans plusieurs langages en même temps (prog web, etc...).
    • Prend en compte Doxygen dans la coloration syntaxique.
    • Fonction de recherche par expressions régulières.
    Inconvénients

    • Ne fonctionne que sous Windows.

    Kate
    Avantages

    • Supporte de base un grand nombre de langages.
    • Très simple d'utilisation.
    • Coloration syntaxique très complète. Les types de mots-clefs changent en fonction des langages.
    • Très utile lorsqu'on doit programmer dans plusieurs langages en même temps (prog web, etc...).
    • Prend en compte Doxygen dans coloration syntaxique.
    • Propose une complétion automatique des mots.
    • Propose simplement d'ouvrir un terminal dans l'éditeur.
    Inconvénients

    • Demande l'installation complète de KDE pour être utilisable sous Windows
    • L'autocomplétion ne prend en compte que les mots déjà présents dans le fichier.


    Environnements de programmation

    Eclipse
    Avantages

    • Multi-plateformes
    • Supporte un grand nombre de langages.
    • Extensible (nombreux plugins).
    • Permet de différencier les déclarations et utilisations de variables dans la coloration syntaxique.
    • Fait le café.
    Inconvénients

    • Peut être très lent et très lourd.
    • Rigidité du workspace.

    NetBeans
    Un environnement de programmation complet pour Java. Il peut également supporter les langages Python, C, C++, JavaScript, XML, Ruby, PHP et HTML.
    Avantages

    • La coloration syntaxique différencie les déclarations de fonctions de leur utilisation.
    • Peut intégrer des logiciels de versionning.
    • Nombreux plugins (dont Doxygen)
    Inconvénients

    • Mauvaise rétrocompatibilité des projets.
    • On se perd vite dans les sous-menus.

    Code::Blocks
    Un environnement de programmation pour le C/C++.
    Avantages

    • Multiplateformes.
    • Inclue MinGW.
    • Reconnaît la plupart des features C99 et C++11.
    • Peut faire une distinction très claire entre C et C++.
    • Prend en compte Doxygen lors de la coloration syntaxique.
    Inconvénients

    • Coloration syntaxique peu évoluée.

    Dev C++
    Un environnement de développement pour le C/C++ utilisant de base le compilateur GCC.


    Logiciels de gestion de versions

    Apache Subversion
    Plus souvent appelé SVN. Est inclus dans le logiciel de gestion de projets Trac. Fait l'objet de plugins dans de nombreux environnements de développement.

    Git
    Un autre logiciel de gestion de versions.


    Utilitaires divers

    Make
    Make est ce qu'on appelle un "moteur de production", à savoir un logiciel servant principalement à automatiser la compilation des fichiers donnés dans des projets utilisant de nombreux sources d'origines parfois diverses. La commande make cherche dans le dossier courant un fichier nommé "Makefile" ou "makefile", lit les instructions de compilation que vous aurez écrites et les exécute. Make est à l'origine une commande traditionnelle UNIX, mais existe depuis pour d'autres OS.

    CMake
    CMake (Cross Platform Make) est un logiciel multiplateformes permettant de générer de manière plus ou moins automatique (il y a des fichiers et syntaxes associées) des makefiles ou des fichiers de projets. Cet utilitaire est particulièrement pratique pour les projets de groupes où il arrive que les développeurs utilisent des configurations différentes, des éditeurs de code différents, etc...

    Doxygen
    Un utilitaire de génération automatique de documentation de code.
    Cela implique bien évidemment d'avoir recours à une syntaxe particulière dans les commentaires des fichiers source.
    Avantages

    • Support des langages C++, C, C# Objective-C, D, Jave, Python, IDL, Fortran, VHDL et PHP.
    • La documentation peut être générée en HTML, LATEX, RTF, PDF, PostScript, CHM ou en page de manuel Unix.
    • De plus en plus d'éditeurs de code proposent une coloration syntaxique des commentaires adaptées à Doxygen.

    tkdiff
    Un utilitaire permettant de comparer les différences existantes entre deux fichiers texte. Très utile pour comparer les différentes versions d'un code source.



    Bien entendu, cette page est loin d'être complète (très très loin même, ce n'est qu'une ébauche), et je n'attend que vos suggestions pour l'enrichir, la compléter, etc...
    Egalement, proposez des détails pour enrichir les descriptions des logiciels. Par exemple en donnant les principaux avantages qu'ont certains logiciels par rapport aux autres^^[/list]

    Excellente idée de regrouper les outils de programmation ici. Ça servira à plus d'un, et moi aussi peut-être.  :super:

    Sur Mac OS X, j'utilise XCode (gratuit pour les développeurs enregistrés Apple) pour le développement iOS, et TextMate (60$, mais l'un des meilleurs éditeurs de texte graphique qu'il existe, toute plateformes confondues) avec un terminal ouvert à côté pour tout le reste.

    Pour ce qui est gestion du code, etc., j'utilise personellement Git (via Github), ma boite fait de même (vu que c'est à moi qu'est revenu la décision), et mon labo utilise SVN. Tout ça via les outils console dédiés (tout comme diff... qui a besoin d'un truc graphique pour faire des diff, sérieusement? :ninja: )

    Quand j'étais sous Linux (dans mes années folles), c'était vim + terminal, netbeans pour des gros projets Java.

    Mon IUT nous a forcé à tout utiliser en console la première année (gcc, make, gdb, etc. - les profs étaient pour beaucoup des fanboys Linux), ce qui est important pour bien comprendre comment ça marche et pouvoir aisément se faire aux outils graphiques par la suite. À mon goût, ce n'est pas super de commencer à programmer direct avec un IDE- ça occulte beaucoup trop de choses.

    Le problème de la commande diff, c'est qu'elle n'existe pas partout (sous Windows notamment) :/
    Et puis bon, tkdiff reste diaboliquement simple au niveau utilisation aussi,  même genre d'aperçu qu'avec SVN.

    Je pourrais également ajouter Trac à la liste, mais c'est surtout pour la gestion de projets en groupe. Je n'ai vraiment aucune idée de s'il peut être utile ou non lorsqu'on fait seul un projet. Il a cependant l'avantage d'intégrer SVN.

    Bon, ben c'est parti... Git, SVN et netbeans en plus dans la liste.


    Ah oui, si vous avez des suggestions quelconques quant aux descriptions des logiciels, vous pouvez également les poster. Il vaut toujours mieux avoir les avis des gens qui s'y connaissent le mieux ;)

    Je plussoie ce qui a été dit.

    Ceci dit, je propose d'ajouter des informations supplémentaires concernant les plateformes visées, le prix, la license, la légèreté, l'accessibilité pour les débutants, lien vers le site officiel, d'éventuels tutos, ... Et pourquoi pas un lien vers un zouli screenshot ? :)

    Par exemple, Kate qui appartient au projet KDE, est son editeur de texte par défaut. Bien que KDE ait été récemment porté sur Windows, il est à la base prévu pour Linux. Ainsi, pour pouvoir l'utiliser sous Windows, il est indispensable d'installer tout l'environnement KDE, ce qui est assez lourd juste pour un éditeur de texte. Maintenant, je me trompe peut être, certains logiciels développés pour KDE peuvent s'installer sans. Sinon, il est sous license LGPL v2. (libre, open-source, sans copyleft).
    Sinon, on peut pratiquement tout paramétrer dessus et rajouter autant de langages qu'on veut (bien qu'ils le soient presque tous par défaut ^^). Il dispose de colo syntaxique, paramétrable.
    Mais sa fonction d'autocomplétion se base sur les mots présents dans le fichier courant. Il n'est donc pas très adapté pour de grands projets, spérarés en de nombreux fichiers. En revanche, il dispose d'une vraie console intégrée, ce qui est bien pratique. Pour résumer, je dirais que c'est l'éditeur idéal pour de petits projets, en particulier les scripts ne comportant qu'un unique fichier. Tout du moins, sous Linux.
    (Awi aussi, pas de support pour le débug)

    De même, Eclipse est un IDE qui peut tourner sur toute plate forme disposant d'une machine virtuelle Java. Mais il faut aussi savoir que c'est une usine à gaz (donc lourd) et qu'en plus, ben tourne sous VM ... Il prend donc pas mal de ressource et mène parfois des fuites de mémoire. C'est le prix à payer pour avoir un IDE très puissant. En effet, il est facilement extensible avec ses nombreux plugins et supporte presque tous les langages existants. Mais surtout, ce que je préfère, c'est son auto-complétion. Contrairement à beaucoup d'IDE, Eclipse peut proposer la complétion d'un élément non défini dans les fichiers du projet, en allant par exemple fouiller dans la lib standard, ou d'autres que l'on peut aisément ajouter. Sa fonction "search and replace" est assez puissante aussi (dans tous les fichiers du projet, et propose même de changer les noms de fichier lorsque la classe publique qu'ils contenaient a été renomée).
    Truc sympa aussi, ce sont ses onglets que l'on peut aggrandir en double-cliquant dessus. L'onglet s'affiche ainsi presque en plein écran. Il suffit de redouble cliquer pour le réduire à sa taille normale et retrouver les autres cadres.
    Enfin, on peut pratiquement tout paramétrer soi-même. Notemment les colos syntaxiques. D'ailleurs, Eclipse y apporte un petit plus, puisqu'il est possible de donner une couleur spécifique aux fonctions, aux variables, aux types que l'on définit, ... D'habitude, on peut juste en donner aux fonctions standard, aux mots-clés, aux types standards, ...
    Ici, grâce à Eclipse, on peut voir du premier coup d'oeil si on a à faire à un type, une fonction ou une variable sans commencer à regarder les conventions d'écriture et la présence de parenthèses (même les éléments non pré-définis). Pour certains langages, il est même possible de différencier la définition d'un élément et son utilisation. Par exemple souligner la variable là où on la définit et pas où on l'utilise.
    Certains n'y verront qu'une touche superficielle, mais perso, j'y vois également une amélioration ergonomique.
    Moins positif : La rigidité du workspace. Si on veut créer des dossiers de programmation en dehors du workspace, il faut créer un nouveau workspace. Et pour passer de l'un à l'autre, il faut redémarrer le logiciel. De plus, les préférences (et donc toutes les configs, colos, ...) sont locales au workspace courant et il faut faire mumuse avec les dossiers cachés si on veut copier les préférences :mrgreen:
    Certains langages proposent un débogueur, mais pas tous.
    Il y a une console intégrée, mais ce n'est pas une "vraie" console. Peut être y a-t-il moyen d'en ajouter une en installant un plug-in ?

    Bref, Eclipse, c'est cool, mais c'est aussi très lourd ^^


    D'autres outils utiles ?

    Ben les gestionnaires de version, tels que Git, Subversion, Mercurial, ...
    A noter que ce tutoriel du Sdz présente bien les différences entre ces différents outils (centralisés, support des branches, OS supportés, ...) avant d'aborder Git.

    Pour C/C++, il y a Valgrind qui permet de détecter les fuites de mémoire, en plus de proposer du profiling.
    D'ailleurs il y a aussi de nombreux outils de profiling (je n'en connais pas perso, mais j'avais vu un copain en utiliser un bon sous NetBeans, pour Java). License GPL v2

    Ensuite, les débogueurs. GDB du projet GNU, gratuit et sous license GPL.
    Mais perso, je n'aime pas utiliser de débogueur en ligne de commande. Je préfère placer mes checkpoints au clic de souris plutôt qu'en entrant le numéro de ligne :P

    Que reste-il ?
    Awi, il existe, parrait-il, des outils pour Visual Studio proposés par Intel pour détecter les failles de programmes parallèles/concurrents. Mais bon, je suppose qu'ils ne marchent pas pour les processeurs non Intel :/


    Voilà, voilà. Je repasserai ptet de temps en temps rajouter quelque chose ^_^
    En attendant, voici un topic de Developpez dans la même optique.
    J'avais d'autres liens, plus complets, mais ils sont tous morts :cry3:
    Marre des pavés ? Marchez dans la boue!
    ハハ、あなたは私の罠に落ちた!

    Je n'aime pas du tout Trac pour la gestion de projets. Mon labo l'utilise, et c'est moche et non-ergonomique au possible.

    Pour des projets basiques, des post-its et l'issue manager de base de Github suffisent largement.
    Si on veut une solution solide, BaseCamp est la référence dans les pays anglophones (peu de grosses boites françaises l'utilisent, à ma connaissance).

    Quand j'ai commencé à apprendre le C, j'utilisais Turbo C de Borland, sous MS-DOS. :)

    C'est un IDE avec une interface très proche du petit programme "EDIT" de base de MS-DOS, avec comme seule différence avec celui ci un compilateur assez rapide et un debugger.

    Pendant un moment j'utilisais aussi le compilateur DOS de Symantec, (un peu plus galère à mettre en place, puisqu'il faut entrer dans autoexec.bat et/ou exécuter un fichier bat avec divers variables pour le faire fonctionner normalement) qui lui n'est pas un IDE par contre, tout les programmes doivent-être tapés dans un éditeur de texte au préalable et les fichier .obj doivent être linkés avec un utilitaire fournis avec le compilateur.

    Vous aimez les Animes Oldschool? Alors regardez Bubblegum Crisis!------>(petit aperçus :P)
    Vous aimez Doom? Retrouvez moi sous le nom de "ZyklonB" sur le forum de la Communauté Française de Doom

    Sinon pour tout ce qui est au niveau des sites web je recommande fortement Komodo Edit, logiciel gratuit et open source disponible pour PC et mac. On l'utilise en classe et c'est très sympa.