Wenn .NET-Entwickler über den Tellerrand schauen

Standard

In letzter Zeit ist es in der .NET-Welt wieder modern, sich mit anderen Programmiersprachen und Plattformen auseinanderzusetzen. Zunächst war es Ruby, über das geschrieben und berichtet wurde. Beim letzten .NET Open Space Süd in Karlsruhe gab es je eine Session über Ruby und Ruby on Rails. In letzter Zeit hört man auch immer mehr von Python.

Ich kenne Python seit Version 1.5.2, also schon seit über 10 Jahren. Ich habe mich aber in den letzten Jahren nicht damit beschäftigt. Vor ca. 1 Jahr habe ich beschlossen, mich wieder mehr mit Python zu beschäftigen.

Am letzten Montag, dem 22. August 2011, hielt Rainer Schuster im Rahmen der .NET Online User Group einen Online-Vortrag über Python. Einen Tag darauf reagierte Hans-Peter Schelian mit einem Blogartikel, nachdem er sich einen Tag lang mit Python beschäftigt hat, “um den Hype um diese Sprache besser verstehen zu können”.

Python ist kein Hype

Python 1.0 wurde lange vor .NET 1.0 veröffentlicht, nämlich im Jänner 1994 (siehe Wikipedia). Python wird seit vielen Jahren von namhaften Organisationen verwendet, darunter Google, Yahoo!, NASA und CERN (siehe Wikipedia). Daher glaube ich nicht dass Python ein Hype ist, der bald wieder abflaut. Python ist eine bewährte Technologie, die ihre Tauglichkeit bereits vielfach bewiesen hat.

Python ist leicht zu durchschauen

Es wird immer wieder behauptet, dass Python-Code für Programmieranfänger leicht zu durchschauen und zu lesen sei. Ich glaube, dass das auch stimmt. Möglicherweise sieht man das anders, wenn man die Syntax von C-basierten Programmiersprachen wie C#, C/C++ oder Java gewöhnt ist. Auch der Unterschied von Hello-World-Programmien in Python und in C# zeigen, dass C# sehr viel unnötiges Rauschen enthält.

Hier ein bekanntes Programm in Python:

    #!/usr/bin/env python
    print "Hello, world!"

Und hier in C#:

    public class Hello
    {
        public static void Main(string[] args)
        {
            System.Console.WriteLine ("Hello, world!");
        }
    }

Natürlich wächst der “Signalanteil” bei größeren Programmen. Aber als Programmieranfänger muss man bei C# für einfache Programme wesentlich mehr wissen als bei Python.

Python wird vielseitig eingesetzt

Jeder, der sich ein Video auf Youtube.com ansieht, verwendet Software, die zumindest teilweise in Python geschrieben ist. Jeder, der in diesem Blog einen Kommentar schreiben möchte, verwendet Disqus, das das Python-Webframework Django verwendet. Jeder, der Ubuntu Linux installiert hat, hat Python-Software verwendet. Die verteilten Versionsverwaltungssysteme Mercurial und Bazaar sind in Python geschrieben. Die Windows-GUIs dafür, TortoiseHG und TortoiseBzr, sind ebenfalls in Python geschrieben. Seit Jahren verwenden Hersteller von 3D-Animationssoftware Python als eingebettete Skriptsprache.

Es gibt einen Mailserver in Python. Es gibt Klassen in der Python-Standardbibliothek, die die Implementierung eines SMTP-Servers vereinfachen.

Und wenn wir schon bei E-Mails sind: Mailman ist ein beliebter Mailinglistenmanager, der sogar vom Mono-Team verwendet wird (z.B. Mono-list). Und wenn man Android-Apps mit C# entwickeln will und sich an die MonoDroid-Mailingliste anmeldet, wird man ebenfalls Mailman verwenden.

Kann man Python für größere Projekte verwenden?

Ja, man kann. Es ist aber nicht jedermanns Sache. Wer lieber eine statische Programmiersprache verwendet, wird keine Freude mit Python haben.

