Skip to content

Programmiersprachen

Programmier-sprachen


Computerbefehle

  • Problem: Welche Operationen sollen in welcher Reihenfolge ausgeführt werden??

Was ist ein Algorithmus?

  • zentraler Begriff der Informatik, aber keine Besonderheit der Informatik
  • Algorithmen im Alltag allgegenwärtig, oft ohne sie als solche zu erkennen
  • Wir führen ohne es zu merken ständig Algorithmen aus
  • Algorithmisches Denken ist eine allgemeine Methode um “Wissen zu organisieren” (D. Knuth)

Algorithmus = Problemlösungsvorschrift

  • Die Lösung einer Aufgabe bedarf einer eindeutigen Vorschrift, die genau festlegt, welche Aktionen (Handlungen) nacheinander oder nebeneinander auszuführen sind
  • Die Bezeichnung Algorithmus leitet sich von Al-Chowarizmi (persischer Mathematiker und Astronom) ab

Algorithmus - Definition

Ein Algorithmus ist eine vollständige, präzise und in einer Notation oder Sprache mit exakter Definition abgefasste, endliche Beschreibung eines schrittweisen Problemlösungsverfahrens zur Ermittlung gesuchter Datenobjekte (ihrer Werte) aus gegebenen Werten von Datenobjekten, in dem jeder Schritt aus einer Anzahl ausführbarer, eindeutiger Aktionen und einer Angabe über den nächsten Schritt besteht.


Maschinensprache

Zu Beginn der Computerentwicklung war die einzige Möglichkeit der Programmierung, binären Maschinencode zu schreiben.

  • Nachteil: sehr aufwändig, sehr schwer verständlich
bc 12 06 b4 50 8c c3 cd
21 b4 30 cd 21 3d 05 00
74 15 ba 17 24 e8 5b fe

Maschinensprache

In Spezialfällen (zB Quellcode nicht mehr verfügbar) kann es nötig sein Maschinencode zu ändern.

Diverse Tools verfügbar, zB:


Assembler

Um nicht mehr direkt Maschinensprache schreiben zu müssen wurde Assembler geschaffen.

Hier werden Kürzel (Mnemonics) verwendet die CPU Befehle darstellen, zB mov oder int.

code segment
assume cs:code, ds:code
org 0100h
start:
mov ah,9
mov dx,offset msg
int 21h
int 20h
msg db 'Hello World!',13,10,'$
code ends
end start

Assembler (2)

Es gibt keine eine Assembler Sprache, da Befehle für jede CPU-Architektur anders sind.

Assembler erfordert also gute Kenntnisse in Aufbau und Arbeitsweise des zu programmierenden Systems.


Fortran

  • Formula Translation
  • Als Sprache zur Übersetzung von Formeln, vorwiegend für den technisch-wissenschaftlichen Bereich konzipiert.
  • Heutzutage noch für Simulationsberechnungen (zB Klimamodelle, Autocrashs) verwendet
Program Hellow
WRITE (UNIT=*, FMT=*) 'Hello World!'
END

COBOL

  • Common Business Oriented Language
  • Einsatz in der Datenverarbeitung
  • Auch heute noch teilweise verbreitet (Behörden, Banken).
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY "Hello World!" UPON CONSOLE.
STOP RUN.

BASIC

  • Beginners All-purpose Symbolic Instruction Code
  • War für die Ausbildung von Programmierung gedacht.
  • Wurde in 80er Jahren tlw. auf Heim-Computern mitgeliefert -> starke Verbreitung
  • Später Abwandlungen von Basic, zB Visual Basic .NET oder Visual Basic for Applications (VBA)
10 PRINT "Hello World!"
GOTO 10

Pascal

  • Ende der 70er Jahre als Sprache für den Unterricht entwickelt
  • An Hochschulen immer noch beliebt
  • Strenge Formvorschriften
  • Einfacher kontrollierbar und wartbar
  • Einsatz auch in sicherheitskritischen Bereichen (zB Energieversorgung)
program HelloWorld;
begin
writeln('Hello World!');
end.

C / C++

  • C wurde für die Entwicklung des Betriebssystems UNIX entworfen.
  • C ist hardwarenahe und erlaubt große Kontrolle über Details wie Speicherverwaltung.
  • “Don’t prevent the programmer from doing what needs to be done.”
  • Große Freiheit kann zu schlechtem Design und schwer wartbarem Code führen.
  • C++ ist Weiterentwicklung mit objektorientierten Aspekten

C++

#include <iostream.h>;
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
>>

