Meilleurs éditeurs de programmation ? Une bataille sans fin sans vainqueur clair

Publié: 2022-03-11

Indépendamment des preuves apparentes du contraire, les programmeurs sont des humains. Et, comme tous les humains, nous aimons profiter de notre liberté de choix. Qu'il s'agisse de prendre la pilule rouge ou la pilule bleue, de porter une robe ou un pantalon, ou d'utiliser un environnement de développement plutôt qu'un autre, le choix que nous faisons nous place dans un groupe de personnes ou dans un autre. Le choix, inévitablement, vient après notre évaluation des options. Et après avoir fait un choix, nous avons tendance à croire que quiconque choisit différemment a fait une erreur.

Vous pouvez facilement rechercher sur Internet et trouver des centaines de débats sur Emacs vs Vim. Même si vous les lisez tous, il sera impossible de choisir objectivement un gagnant. Cependant, le choix de l'environnement de développement vous dit-il quelque chose sur la qualité du travail qu'un développeur peut fournir ? Absolument pas!

Un grand développeur pourrait écrire son code dans le Bloc-notes et continuer à fournir de superbes choses.

Certes, il y a beaucoup de choses que les professionnels prennent en compte lors de la sélection des outils pour leur travail. Cela est vrai pour toutes les professions, y compris le développement de logiciels. Très souvent, cependant, la sélection est basée sur des goûts personnels, et non sur quelque chose de facilement tangible.

Les programmeurs passent la plupart de leur temps à regarder l'environnement de développement, il est donc naturel que nous voulions quelque chose de joli et fonctionnel. Chaque environnement de développement a ses avantages et ses inconvénients. Dans l'ensemble, ils constituent une force motrice de l'industrie du développement de logiciels.

meilleurs éditeurs de programmation

Quelles sont les choses qu'un développeur doit évaluer lorsqu'il choisit un ensemble d'outils de programmation comme un éditeur de programmation de choix ? La réponse à cette question n'est pas aussi simple qu'il y paraît. Le développement de logiciels est proche d'un art, et il y a assez peu de facteurs « flous » qui séparent un chef-d'œuvre d'un objet de collection hors de prix.

Chaque langage de programmation, que ce soit Java, C#, PHP, Python, Ruby, JavaScript, etc., a ses propres pratiques de développement liées à la structure du projet, au débogage et au déploiement. Cependant, une chose qu'ils ont tous en commun est l'édition de code. Dans cet article, nous évaluerons différentes plates-formes de développement du point de vue de la tâche la plus courante dans le développement logiciel : l'écriture de code.

IDE vs éditeur de texte à usage général

Un environnement de développement intégré (IDE) (ou environnement de développement interactif) est une application logicielle qui fournit des installations complètes aux programmeurs informatiques pour le développement de logiciels. Un IDE se compose normalement d'un éditeur de code source, d'outils d'automatisation de construction et d'un débogueur, et beaucoup prennent en charge de nombreux plugins et extensions supplémentaires.

Les éditeurs de texte sont des applications plus simples. Comparés aux IDE, ils correspondent généralement uniquement au segment de l'éditeur de code d'un IDE. Cependant, ils sont souvent bien plus que cela. Les IDE sont créés pour servir le développement de logiciels, tandis que de nombreux éditeurs de texte sont également conçus pour être utilisés par des non-développeurs.

Les langages à typage statique peuvent tirer de nombreux avantages des IDE. En raison des règles de typage strictes, il est possible pour l'EDI de détecter les bogues et les incohérences de nommage entre les classes et les modules, et même entre les fichiers, directement dans l'éditeur, avant la compilation. Cette fonctionnalité est livrée en standard avec de nombreux IDE, et pour cette raison, les IDE sont très populaires pour les langages de type statique.

Cependant, il est impossible de faire la même chose pour les langages à typage dynamique. Par exemple, si un nom de méthode peut être généré par le code lui-même, construit à partir d'une série de concats de chaînes, essayer de détecter les erreurs de dénomination dans les langages dynamiques ne nécessite rien de moins que d'exécuter le programme réel. Parce que l'un des principaux avantages des IDE ne s'applique pas aux programmeurs de langage dynamique, ils ont plus tendance à s'en tenir aux éditeurs de texte comme Sublime. En passant, c'est aussi l'une des principales raisons pour lesquelles le mouvement de développement piloté par les tests s'est développé autour de communautés de langages dynamiques et n'a pas eu autant de succès dans les langages statiques.

