Searching...
Deutsch
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
Hören

Wichtige Erkenntnisse

1. Emacs: Ein mächtiger, erweiterbarer Texteditor mit einer treuen Anhängerschaft

Emacs überstrahlt alle anderen Editierprogramme in etwa so, wie die Mittagssonne die Sterne. Es ist nicht nur größer und heller; es lässt einfach alles andere verschwinden.

Unvergleichliche Vielseitigkeit. Emacs ist mehr als nur ein Texteditor; es ist eine vollständige Computerumgebung. Mit über 1,1 Millionen Zeilen Emacs Lisp-Code bietet es Funktionen, die von grundlegender Textbearbeitung über das Debuggen von Programmen, das Lesen von E-Mails, das Durchsuchen von Verzeichnissen bis hin zum Lösen symbolischer Algebra-Probleme reichen.

Einzigartiges Benutzererlebnis. Im Gegensatz zu traditionellen Editoren ist Emacs darauf ausgelegt, einmal gestartet und dann dauerhaft ausgeführt zu werden. Benutzer können mehrere Dateien innerhalb einer einzigen Sitzung bearbeiten und ihre Arbeit jederzeit zugänglich halten. Die Benutzeroberfläche basiert auf drei Schlüsselkonzepten:

  • Frames: Emacs' Begriff für Fenster in einer grafischen Benutzeroberfläche
  • Windows: Unterteilungen von Frames zur Anzeige von Inhalten
  • Buffers: Container für bearbeitbaren Text, der mit Dateien verknüpft sein kann oder nicht

Alles ist bearbeitbar. Eine der mächtigsten Funktionen von Emacs ist, dass fast alle Inhalte, einschließlich Hilfenachrichten, Suchergebnisse und Verzeichnislisten, in bearbeitbaren Buffern präsentiert werden. Dies ermöglicht es den Benutzern, Informationen flexibel zu manipulieren und wiederzuverwenden, was Emacs besonders für komplexe Textmanipulationsaufgaben geeignet macht.

2. Emacs-Architektur: Model-View-Controller-Muster mit Lisp im Kern

Die Architektur von Emacs folgt dem weit verbreiteten Model-View-Controller-Muster für interaktive Anwendungen.

Architektonische Aufschlüsselung. Die Architektur von Emacs kann in drei Hauptkomponenten unterteilt werden:

  • Model: Der Buffer, der Text und zugehörige Metadaten enthält
  • View: Die Redisplay-Engine, die für die Aktualisierung des Bildschirms verantwortlich ist
  • Controller: Emacs Lisp-Code, der Benutzereingaben verarbeitet und das Modell manipuliert

Buffer als Modell. Das Herzstück des Emacs-Modells ist der Buffer, eine einfache flache Zeichenkette mit Zeilenumbrüchen, die Zeilenenden markieren. Buffer unterstützen verschiedene Operationen:

  • Einfügen und Löschen von Text
  • Extrahieren von Abschnitten als Zeichenketten
  • Suchen nach exakten Zeichenketten oder regulären Ausdrücken
  • Unterstützung für mehrere Zeichensätze
  • Undo-Logging zum Rückgängigmachen von Änderungen

Automatische Neudarstellung. Die View-Komponente von Emacs, die Redisplay-Engine, aktualisiert die Anzeige automatisch ohne explizite Anweisungen vom Lisp-Code. Dies vereinfacht die Entwicklung von Erweiterungen, da Programmierer sich auf die Manipulation des Modells konzentrieren können, ohne sich um die Anzeigeaktualisierungen kümmern zu müssen.

3. Emacs Lisp: Der Motor, der die Erweiterbarkeit und Anpassung von Emacs antreibt

Emacs Lisp ist interaktiv. Sie können Definitionen und Ausdrücke in einen Emacs-Buffer eingeben und sofort auswerten.

Mächtige Erweiterungssprache. Emacs Lisp ist der Kern der Erweiterbarkeit von Emacs. Es bietet mehrere Schlüsselfunktionen:

  • Geringe Bürokratie: Kleine Anpassungen können leicht in die .emacs-Datei eingefügt werden
  • Interaktive Entwicklung: Änderungen können vorgenommen und ausgewertet werden, ohne Emacs neu zu starten
  • Erstklassige Bürgerrechte: Vom Benutzer geschriebener Lisp-Code hat denselben Zugriff und dieselben Privilegien wie eingebauter Code
  • Vollständige Programmiersprache: Geeignet zum Schreiben großer, komplexer Programme
  • Sicherheit: Fehlerhafter Lisp-Code kann Emacs nicht zum Absturz bringen, was Experimente fördert
  • Einfache Dokumentation: Funktionen können Docstrings enthalten, die sofortige Hilfe bieten

