Points clés
1. Emacs : Un éditeur de texte puissant et extensible avec une communauté dévouée
Emacs surpasse tous les autres logiciels d'édition de la même manière que le soleil de midi éclipse les étoiles. Il n'est pas seulement plus grand et plus brillant ; il fait simplement disparaître tout le reste.
Polyvalence inégalée. Emacs est bien plus qu'un simple éditeur de texte ; c'est un environnement informatique complet. Avec plus de 1,1 million de lignes de code Emacs Lisp, il offre des fonctionnalités allant de l'édition de texte de base au débogage de programmes, à la lecture de courriels, à la navigation dans les répertoires et même à la résolution de problèmes d'algèbre symbolique.
Expérience utilisateur unique. Contrairement aux éditeurs traditionnels, Emacs est conçu pour être lancé une fois et laissé en cours d'exécution. Les utilisateurs peuvent éditer plusieurs fichiers au sein d'une seule session, gardant leur travail facilement accessible. L'interface est construite autour de trois concepts clés :
- Frames : Le terme d'Emacs pour les fenêtres dans une interface graphique
- Windows : Subdivisions des frames pour afficher le contenu
- Buffers : Conteneurs pour le texte éditable, qui peuvent ou non être associés à des fichiers
Tout est éditable. L'une des fonctionnalités les plus puissantes d'Emacs est que presque tout le contenu, y compris les messages d'aide, les résultats de recherche et les listes de répertoires, est présenté dans des buffers éditables. Cela permet aux utilisateurs de manipuler et de réutiliser les informations de manière flexible, rendant Emacs particulièrement adapté aux tâches complexes de manipulation de texte.
2. Architecture d'Emacs : Modèle-Vue-Contrôleur avec Lisp en son cœur
L'architecture d'Emacs suit le modèle largement utilisé Modèle-Vue-Contrôleur pour les applications interactives.
Décomposition architecturale. L'architecture d'Emacs peut être divisée en trois composants principaux :
- Modèle : Le buffer, qui contient le texte et les métadonnées associées
- Vue : Le moteur de réaffichage, responsable de la mise à jour de l'écran
- Contrôleur : Le code Emacs Lisp, qui gère les entrées utilisateur et manipule le modèle
Buffer comme modèle. Le cœur du modèle d'Emacs est le buffer, une simple chaîne plate avec des caractères de nouvelle ligne marquant les fins de ligne. Les buffers supportent diverses opérations :
- Insertion et suppression de texte
- Extraction de portions sous forme de chaînes
- Recherche de correspondances de chaînes exactes ou d'expressions régulières
- Support de plusieurs jeux de caractères
- Journalisation des annulations pour inverser les modifications
Réaffichage automatique. Le composant vue d'Emacs, le moteur de réaffichage, met à jour l'affichage automatiquement sans directives explicites du code Lisp. Cela simplifie le développement des extensions en permettant aux programmeurs de se concentrer sur la manipulation du modèle sans se soucier des mises à jour de l'affichage.
3. Emacs Lisp : Le moteur de l'extensibilité et de la personnalisation d'Emacs
Emacs Lisp est interactif. Vous pouvez entrer des définitions et des expressions dans un buffer Emacs et les évaluer immédiatement.
Langage d'extension puissant. Emacs Lisp est au cœur de l'extensibilité d'Emacs. Il offre plusieurs fonctionnalités clés :
- Faible bureaucratie : Les petites personnalisations peuvent être facilement ajoutées au fichier .emacs
- Développement interactif : Les modifications peuvent être effectuées et évaluées sans redémarrer Emacs
- Citoyenneté de première classe : Le code Lisp écrit par l'utilisateur a le même accès et les mêmes privilèges que le code intégré
- Langage de programmation complet : Convient pour écrire des programmes grands et complexes
- Sécurité : Le code Lisp bogué ne peut pas faire planter Emacs, encourageant l'expérimentation
- Documentation facile : Les fonctions peuvent inclure des docstrings pour une aide instantanée
Inconvénients et compromis. Malgré sa puissance, Emacs Lisp présente certaines limitations :
- Pas de système de modules : Les conventions de nommage sont utilisées pour éviter les conflits entre les packages
- Visibilité globale : Toutes les fonctions d'un package sont visibles pour les autres packages
- Pas de système d'objets : Cela peut rendre certains paradigmes de programmation plus difficiles
4. L'ajout progressif de fonctionnalités : Une force, pas une faiblesse, dans la conception d'Emacs
L'ajout progressif de fonctionnalités d'Emacs est une conséquence directe de son architecture.
Cycle de croissance des fonctionnalités. L'architecture d'Emacs encourage la croissance organique des fonctionnalités :
- Mise en œuvre facile de nouvelles idées grâce à une faible barrière d'entrée
- Personnalisations personnelles ajoutées aux fichiers .emacs
- Les personnalisations populaires deviennent des packages partageables
- Les meilleurs packages sont incorporés dans la distribution standard d'Emacs
Gestion de la complexité. Malgré l'ajout constant de fonctionnalités, Emacs parvient à éviter de devenir ingérable :
- La complexité de l'interface utilisateur est atténuée en permettant aux utilisateurs de découvrir les fonctionnalités progressivement
- La maintenabilité est préservée en traitant Emacs comme une collection de packages plutôt que comme un tout monolithique
- Le langage Lisp agit comme une frontière d'abstraction, permettant au code C de base d'évoluer sans casser la compatibilité
Développement communautaire. La croissance des fonctionnalités d'Emacs est en grande partie un processus de base, reflétant les intérêts et les besoins des utilisateurs. Cela garantit que les nouvelles fonctionnalités sont réellement utiles et bien testées avant de devenir partie intégrante de la distribution standard.
5. Emacs vs. autres architectures : Comparaisons avec Eclipse et Firefox
L'architecture d'Eclipse n'est rien sinon ouverte, car les plug-ins fournissent presque toutes les fonctionnalités significatives.
Eclipse : Puissant mais complexe. Eclipse offre une architecture de plug-in qui fournit une fonctionnalité étendue mais présente des inconvénients :
- Le développement de plug-ins n'est pas sûr ; les bogues peuvent faire planter tout le système
- Écrire des plug-ins nécessite de gérer des interfaces complexes
- Un code standard significatif est nécessaire, même pour des extensions simples
Firefox : Un juste milieu. L'architecture de Firefox partage certaines similitudes avec Emacs :
- Utilise JavaScript, un langage interprété et dynamique comme Emacs Lisp
- Fournit une gestion automatique de l'affichage
- Permet le développement incrémental des extensions
Avantage d'Emacs. L'architecture d'Emacs offre une combinaison unique de puissance et de simplicité :
- Environnement d'exécution sûr pour les extensions
- Faible barrière d'entrée pour les personnalisations simples
- Capacité à évoluer vers des extensions complexes et complètes
- Interface cohérente pour les fonctionnalités intégrées et créées par les utilisateurs
6. La puissance de la composabilité dans les interfaces utilisateur
Est-il facile d'utiliser les résultats d'une commande comme entrée pour une autre ? Les commandes de l'interface se composent-elles entre elles ? Ou les résultats ont-ils atteint une impasse une fois affichés ?
Interface composable d'Emacs. Emacs excelle à permettre aux utilisateurs de combiner et de réutiliser les sorties de commande :
- Tout le contenu est présenté dans des buffers éditables
- Les commandes standard de manipulation de texte s'appliquent à tous les types de contenu
- Les résultats d'une commande peuvent facilement servir d'entrée pour une autre
Avantages de la composabilité. Cette approche offre plusieurs avantages :
- Flexibilité accrue dans la manière dont les utilisateurs interagissent avec les données
- Capacité à créer des flux de travail complexes à partir de blocs de construction simples
- Encourage l'expérimentation et la découverte de nouvelles façons d'utiliser le système
Comparaison avec d'autres systèmes. De nombreuses applications modernes, telles que Microsoft Visual Studio, limitent la manière dont les utilisateurs peuvent interagir avec les sorties de commande, réduisant ainsi la flexibilité et le potentiel de résolution créative de problèmes.
7. Évaluation des langages d'extension et des installations de plug-in
Le langage d'extension est-il le moyen préféré pour implémenter la plupart des nouvelles fonctionnalités de l'application ?
Questions clés pour évaluer l'extensibilité :
- Quelles interfaces sont disponibles pour les plug-ins ?
- Sont-elles suffisamment simples pour permettre un développement rapide ?
- Les développeurs peuvent-ils travailler à un niveau d'abstraction élevé, proche du domaine du problème ?
- Comment les données de l'application sont-elles protégées contre le code de plug-in bogué ?
Approche d'Emacs. Emacs excelle dans ces domaines :
- Emacs Lisp est utilisé pour implémenter la plupart des nouvelles fonctionnalités
- Le langage d'extension a un accès complet aux fonctionnalités internes d'Emacs
- L'abstraction de haut niveau de Lisp permet un développement rapide
- L'interpréteur Lisp fournit un environnement d'exécution sûr
Importance des extensions de première classe. Lorsqu'un langage d'extension d'application est puissant et bien intégré, il encourage un écosystème dynamique de fonctionnalités créées par les utilisateurs. Cela peut conduire à des utilisations inattendues et innovantes de l'application, bien au-delà de ce que ses créateurs originaux avaient envisagé.
Dernière mise à jour:
Avis
Beautiful Architecture reçoit des avis mitigés, avec une note moyenne de 3,41/5. Certains lecteurs louent sa couverture exhaustive des principes de l'architecture logicielle et des exemples concrets tirés de divers projets. Ils apprécient les perspectives des experts de l'industrie et la diversité des sujets abordés. Cependant, d'autres critiquent le livre pour sa qualité inégale d'un chapitre à l'autre, son manque de schémas et des informations parfois obsolètes. Certains le trouvent trop verbeux sans assez de profondeur, tandis que d'autres valorisent les perspectives variées sur les décisions architecturales et les compromis. La structure du livre, composée d'essais indépendants, est perçue à la fois comme une force et une faiblesse.