Qu'est-ce qui fait un excellent éditeur de programmation ?

Outre un certain nombre de fonctionnalités différentes pour différents langages, chaque éditeur de programmation doit disposer d'une interface utilisateur bien organisée et propre. L'attrait esthétique global ne doit pas non plus être négligé. Il ne s'agit pas seulement de bien paraître, car un éditeur bien conçu avec le bon choix de polices et de couleurs aide à réduire la fatigue oculaire et vous permet d'être plus productif.

Dans l'environnement de développement actuel, une courbe d'apprentissage abrupte est un handicap, quel que soit l'ensemble de fonctionnalités. Le temps est toujours précieux, donc un bon éditeur devrait être facile à s'habituer. Idéalement, le programmeur devrait pouvoir commencer à travailler immédiatement, sans avoir à franchir trop d'obstacles. Un couteau suisse est un outil pratique et utile, mais n'importe qui peut le maîtriser en quelques minutes. De même, pour les éditeurs de programmation, la simplicité est une vertu.

Interface utilisateur, fonctionnalités et flux de travail

Examinons de plus près l'interface utilisateur, les différentes fonctionnalités et capacités, ainsi que les outils fréquemment utilisés qui devraient faire partie de tout éditeur de programmation.

Les numéros de ligne, bien sûr, doivent être activés par défaut et simples à activer ou à désactiver.

Les extraits de code sont utiles pour insérer des blocs de texte standardisés dans une mise en page fixe. Cependant, la programmation consiste à dire les choses une seule fois, alors soyez prudent avec les extraits car ils pourraient rendre votre code difficile à maintenir à l'avenir.

La possibilité de pelucher ou de vérifier la syntaxe du fichier actuel est utile, tout comme la possibilité de le lancer. Sans cette fonctionnalité, un programmeur doit passer à une fenêtre de ligne de commande externe, choisir et exécuter la commande correcte, puis parcourir les messages d'erreur pour trouver la source de l'erreur. Cependant, le peluchage doit être sous le contrôle du programmeur, car le retard encouru par le peluchage pourrait interrompre le codeur à un moment crucial.

doc en ligne

La documentation en ligne est utile tant qu'elle ne gêne pas, mais avoir une page de navigateur ouverte sur les définitions de classe est parfois plus utile, en particulier lorsqu'il existe de nombreuses classes liées qui ne s'étendent pas directement les unes aux autres. Il est assez facile de couper et coller du code de la documentation du navigateur au code en cours d'écriture, de sorte que la complexité supplémentaire de la documentation en ligne devient souvent moins utile, voire plus ennuyeuse, à mesure que les connaissances du programmeur sur la documentation augmentent.

La saisie semi-automatique est utile car elle est rapide et presque aussi fiable que la documentation en cours d'édition, tout en étant moins intrusive. Il est satisfaisant de n'entrer que quelques caractères d'un mot, puis d'appuyer sur Entrée pour obtenir le reste. Sinon, on travaille sous la contrainte d'un typage excessif, abhorré par les programmeurs paresseux, qui veulent taper ee plutôt que le plus long exponentialFunctionSquared . La complétion de mots satisfait en minimisant la saisie, en appliquant une dénomination cohérente et en ne gênant pas.

Renommer les variables et les fonctions dans le programme est utile, mais vous devez être en mesure d'examiner les modifications et de vous assurer que votre code n'est pas cassé. Encore une fois, la complétion de mots est une solution intermédiaire utile, en ce sens qu'elle fonctionne pour toutes les langues ; vous pouvez utiliser des noms longs pour les éléments qui ont de longues durées de vie, sans encourir de surcharge de frappe. Vous pouvez utiliser des références à celles-ci via un nom plus court localement, afin de raccourcir les expressions qui pourraient autrement s'étendre sur trop de lignes. Si vous devez renommer, les noms longs sont uniques, donc cette approche fonctionne dans toutes les langues et tous les fichiers.

Les fichiers source peuvent parfois grossir beaucoup. Le pliage de code est une fonctionnalité intéressante qui simplifie la lecture de fichiers longs.

Rechercher/modifier avec une limitation de portée à local, incrémentiel ou global avec des méta-caractères et des expressions régulières fait partie de l'exigence minimale de nos jours, tout comme la coloration syntaxique.

Présentation des éditeurs de programmation populaires

