Theoretische Informatik
In der theoretischen Informatik untersucht man die grundlegenden Konzepte und Prinzipien der Informatik. Dazu gehören beispielsweise die Berechnungstheorie, die Formalmethoden und die Algorithmik. Die theoretische Informatik ist eng mit der Mathematik verbunden und bildet einen wichtigen Teil des Studiums der Informatik.
Algorithmen
Algorithmen sind ein wesentlicher Bestandteil der Informatik. Sie sind die logischen Anweisungen, die ein Computer verwendet, um ein Problem zu lösen. Algorithmen können einfach sein, wie das Sortieren einer Liste von Zahlen, oder sie können sehr komplex sein, wie das Finden der kürzesten Route in einem großen Stadtnetz.
Ein Algorithmus hat immer ein bestimmtes Ziel und muss von Anfang bis Ende ausgeführt werden können. Ein Algorithmus kann auch nur teilweise ausgeführt werden, aber in diesem Fall ist er unvollständig und kann nicht mehr als Algorithmus bezeichnet werden.
Es gibt viele verschiedene Arten von Algorithmen, aber alle Algorithmen lassen sich in zwei Hauptkategorien einteilen: deterministische Algorithmen und nicht-deterministische Algorithmen.
Deterministische Algorithmen sind Algorithmen, bei denen für jeden Schritt des Algorithmus genau festgelegt ist, welche Aktion ausgeführt wird. Dies bedeutet, dass für jede Eingabe immer die gleiche Ausgabe erzeugt wird. Deterministische Algorithmen sind oft einfacher zu verstehen und zu implementieren als nicht-deterministische Algorithmen, aber sie sind auch oft langsamer.
Nicht-deterministische Algorithmen sind Algorithmen, bei denen für jeden Schritt des Algorithmus mehrere mögliche Aktionen ausgeführt werden können. Dies bedeutet, dass für die gleiche Eingabe unterschiedliche Ausgaben erzeugt werden können. Nicht-deterministische Algorithmen sind oft schwieriger zu verstehen und zu implementieren als deterministische Algroithmen, aber sie können in manchen Situationen schneller sein.
Datenstrukturen
Die Informatik beschäftigt sich mit der Organisation, Verarbeitung und dem Speichern von Daten. Dabei spielen Datenstrukturen eine entscheidende Rolle. Datenstrukturen legen fest, wie Daten in einem System organisiert werden. Je nach Anwendungsfall können unterschiedliche Datenstrukturen sinnvoll sein.
Eine einfache Datenstruktur ist die Liste. In einer Liste werden die Datenelemente nacheinander abgelegt. Eine Liste kann dabei unterschiedlich lang sein. Ein Nachteil von Listen ist, dass man beim Suchen nach einem bestimmten Element alle Elemente der Liste durchsuchen muss.
Eine andere häufig verwendete Datenstruktur ist die Hashtabelle. In einer Hashtabelle werden die Datenelemente anhand ihrer Schlüssel (engl.: keys) abgelegt. Die Schlüssel sind dabei so ausgewählt, dass sie möglichst eindeutig sind und keine Kollisionen auftreten. Die Suche nach einem Element in einer Hashtabelle ist dadurch sehr effizient, da man nur den Schlüssel des Elements berechnen und in der Tabelle nachschlagen muss.
Eine weitere wichtige Datenstruktur ist der Baum. Bäume sind hierzulande besonders bekannt durch ihre Verwendung in der Programmiersprache Java. In Bäumen werden die Datenelemente anhand ihrer Schlüssel in Form von Knoten abgelegt. Die Suche nach einem Element in einem Baum ist ähnlich effizient wie in einer Hashtabelle, da man auch hier den Schlüssel des Elements berechnen und den Baum durchsuchen muss.
Datenstrukturen sind also ein wichtiger Bestandteil der Informatik und sollten bei der Entwicklung neuer Anwendungen berücksichtigt werden.
Programmiersprachen
Programmiersprachen sind die Sprachen, in denen Computerprogramme geschrieben werden. Es gibt verschiedene Arten von Programmiersprachen, je nachdem, wie sie verwendet werden. Einige Sprachen werden verwendet, um allgemeine Aufgaben zu erledigen, während andere Sprachen für spezielle Zwecke entwickelt wurden.
Die bekanntesten und am weitesten verbreiteten Programmiersprachen sind C++, Java und Python. Diese Sprachen werden häufig in Schulen und Universitäten gelehrt und finden auch in der Praxis Anwendung. Andere beliebte Sprachen sind PHP, SQL und Ruby.
Es gibt auch eine Reihe von exotischeren Sprachen, die für bestimmte Zwecke entwickelt wurden oder aus historischen Gründen noch verwendet werden. Einige bekannte Beispiele sind COBOL, Fortran und Pascal.