Ein Compiler ersetzt keine Unit- und Integrationstests. Auch wenn der Code ohne Fehler compiliert werden kann und daher keine syntaktischen Fehler enthalten sind, können noch immer semantische Fehler enthalten sein. Daher sind für größere Projekte automatisierte Unit-Tests in der professionellen Software-Entwicklung Pflicht. In einer dynamischen Programmiersprache tut man sich da in einigen Fällen leichter. Dafür braucht man aber erfahrene Software-Entwickler, die sich damit auskennen.

Übrigens, in der Python-Standardbibliothek gibt es zwei Testframeworks für die Automatisierung von Tests.

Fazit

Also Python ist kein Hype, dafür ist es schon zu lange in Verwendung. Python hat möglicherweise für Programmieranfänger eine einfachere Syntax und es wird in vielen Projekten verwendet. Außerdem lassen sich damit auch größere Programme realisieren.

Python Coding Dojo in Vienna

Standard

On Sunday, August 21, 2011, a Python Coding Dojo takes place at the August meeting of the Python User Group Austria in the Metalab. We’ll probably use the FizzBuzz kata. Python developers of all experience levels and people interested in Python are welcome.

What is a Coding Dojo?

A coding dojo is a meeting, which brings together a number of programmers to work on a programming challenge. It’s mainly about solving the task in a relaxed atmosphere together and to learn new things. A dojo is not a competition, but the focus is on the learning. More information is available on http://codingdojo.org.

DDD und CQRS mit Greg Young in Wien

Standard

(Gastbeitrag von Jörg Egretzberger)

Am 16. September spricht Greg Young auf der Community-Konferenz “Professional .Net 2011” in Wien über Domain Driven Design (DDD) und wie man dieses in Projekten mit der von ihm beschriebenen Softwarearchitektur Command and Query Responsibility Segregation (CQRS) erfolgreich umsetzen kann.

Aus Wikipedia:

“Domain-Driven Design ist nicht nur eine Technik oder Methode. Es ist
viel mehr eine Denkweise und Priorisierung zur Steigerung der
Produktivität von Softwareprojekten im Umfeld komplexer fachlicher
Zusammenhänge.”

In DDD möchte man nicht nur Daten manipulieren (CRUD), sondern auch in einer gemeinsamen Sprache festhalten aus welchem Grund sich Daten geändert haben und welches Verhalten das System hat. Die Intention der Benutzeraktion soll erfasst werden. So sind beispielsweise die Aktionen “Kunde eröffnet ein Konto” und “Geld wird abgehoben” wesentliche Aktionen eines Bankensystems. Mit DDD kann das System und dessen Verhalten (Behavior) modelliert werden.

Hinter diesen Aktionen stecken allerdings oftmals auch Business-Regeln wie etwa, dass nur max. 3.000 Euro pro Tag über Automaten von einem Konto behoben werden können. CQRS bietet eine elegante und skalierbare Lösung um dies in Software umzusetzen. Die Business Regeln enden nicht im Client, sondern werden zentral in der Domäne (dort wo der meiste Business Nutzen entsteht) gehalten.

Greg zeigt auch, wie dadurch das automatisierte Testen mit Unit Tests vereinfacht und expliziter wird. Weiters wird auch aufgezeigt, wie durch das Speichern der durchgeführten Aktionen zu einem späteren Zeitpunkt Auswertungen die im Vorhinein nicht definiert wurden, einfach umgesetzt werden können.

Beispiel: der Bankdirektor möchte eine Auswertung wie viele Kunden ihr Bankkonto schließen, nachdem sie umgezogen sind um durch Werbemaßnahmen dem gegenzusteuern. Dabei handelt es sich um einen wesentlichen
Business-Vorteil.

CQRS wird nicht nur in sehr großen Softwareprojekte eingesetzt, die enorme Skalierbarkeit benötigen. Es hilft bereits bei Projekten die nicht nur “Create, Read, Update, Delete” Befehle haben, sondern bei denen auch Validierung und Business Regeln umgesetzt werden sollen.

Ganz treu dem Motto der heurigen Professional .Net: Einfach bessere Software entwickeln!

Mehr Infos zur Professional .Net 2011 findet ihr unter www.dotnet-austria.at.