Entwicklung & Code
Programmiersprache Python: Performante Algorithmen entwickeln und optimieren
Plant man eine Reise durch mehrere Städte und will die kürzeste Route finden, greift man auf Algorithmen zurück, eine wohldefinierte Abfolge deterministischer Operationen. Dieser Artikel begleitet den Entwicklungsprozess eines Algorithmus, der kürzeste Wege zwischen Städten findet. Er zeigt Schritt für Schritt den Weg von der ersten Skizze über Tests und Visualisierung mit Matplotlib und NetworkX bis zur Optimierung durch geeignete Datenstrukturen. So entsteht ein Programm, das nicht nur funktional korrekt arbeitet, sondern auch performant ist.
Weiterlesen nach der Anzeige

Michael Inden ist Java- und Python-Enthusiast mit über zwanzig Jahren Berufserfahrung. Derzeit ist er als Head of Development tätig, spricht auf Konferenzen und schreibt Fachbücher über Java und Python.
Ziel ist, in einem Straßennetz diejenigen Wege zu finden, die Städte am kürzesten verbinden. Zur Modellierung kann man Graphen verwenden. In Abbildung 1 repräsentieren Kreise mit Beschriftung die Städte und die Verbindungslinien mit Zahlen entsprechen Wegen mit Distanzen.

Ein Graph visualisiert die Abstände von Städten; die Zahlen stehen für die Entfernungen (Abb. 1).
Für diese vereinfachte Karte soll der kürzeste Weg von A nach D gefunden werden. Während man bei wenigen Städten und Verbindungen alle Möglichkeiten ausprobieren kann, wird der Ansatz aufwendiger, je mehr Städte und Verbindungen existieren. Folgende Verbindungen sind möglich, wobei 13 die schlechteste ist und 6 die beste:
A -> B -> C -> D => 5 + 1 + 7 = 13
A -> C -> B -> D => 2 + 1 + 3 = 6
A -> C -> D => 2 + 7 = 9
A -> B -> D => 5 + 3 = 8
Mit der O-Notation die Effizienz verstehen
Für eine gute Bedienbarkeit von Programmen ist relevant, wie schnell sich Berechnungen und Operationen ausführen lassen. Das gilt vor allem bei großen Datenmengen. Die O-Notation erlaubt es, Algorithmen zu klassifizieren und das Wachstum der Laufzeit (oder des Speicherbedarfs) eines Algorithmus zu beschreiben, wenn die Eingabemenge größer wird. Somit sind Effekte vorhersagbar, etwa wenn eine Liste nicht mehr 10 oder 20, sondern 100.000 und mehr Daten enthält.
Weiterlesen nach der Anzeige
Die O-Notation hilft, die Laufzeit von Operationen einzuschätzen. Sie ordnet Algorithmen und Funktionen in Komplexitätsklassen ein. Bei O(n³) wächst die Anzahl der Schritte mit der dritten Potenz der Eingabemenge. Bei 100 Eingabedaten ergibt sich ein Aufwand von 1003 für die Berechnung, also 1.000.000 Schritte. Je niedriger die Komplexitätsklasse ist, desto besser. Weitere Klassen zeigt die Tabelle „O-Notation mit in Komplexitätsklassen eingeteilten Algorithmen“, Abbildung 2 visualisiert die Effekte.
| O-Notation mit in Komplexitätsklassen eingeteilten Algorithmen | ||
| Notation | Bedeutung, Wachstum | Beispiel |
| O(1) | konstant | Zugriff auf ein Listenelement |
| O(log n) | logarithmisch | Binärsuche |
| O(n) | linear | einfache Schleife über alle Elemente |
| O(n log n) | linear-logarithmisch | effiziente Sortieralgorithmen (etwa Mergesort) |
| O(n²) | quadratisch | zweifach verschachtelte Schleife |
| O(n3) | kubisch | dreifach verschachtelte Schleife |