C#

  • Entwickelt von Anders Hejlsberg von Microsoft in 2000
  • General Purpose High Level Programming Language
  • Die Sprache wird nach wie vor weiterentwickelt. Letztes Update C# 12 im November 2023.
  • Vereint Eigenschaften verschiedener Programmierparadigmen (imperativ, objektorientiert, funktional)

C#

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

Java

  • Zusammen mit C#, Python und JavaScript eine der meist genutzten Programmiersprachen
  • Vergleichbar mit C#
  • Von Beginn an Fokus auf Plattformunabhängigkeit
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

PHP

  • PHP Hypertext Preprocessor (früher auch Personal Home Page Tools)
  • Skriptsprache die speziell für den Einsatz im Internet entwickelt wurde.
  • Wird verwendet um Websiten (HTML) mit dynamischer Logik anzureichern.
  • Content-Management-Systeme (CMS) wie WordPress, TYPE3 oder Joomla! verwenden PHP
echo "Hello World!";

Python

  • Skriptsprache
  • Einfacher Einstieg
  • im Bereich der künstlichen Intelligenz stark verbreitet
print "Hello World!";

Konzepte

Konzepte die Programmiersprachen-übergreifend vorkommen:

  • Anweisungen
  • Block
  • Bedingungen
  • Operatoren
  • Schleifen
  • Variablen
  • Datentypen
  • Strukturen
  • Array

Kompilierung

  • Kompilieren meint das Übersetzen von Programmiersprachen zu Maschinencode.
  • Der Compiler liest die erstellten Quellcode-Dateien ein und erstellt ausführbare Programme, die Maschinencode enthalten.
  • Zu den kompilierten Sprachen zählen unter anderem C, C++, Pascal.

Skriptsprachen

  • Oftmals ist auch die Rede von Skriptsprachen
  • Skriptsprachen sind Programmiersprachen, die zur Ausführung des Programms ein zusätzliches Programm - den Interpreter - brauchen.
  • Der Interpreter liest die erstellten Quellcode-Dateien ein und führt die darin enthaltenen Befehle direkt auf der CPU aus.
  • Skriptsprachen gelten allgemein als etwas langsamer als kompilierte Sprachen, da bei jeder Ausführung das Programm neu interpretiert werden muss und die Befehle ermittelt werden müssen, die auf der CPU ausgeführt werden.
  • Zu den Skriptsprachen zählen unter anderem Python, PHP, JavaScript.

Mischformen - Java

  • Es gibt auch Sprachen bei denen die Einteilung in kompilierte vs. Skript-Sprachen nicht so eindeutig is.
  • Java Programme werden zwar grundsätzlich kompiliert, das Ergebnis ist aber nicht Maschinencode, sondern Bytecode.
  • Dieser Bytecode wird dann von einer Ausführungsumgebung - der Java Runtime - interpretiert.
  • Der Bytecode ist dabei so optimiert, dass die Interpretation möglichst effizient erfolgen kann.

Mischformen - C#

  • Eine weitere Sonderform stellt die Programmiersprache C# dar.
  • Hier wird ähnlich wie bei Java der Quellcode zuerst auf eine Art Bytecode - im Fall von C# wird dieser Intermediate Language genannt - kompiliert.
  • Im Unterschied zu Java wird dieser IL-Code von der Runtime nicht interpretiert, sondern beim ersten Aufruf nach Maschinencode übersetzt. Man nennt das JIT-Compilation (Just In Time)
  • Mittlerweile gibt es auch Möglichkeiten C# direkt nach Maschinencode zu übersetzen. Das wird im Gegensatz zu JIT-Compilation dann AOT-Compilation (Ahead Of Time) genannt.

Datentypen

  • Zur Repräsentation von Werten werden in der Programmierung unterschiedliche Arten primitiver Datentypen verwendet.
  • Dazu gehören:
    • Ganzzahlige Werte (Integer, Long, Short, Signed, Unsigned)
    • Fließkommazahlen (Float, Double)
    • Wahrheitswerte (Boolean)
    • Zeichen (Character)
    • Zeichenketten (String)

Repräsentation von Werten

  • Alle Werte, die im Rechner gespeichert und verarbeitet werden müssen in Form von Binärzahlen dargestellt werden.
  • Ganzzahlige Werte: Binärsystem
  • Wahrheitswerte: Bits
  • Zeichen, Zeichenketten: Kodierung (ASCII, UTF-8, usw.)

Repräsentation von Fließkommawerten

  • Wissenschaftliche Darstellung mit Mantisse und Exponent: 2,57101=0,2572,57 * 10^{-1} = 0,257
  • IEEE Floating Point Converter
  • Merke: Fließkommazahlen haben eine gewisse Ungenauigkeit. Nicht alle Werte können exakt dargestellt werden.
0.6000000000000001
console.log(0.2 + 0.4);
// Ausgabe: