In welche Teilbereiche kann die imperative Programmierung unterteilt werden?
Prozedurale Programmierung
Strukturierte Programmierung
Modulare Programmierung
Objektorientierte Programmierung
Worin bestehen die wesentlichen Besonderheiten der imperativen Programmierung?
Welche Zweige der imperativen Programmierung kennen Sie?
Die imperative Programmierung versucht, einen Computer möglichst wie eine Maschine zu beobachten, frei nach der von-Neumann-Architektur.
Computer werden dabei als eine Ansammlung von Speicherzellen betrachtet, die in verschiedene Datenstrukturen unterteilt sind.
Zweige der imperativen Programmierung sind z. B.
die prozedurale Programmierung, welche versucht, einen Algorithmus in mehrere Teile zu untergliedern,
die strukturierte Programmierung, mit dem Ziel ebenfalls eine Unterteilung zu erreichen, jedoch auf Basis der Verwendung lediglich dreier Kontrollstrukturen,
die modulare Programmierung, mit dem Ziel, ein Programm in Module zu unterteilen,
die objektorientierte Programmierung, die eine Sichtweise eines Programms nahe der realen Welt verfolgt.
Was ist der Unterschied zwischen einer imperativen und einer Deklarativen Programmierung?
Imperative Programmierung: Wie etwas berechnet werden soll.
Deklarative Programmierung: Was berechnet werden soll.
In welche 2 Programmierungsarten wird die Deklarative Programmierung unterteilt?
Funktionale Programmierung
Logische Programmierung
Was ist die Aufgabe von einem Compiler?
Genau wie ein Computer den von uns Menschen entwickelten Programmcode nicht verstehen kann (Verständnis ist im Wesentlichen auf die Abfolge von Nullen und Einsen beschränkt), ist es umgekehrt auch kompliziert und meist unwirtschaftlich für den Programmierer, ausschließlich in Maschinencode zu denken. Dennoch sei darauf hingewiesen, dass in der Frühphase der Informatik Computerprogramme genau so geschrieben wurden. Um diese Problematik zu umgehen, bietet sich der Einsatz von Compilern an, welche zwischen beiden Extremen vermitteln. Statt tatsächlich mit Maschinencode zu arbeiten, bedienen wir uns also einer Hochsprache, um so syntaktisch sinnvoll mit verschiedenen Sprachelementen eine Abweisungsabfolge erstellen zu können.
Was wird als ´´dekompilieren´´ bezeichnet?
Es ist in gewissem Rahmen möglich, einen einmal kompilierten Programmcode (welcher dann als Maschinencode vorliegt) wieder in den Programmcode zurückzuübersetzen. Dies ist möglich unter dem Einsatz eines Decompilers. Der entsprechende Vorgang wird dann als „dekompilieren“ bezeichnet.
Wie funktioniert ein Interpreter?
Was sind die Vor-und Nachteile?
Welche Programmiersprachen nutzen Interpreter?
Ein Interpreter übersetzt nicht den Programmcode komplett in Maschinencode
durchläuft diesen systematisch, prüft den Code auf Korrektheit, ruft dann für jeden erkannten Befehl die entsprechende Routine aus der eigenen Bibliothek des Interpreters auf und führt diesen dann entsprechend aus.
Interpretierte Sprachen, deren Ausführung auf der Nutzung eines Interpreters basiert, sind:Python, Perl, PHP etc.
Ein Nachteil von interpretierten Sprachen ist die Ausführungsgeschwindigkeit.
Da das Durchlaufen und auch Ausführen des Codes k viele Zwischenschritte und damit auch Zeit benötigt,
Dadurch sind Interpretierte sprachen langsamer als kompilierte.
Ein Vorteil ist, dass nicht zu Beginn der Programmausführung bereits der gesamte Code kompiliert wird.
Dadurch wird diese: Speichereffizienter und schneller debugged.
Bitte beschreiben Sie den Ablauf beim Ausführen eines Programms, welches in C++ verfasst wurde. Worin liegt der Unterschied zu einer interpretierten Sprache?
Bei der Sprache C++ handelt es sich um eine kompilierte Sprache.
Dies bedeutet, dass bei Ausführen des Programms der gesamte Quelltext zunächst in einen Maschinencode übersetzt werden muss.
Der dabei ablaufende Vorgang wird als Kompilierung bezeichnet und von einem Compiler durchgeführt.
Sollen Bibliotheken oder Funktionen aus anderen C++-Programmen eingebunden werden, so erfolgt dies durch das Linking, welches sich an die Kompilierung anschließt.
Während bei kompilierten Sprachen eine vollständige Übersetzung des Quellcodes erfolgt, ist dies bei interpretierten Sprachen nicht der Fall, da diese erst zur Laufzeit kompiliert werden.
Was versteht man unter einer Maschinensprache in der Informatik?
Unter Maschinensprache wird diejenige Programmiersprache verstanden, welche am nächsten an der Hardware eines Computers ausgeführt werden kann.
Diese beinhaltet reine Bytes bzw. eine Abfolge von Zahlen.
Maschinensprachen die erste Generation darstellen, oft als 1GL (1st Generation Language) abgekürzt.
Wie sieht die Darstellung von Maschinencode aus?
Die Darstellung von Maschinencode erfolgt dabei in der gängigen Praxis als Hexadezimalcode
Was ist der Unterschied zwischen einer Maschinensprache und einer höheren Sprache?
Höhere Programmiersprachen werden vor der eigentlichen Ausführung in der Regel kompiliert oder interpretiert,
wobei der Quellcode in Maschinencode übersetzt (kompilieren)
oder zur Laufzeit erst entsprechend übersetzt wird (interpretieren).
Was versteht man unter einer Assemblersprache?
Unter einer Assembler-Sprache wird eine Programmiersprache verstanden, welche wie die Maschinensprache spezifisch auf einen Typ eines Computers zugeschnitten ist.
Die Assemblersprachen können als Zwischenstufe der Sprachenhierarchie zwischen reinen Maschinensprachen und den höheren Sprachen verstanden werden.
Bei Assembler-Sprachen handelt es sich um Programmiersprachen der zweiten Generation (2GL), da sie auf einer höheren Abstraktionsstufe arbeiten als der klassische Maschinencode.
Was sind im Gegensatz zu Hochsprachen die Vorteile und was die Nachteile von Assemblersprachen?
Wesentliche Vorteile:
deutlich höheren Effizienz und Ablaufgeschwindigkeit (z. B. bei komplexen mathematischen Berechnungen)
da Assembler-Code immer sehr hardwarenah ausgerichtet ist und damit allumfassend z. B. den verwendeten Prozessortyp ausnutzen kann.
Wesentliche Nachteile:
Fehlen der direkten Portierbarkeit eines Assembler-Programms, da dies zunächst nur für eine verwendete Architektur verwendet wird.
Soll ein Assembler-Code portiert werden, ist es erforderlich, den Quellcode entsprechend abzuändern, bei Hochsprachen reicht eine Neu-Kompilierung des Codes mittels eines Compilers für das Zielsystem.
Ebenso fällt Assembler-Code in der Regel länger aus da oft mehrere Befehle in Serie ausgeführt werden müssen, um eine Operation implementieren zu können.
Was sind die Vorteile von Höheren Sprachen?
Vorteile:
Reservieren von Speicher wird dabei weitestgehend automatisiert erledigt
Es ist möglich, leistungsfähige Software zu entwickeln
ohne mit den Details der Hardware vertraut zu sein
und mit einem für den Menschen lesbaren Code.
Worin unterscheiden sich Maschinencode sowie Assembler-Code von höheren Programmiersprachen?
Maschinencode ist die Form von Code, welche komplett auf die Funktionsweise beispielsweise eines Mikroprozessors zugeschnitten ist. Im Vordergrund steht dabei die Funktionalität und nicht die Lesbarkeit des Codes.
Assembler-Sprachen gehen eine Abstraktionsebene weiter und verwenden eine mnemonische Abstraktion, wobei einfache Codewörter benutzt werden, um Operationen bzw. die Speicherverwaltung, die ein Prozessor durchführen soll, zu beschreiben.
Höhere Sprachen verwenden nahezu vollständig lesbare Formulierungen für Anweisungen eines Programmablaufs, wobei die Speicherverwaltung meist eigenständig von der benutzten Sprache übernommen wird und nicht mehr explizit vom Entwickler.
Wodurch unterscheiden sich Syntax, Semantik und Pragmatik?
Die Syntax einer Sprache beschreibt, wie Symbole und Schlüsselwörter verwendet werden müssen, damit der ausgearbeitete Code am Ende auch die Aufgaben ausführt, für die er entwickelt wurde (ohne z. B. Fehler zu produzieren).
die Semantik ordnet den jeweiligen Schlüsselwörtern eine Bedeutung zu, sodass ein Computer beim Durchlaufen des Codes auch erkennen kann, welche Operation ausgeführt werden soll.
Die Pragmatik hingegen beschäftigt sich mit der Fragestellung, für welche Probleme genau eine betrachtete Programmiersprache geeignet ist und was mit ihr bewirkt werden kann.
Welche Aufgaben erfüllen in der Programmierung Variablen? Was ist die Bedeutung der Typisierung?
Variablen dienen in der Programmierung als abstrakter Behälter zum Ablegen von Werten verschiedenster Natur.
Die Typisierung beschäftigt sich mit der Fragestellung, in welchen Wertebereichen die jeweiligen Variablen ausgeprägt sein dürfen, sodass keine Laufzeitfehler resultieren.
Last changed6 months ago