Foto von Stefan Behnel

Dr. Ing. Stefan Behnel

Python Software-Entwicklungs- und Consulting-Services

    »der leichte Weg zu schnellem Code«

Wer bin ich?

Ich bin ein erfahrener Open-Source Software-Entwickler, IT-Trainer und Consultant im Python-Umfeld und Gründungsmitglied des Python Software Verband e.V. 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 wird. Meine Doktorarbeit über effiziente, modellbasierte Software-Entwicklung von hochskalierbaren, selbstverwaltenden verteilten Systemen ist online verfügbar.

Was biete ich an?

insbesondere zu den Themen

Schulungen:

Aktuell wohne ich in München, im Süden von Deutschland, aber auch längere Anreisen sind kein Problem.
Bitte kontaktieren Sie mich unter der Adresse < consulting (AT) behnel.de >.

Ausgewählte Vorträge

Projektangebot

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 >.

Projektreferenzen

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.

Cython

http://cython.org

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.

lxml

http://lxml.de

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.

Lupa

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.

Veröffentlichungen

Imprint / Impressum