Do you speak code? Sieben Programmiersprachen im Überblick

  1. Riese in der Web-Entwicklung: PHP
  2. Der Alleskönner Python
  3. Grundstein der IT: C
  4. Sichere Low-Level Programmierung mit Rust
  5. Einfach nebenläufig dank Go
  6. Mit Node.js Javascript auf den Server holen
  7. Läuft überall: Java

Riese in der Web-Entwicklung: PHP

Hauptsächlich zum Erstellen von dynamischen Webseiten entwickelt, ist PHP eine der am meisten genutzten Programmiersprachen im Web. Die Unterstützung für PHP ist im Standardrepertoire eines jeden Webhosters vorhanden. Auch sind die beliebtesten Content Management Systeme wie WordPress oder TYPO3 mit PHP realisiert. Dafür eignet sich die Sprache weniger für andere Arten von Applikationen, wie zum Beispiel Desktopanwendungen. PHP wird aktiv weiter entwickelt und liegt zum Zeitpunkt dieses Artikels in Version 8 vor, die viele Optimierungen und Neuerungen hervorbringt. Ein großer Nachteil ist, dass Änderungen in der Sprache oft die Kompatibilität mit bestehendem Code brechen, sodass ein Update von PHP nicht immer ganz einfach ist.

<?php
if (isset($_SESSION['name'])) {
    print("Hallo, " . $_SESSION['name']);
} else {
    print("Hallo Welt");
}

Der Alleskönner Python

Python ist eine universell einsetzbare Programmiersprache. Sie unterstützt sowohl die funktionale, als auch die objektorientierte Programmierung. Aufgrund ihrer Vielseitigkeit und vielen verfügbaren Module wird sie in vielen Bereichen verwendet. Die Bibliotheken PyQT und PyGobject können zum Beispiel für die Entwicklung von Desktopanwendungen eingesetzt werden. Mit Flask und Django stehen zwei Frameworks zum Erstellen von Webapplikationen bereit. Mathematische Rechnungen und Graphen lassen sich mit NumPy und Matplotlib umsetzen. Und auch maschinelles Lernen lässt sich dank Tensorflow in Python verwenden. Diese Breite an Anwendungsmöglichkeiten ist dem Hauptziel von Python zu verdanken: Eine möglichst einfache und übersichtliche Syntax zum Programmieren zu bieten, wodurch der Einstieg in die Sprache sehr simpel ist. Im Vergleich zu kompilierten Sprachen ist Python leider nicht sehr performant, wodurch stark leistungsabhängige Teile der Programme oft mit anderen Sprachen implementiert werden.

print("Bitte gib deinen Namen ein: ")
name = input()
if name == "":
    print("Kein Name angegeben!")
else:
    print("Hallo, " + name)

Grundstein der IT: C

1972 entwickelt ist C ein Urgestein in der IT-Welt. Sie ist eine sehr hardwarenahe und mächtige Sprache mit der viele grundlegende Anwendungen umgesetzt sind. So sind zum Beispiel der Linux Kernel oder der Apache Webserver in C geschrieben. Aufgrund der Hardwarenähe ist die Sprache sehr performant, aber auch schwierig zu verwenden und anfällig für Sicherheitslücken. Insbesondere die dynamische Speicherverwaltung, also das manuelle Allozieren und Freigeben von Speicherbereichen, verursacht regelmäßig Probleme. Wenn im Code zum Beispiel das Freigeben von Speicher vergessen wird, kommt es zum sogenannten Speicherleck, durch den das Programm über die Zeit immer mehr Speicher in Anspruch nimmt, bis keiner mehr verfügbar ist.

#include <stdio.h>
#include <string.h>
int main()
{
    char greeting[50] = "Hallo ";
    char noname[50] = "Kein Name angegeben!";
    char name[256];
    printf("Bitte gebe deinen Namen ein: ");
    fgets(name, 255, stdin);
    if (strcmp(name, "\n") == 0)
    {
        puts(noname);
    }
    else
    {
        strcat(greeting, name);
        puts(greeting);
    }
    return 0;
}

Sichere Low-Level Programmierung mit Rust