Die Graphen zeigen die Anzahl der Operationen in Abhängigkeit von der Eingabegröße (Abb. 2).
Eine Klassifikation mit der O-Notation ist insbesondere wichtig, um Laufzeiten unabhängig von Hardwareausstattung, Implementierungsdetails und gewählten Programmiersprachen bezüglich ihrer Skalierungseigenschaften zu vergleichen.
Für eine vereinfachte Einschätzung betrachtet man bei der Bewertung nur den dominierenden Term, da bei großen Eingabegrößen kleine Konstanten oder niedrigere Terme und Faktoren vernachlässigbar sind. In der Formel n3 + 4n² + 3n + 7 folgt durch die Vereinfachungen die Laufzeitklasse O(n3).
Von der Idee zum Programm
Ein systematisches Vorgehen ist selbst für kleinere Programme und vor allem bei komplexen Softwareprojekten der Schlüssel zu funktionalem, wartbarem und performantem Code.
1. Problem verstehen und analysieren
- klären, welches Problem zu lösen ist, und es in Teilaufgaben zerlegen;
- prüfen, ob es bereits bewährte Lösungen für Teilaufgaben gibt, beispielsweise Binärsuche für performante Suchen in sortierten Datenbeständen, Dijkstra-Algorithmus für kürzeste Wege;
- Eingabe- und Ausgabedaten definieren;
- Randbedingungen und Sonderfälle berücksichtigen.
2. Planen und eine Grobstruktur entwickeln
- Problem in Teilaufgaben zerlegen;
- Abläufe in natürlicher Sprache formulieren oder skizzieren;
- geeignete Datenstrukturen wählen (Listen, Dictionaries, Heaps).
3. Implementierung
- Sourcecode in klar getrennte Funktionen oder Klassen gliedern;
- auf Lesbarkeit und Verständlichkeit achten, aussagekräftige Namen und (falls sinnvoll) ergänzende Kommentare verwenden;
- vorhandene Bibliotheken nutzen, um Entwicklungszeit zu sparen (etwa Matplotlib zur Visualisierung).
4. Testen (Dry-Run- und Unit-Tests)
- Funktionsweise ausprobieren;
- Unit-Tests schreiben, um die Funktionsweise zu prüfen und Rand- und Sonderfälle abzudecken.
5. Performance messen
- Messungen mit kleinen, mittleren und großen Datenbeständen ausführen, etwa mit 100, 10.000 und 1.000.000 Datensätzen;
- Engpässe identifizieren – sie zeigen sich allerdings meist erst bei sehr großen Datenbeständen.
6. Optimieren
Wurden in Schritt 5 Schwachstellen aufgedeckt, sollte man die Umsetzung und die gewählten Algorithmen für Teilprobleme nochmals genauer anschauen.
- O-Notation verwenden, um die Komplexität formal zu bewerten: Was läuft in Schleifen? Wie und wo erfolgt eine Suche – linear oder mit Binärsuche? Für verschiedene Aktionen kann das Laufzeiten von O(1)
, O(log n) oder O(n)bedeuten. - besser geeignete Algorithmen oder effizientere Datenstrukturen einsetzen.
Implementierung und Test miteinander verweben
In der Praxis laufen die Schritte 3 und 4 nicht immer unabhängig voneinander. Wenn sich die Ergebnisse gut vorhersagen lassen, bietet es sich an, mit dem Erstellen von Testfällen zu starten. Manchmal braucht es aber erst einmal eine Idee und einen Prototyp der Implementierung. Gerade bei größeren Programmierprojekten ergeben sich weitere Anforderungen während der Implementierungs- und Testphase.
Der folgende Ablauf hat sich in der Praxis bewährt und lässt sich auch beim Entwickeln eines Algorithmus anwenden.
Entwicklung & Code
TypeScript 6.0 steht in den Startlöchern: Die letzte JavaScript-basierte Version
Microsoft hat die Betaversion für TypeScript 6.0 veröffentlicht, das letzte Release mit der aktuellen JavaScript-Codebasis. Ab Version 7.0 werden der Compiler und der Language Service in Go geschrieben sein, was Geschwindigkeitsvorteile bringen soll. TypeScript 6.0 soll in erster Linie den Weg zum Umstieg ebnen.
Weiterlesen nach der Anzeige
(Bild: jaboy/123rf.com)

