Facebook Pixel
Searching...
Deutsch
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Once Upon an Algorithm

Once Upon an Algorithm

How Stories Explain Computing
von Martin Erwig 2017 336 Seiten
3.66
100+ Bewertungen
Hören

Wichtige Erkenntnisse

1. Berechnung ist systematisches Problemlösen durch Algorithmen

Berechnung spielt heute eine herausragende Rolle in der Gesellschaft.

Allgegenwärtiges Problemlösen. Berechnung ist nicht auf Computer beschränkt, sondern findet in vielen alltäglichen Aktivitäten statt. Sie beinhaltet die systematische Umwandlung eines Anfangszustands eines Problems in einen gewünschten Endzustand durch eine Reihe von klar definierten Schritten, die als Algorithmus bezeichnet werden. Dieser Prozess ist vergleichbar mit dem Befolgen eines Rezepts oder der Navigation mit einer Karte.

Algorithmisches Denken. Das Verständnis von Berechnung hilft, Fähigkeiten des computergestützten Denkens zu entwickeln, die wertvoll sind, um reale Probleme effektiver zu lösen. Dazu gehört das Zerlegen komplexer Probleme in kleinere, handhabbare Teilprobleme, das Erkennen von Mustern und das Entwickeln von Schritt-für-Schritt-Lösungen. Beispiele für computergestütztes Denken im Alltag sind:

  • Planung einer Reise mit mehreren Stopps
  • Effiziente Organisation eines Kleiderschranks
  • Optimierung einer Trainingsroutine

Ressourcenbewusstsein. Berechnung erfordert Ressourcen wie Zeit, Energie und Speicher. Effiziente Algorithmen minimieren den Ressourcenverbrauch, was entscheidend für die Lösung groß angelegter Probleme ist. Dieses Konzept gilt sowohl für digitale als auch physische Berechnungen, von der Optimierung von Datenbankabfragen bis zur Planung von Fließbandoperationen.

2. Algorithmen manipulieren Darstellungen zur Problemlösung

Das Wesen einer Berechnung ist die Transformation von Darstellungen.

Abstraktion und Modellierung. Algorithmen arbeiten mit Darstellungen von realen Objekten oder Konzepten. Diese Darstellungen abstrahieren unnötige Details und bewahren gleichzeitig wesentliche Informationen, die zur Problemlösung benötigt werden. Zum Beispiel:

  • Eine Karte stellt geografische Merkmale als Symbole dar
  • Eine Einkaufsliste stellt Artikel als Text dar
  • Ein Computerprogramm stellt Daten als Binärziffern dar

Transformationsprozess. Algorithmen transformieren systematisch Eingabedarstellungen in Ausgabedarstellungen, die das gegebene Problem lösen. Diese Transformation umfasst oft eine Reihe kleinerer, intermediärer Schritte. Beispielsweise könnte ein GPS-Navigationsalgorithmus:

  1. Den aktuellen Standort und das Ziel als Koordinaten darstellen
  2. Das Straßennetzwerk in einen Graphen umwandeln
  3. Einen Pfadfindungsalgorithmus anwenden, um die optimale Route zu finden
  4. Die Route in benutzerfreundliche Anweisungen umwandeln

Gestaltung von Darstellungen. Die Wahl geeigneter Darstellungen ist entscheidend für effektive Problemlösungen. Gute Darstellungen machen relevante Informationen leicht zugänglich und unterstützen effiziente algorithmische Operationen. Schlechte Darstellungen können Probleme unnötig erschweren oder sogar unlösbar machen.

3. Datenstrukturen organisieren Informationen für effizienten Zugriff

Die Wahl der Datenstruktur ist wichtig für die Effizienz von Algorithmen und wird manchmal von anderen Überlegungen beeinflusst, wie dem verfügbaren Speicherplatz.