Eine zuerst von Mozilla gesponserte aber jetzt unabhängige und im Vergleich junge Programmiersprache, die an C angelehnt ist, dessen Nachteile aber vermeiden will. So verspricht sie sowohl eine hohe Performance, als auch gleichzeitig Speichersicherheit durch einen sogenannten Borrow Checker. Dieser überprüft unter anderem, ob eine Variable initialisiert ist, bevor sie genutzt wird oder dass ein Wert nicht dealloziert wird, während er noch an anderen Stellen genutzt wird. Aufgrund der Syntax von Rust können diese Überprüfungen zur Zeit des Kompilierens durchgeführt werden, wodurch die Performance während der Laufzeit nicht beeinträchtigt wird und Fehler auffallen, bevor das Programm überhaupt ausgeführt wird. Dies funktioniert, weil Variablen immer einen Besitzer haben. Um anderen Funktionen des Codes Zugriff auf die Variablen zu gewähren, müssen diese explizit ausgeliehen werden. Durch dieses System wird nicht nur Speichersicherheit gewährleistet, sondern auch Threadsicherheit.

use std::io;

fn main() {
    println!("Bitte gebe deinen Namen ein: ");
    let mut name = String::new();
    io::stdin().read_line(&mut name);

    if name == "\n" {
        println!("Kein Name angegeben!");
    } else {
        println!("Hallo {}", name);
    }
}

Einfach nebenläufig dank Go

Go ist eine an C angelehnte Sprache, die seit 2009 hauptsächlich von Google-Mitarbeitern entwickelt wird. Sie soll die Performance von C mit der Les- und Nutzbarkeit von Python oder Javascript vereinen. Ein weiteres großes Ziel ist die effektive Nutzung von Multikernsystemen und das Implementieren von skalierbaren Netzwerkdiensten, weswegen ein großer Fokus auf Nebenläufigkeit gelegt wird. Diese wird durch sogenannte Goroutinen erreicht, die das Prinzip der Communicating Sequential Processes implementieren. Zur Vereinfachung der Speicherverwaltung wird ein Garbage Collector eingesetzt, der über die Lebenszeit von allozierten Objekten gebietet. Zwar erhöht sich dadurch der Ressourcenverbrauch etwas, es werden jedoch Fehler beim Speichermanagement, wie sie bei C häufig passieren, vermieden.

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println("Bitte gebe deinen Namen ein: ")
    var name string
    fmt.Scanln(&name)
    if (strings.Compare(name, "") == 0) {
        fmt.Print("Kein Name angegeben!")
    } else {
        fmt.Print("Hallo " + name)
    }
}

Mit Node.js Javascript auf den Server holen

JavaScript kennen die meisten aus der Entwicklung für Webseiten, zumeist aber nur für das Frontend. Normalerweise wird JS also im Browser des Besuchers der Seite ausgeführt. Es gibt aber auch eine Laufzeitumgebung, mit der JS überall, also auch auf einem Server oder als Skriptsprache, genau wie PHP ausgeführt werden kann. Diese heißt Node.js oder kurz Node. Node eignet sich also sowohl für Web-Backends wie auch für CLI-Skripte und erfreut sich in den letzten Jahren immer größerer Beliebtheit. Durch die Vielseitigkeit der Sprache lässt sich mit Node sowohl objektorientiert als auch funktional entwickeln. Explizite Types fehlen zwar im JavaScript-Standard, lassen sich aber mit TypeScript „nachrüsten“. So hat man dann eine vollwertige Sprache.

const name = process.env.USERNAME;

if( name ){
    console.log(`Hallo ${name} `);
} else {
    console.error("Kein Name angegeben!");
}

Läuft überall: Java

Java ist wahrscheinlich die Einstiegssprache schlechthin. Sie wird teilweise schon im Informatikunterricht in der Schule gelehrt und ist auf jeden Fall Teil eines Informatikstudiums. Großer Vorteil ist die breite Kompatibilität: Java lässt sich auf allen Betriebssystemen in einer einheitlichen Umgebung ausführen. Zudem ist Java sehr weit verbreitet. Einige der bekannten Videospiele – beispielsweise Minecraft – sind in Java geschrieben. Gerade am Anfang sind das strikte Typ-System und die Syntax von Java hilfreich. In der Webentwicklung ist Java auch vorhanden, aber eher in einer Nische im Enterprise-Bereich.

import java.util.*;  
class UserInputDemo {  
    public static void main(String[] args) {  
        Scanner scanner= new Scanner(System.in);
        System.out.print("Bitte gib deinen Namen ein: ");  
        String name = scanner.nextLine();
        if( name == "" ){
            System.out.println("Hallo " + name);
        } else {
            System.out.println("Kein Name angegeben!");
        }        
    }  
} 

Kommentar hinzufügen