5.3. Programmiersprachen - Interpreter und Compiler history menue Letztmalig dran rumgefummelt: 21.08.25 08:50:53
Ein Programm ist die Umsetzung eines Algorithmus und der zugehörigen Datenbereiche in eine Programmiersprache. Während Algorithmen relativ allgemein beschrieben werden können, sind Programme wesentlich konkreter.
Nach DIN 44300 ist ein Programm eine „nach den Regeln der verwendeten Programmiersprache festgelegte syntaktische Einheit aus Anweisungen und Vereinbarungen, welche zur Lösung einer Aufgabe notwendige Elemente umfasst“. Eng mit dem Programm verknüpft sind Begriffe wie: Algorithmus, Daten, Datei, Variablen Datentypen, Resultate, Software.
Nicht unbedingt ist der Begriff des Programms an den Computer gebunden (wenngleich er heute meist damit im Zusammenhang zu sehen ist!!!), so gibt es Veranstaltungsprogramme, das Fernsehprogramm (wahrscheinlich das bekannteste), selbst der Fahrplan der Bundesbahn repräsentiert ein Programm eine Folge von Schritten (deren Ablauf) nach einer geplanten Reihenfolge.

1. Programmiersprachen historisch
2. Programmfehler
3. Compiler und/oder Interpreter
4. Laufzeitverhalten
5. Programm-Dokumentation
6. Maschinenprogrammierung
7. Echtzeitverhalten und Echtzeitsysteme
8. Programmiersysteme an unserer Schule
9. Verwandte Themen

die Informatikseiten

Programmiersprachen-Logo

begrenzt verwendbar - selbst aufpassen, ab welcher Stelle es Blödsinn wird ;-)

Wissen für Fortgeschrittene der Informatik

Informatik-Profi-Wissen

Quellen:

Algorithmentheorie

Komplexität, Mächtigkeit und Aufwand

NP-vollständige sowie NP-schwere Probleme

Probleme & Problemlösungsverfahren

die Komplexität eines Problems & Komplexitätsklassen

Worst-Case-Denken

Jeder, der mit einer Rechenanlage, egal welcher Größe oder Leistungsfähigkeit, arbeiten will, benötigt dazu eine Programmiersprache. Sie bildet praktisch die Brücke zwischen moderner Rechentechnik und ihrer Anwendung. Darunter ist eine eindeutige Sprache zur Formulierung von Programmen - auch Software genannt - für Rechner zu verstehen. Bestimmt wird Sie durch eine Gruppe von Symbolen und Festlegungen, die Art und Reihenfolge angeben, in der Symbole zu einer Mitteilung kombiniert werden können. Bei der Programmiersprache spricht man in diesem Zusammenhang von Syntax, Semantik und Pragmatik. Basissprache für jeden Rechner - ist seine Maschinensprache, die von ihm direkt verstanden wird. Auf diese Ebene - muss jede andere höhere Programmiersprache übersetzt werden, ehe sie verarbeitet werden kann. Das erfolgt durch einen sogenannten Compiler, ein Programm, das in den Rechner eingegeben wird. Programmiersprachen sind maschinen- bzw. problemorientiert. Eine maschinenorientierte ist in ihrem Aufbau der Maschinensprache sehr ähnlich und erfordert nur einfache Übersetzungsarbeiten. Die problemorientierten Programmiersprachen erlauben eine leichtere, maschinenunabhängige Formulierung von Programmen. Diese können zum Beispiel direkt in die Maschinensprache übersetzt weiden. Gegenwärtig spielen solche problemorientierten Programmiersprachen wie FORTRAN 77 (für CAD/CAM-Anwendungen), BASIC für einfache Probleme der Datenverarbeitung, PASCAL, COBOL und MODULA 2 in der Programmierung eine wichtige Rolle. BASIC beispielsweise hat mit der Einführung von Mikrorechnern weite Verbreitung gefunden. Fast alle Kleincomputer lassen sich in dieser Sprache programmieren. Die Grundelemente einer jeden Programmiersprache können im Selbststudium anhand der jeweiligen Beschreibung der Sprache erlernt werden. Beherrschen lässt sie sich nur durch praktischen Gebrauch. Unterstützung bietet dabei ein Compiler, der auch Fehler des Programmierers ermittelt. Durch diesen Dialog dringt der Programmierer immer tiefer in die Sprache ein und erlernt schrittweise komplizierte Sprachkonstruktionen. Dabei zeigt sich: Eine Programmiersprache ist ebenso wie eine Fremdsprache nur durch den aktiven Gebrauch so zu erlernen, dass man alle ihre Vorzüge umfassend nutzen kann. Das wiederum hat erhebliches Gewicht, um solche Schlüsseltechnologien wie die Mikroelektronik mit größerer Effektivität anzuwenden.