Tools und Trends in der JavaScript-Welt: Die enterJS 2026 wird am 16. und 17. Juni in Mannheim stattfinden. Das Programm dreht sich rund um JavaScript und TypeScript, Frameworks, Tools und Bibliotheken, Security, UX und mehr. Frühbuchertickets sind im Online-Ticketshop erhältlich.
TypeScript 6.0 räumt mit veralteten Funktionen auf
Einige Aspekte gelten in TypeScript 6.0 als veraltet (deprecated) – doch derzeit lassen sich diese Deprecations noch einfach ignorieren. Dazu dient die Einstellung "ignoreDeprecations": "6.0" in der tsconfig.json-Datei. Ab Version 7.0 wird das nicht mehr möglich sein, und die veralteten Funktionen lassen sich dort nicht mehr nutzen.
Die Änderungen sollen den Prozessen Rechnung tragen, die in den vergangenen zwei Jahren seit Version 5.0 stattgefunden haben, so das TypeScript-Team. Unter anderem seien Bundler und ECMAScript-Module zu den häufigsten Modulzielen für neue Projekte geworden, und tsconfig.json habe sich zu einem fast universellen Konfigurationsmechanismus entwickelt, während der Wunsch nach strengerer Typisierung zugenommen habe.
Konkret entfällt unter anderem das Target ECMAScript 5, denn seit über einem Jahrzehnt steht der Nachfolger ECMAScript 2015 (ES 6) bereit und alle modernen Browser können damit umgehen, wie das TypeScript-Team ausführt. Damit einhergehend ist nun auch --downlevelIteration veraltet, da es lediglich für ECMAScript 5 relevant war. Statt der veralteten asserts-Syntax kommt nun das Keyword with für Import-Attribute zum Einsatz.
Ein ausführlicher Blogeintrag geht auf diese und weitere Deprecations sowie Feature-Neuerungen ein.
So geht es weiter
Weiterlesen nach der Anzeige
TypeScript 6.0 gilt mit der Beta als Feature-stabil und soll keine weiteren Funktionen oder Breaking Changes erhalten. Neben der Betaversion sind auch Nightly Builds verfügbar, um frühe Einblicke in das nächste Release zu erhalten. Daneben geht die Arbeit an TypeScript 7.0 weiter, und auch dafür können Interessierte Vorschauversionen ausprobieren sowie Feedback abgeben.
Wer mit TypeScript 6.0 Deprecation-Warnungen erhält, sollte diese zunächst beheben, bevor er oder sie auf Version 7.0 wechselt, empfiehlt das TypeScript-Team. Schon bald nach TypeScript 6.0 soll TypeScript 7.0 erscheinen.
(mai)
Entwicklung & Code
Redox OS kompiliert erstmals Code auf sich selbst
Das vollständig in Rust geschriebene Betriebssystem Redox OS hat im Januar 2026 einen bedeutenden Meilenstein erreicht: Entwickler konnten erstmals einen Commit komplett aus Redox heraus durchführen. Jetzt funktionieren sowohl der Rust-Compiler rustc als auch der Paketmanager Cargo auf dem System.
Weiterlesen nach der Anzeige
Dieser Fortschritt markiert einen wichtigen Schritt in Richtung eines eigenständigen Entwicklungssystems. Das Projekt wurde maßgeblich durch Anhad Singh im Rahmen des Redox Summer of Code vorangetrieben. Dank seiner Arbeit können Entwickler nun einfache Programme in Rust, C und C++ direkt auf Redox kompilieren.
Darüber hinaus haben die Entwickler zahlreiche weitere Verbesserungen implementiert. Eine neue Capability-basierte Security-Infrastruktur bietet granulare Berechtigungen für Prozesse. Der SSH-Support wurde erweitert und funktioniert nun zuverlässig für den Remote-Zugang. Zudem wurde die Latenz bei USB-Eingabegeräten deutlich reduziert.
Erweiterte Boot-Funktionen und ARM64-Unterstützung
Der Bootloader bietet jetzt eine Text-Editing-Umgebung zum Hinzufügen, Entfernen und Ändern von Boot-Parametern. Der Login-Manager wurde um Menüs für Energieverwaltung und Tastaturlayout ergänzt. Das Kernel-Memory-Management erhielt signifikante Verbesserungen, während ARM64-Systeme nun Dynamic Linking unterstützen.
Die POSIX-Compliance wurde weiter verbessert, was die Kompatibilität mit Unix-Software erhöht. Zusätzlich behobene Fehler betreffen den Intel HD Audio-Treiber, PS/2-Touchpads sowie UEFI-Firmware. Die Entwickler arbeiten außerdem am RISC-V-Port und haben QEMU auf Redox selbst portiert. Alle im Januar umgesetzten Änderungen finden sich im Redox-Blog.
Roadmap sieht spezialisierte Releases vor
Weiterlesen nach der Anzeige
Für die Zukunft plant das Projekt spezialisierte Versionen: Hosted Redox für virtuelle Maschinen, Redox Server für Edge- und Cloud-Umgebungen mit Sandboxing-Funktionen sowie Redox Desktop mit COSMIC-Integration und Wayland-Support. Diese Pläne wurden bereits 2023 skizziert und werden schrittweise umgesetzt.
Redox OS basiert auf einer Microkernel-Architektur und nutzt Rusts Memory-Safety-Eigenschaften, um die Sicherheit zu erhöhen. Das System unterstützt Intel-, AMD-, ARM- und RISC-V-Prozessoren sowie verschiedene Speicher- und Eingabegeräte. Die Desktop-Variante benötigt weniger als 512 MByte RAM, während Minimal-Images unter 50 MByte groß sind. Im Oktober 2023 kündigten die Entwickler erstmals konkrete Pläne für Server- und Desktop-Editionen an.
(fo)
Entwicklung & Code
Android 17: Google macht Rückzieher bei erster Beta – das steckt drin
Google wollte gestern das Update auf Android 17 Beta 1 veröffentlichen. Der Konzern hatte einige US-Medien wie üblich mit Vorabinformationen versorgt, die sie zu einer bestimmten Uhrzeit veröffentlichen durften. Die Meldungen gingen online, bei Google passierte dann aber nichts. Weder die Ankündigung auf Googles Android-Entwicklerseite noch Systemabbilder der neuen Vorabversion sind erschienen. Trotz der kurzfristigen Kehrtwende – mittlerweile heißt es, das Update werde „in Kürze“ freigegeben – ist immerhin klar, was im Update steckt und wie die Roadmap bis zur Veröffentlichung aussieht.
Weiterlesen nach der Anzeige
Beta 1 primär für Entwickler
Wie unter anderem Android Authority und 9to5 Google schreiben, richtet sich die erste Betaversion von Android 17 an Entwickler. Der Release soll ihnen dabei helfen, anpassungsfähigere und leistungsoptimierte Apps zu erstellen. Zudem enthält es zahlreiche neue Tools für „Medien- und Kameraerlebnisse“.
Laut Google ist eine der größten entwicklerseitigen Neuerungen von Android 17 die erweiterte Anpassungsfähigkeit von Apps. Einer neuen „Adaptive Roadmap“ zufolge von Google sollen Entwickler die Anforderungen hinsichtlich Ausrichtung und Größenanpassung für Apps auf Geräten mit großem Bildschirm nicht mehr deaktivieren können. Die neue Regel gelte für Android-Geräte mit einer Mindestbreite von 600 dp oder mehr. Dies umfasst in der Regel Tablets, aufgeklappte Foldables und Desktop-ähnliche Fensterumgebungen.
Lesen Sie auch
Das bedeutet, dass Apps, die auf Android 17 (SDK 37) ausgerichtet sind, die Größenanpassung und das Multitasking in Fenstern nach Googles Vorgaben unterstützen. Sie dürfen damit nicht mehr auf eine feste Ausrichtung oder ein festes Seitenverhältnis festgelegt werden.
Neue Medien- und Kamerafunktionen
Android 17 Beta 1 liefert außerdem Tools zur Verbesserung der Medien- und Kamera-App-Erfahrung. Unter anderem führt das große Update professionelle Kamera-APIs für flüssigere Übergänge ein, mit denen Kamera-Apps zwischen den Modi wechseln können, ohne die Kamerasitzung vollständig neu zu starten, heißt es. Mit dieser Lösung sollen kleinere Pausen, sichtbare Fehler und Verzögerungen beim Wechseln der Kameramodi vermieden werden.
Weiterlesen nach der Anzeige
Außerdem erlaubt Android 17 Apps auch den Zugriff auf Metadaten aller aktiven physischen Kamerasensoren und nicht nur des Hauptsensors. Dadurch sollen Kamera-Apps einen tieferen Einblick „in die Vorgänge hinter den Kulissen beim Objektivwechsel oder beim Zoomen“ erhalten.
Wie Android Authority die Vorabmeldung zitiert, führt Google verbesserte Audiosteuerungen ein, um die Lautstärke über alle Apps hinweg zu normalisieren. Zudem erhält Android 17 Unterstützung für Versatile Video Coding (VVC), auch bekannt als H.266. Dieser Videokomprimierungsstandard ist dazu in der Lage, eine ähnliche oder bessere Videoqualität bei geringeren Dateigrößen zu liefern, vorausgesetzt, das Android-Gerät verfügt auch über kompatible Hardware.
Weitere Kleinigkeiten
Android 17 Beta 1 enthält zudem einige zusätzliche Neuerungen für Entwickler: Dazu gehören Leistungsverbesserungen für eine bessere Ressourcenverwaltung und schnellere Interaktionen, Optimierungen in Bezug auf Datenschutz und Sicherheit sowie Verbesserungen der Konnektivität. Dazu gehört auch die Darstellung von VoIP-Anrufen (aus Apps wie WhatsApp) im System-Dialer.
Weiter erhält Wi-Fi-Ranging (IEEE 802.11az) neue Funktionen zur Näherungserkennung, die genauere Entfernungsmessungen und die Erkennung von Geräten in der Nähe ermöglichen. Google fügt außerdem Begleitgeräteprofile „Medizinische Geräte“ und „Fitness-Tracker“ hinzu. Dies soll etwa den Einrichtungsprozess für Apps, die eine Verbindung zu diesem Zubehör herstellen, vereinfachen.
Für Android XR bringt Android 17 einen neuen Interaktionsmodus, mit dem Apps intelligenter auf die Interaktion des Benutzers mit einem Extended-Reality-Gerät reagieren können, beispielsweise wenn sich der Anzeigestatus ändert.
Release der stabilen Version im Juni erwartet
Durch die Umstellung der Android-Entwicklung auf einen ganzjährigen Release-Zyklus, bei dem der im Sommer 2025 eingeführte Android-Canary-Kanal das bisherige Developer-Preview-Modell ersetzt, sollen Entwickler schneller künftige Funktionen testen können. Die Betas könnten durch die kontinuierliche und ganzjährige Feedbackschleife stabiler und fehlerfreier sein als die bisherigen.