Au fil des ans, je suis passé par un certain nombre d'éditeurs, et voici ce que j'en pense :

  • Emacs : L'un des éditeurs les plus populaires au monde. La plus grande caractéristique d'Emacs est son extensibilité, malgré la complexité de son langage d'extension (vous pouvez même y jouer à Tetris avec Mx tetris ). Les fans d'Emacs considèrent son interface basée sur un terminal comme une fonctionnalité intéressante, tandis que d'autres pourraient débattre du fait qu'il s'agit d'un inconvénient. D'après mon expérience personnelle, j'ai trouvé que c'était trop à adopter et à apprendre. Je suis sûr que si vous savez comment utiliser Emacs, vous n'utiliserez jamais rien d'autre, mais affronter et apprendre toute la culture était plus que ce que je voulais faire. Néanmoins, sa popularité auprès des développeurs prouve qu'il est loin d'être une relique de l'ancien temps et qu'il fait également partie de notre avenir.

  • Vi/Vim : Vim est un autre éditeur puissant basé sur un terminal, et il est livré en standard avec la plupart des systèmes d'exploitation xNIX. En plus d'avoir une interface différente de celle d'Emacs, mon point de vue est pratiquement le même. Si vous avez grandi dessus, je suis sûr que vous n'utiliserez jamais rien d'autre. Avoir des compétences Vi vous simplifiera la vie lorsque vous utiliserez SSH et d'autres endroits difficiles, et vous n'aurez plus de problèmes de vitesse une fois que vous vous serez familiarisé avec les frappes. Bien qu'il ne soit pas aussi difficile à percer qu'Emacs, la courbe d'apprentissage est encore assez raide, et il pourrait certainement utiliser quelques fonctionnalités intéressantes d'un éditeur fenêtré.

  • SublimeText : Fidèle à son nom, SublimeText est un bel éditeur de texte avec des tonnes de fonctionnalités. Contrairement à certains éditeurs similaires, SublimeText est une source fermée, il ne peut donc pas être modifié à un niveau inférieur. SublimeText offre la simplicité des éditeurs de texte traditionnels, avec une interface utilisateur simple et rapide. De nombreux développeurs le trouvent plus facile à utiliser que Vim, et cela est particulièrement vrai pour les nouveaux venus. La courbe d'apprentissage n'est tout simplement pas aussi raide. Bien que l'interface utilisateur soit minimale et simple, SublimeText offre quelques fonctionnalités astucieuses, telles qu'un code d'affichage réduit à droite de l'interface utilisateur, permettant aux utilisateurs de faire défiler rapidement leur code et de naviguer avec une relative facilité. Bien qu'elle ne soit pas entièrement gratuite, la version de démonstration limitée en fonctionnalités l'est. Déverrouiller toutes les fonctionnalités vous coûtera 70 $.

  • Atom est le résultat d'un effort de GitHub pour produire un éditeur de programmation pour une nouvelle génération de développeurs. Bien qu'il s'agisse encore d'un travail en cours, Atom est un éditeur très performant avec une communauté dynamique de développeurs passionnés par les nouvelles extensions, les bibliothèques JavaScript et plus encore. Ses inconvénients incluent certaines bizarreries de l'interface utilisateur, la possibilité que certains packages complémentaires se comportent mal et des problèmes de performances signalés lors de l'utilisation de (très) gros fichiers. Mais le projet est en cours de développement actif et les lacunes actuelles sont susceptibles d'être améliorées. Atom est un projet open source, et il peut facilement être piraté pour répondre à vos besoins.

  • Nano : Excellent dans un coin serré, mais pas assez riche en fonctionnalités pour empêcher l'inévitable pensée de se glisser dans l'esprit qu'il doit y avoir un moyen plus rapide de le faire alors que l'on lutte à travers les frappes pour indenter un bloc de code, tout en gardant les commentaires alignés dans la colonne 80 ! Il n'a même pas de surbrillance de texte et ne doit pas être utilisé pour autre chose que des modifications de fichiers de configuration.

  • TextMate2 : le plus gros inconvénient de TextMate est qu'il ne fonctionne que sur Mac. Comme l'ont dit ses créateurs, "TextMate apporte l'approche des systèmes d'exploitation d'Apple dans le monde des éditeurs de texte". En reliant les fondements UNIX et l'interface graphique, TextMate sélectionne le meilleur des deux mondes, au profit des scripteurs experts et des utilisateurs novices. C'est l'éditeur de choix pour de nombreux développeurs Ruby, Python et JavaScript, avec un excellent support pour Bash ou Markdown également. Au moment de la publication de cet article, TextMate 2 est encore en version bêta, mais il dispose déjà d'un écosystème de plugins très mature qui promet de l'étendre même au-delà des extensions d'Emacs.

  • jEdit : basé sur Java et considéré comme lent par certains. La configuration prête à l'emploi peut éloigner certaines personnes, mais jEdit peut être extrêmement rapide s'il est configuré correctement, ainsi qu'une apparence extrêmement agréable.

  • Eclipse : Autre IDE largement utilisé, Eclipse est très populaire parmi les développeurs Java, mais a été adapté à de nombreuses plates-formes différentes. On pourrait dire que son architecture monolithique est un rocher qui le tirera sous l'eau, mais c'est toujours l'une des plateformes les plus populaires parmi les développeurs.

  • Aptana Studio : un IDE d'application Web open source complet. Il est disponible en tant que plugin Eclipse, ce qui le rend populaire parmi certains développeurs Java. La version autonome est encore plus légère et offre une gamme de thèmes et d'options de personnalisation différents. Les capacités de gestion de projet d'Aptana peuvent également être utiles aux codeurs qui ont perfectionné leurs compétences dans Eclipse. Alors que les versions antérieures souffraient de problèmes de performances sur certaines plates-formes matérielles, ces problèmes ont été résolus dans Aptana Studio 3 et devraient appartenir au passé.

  • NetBeans : un autre IDE open source relativement populaire avec prise en charge multiplateforme. Il est un peu plus lent au démarrage que les éditeurs allégés comme SublimeText, et le choix de modules complémentaires est limité par rapport à certaines alternatives. De nombreux développeurs Java ont appris à aimer NetBeans grâce à l'intégration transparente de SCM et à la prise en charge de HTML5. La prise en charge de NetBeans pour PHP s'est également améliorée dans les dernières versions.

  • JetBrains : offre une famille d'IDE pour Java, Ruby, Python et PHP. Ils sont tous basés sur le même moteur principal. Très performants en eux-mêmes, les IDE JetBrains sont de plus en plus suivis. Cependant, ce ne sont pas des solutions open source gratuites, bien qu'un essai de 30 jours soit disponible et que les prix soient raisonnables.

  • Komodo Edit : Komodo Edit a un grand potentiel, et pourtant il est plein de petits « pièges » ennuyeux et d'idiosyncrasies qui peuvent être frustrants par son manque d'orthogonalité. Komodo Edit se sent encombré, ce qui est dommage car il a clairement une capacité immense. Je continue à revenir à Komodo Edit dans l'espoir d'avoir raté un principe d'organisation, et à chaque fois, je suis repoussé par un avalanche de capacités désorganisées.

  • Geany: Geany n'est pas un acteur majeur comme la plupart des autres éditeurs de cette liste. Elle se définit plus par « ce qu'elle n'est pas » que par « ce qu'elle est ». Il n'est pas lent, il n'a pas beaucoup d'héritage de l'ancien temps, il n'a pas de capacité macro, ni une grande capacité de mémoire tampon multi-fenêtres. Pourtant, les choses qu'il fait, il le fait assez bien. C'est peut-être le moins exigeant de tous les éditeurs que j'ai essayé et qui peut toujours faire 90% de ce que vous attendez d'un éditeur pour programmeur. Geany a l'air assez bien sur Ubuntu, c'est l'une des raisons pour lesquelles je l'ai choisi comme éditeur préféré.

Ma conclusion

Il serait présomptueux d'en déclarer un seul meilleur éditeur de programmation parmi ces formidables outils. Et il y a pas mal d'éditeurs que je n'ai même pas essayés. Il n'y a pas de solution unique. C'est ce qui m'a poussé à essayer plusieurs éditeurs différents ; si vous êtes plus intéressé par la longévité des éditeurs, vous voudrez également lire l'évaluation des éditeurs de code par Roben Kleene.

J'utilise actuellement Geany, mais c'est parce qu'il correspond à mes besoins. Avec Geany et beaucoup d'aide de Perl/Gimp/Audacity/Sox, je suis capable de développer et de maintenir la base de code Java pour les applications Android que je développe, de les préparer pour la compilation dans différentes configurations pour plusieurs distributeurs, source, lint , compiler, dex et produire des fichiers .apk , et livrer ces applications dans le monde entier.

Votre ligne de développement peut prescrire un ensemble d'exigences différent, et j'espère vous avoir fait gagner du temps dans la recherche des éditeurs de programmation les plus appropriés.

Connexes : Tutoriel sur le protocole du serveur de langage : de VSCode à Vim