W. Ollhoff VEB Kombinat Robotron 1986 in Zeitschrift FUNKAMATEUR Heft 5/1986 S. 243


1. Programmiersprachen historisch history menue scroll up

Die Anfänge der Programmierung gehen weit ins vorletzte Jahrhundert zurück und wurden, oh Wunder, von einer Frau vollzogen. Ada Lovelace - eine Bekannte von Charles Babbage bemühte sich darum, für dessen Analytical Engine eine Berechnungsvorschrift zur
Stammbaum der Programmiersprachen ... ich lerne Programmieren Profi ... 2020 - die beliebtesten Amateur-Programmiersysteme

Stammbaum der Programmiersprachen

Tutorials Programmierung

derzeit aktuelle Programmiersprachen

  • Javascript

  • Java

  • C und C++

  • C# (C Sharp)

  • Visual Basic

  • PHP

  • Python

  • Scratch

  • Delphi/Object Pascal/Lazarus

  • Swift

  • SQL

  • HTML & CSS (Vorsicht Hater!)

Zudem ist die Lazarus Component Library (LCL) sehr ähnlich zur Enbarcadero Delphis VCL (Visual Component Library) aufgebaut. Die meisten Units, Klassen und Eigenschaften haben denselben Namen und dieselbe Funktionalität. Auch für Entwickler proprietärer Software ist Lazarus geeignet, da die LCL-Komponentenbibliothek unter den Bedingungen einer modifizierten LGPL (Lesser General Public License) lizenziert wird (siehe: https://www.gnu.org/licenses/lgpl-3.0.en.html). Lazarus ermöglicht sowohl die schnelle Entwicklung (Rapid Application Development, RAD) von Kommandozeilen-Tools (CLI), als auch die Erstellung von grafischen Bedienoberflächen (GUI). Für die Entwicklung von GUI‘s bietet Lazarus derzeit Unterstützung für die Grafikbibliotheken von Windows, Linux (GTK+ bzw. GTK2), macOS (Qt, Carbon und Cocoa), Windows CE und WinAPI und somit einem hohen Abstraktionsgrad, was den erzeugten Code in Verbindung mit Free Pascal in einem hohen Grad plattformunabhängig macht. Somit ist es für jeden Software-Entwickler reizvoll, ein SoftwareProdukt in einem Betriebssystem zu erstellen (z. B. Windows) und es mit Lazarus unter einem anderen Betriebssystem (z. B. Linux oder macOS) zu laden und erfolgreich zu einer lauffähigen Anwendung zu kompilieren. Das Lazarus-Motto lautet:

2.3.2 Der Free Pascal Compiler Free Pascal (abgekürzt FPC) ist ein freier Compiler für die Programmiersprachen Pascal und Object Pascal. Aktuell und stabil ist die Version 3.0.4. (Stand Mai 2018) Der Free Pascal Compiler ist für viele Betriebssysteme wie Windows, Linux, macOS, OS/2, ZETA oder Windows CE und viele Rechner-Plattformen wie Intel (x86), AMD64, Sun Sparc, ARM oder PowerPC verfügbar. Bei der Entwicklung von Anwendungen, welche mit dem Free Pascal Compiler übersetzt werden, ist man also nicht auf eine einzige Plattform festgelegt. Der Free Pascal Compiler erzeugt direkt lauffähige Anwendungen die nicht auf ein bestimmtes Environment wie Java-Anwendungen (JRE) oder C#-Anwendungen (.Net) angewiesen sind. Neben Lazarus steht mit PascalGUI eine weitere, kleine IDE für den Free Pascal Compiler zur Verfügung. Diese unterstützt die Entwicklung für das Betriebssystem Android auf Plattformen mit ARM, Intel (x86) und MIPS Prozessoren. Zudem gibt es eine textbasierte IDE die Borlands Turbo-Pascal 7 zum Verwechseln ähnlich sieht. Für die Entwicklung von Desktop-Anwendungen mit graphischer Bedienoberfläche (GUI) ist jedoch Lazarus die IDE der Wahl. 2.4 Rapid Application Development (RAD) Mit dem Ziel, den bisherigen, phasenorientierten Softwareentwicklungsprozess zu beschleunigen und flexibler zu gestalten, entwickelte Barry Boehm in den 1980er Jahren mit dem Rapid Application Development (RAD) ein prototypisches Vorgehensmodell. Berühmt wurde das Rapid Application Development aber erst Anfang der 1990er Jahre, als die von James Martin entwickelte Methode des Prototyping - welche auf eine iterative Entwicklung fußt, aufkam.


2. Programmierfehler history menue scroll up
Nicht nur für die generelle Computerarbeit - hier, beim Programmieren, gilt ganz besonders der Lehrsatz der Informatik: das Problem sitzt immer vor dem Computer - braucht natürlich seine Zeit, bis das der Teutone so mitkriegt ;-)
Hier unterscheidet man zwischen logischen und syntaktischen Fehlern - die Syntax prüft der Compiler oder Interpreter selbst und mit etwas Erfahrung kann man solcherart Fehler relativ schnell beheben. Logische Fehler sind schon eine Nummer unangenehmer, denn sie verstecken sich mitunter in nicht hinreichend ausgetesteten Programmzweigen