Bis Juni 2026 dürfte die stabile Version von Android 17 für Pixel-Geräte erscheinen.
(Bild: Google)
Laut der Roadmap von Google wird Android 17 einen ähnlichen Release-Rhythmus wie Android 16 verfolgen. Das Unternehmen plant, bis März 2026 die Plattformstabilität zu erreichen. Im zweiten Quartal, voraussichtlich im Juni 2026, soll dann die stabile Version für Pixel-Geräte erscheinen. Eine kleinere SDK-Version wird im vierten Quartal 2026 folgen.
Sobald Google den Schalter umlegt, können Nutzerinnen und Nutzer, die ihr Gerät im Android-Beta-Programm registriert haben, die erste Beta von Android 17 als OTA-Update installieren. Bereits registrierte Geräte erhalten das Update automatisch. Kompatibel sind alle Pixel-Smartphones ab dem Pixel 6, sämtliche Pixel-Foldables und das Pixel Tablet.
(afl)
-
Entwicklung & Codevor 3 MonatenKommandozeile adé: Praktische, grafische Git-Verwaltung für den Mac
-
Künstliche Intelligenzvor 1 MonatSchnelles Boot statt Bus und Bahn: Was sich von London und New York lernen lässt
-
Apps & Mobile Entwicklungvor 3 MonatenHuawei Mate 80 Pro Max: Tandem-OLED mit 8.000 cd/m² für das Flaggschiff-Smartphone
-
Apps & Mobile Entwicklungvor 3 MonatenFast 5 GB pro mm²: Sandisk und Kioxia kommen mit höchster Bitdichte zum ISSCC
-
Social Mediavor 2 TagenCommunity Management zwischen Reichweite und Verantwortung
-
Entwicklung & Codevor 2 MonatenKommentar: Anthropic verschenkt MCP – mit fragwürdigen Hintertüren
-
Datenschutz & Sicherheitvor 2 MonatenSyncthing‑Fork unter fremder Kontrolle? Community schluckt das nicht
-
Social Mediavor 2 MonatenDie meistgehörten Gastfolgen 2025 im Feed & Fudder Podcast – Social Media, Recruiting und Karriere-Insights