Organisation von Informationen. Datenstrukturen sind spezialisierte Formate zur Speicherung und Organisation von Daten, um effizienten Zugriff und Modifikation zu unterstützen. Häufige Datenstrukturen sind:

  • Arrays: Feste Sammlungen mit schnellem, zufälligem Zugriff
  • Verkettete Listen: Dynamische Sammlungen, optimiert für Einfügen und Löschen
  • Bäume: Hierarchische Strukturen zur Darstellung von Beziehungen
  • Hashtabellen: Schnelle, schlüsselbasierte Suche und Speicherung

Leistungsabstriche. Verschiedene Datenstrukturen sind bei unterschiedlichen Operationen überlegen. Die Wahl der richtigen Datenstruktur erfordert die Analyse der spezifischen Anforderungen des Problems und der Algorithmen, die auf den Daten arbeiten werden. Zum Beispiel:

  • Arrays ermöglichen schnellen Zugriff per Index, aber langsames Einfügen/Löschen
  • Verkettete Listen ermöglichen schnelles Einfügen/Löschen, aber langsamen, zufälligen Zugriff
  • Binäre Suchbäume bieten ausgewogene Leistung für viele Operationen

Raumüberlegungen. Neben der Zeiteffizienz müssen Datenstrukturen auch die Raumeffizienz berücksichtigen, insbesondere bei großen Datenmengen oder in eingeschränkten Umgebungen. Einige Datenstrukturen verwenden zusätzlichen Speicher, um die Zugriffszeiten zu verbessern, während andere eine kompakte Speicherung auf Kosten langsamerer Operationen priorisieren.

4. Suchen und Sortieren sind grundlegende algorithmische Probleme

Suchen ist ein weit verbreitetes Problem im wirklichen Leben und auch ein wichtiges Thema in der Informatik.

Allgegenwärtige Operationen. Suchen und Sortieren sind grundlegende Operationen, die vielen Berechnungsaufgaben zugrunde liegen. Effiziente Such- und Sortieralgorithmen sind entscheidend für die Verwaltung großer Datensätze und die schnelle Informationsbeschaffung. Anwendungen in der realen Welt umfassen:

  • Datenbankabfragen
  • Rechtschreibprüfung
  • Routenplanung
  • Verwaltung von Kontaktlisten

Suchstrategien. Es gibt verschiedene Suchalgorithmen, jeder mit unterschiedlichen Stärken:

  • Lineare Suche: Einfach, aber ineffizient für große Datensätze
  • Binäre Suche: Effizient für sortierte Daten
  • Hash-basierte Suche: Sehr schnell für schlüsselbasierte Suchen
  • Graphsuchalgorithmen: Zum Navigieren in komplexen Beziehungen

Sortiertechniken. Sortieralgorithmen organisieren Daten, um effizientere Operationen, insbesondere Suchen, zu ermöglichen. Häufige Sortieralgorithmen sind:

  • Quicksort: Effizientes Allzwecksortieren
  • Mergesort: Stabiles Sortieren mit garantierter Leistung
  • Heapsort: In-place-Sortieren mit guter Worst-Case-Leistung
  • Bucket Sort: Schnell für gleichmäßig verteilte Daten

Die Wahl des Such- oder Sortieralgorithmus hängt von Faktoren wie Datengröße, Verteilung und erforderlicher Operationshäufigkeit ab.

5. Einige Probleme sind unlösbar und erfordern Annäherungen

Es gibt Berechnungsprobleme, die algorithmisch nicht gelöst werden können – jemals.

Berechnungsgrenzen. Einige Probleme, bekannt als unlösbare Probleme, können von keinem bekannten Algorithmus effizient gelöst werden. Diese Probleme haben typischerweise eine exponentielle Zeitkomplexität, was bedeutet, dass die zur Lösung benötigte Zeit mit der Eingabegröße extrem schnell wächst. Beispiele sind:

  • Das Problem des Handlungsreisenden
  • Optimale Proteinfaltung
  • Faktorisierung großer Zahlen (wichtig für die Kryptographie)