3. Compiler und Interpreter history menue scroll up
Das Ziel ist für beide System das selbe: ein Programm zumindest so lange in Maschinensprache übersetzen und dann abarbeiten, wie es fehlerfrei ist - das erledigen aber beide Systeme auf ganz verschiedene Art und Weise. Während ein Compiler den gesamten Quelltext erstfehlerfrei benötigt, um ihn zu übersetzen, nimmt ein Interpreter sich die Aufgabe schrittweise vor - also Zeile für Zeile. Beide erzeugen einen Code, der von einem Zielprozessor übersetzt werden kann. Nur, wer das wirklich möchte, befasst sich schon an der Stelle mit Mikroprozessoren und Zahlensystemen - Schwerpunkt Binärsystem, aber klar sollte sein: auf absehbare Zeit erledigen diese beiden die gesamte Arbeit, auch dann, wenn sie zwischenzeitlich Controller heißen.

baute den ersten praktisch anwendbarenCompiler: Hopper, Grace

 

Was ist eigentlich ein Compiler?

Was ist eigentlich ein Interpreter?

Logo für die Compiler-Systeme

Logo für die Interpreter-Systeme

Wesen des Compilersystems:

Ist eine hochkomplexe "Übersetzungsvorschrift, welche das gesamte Programm in einem Block in hexadezimalen Code zu übersetzen versucht und diesen auf einem separaten Speicherbereich des Rechners zu hinterlegen. Wenn der Prozess richtig abgeschlossen wurde, startet das System automatisch diese Anwendung.
In der Praxis wird auf Hochsystemen zusätzlich noch eine startbare Datei generiert bzw. Scriptanweisungen für einen evtl. entfernt laufenden Server, welche auch später ohne neuen Compilerlauf wieder gestartet werden können.

Vorteile des Compilersystems:

ist der Programmcode einmal generiert, so erfolgt die Abarbeitung "schnell" und das Übersetzungssystem ist zur Laufzeit nicht mehr erfoderlich - es ist angehalten

Wesen des Interpretersystems:

Ist eine hochkomplexe "Übersetzungsvorschrift, welche einzelne richtig geschriebene Programmabschnitte einzeln in hexadezimalen Code zu übersetzen versucht und diesen auf einem separaten Speicherbereich des Rechners hinterlegt.
In der Praxis wird auf Hochsystemen ein kleiner erfolgreich übersetzter Block aus dem RAM direkt abgearbeitet. Der nächste Block muss dann erst vor Abrbeitung wieder erfolgreich überstzt werden.

Nachteile des Interpretersystems:

da alles blockweise übersetzt werden muss und jeder einzelne richtig konvertierte Block nach der Übersetzung abgearbeitet wird , erfolgt die Abarbeitung "langsa" und das Übersetzungssystem ist ständig mit aktiv


4. Anforderungen an ein Programm und an den Programmierer history menue scroll up
 
 

5. Programm-Dokumentation history menue scroll up
 
Pseudocode-Notation
Struktogramme
Beispiel für eine Programm-Dokumentation zum Post'schen Korrespondenzproblem hier

6. Maschinenprogrammierung history menue scroll up

 
 


7. Echtzeitverhalten und Echtzeitsysteme history menue scroll up

 
 


8. Programmiersysteme an unserer Schule history menue scroll up

Die Palette ist relativ groß und zwischenzeitlich decken wir auch alle relevanten Grundsysteme ab - nutzen zwar noch aus alter Gewohnheit imperative Strukturen, lenken aber um auf Objektorientierung sowie Datenbankenanbindung und Webfähigkeit - also Forderungen, wie sie ganz praktisch und aus der Wirtschaft gestellt werden.

... Delphi - heute RAD-Studio

klassische BASIC-Programmierung - der Wissensspeicher

... der AVM - BASCOM-Compiler

PASCAL-Programmierung

... der Microsoft- VCBA-BASIC Interpreter

... das alte KC-85/X-BASIC

brandneu 2004 im Hause - JAVA

... fast nur bei uns: Just Anather Lanuage

PROLOG-Programmierung seit 2007 - aber dann noch nicht wirklich

... das Programmiersystem für Anfänger - Robot Karol

Scratch

 

... Lazarus

     


9. Verwandte Themen history menue scroll up

Im Begriff Wide-Aera Network läuft ja nun eigentlich technisch die gesamte Informatik zusammen - können und wollen wir gar nicht alles bedienen - aber einiges haben wir und stellen es als Denkanstoß auf diesen Links zur Verfügung. Schnell ist man natürlich im Innenleben der Netzwerke - nur für ganz harte Burschen geeignet ;-)
Bereich höhere Programmiersprachen

Worst-Case-Denken

ASide-Assembler

 
Bereich Datenübertragung

Datenübertragungsverfahren

OSI Referenz-Schichtenmodell

die RS232-Schnitttstelle

Tabelle des UNICODES

Kryptologie

Digitale Signale

Information, Nachricht und Signalbegriff

 

   
Bereich Mikroprozessortechnik und Einchipcontroller

der LC-80

POLYCOMPUTER

Z80-CPU

Mnemonic-Code-Notation

höhere Programmierwerkzeuge

... und so funktioniert ein Computer

 

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Alphabetisch sortierte Dokumentation

FLAG Teile I

FLAG Teile 2

Allgemeine Funktionssymbolik

Der LC-80 Simulator

Microcontroller

   
Bereich Programmierungstechnik

Programme

Programmierung

Software-Engeneering

Datentypen - sind ja auch besond're Typen gewesen ;-)

Logo der Struktogramme

EVA-Prinzip & Objekt-, Attribut-, Operatiosnbeziehung

Modultechnik

Intel-Interrupt-Logo

 



zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost im Juni 2006

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)