Enlightenmentware - Les logiciels qui m’éveillent
(mmapped.blog)- UNIX, Git, Emacs, Boost.Graph, Bazel
- En tant que programmeur, on interagit chaque jour avec des outils logiciels, mais la plupart ne servent qu’à accomplir tout juste la tâche demandée
- Il arrive parfois de tomber sur des logiciels qui vont au-delà de la simple utilité, stimulent l’imagination, ouvrent de nouvelles possibilités et influencent la manière de concevoir des systèmes
- J’appelle ce type de logiciel de l’« enlightenmentware »
- Pour les programmeurs, la source d’éveil la plus fréquente est le langage de programmation qu’ils utilisent, y compris ceux appris comme hobby
- J’ai connu de nombreuses révélations en pratiquant des langages comme MASM, C, Prolog et Idris
- Comme l’effet de l’apprentissage des langues sur l’élargissement de la pensée est connu depuis longtemps, cet article choisit de ne pas se concentrer sur les langages, mais uniquement sur les logiciels qui provoquent cet éveil
UNIX
Unix est convivial — il choisit simplement bien ses amis.
Anonyme, "Art of unix Programming" par Eric S. Raymond
- En 2008, pendant mes études à l’université, j’ai commencé à chercher mon premier emploi en programmation.
- La plupart des offres demandaient des connaissances en UNIX et en sockets.
- Comme le cursus universitaire ne proposait aucun cours sur Unix ni sur les systèmes d’exploitation, j’ai décidé de l’apprendre en autodidacte.
- C’est avec le livre "The unix Operating System" d’Andrey Robachevsky et al. que je suis entré dans l’univers Unix.
- L’installation de Mandriva Linux m’a permis d’explorer l’environnement Unix.
- Depuis, Unix m’a accompagné à chaque étape de ma vie.
- La majorité des logiciels fonctionnent dans un environnement Unix, et je consulte encore aujourd’hui le livre "Advanced Programming in the unix Environment".
Git
Avec Git, il est facile de se tirer une balle dans le pied, mais il est aussi facile de revenir à son pied précédent et de le fusionner avec sa jambe actuelle.
Jack William Bell
- Début 2009, j’ai découvert les systèmes de gestion de versions en utilisant Rational ClearCase.
- ClearCase était extrêmement déroutant et ne couvrait que le strict minimum.
- J’ai ensuite utilisé Subversion, que j’ai appris grâce au livre "Version Control with Subversion".
- Subversion était facile à comprendre et à utiliser, mais peu pratique pour les projets personnels.
- Puis j’ai découvert Git.
- Git avait une courbe d’apprentissage raide et était déroutant, mais d’une tout autre manière que ClearCase.
- Git a supprimé la friction liée à l’usage du versioning, au point de permettre de versionner tout ce qui en vaut la peine.
- La conception de Git était séduisante par son élégant mélange de système distribué, de graphe acyclique et de stockage adressé par le contenu.
- Étudier les entrailles de Git était si amusant que cela m’a donné envie de m’intéresser à d’autres systèmes de gestion de versions.
- Le principal défaut de Git est son approche orientée snapshot, qui rend les fusions plus difficiles à comprendre.
Emacs
N’importe quel éditeur de texte peut enregistrer des fichiers, mais seul Emacs peut sauver votre âme.
Per Abrahamsen
- J’ai édité mes premiers programmes dans les accueillantes fenêtres bleues de Turbo Pascal 7.0.
- À l’université, j’ai appris la programmation en Pascal, puis j’ai utilisé C++ et Java.
- Dans mon premier poste de programmeur, j’utilisais NEdit, mais je me suis vite intéressé à Vim et Emacs.
- Vim était exigeant mais amusant, comme jouer d’un instrument de musique.
- Emacs est une machine Lisp qui offre des fonctions d’édition de texte et de gestion des fenêtres.
- Sa structure interne est propre, bien organisée et bien documentée.
- L’étendre avec Emacs Lisp est bien plus simple qu’avec la plupart des autres éditeurs.
Boost.Graph
J’ai un fort préjugé contre la mode du code réutilisable. Je pense que le "code rééditable" est bien meilleur que les boîtes noires ou les toolkits.
Donald Knuth, entretien avec Andrew Binstock
- Lors du réveillon du Nouvel An 2013, j’ai lu la Boost Graph Library.
- La plupart des bibliothèques d’algorithmes dépendent d’une représentation de données particulière, ce qui les rend difficiles à intégrer dans des projets existants.
- La bibliothèque Boost.Graph résout ce problème grâce à la programmation générique.
- Je ne l’ai jamais utilisée en pratique, mais sa conception a approfondi ma compréhension du design de la STL et de la programmation générique.
Bazel
Si
makene fonctionne pas comme prévu, il y a de fortes chances que leMakefilesoit incorrect.Adam de Boor, "PMake—A Tutorial"
- En 2009, j’ai écrit mon premier
Makefilepour un projet de recherche. - La complexité de
makem’a donné envie d’un meilleur outil. - J’ai essayé divers systèmes de build, sans jamais être satisfait.
- En 2016, j’ai rejoint Google et j’ai commencé à utiliser
blaze. - Bazel a été la dernière pièce du puzzle des systèmes de build.
- Bazel est rapide, précis, facile à utiliser et indépendant du langage.
Conclusion
- Les points communs des bons logiciels d’éveil :
- Ils résolvent des problèmes profonds, tout en traitant des problèmes rencontrés au quotidien.
- Ils offrent beaucoup de profondeur derrière une petite surface.
- Ils invitent et encouragent à explorer leur fonctionnement interne.
L’avis de GN⁺
- L’importance d’UNIX : UNIX est le système d’exploitation de base de nombreux environnements de programmation et il est essentiel pour comprendre les fondements de la programmation système.
- La courbe d’apprentissage de Git : Git est difficile au début, mais c’est un outil incontournable de gestion de versions, particulièrement utile dans les environnements collaboratifs et les systèmes distribués.
- La flexibilité d’Emacs : Emacs offre bien plus qu’un éditeur de texte et mérite d’être recommandé, surtout à ceux qui s’intéressent à la programmation Lisp.
- La programmation générique de Boost.Graph : Boost.Graph est un exemple puissant de programmation générique, qui permet d’apprendre à implémenter efficacement des algorithmes complexes.
- L’efficacité de Bazel : Bazel est un outil capable de maximiser l’efficacité des systèmes de build dans les projets à grande échelle, particulièrement utile dans de grandes entreprises comme Google.
5 commentaires
Sous Windows, ce n’est peut-être pas Everything, haha.
Magit est donc si bon qu’il rejoint ainsi le rang des logiciels de légende ? Comme je n’utilise pas Emacs, impossible pour moi de le savoir. Dans Nvim, on dit que Neogit a été influencé par Magit ; je devrais peut-être au moins essayer celui-là...
Je recommande aussi
lazygitheheMerci.
Je vais installer
superfileetlazygitce week-end pour aller un peu voir ça.Avis de Hacker News
Résumé des commentaires de Hacker News
Compiler Explorer :
Avis sur l’utilisation de Windows :
Docker :
Spring Framework :
Nix :
Emacs :
Concept de « Round » :
Magit :
Comparaison entre SVN et Git :
Expérience avec Linux, Emacs, Bazel et Magit :