Viele Entwickler stehen oft vor der Entscheidung, mithilfe welcher Programmiersprache an ein Problem herangegangen werden soll.

Ein zentraler Aspekt ist: Was will man umsetzen?
Eine Webseite oder ein Blog? Ein Spiel? Ein kleines Tool mit GUI? Ein ERP-System?

Ich möchte zuerst auf ein paar Programmiersprachen eingehen, welche gern für Websites genutzt werden.

Hier gibt es zum einen (den mittlerweile schon allbekannten) PHP. Den PHP Hypertext Preprocessor, wie es sich in der Langform schimpft.
Viele Systeme bauen auf PHP auf, wie zum Beispiel viele Blogs oder Foren, aber auch große Shops. Die Möglichkeiten von PHP sind schließlich auch (fast) unbegrenzt, wenn es auch mit dem Hauptfokus auf Webbasierten Anwendungen designt ist.

Des weiteren gibt es Node.js. Eine Serverbasierte Variante von JavaScript bzw. ECMAScript. (Ich nenne JavaScript eigentlich nur ungern JavaScript, weil es meiner Ansicht nach suggerieren könnte, dass es mit Java in Verbindung steht, was es definitiv nicht tut.)
Hiermit hat man die Möglichkeit, das asynchrone Modell von JS in der Webserver-Welt zu nutzen. Einer der häufigsten Verwendungen ist sicher die Verwendung als Websocket-Server. Aber auch als “normaler” Webserver hat Node.js viele Einsatzmöglichkeiten.

Zuletzt will ich im Bereich der Websites auf Python eingehen. Python ist für den Webbereich noch eher selten genutzt, auch wenn es hierfür sehr starke Frameworks gibt, wie Flask als eher simplere Bibliothek oder Django als massives Framework mit ausgeklügelter ORM Architektur. Auch bei Python gibt es seit Version 3.5 standardmäßig die asyncio Bibliothek, welche seit 3.6 mit den async- und await-Statements vollständig in die Sprache implementiert wurde.

Und hier sind wir schon bei unserem Thema: Python

Eine aufstrebende (relativ) neue Programmiersprache, von der die meisten sicherlich schon gehört haben.

Ich zeige hierzu immer gerne folgendes Sketchart von xkcd:

Python: Just import it!

Denn in den meisten Fällen ist es tatsächlich bei Python so. Es gibt bereits für die vielfältigsten Situationen Librarys. Egal ob es jetzt “nur” ein Web-Framework ist, oder Bibliotheken für Aufwendige Datenanalyse und Visualisierung oder gar Künstliche Intelligenz (ich sag nur TensorFlow).

Und auch bei der Entwicklung ist es – meiner Ansicht nach – eine sehr gute Sprache, weil Sie auf dem Grundsatz beruht, leserlich zu sein.
Bei vielen Programmiersprachen hat man viele geschweifte Klammern. Und ob die Entwickler ihren Code dann noch so schön Formatieren, dass man ihn noch gut lesen kann, ist leider immer öfter ein selten anzutreffendes Phänomen.

Doch dem macht Python einen sehr großen Strich durch die Rechnung!

Formatierst du deinen Code nicht schön? Vergisst du es, deinen Code sauber einzurücken? Der Interpreter wird sich bedanken und dich mit einem schönen Gruß aus dem Getriebe erstmal wieder zurück an die Schulbank schicken.

Aber sehen wir uns mal kurz die Basics an.
Und wie geht das schöner, als mit einem klassischem “Hello World”-Programm.

print("Hello World")

Mehr brauchts dazu nicht.
Ich nehme als Vergleich dazu gern ein “Hello World”-Programm in Java

public class HelloWorld {
    public static void main(String[] args) {
        // Prints "Hello, World" to the terminal window.
        System.out.println("Hello, World");
    }
}

Nun wenn man sich allein die Anzahl der benötigten Zeilen sieht man, dass dieses komische Java etwas sehr aufgebläht ist, für eine eigentlich so simple Aufgabe.

Bezüglich der Sauberkeit des Codes vergleiche ich es gern mit JS.
Eine Funktion zum Berechnen der Fakultät könnte man in Python wie folgt implementierten.

