Searching...
Français
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Beautiful Architecture

Beautiful Architecture

Leading Thinkers Reveal the Hidden Beauty in Software Design
by Diomidis Spinellis 2009 426 pages
Programming
Architecture
Technology
Écouter

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 :

  1. Mise en œuvre facile de nouvelles idées grâce à une faible barrière d'entrée
  2. Personnalisations personnelles ajoutées aux fichiers .emacs
  3. Les personnalisations populaires deviennent des packages partageables
  4. 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é :

  1. Quelles interfaces sont disponibles pour les plug-ins ?
  2. Sont-elles suffisamment simples pour permettre un développement rapide ?
  3. Les développeurs peuvent-ils travailler à un niveau d'abstraction élevé, proche du domaine du problème ?
  4. 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é.

Last updated:

Avis

3.41 out of 5
Average of 100+ ratings from Goodreads and Amazon.

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.

À propos de l'auteur

Diomidis Spinellis est un informaticien grec et auteur reconnu pour son travail en ingénierie logicielle et en architecture des systèmes. Diomidis Spinellis a beaucoup écrit sur des sujets liés à la qualité du code, à la conception logicielle et au développement open-source. Il est professeur d'ingénierie logicielle à l'Université d'économie et de commerce d'Athènes et a contribué à de nombreux projets open-source. Spinellis a reçu des distinctions pour ses recherches et ses écrits, y compris le Prix académique de la Fondation Bodossaki. Ses autres livres incluent "Code Reading" et "Code Quality". Spinellis est connu pour son approche pratique du développement logiciel et sa capacité à expliquer des concepts complexes de manière accessible.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 28,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to full summaries
Free users can listen to the first takeaway only
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
15,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.