Nachteile und Kompromisse. Trotz seiner Leistungsfähigkeit hat Emacs Lisp einige Einschränkungen:

  • Kein Modulsystem: Namenskonventionen werden verwendet, um Konflikte zwischen Paketen zu vermeiden
  • Globale Sichtbarkeit: Alle Funktionen in einem Paket sind für andere Pakete sichtbar
  • Kein Objektsystem: Dies kann bestimmte Programmierparadigmen schwieriger machen

4. Creeping Featurism: Eine Stärke, keine Schwäche im Design von Emacs

Der Creeping Featurism von Emacs ist eine direkte Folge seiner Architektur.

Feature-Wachstumszyklus. Die Architektur von Emacs fördert das organische Wachstum von Funktionen:

  1. Einfache Implementierung neuer Ideen aufgrund niedriger Einstiegshürden
  2. Persönliche Anpassungen werden in .emacs-Dateien hinzugefügt
  3. Beliebte Anpassungen wachsen zu teilbaren Paketen heran
  4. Die besten Pakete werden in die Standard-Emacs-Distribution aufgenommen

Komplexitätsmanagement. Trotz der ständigen Hinzufügung von Funktionen gelingt es Emacs, unüberschaubar zu werden:

  • Die Komplexität der Benutzeroberfläche wird gemildert, indem Benutzer Funktionen nach und nach entdecken können
  • Die Wartbarkeit wird erhalten, indem Emacs als Sammlung von Paketen und nicht als monolithisches Ganzes behandelt wird
  • Die Lisp-Sprache fungiert als Abstraktionsgrenze, die es dem Kern-C-Code ermöglicht, sich weiterzuentwickeln, ohne die Kompatibilität zu brechen

Community-getriebene Entwicklung. Das Wachstum der Emacs-Funktionen ist weitgehend ein Basisprozess, der die Interessen und Bedürfnisse der Benutzer widerspiegelt. Dies stellt sicher, dass neue Funktionen wirklich nützlich und gut getestet sind, bevor sie Teil der Standarddistribution werden.

5. Emacs vs. andere Architekturen: Eclipse und Firefox als Vergleiche

Die Architektur von Eclipse ist nichts, wenn nicht offen, da Plug-ins nahezu alle wesentlichen Funktionen bereitstellen.

Eclipse: Mächtig, aber komplex. Eclipse bietet eine Plug-in-Architektur, die umfangreiche Funktionen bietet, aber auch Nachteile hat:

  • Die Entwicklung von Plug-ins ist nicht sicher; Fehler können das gesamte System zum Absturz bringen
  • Das Schreiben von Plug-ins erfordert den Umgang mit komplexen Schnittstellen
  • Es ist erheblicher Boilerplate-Code erforderlich, selbst für einfache Erweiterungen

Firefox: Ein Mittelweg. Die Architektur von Firefox weist einige Ähnlichkeiten mit Emacs auf:

  • Verwendet JavaScript, eine interpretierte, dynamische Sprache wie Emacs Lisp
  • Bietet automatische Anzeigeverwaltung
  • Ermöglicht die inkrementelle Entwicklung von Erweiterungen

Der Vorteil von Emacs. Die Architektur von Emacs bietet eine einzigartige Kombination aus Leistung und Einfachheit:

  • Sichere Ausführungsumgebung für Erweiterungen
  • Niedrige Einstiegshürde für einfache Anpassungen
  • Fähigkeit, zu komplexen, voll funktionsfähigen Erweiterungen zu skalieren
  • Konsistente Schnittstelle für sowohl eingebaute als auch benutzererstellte Funktionen

6. Die Macht der Komponierbarkeit in Benutzeroberflächen

Wie einfach ist es, die Ergebnisse eines Befehls als Eingabe für einen anderen zu verwenden? Komponieren die Befehle der Benutzeroberfläche miteinander? Oder haben die Ergebnisse eine Sackgasse erreicht, sobald sie angezeigt wurden?