def faculty(number):
	if number == 1:
		return 1
	return number * faculty(number-1);

Selbiges in JS

function faculty(number) {
	if(number == 1)
		return 1;
	return number * faculty(number-1);
}

An sich, kein all zu großer Unterschied.
Doch jetzt machen wir mal das aus unserem JS Code:

function faculty(number){if(number==1)return 1;return number*faculty(number-1)};

Ähh… What?!
Das ist jetzt eh noch eine relativ simple Funktion. Man kann sich das Ausmaß vorstellen, wenn es große Algorithmen sind.

Natürlich ist dies meist natürlich nicht der Code, den der Entwickler fabriziert hat, sondern meist ein “Minifier”, welcher einfach alle unnötigen Absätze, Leerzeichen usw. entfernt. Oft wird dies nur im Sinne des Users gemacht, z. B. um die Dateigröße zu verringern.

Doch selbst, wenn man die Datei nicht minified, gibt es zig Möglichkeiten, den Code zu verunstalten. Zum Beispiel, wenn man komplett auf Einrückungen sch…, sagen wir verzichtet.

function faculty(number){
if(number == 1) return 1;
return number * faculty(number-1);
}

Dann gibt es noch die, die die Klammern erst in die nächste Zeile schreiben.

function faculty(number)
{
	if(number == 1)
	{
		return 1;
	}
	return number * faculty(number - 1);
}

Dies ist natürlich Geschmackssache. Ich persönlich finde es so wesentlich weniger Lesbar und es macht es unnötig kompliziert. Außerdem wird die Anzahl der Zeilen ums x-Fache erhöht.
Das ist vielleicht gut, wenn man nach der Anzahl der Implementierten Zeilen bezahlt wird. 🤔

Ich hab somit allein hier 4 verschiedene Möglichkeiten für die Implementierung von ein und der selben Funktion gezeigt.
Wenn man darauf achtet, dass der Code immer ähnlich aussieht, ist das natürlich eher Kontraproduktiv.

Nun möchte ich aber auf das “import everything” zurück kommen.
Natürlich muss man einen so simplen Algorithmus wie die Berechnung der Fakultät in den wenigsten Sprachen selbst implementieren. So gibt es hierfür in Python die Standard-Bibliothek “math”.

import math
math.factorial(5) # = 120

So geht es natürlich auch mit allen anderen Librarys für Python.

Hier ein kleiner Auszug aus dem Code von Hudln.de

from django.db import models

class Game(models.Model):
	name = models.CharField(max_length=24, blank=True, null=True)

Auch wenn man von der Materie keine Ahnung hat, erkennt man allein durchs kurz drüber lesen des hier gezeigten Codes, dass es sich um die Definition des Datenbankmodells “Game” geht, wobei ein Character-Feld namens “name” hinzugefügt wird.

Dies kommt auch aus der Python Konvention Variablen, Methoden, Klassen oder Bibliotheken so zu nennen, was sie auch bewirken oder beinhalten.
Das sollte man in einer nicht-Typenstrikten-Sprache wie Python durchaus machen. Aber auch ganz allgemein, erhöht es einfach den Grad der Leserlichkeit.

Ich persönlich hab erst 2016 angefangen mit Python zu arbeiten. Und anfangs war ich ganz und gar nicht erpicht davon. Ich war es damals gewohnt in PHP zu entwickeln.
Doch ich hab relativ schnell die Vorteile dieser Sprache für mich erkennen können und ich entwickle seit dem auch sehr sehr gern in Python.
Sogar bevorzugt, wer hätte es gedacht…
(Mein Ausbilder damals nicht 😅. Er konnte es auch kaum glauben, als ich ihm erzählt habe, dass ich mein Hudln.de in Python reimplementiert habe. Viele Grüße an dieser Stelle.)

Ich würde jedem, egal ob er neu beginnen will das Programmieren zu lernen oder bereits ein alt eingesessener Senior Developer ist, ans Herzen legen, sich diese Sprache anzusehen und selbst auszuprobieren.

Meiner Meinung nach, bietet Python viele großartige Möglichkeiten und hat viele Stärken. Für mich ist besonders die klar strukturierte Syntax ein sehr herausragendes Merkmal.