Python – Software und Beratung
»der leichte Weg zu schnellem Code«
Ich bin ein erfahrener Open-Source Software-Entwickler, IT-Trainer und Consultant im Python-Umfeld, Gründungsmitglied des Python Software Verband e.V., und "Fellow" der Python Software Foundation (PSF). Die meisten meiner Projekte befassen sich mit High-Performance-Tools und schnellem Code. Ich arbeite an diesen Projekten weil ich es mag, performance-kritischen Code zu optimieren. Und weil ich es mag, Software-Werkzeuge zu schreiben, die es Entwicklern leicht machen, schnellen Code zu schreiben. Denn mit den richtigen Werkzeugen wird das wirklich einfach.
Mein Doktortitel wurde mir von der Technischen Universität Darmstadt am Institut für Datenbanken und Verteilte Systeme verliehen, das von Professor Alejandro Buchmann geleitet wurde. Meine Doktorarbeit über effiziente, modellbasierte Software-Entwicklung von hochskalierbaren, selbstverwaltenden verteilten Systemen ist online verfügbar.
Schulungen:
Aktuell wohne ich in Celle, in der Nähe von Hannover, aber auch
längere Anreisen sind kein Problem.
Bitte kontaktieren Sie mich
unter der Adresse
< consulting (AT) behnel.de >.
Die folgende Liste nennt einige interessante Software-Entwicklungsprojekte die ich gerne umsetzen würde. Wenn Sie Interesse an deren Implementierung haben und sie finanziell unterstützen möchten, kontaktieren Sie mich bitte unter der Adresse < consulting (AT) behnel.de >.
Die wichtigsten Projekte, an denen ich in den letzten Jahren
gearbeitet habe, sind
lxml und Cython.
Lupa ist ein neues
Projekt, das sich noch in seien Anfängen befindet.
Die Programmiersprache Cython ist ein Dialekt der Sprache Python. Sie bietet optionale statische Typ-Deklarationen und wird in schnellen C-Code übersetzt. Ihre Anwendungsgebiete als allgemeine Programmiersprache sind breit gestreut. Vor allem im Bereich des Scientific Computing ist sie aber einer der Gründe für die weite Verbreitung von Python als eine der wichtigsten Programmiersprachen. Nicht unbedingt, weil sie Fortran ersetzen wollte. Sondern weil es wesentlich einfacher ist, den Hauptteil des Codes in einer Hochsprache zu schreiben, und ihn dann mit kleinen Mengen an handoptimiertem low-level Code zusammenzufügen.
Cython ist eine perfekte 80/20 Sprache. Es verbindet auf einzigartige Weise eine hohe Entwicklungsgeschwindigkeit beim Großteil des Source-Codes einer Anwendung mit der leichten Optimierbarkeit kleiner, kritischer Code-Teile. Zusätzlich zu der leichten und schnellen Software-Entwicklung, für die Python bekannt ist, erlaubt Cython eine merkliche Code-Beschleunigung durch das einfache Hinzufügen statischer Typ-Deklarationen in genau den performance-kritischen Sektionen, die sich in Benchmarks offenbaren. Und wenn blanke Performance gefragt ist, lassen sich sehr leicht einzelne Code-Bereiche in C, C++, Fortran oder kompatiblen Sprachen reimplementieren und einbinden.
Meine Leistungen als Mitbegründer und Core-Entwickler des Cython-Projekts beinhalten zahlreiche Compiler-Optimierungen auf allen Ebenen, wichtige Design-Entscheidungen und die Implementierung mehrerer großer Features aus der Programmiersprache Python. Zudem zeichne ich mich für Design und Implementierung einiger Sprach-Features verantwortlich, die Cython zu einer einzigartigen Sprache in der Integration von Python und C machen.
Nach mehreren Jahren stetiger Weiterentwicklung hat sich lxml längst den Titel der führenden high-performance XML-Bibliothek für Python erworben. Es bietet eine einzigartige Kombination aus zahllosen XML-Features, einer sehr hohen Geschwindigkeit und einer erstaunlichen Leichtigkeit der Benutzung. Die wohlbekannten C-Bibliotheken libxml2 and libxslt bilden die standard-konforme Basis, die lxml mit Hilfe von Cython zu einer hochintegrierten, objekt-orientierten XML-API verbindet.
Als Leiter des lxml Projekts bin ich für die wesentlichen Entwicklungen an der Code-Basis verantwortlich, für Design und Projekt-Management. Zudem entwickelte ich einen großen Teil der Implementierung, der wichtigsten Features und Performance-Optimierungen, die lxml so nützlich für die XML-Verarbeitung unter Python machen.
https://github.com/scoder/lupa
Lupa ist ein Python-Wrapper für die schnelle Lua-Laufzeitumgebung LuaJIT2. Es ist in Cython implementiert und ermöglicht die bidirektionale Kommunikation zwischen Lua-Code und Python-Code.
Lua ist eine sehr gute Ergänzung zu Python. Als Sprache ist es ähnlich dynamisch wie Python, aber LuaJIT übersetzt es in sehr schnellen Maschinencode, teilweise sogar schneller als viele statisch kompilierte Sprachen. Die Laufzeitumgebung ist extrem klein und in allen Bereichen auf Embedding optimiert. Das vollständige Binärmodul von Lupa, inklusive der statisch eingebundenen LuaJIT2 Umgebung, ist auf einem 64-bit System gerade einmal 500KB groß.
Jedoch lassen Lua und seine Umgebung auch einiges vermissen was
Python-Entwickler als selbstverständlich ansehen, sei es als Teil der
Python Standardbibliothek ("Batteries included") oder an verfügbaren
Bibliotheken und Entwicklerwerkzeugen. Diese Beschränkungen machen die
Entwicklung von Lua-Anwendungen aufwändiger als vergleichbare
Python-Anwendungen. Daher wird Lua nur selten als
Hauptentwicklungssprache für größere Anwendungen verwendet. Als
schnelle, dynamische und speicherfreundliche Hilfssprache innerhalb der
Python Laufzeitumgebung macht es jedoch eine sehr gute Figur wenn hohe
Geschwindigkeit gefragt ist und die Umlaufzeit des "edit-compile-run"
Zyklus zu schwerfällig für agile Code-Entwicklung und das
Hot-Deployment von Software-Komponenten wird.
Als Leiter des Lupa Projekts bin ich für die wesentlichen Entwicklungen an der Code-Basis verantwortlich, für Design und Projekt-Management ebenso wie für die Implementierung.