Bewältigungsstrategien. Bei unlösbaren Problemen können mehrere Ansätze verfolgt werden:

  1. Verwendung von Annäherungsalgorithmen, die "gut genug" Lösungen finden
  2. Begrenzung der Eingabegröße, um die Berechnungszeit überschaubar zu halten
  3. Verwendung von Heuristiken, um die Suche in Richtung wahrscheinlicher Lösungen zu lenken
  4. Ausnutzung der problemspezifischen Struktur zur Reduzierung der Komplexität

Theoretische Implikationen. Die Existenz unlösbarer Probleme hat tiefgreifende Auswirkungen auf die Informatik und Mathematik. Sie zeigt grundlegende Grenzen der Berechnung auf und hat zu wichtigen Forschungsfeldern wie der Komplexitätstheorie und dem P-vs-NP-Problem geführt.

6. Rekursion und Schleifen ermöglichen mächtige Berechnungsmuster

Rekursion ist eine Kontrollstruktur, wird aber auch in der Definition der Datenorganisation verwendet.

Wiederholungsmuster. Rekursion und Schleifen sind Mechanismen zur Darstellung wiederholter Berechnungsmuster. Sie ermöglichen eine prägnante Beschreibung von Algorithmen, die auf Daten beliebiger Größe oder Tiefe arbeiten. Wichtige Konzepte sind:

  • Basisfall: Abbruchbedingung für die Rekursion
  • Rekursiver Fall: Selbstbezüglicher Schritt
  • Schleifeninvariante: Bedingung, die in jeder Iteration wahr bleibt

Problemlösung durch Zerlegung. Rekursives Denken führt oft zu eleganten Lösungen für Probleme, die sich natürlich in kleinere, ähnliche Teilprobleme zerlegen lassen. Beispiele sind:

  • Durchlaufen von baumartigen Strukturen (z.B. Dateisysteme)
  • Divide-and-Conquer-Algorithmen (z.B. Mergesort)
  • Erzeugen von Kombinationen oder Permutationen

Implementierungsüberlegungen. Während Rekursion und Schleifen oft austauschbar verwendet werden können, hat jede ihre Stärken und Schwächen:

  • Rekursion: Oft intuitiver für bestimmte Probleme, kann aber speicherintensiv sein
  • Schleifen: Allgemein effizienter, aber schwerer zu verstehen bei komplexen Mustern

Das Verständnis beider Ansätze ermöglicht die Wahl des am besten geeigneten Werkzeugs für jede Situation.

7. Sprachen definieren Syntax und Semantik der Berechnung

Jeder Algorithmus muss in einer Sprache ausgedrückt werden.

Formale Beschreibung. Programmiersprachen bieten formale Möglichkeiten, Algorithmen und Berechnungen auszudrücken. Sie bestehen aus:

  1. Syntax: Regeln zur Bildung gültiger Anweisungen
  2. Semantik: Regeln zur Interpretation der Bedeutung von Anweisungen

Sprachdesign. Verschiedene Programmiersprachen sind für verschiedene Zwecke und Paradigmen konzipiert:

  • Imperative Sprachen (z.B. C, Python): Beschreiben Berechnungen als Abfolgen von Befehlen
  • Funktionale Sprachen (z.B. Haskell, Lisp): Drücken Berechnungen als mathematische Funktionen aus
  • Objektorientierte Sprachen (z.B. Java, C++): Organisieren Code um Datenstrukturen und deren Operationen
  • Domänenspezifische Sprachen: Maßgeschneidert für spezifische Anwendungsbereiche (z.B. SQL für Datenbanken)

Abstraktionsebenen. Sprachen können auf verschiedenen Abstraktionsebenen arbeiten:

  • Maschinencode: Direkte Hardwareanweisungen
  • Assemblersprache: Menschlich lesbarer Low-Level-Code
  • Hochsprachen: Abstrakter, näher an natürlicher Sprache
  • Visuelle Programmiersprachen: Verwenden grafische Elemente zur Darstellung von Code