Komponierbare Schnittstelle von Emacs. Emacs zeichnet sich dadurch aus, dass Benutzer Befehlsausgaben kombinieren und wiederverwenden können:

  • Alle Inhalte werden in bearbeitbaren Buffern präsentiert
  • Standard-Textbearbeitungsbefehle gelten für alle Arten von Inhalten
  • Ergebnisse eines Befehls können leicht als Eingabe für einen anderen dienen

Vorteile der Komponierbarkeit. Dieser Ansatz bietet mehrere Vorteile:

  • Erhöhte Flexibilität bei der Interaktion mit Daten
  • Fähigkeit, komplexe Workflows aus einfachen Bausteinen zu erstellen
  • Fördert Experimente und die Entdeckung neuer Nutzungsmöglichkeiten des Systems

Vergleich mit anderen Systemen. Viele moderne Anwendungen, wie Microsoft Visual Studio, schränken ein, wie Benutzer mit Befehlsausgaben interagieren können, was die Flexibilität und das Potenzial für kreative Problemlösungen reduziert.

7. Bewertung von Erweiterungssprachen und Plug-in-Funktionen

Ist die Erweiterungssprache der bevorzugte Weg, um die meisten neuen Funktionen für die Anwendung zu implementieren?

Schlüsselfragen zur Bewertung der Erweiterbarkeit:

  1. Welche Schnittstellen stehen Plug-ins zur Verfügung?
  2. Sind sie einfach genug, um eine schnelle Entwicklung zu ermöglichen?
  3. Können Entwickler auf einer hohen Abstraktionsebene arbeiten, die nahe am Problemfeld liegt?
  4. Wie wird die Anwendungsdaten vor fehlerhaftem Plug-in-Code geschützt?

Ansatz von Emacs. Emacs glänzt in diesen Bereichen:

  • Emacs Lisp wird zur Implementierung der meisten neuen Funktionen verwendet
  • Die Erweiterungssprache hat vollen Zugriff auf die interne Funktionalität von Emacs
  • Die hohe Abstraktionsebene von Lisp ermöglicht eine schnelle Entwicklung
  • Der Lisp-Interpreter bietet eine sichere Ausführungsumgebung

Bedeutung erstklassiger Erweiterungen. Wenn die Erweiterungssprache einer Anwendung leistungsfähig und gut integriert ist, fördert dies ein lebendiges Ökosystem benutzererstellter Funktionen. Dies kann zu unerwarteten und innovativen Anwendungen der Anwendung führen, weit über das hinaus, was ihre ursprünglichen Entwickler sich vorgestellt haben.

Last updated:

Rezensionen

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

Beautiful Architecture erhält gemischte Bewertungen, mit einer durchschnittlichen Bewertung von 3,41/5. Einige Leser loben die umfassende Abdeckung der Prinzipien der Softwarearchitektur und die realen Beispiele aus verschiedenen Projekten. Sie schätzen die Einblicke von Branchenexperten und die Breite der behandelten Themen. Andere hingegen kritisieren das Buch wegen seiner uneinheitlichen Qualität der Kapitel, des Mangels an Diagrammen und der teilweise veralteten Informationen. Einige finden es zu wortreich ohne ausreichende Tiefe, während andere die vielfältigen Perspektiven auf architektonische Entscheidungen und Kompromisse schätzen. Die Struktur des Buches, bestehend aus unabhängigen Essays, wird sowohl als Stärke als auch als Schwäche angesehen.

Über den Autor

Diomidis Spinellis ist ein griechischer Informatiker und Autor, der für seine Arbeit im Bereich Softwaretechnik und Systemarchitektur bekannt ist. Diomidis Spinellis hat umfangreich über Themen wie Codequalität, Softwaredesign und Open-Source-Entwicklung geschrieben. Er ist Professor für Softwaretechnik an der Wirtschaftsuniversität Athen und hat zu zahlreichen Open-Source-Projekten beigetragen. Spinellis hat Anerkennung für seine Forschung und seine Schriften erhalten, darunter den Akademischen Preis der Bodossaki-Stiftung. Zu seinen weiteren Büchern gehören "Code Reading" und "Code Quality". Spinellis ist bekannt für seinen praktischen Ansatz zur Softwareentwicklung und seine Fähigkeit, komplexe Konzepte auf verständliche Weise zu erklären.

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.