Höhere Programmiersprachen erhöhen die Produktivität der Programmierer, können jedoch die Kontrolle über Low-Level-Details opfern.

8. Typen und Abstraktionen verbessern Zuverlässigkeit und Verständnis

Typen strukturieren die Objekte einer Domäne, und Typregeln erklären, wie sie auf sinnvolle Weise kombiniert werden können.

Typsysteme. Typen kategorisieren Daten und Operationen, sodass Compiler und Laufzeitsysteme Fehler erkennen und Code optimieren können. Vorteile einer starken Typisierung sind:

  • Frühe Fehlererkennung
  • Verbesserte Code-Lesbarkeit
  • Bessere Dokumentation
  • Verbesserte Unterstützung für Refactoring

Abstraktionsmechanismen. Programmiersprachen bieten verschiedene Abstraktionswerkzeuge:

  • Funktionen: Kapseln wiederverwendbarer Berechnungen
  • Klassen und Objekte: Bündeln Daten mit zugehörigen Operationen
  • Module: Organisieren Code in logische Einheiten
  • Schnittstellen: Definieren Verträge für die Interaktion

Auswirkungen auf die Softwareentwicklung. Typen und Abstraktionen sind grundlegend für den Aufbau großer, zuverlässiger Softwaresysteme. Sie ermöglichen:

  • Modulare Entwicklung: Teams können an separaten Komponenten arbeiten
  • Code-Wiederverwendung: Gut gestaltete Abstraktionen können in mehreren Kontexten angewendet werden
  • Skalierbarkeit: Systeme können wachsen, ohne unüberschaubar zu werden
  • Wartbarkeit: Änderungen können mit Vertrauen in ihre Auswirkungen vorgenommen werden

Indem sie einen Rahmen für die Organisation und das Verständnis von Code bieten, bilden Typen und Abstraktionen das Rückgrat moderner Softwareentwicklungspraxis.

Zuletzt aktualisiert:

Rezensionen

3.66 von 5
Durchschnitt von 100+ Bewertungen von Goodreads und Amazon.

Es war einmal ein Algorithmus erhält gemischte Bewertungen. Leser schätzen den kreativen Ansatz, Geschichten zu nutzen, um Konzepte der Informatik zu erklären, aber einige empfinden die Umsetzung als unausgewogen. Der akademische Schreibstil und die weit hergeholten Analogien können es für Anfänger schwierig machen. Dennoch loben viele die cleveren Beispiele und die gründlichen Erklärungen der Grundlagen der Informatik. Einige Rezensenten bemerken, dass es besser als Ergänzung zu einem Lehrbuch funktioniert als als eigenständige Einführung. Insgesamt wird es als ehrgeiziger Versuch angesehen, Algorithmen zugänglich zu machen, obwohl dies nicht immer erfolgreich gelingt.

Über den Autor

Martin Erwig ist Professor für Informatik an der Oregon State University. Er hat mehrere Bücher über Informatik verfasst, wobei "Once Upon an Algorithm" sein drittes Werk ist. Erwigs Fachgebiete umfassen Programmiersprachen, funktionale Programmierung und visuelle Sprachen. Sein einzigartiger Ansatz, Informatikkonzepte durch Geschichtenerzählen und Popkultur-Referenzen zu vermitteln, zeigt sein Engagement, komplexe Themen einem breiteren Publikum zugänglicher zu machen. Erwigs akademischer Hintergrund und seine Leidenschaft für innovative Lehrmethoden sind in seiner Arbeit deutlich erkennbar, die darauf abzielt, die Kluft zwischen theoretischer Informatik und alltäglichen Erfahrungen zu überbrücken.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Unlock Unlimited Listening
🎧 Listen while you drive, walk, run errands, or do other activities
2.8x more books Listening Reading
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Jan 25,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,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/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →