ric
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| ric [2026/05/12 19:33] – created riccardo | ric [2026/05/12 20:15] (current) – riccardo | ||
|---|---|---|---|
| Line 7: | Line 7: | ||
| Während die ersten Programmiersprachen noch unmittelbar an den Eigenschaften der jeweiligen Rechner ausgerichtet waren, werden heute meist [[problemorientierte]] oder auch (allgemeiner) [[höhere Programmiersprachen]] verwendet, die eine maschinenunabhängigere und somit für den Menschen leichter verständliche Ausdrucksweise erlauben. In diesen Sprachen geschriebene Programme können automatisiert in [[Maschinensprache]] übersetzt werden, welche unmittelbar von einem [[Prozessor]] ausgeführt werden kann. Zunehmend kommen auch [[visuelle Programmiersprachen]] zum Einsatz, welche den Zugang zu Programmiersprachen erleichtern. | Während die ersten Programmiersprachen noch unmittelbar an den Eigenschaften der jeweiligen Rechner ausgerichtet waren, werden heute meist [[problemorientierte]] oder auch (allgemeiner) [[höhere Programmiersprachen]] verwendet, die eine maschinenunabhängigere und somit für den Menschen leichter verständliche Ausdrucksweise erlauben. In diesen Sprachen geschriebene Programme können automatisiert in [[Maschinensprache]] übersetzt werden, welche unmittelbar von einem [[Prozessor]] ausgeführt werden kann. Zunehmend kommen auch [[visuelle Programmiersprachen]] zum Einsatz, welche den Zugang zu Programmiersprachen erleichtern. | ||
| + | |||
| + | {{ : | ||
| Bei [[deklarativen Programmiersprachen]] ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im [[Quelltext]] ausformuliert/ | Bei [[deklarativen Programmiersprachen]] ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im [[Quelltext]] ausformuliert/ | ||
| + | |||
| + | |||
| + | =====Übersicht===== | ||
| + | |||
| + | Die Anweisungen eines Programms werden meist mittels einfacher [[Texteditoren]] erzeugt; man nennt sie den [[Quelltext]] (oder auch Quellcode). Um auf einem Computer ausgeführt zu werden, muss der Quelltext in die [[Maschinensprache]] dieses Computer(typ)s übersetzt werden. Diese ist im Gegensatz zu [[höheren Programmiersprachen]] und zur [[Assemblersprache]] ein für Menschen schwer lesbarer Binärcode. Wird von Programmierung in Maschinensprache gesprochen, so ist heute meist die Assemblersprache gemeint. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Die [[Übersetzung]] in Maschinensprache kann entweder vor der Ausführung durch einen [[Compiler]] oder – zur [[Laufzeit]] – durch einen [[Interpreter]] oder [[JIT-Compiler]] geschehen. Oft wird eine Kombination aus beiden Varianten gewählt, bei der zuerst der Quelltext des Programms in einen [[Zwischencode]] übersetzt wird, welcher dann zur [[Laufzeit]] innerhalb einer Laufzeitumgebung in Maschinencode überführt wird. Dieses Prinzip hat den Vorteil, dass derselbe Zwischencode auf verschiedenen Plattformen ausführbar ist. Beispiele für einen solchen Zwischencode sind der Java-[[Bytecode]] sowie die [[Common Intermediate Language]]. | ||
| + | |||
| + | Programmiersprachen bieten meist mindestens | ||
| + | |||
| + | * [[Ein-/ | ||
| + | * [[Deklaration]] von [[Variablen]] und [[Feldern]], | ||
| + | * mathematische Grund- und Standardfunktionen; | ||
| + | * Grundfunktionen zur Zeichenkettenverarbeitung; | ||
| + | * Steueranweisungen für [[bedingte Ausführung]], | ||
| + | |||
| + | Meist ist es möglich, aus diesen Grundfunktionen höhere Funktionen zu erstellen und diese als Bibliothek wiederverwendbar zu kapseln. Von dort zu einer höheren oder problemorientierten Sprache zu gelangen, ist kein großer Schritt mehr. So gab es schon bald eine große Zahl an Spezialsprachen für die verschiedensten Anwendungsgebiete. Damit steigt die [[Effizienz]] der Programmierer und die [[Portabilität]] der Programme, meist nimmt dafür die [[Verarbeitungsgeschwindigkeit]] der erzeugten Programme ab, und die Mächtigkeit der Sprache nimmt ab: Je höher und komfortabler die Sprache, desto mehr ist der Programmierer daran gebunden, die in ihr vorgesehenen Wege zu beschreiten. | ||
| + | |||
| + | Sprachen sind verschieden erfolgreich – manche „wachsen“ und finden zunehmend breitere Anwendung; immer wieder sind auch Sprachen mit dem Anspruch entworfen worden, Mehrzweck- und Breitbandsprachen zu sein, oft mit bescheidenem Erfolg [[(PL/1, Ada, Algol 68)]]. Verschiedene Dienste versuchen, die Verbreitung der verschiedenen Sprachen zu messen; bekannt sind beispielsweise der [[TIOBE-Index]], | ||
| + | |||
| + | |||
| + | =====Panorama===== | ||
| + | |||
| + | Die Bedeutung von Programmiersprachen für die [[Informatik]] drückt sich auch in der Vielfalt der Ausprägungen und der Breite der Anwendungen aus. | ||
| + | |||
| + | * Maschinensprache, | ||
| + | * [[Höhere Programmiersprachen]] erlauben komfortableres, | ||
| + | * [[Skriptsprachen]] dienen zur einfachen Steuerung von Rechnern, wie bei der [[Stapelverarbeitung]]. | ||
| + | * [[Sprachen mit visuellen Programmierumgebungen]] erleichtern die graphische Gestaltung von [[Benutzeroberflächen]]. | ||
| + | * [[Esoterische Programmiersprachen]] sind experimentelle Sprachen mit unüblichen Programmierkonzepten und/oder Berücksichtigung themenfremder Aspekte, z. B. ästhetisches Aussehen des Quellcodes. | ||
| + | * [[Grafische Programmiersprachen]] sollen einen besonders leichten Zugang zum Programmieren bieten; statt Quelltext zu schreiben, kann das Programm beispielsweise aus Verarbeitungsblöcken zusammengeklickt werden. | ||
| + | * [[Minisprachen]] sollen Kinder früh ans Programmieren heranführen (nicht zu verwechseln mit minilanguages, | ||
| + | |||
| + | Umgangssprachlich wird auch in anderen Bereichen von Programmiersprachen gesprochen. Nachfolgende Sprachen sind jedoch nicht für die Beschreibung von Algorithmen und allgemeine Datenverarbeitung entworfen, also keine [[Allzweck-Programmiersprachen]]: | ||
| + | |||
| + | * [[Auszeichnungssprachen]] werden für die Formatierung von [[Texten]] und [[Dateien]] verwendet. | ||
| + | * CNC-Programmiersprachen sind (oder dienen der Erzeugung von) Steuerungsinformationen für Werkzeugmaschinen. | ||
| + | * [[Datenbanksprachen]] sind für den Einsatz in und die Abfrage von [[Datenbanken]] gedacht. | ||
| + | * [[Seitenbeschreibungssprachen]] sowie sonstige [[Beschreibungssprachen]] (z. B. [[VHDL]]) sind eine imperative Form eines [[Dateiformats]]. | ||
| + | * [[Stylesheet-Sprachen]] werden verwendet, um das Erscheinungsbild zu bestimmen | ||
| + | |||
| + | Derartige Sprachen fallen unter die [[domänenspezifischen Sprachen]]. | ||
| + | |||
| + | |||
| + | =====Anweisungskategorien===== | ||
| + | |||
| + | Die Anweisungen von Programmiersprachen (Beispiele siehe [[hier]]) lassen sich nach folgenden Gruppen klassifizieren: | ||
| + | |||
| + | * [[Eingabe- und Ausgabe]]-Befehle – lesen Daten von der Tastatur, von einer [[Datei]] oder aus anderen Quellen ein oder sie geben sie auf/über ein bestimmtes Ausgabegerät (Bildschirm, | ||
| + | * [[Zuweisungen]] und Berechnungen – verändern oder erzeugen Dateninhalte. | ||
| + | * [[Kontrollflussanweisungen]]: | ||
| + | * [[Deklarationen]] – reservieren Speicherplatz für [[Variablen]] oder [[Datenstrukturen]] unter einem fast frei wählbaren Namen. Über diesen Namen können sie später angesprochen werden. | ||
| + | * Aufrufe „programm-externer“ Unterroutinen/ | ||
| + | |||
| + | |||
| + | =====Übersetzer===== | ||
| + | |||
| + | → Hauptartikel: | ||
| + | |||
| + | Um ein in einer bestimmten Programmiersprache erstelltes Programm ausführen zu können, muss anstatt dessen Quellcode eine äquivalente Folge von Maschinenbefehlen ausgeführt werden. Das ist notwendig, da der [[Quellcode]] aus Zeichenfolgen besteht (z. B. „A = B + 100 * C“), die der Prozessor nicht „versteht“. | ||
| + | |||
| + | Die in der Geschichte der Computertechnik und der [[Softwaretechnologie]] eingetretenen Entwicklungssprünge brachten auch unterschiedliche Werkzeuge zur Erzeugung von Maschinencode, | ||
| + | |||
| + | In Bezug auf die Art und den Zeitpunkt, wie der Computer zu einem äquivalenten Maschinencode kommt, können zwei Prinzipien unterschieden werden: | ||
| + | |||
| + | * Wird ein Programmtext als Ganzes „übersetzt“, | ||
| + | * Wenn abhängig vom Programmtext während der Ausführung entsprechende Maschinencodeblöcke ausgeführt werden, spricht man von einer interpretierten Sprache. Das Programm wird in einer [[Laufzeitumgebung]] (z. B. veraltete [[JVM]]) interpretiert und je nach Programmbefehl ein entsprechender Maschinenbefehlblock ausgeführt. | ||
| + | |||
| + | Daneben existieren verschiedene Mischvarianten: | ||
| + | |||
| + | * Bei der „Just-in-Time-Kompilierung“ wird der Programmtext direkt vor jedem Programmlauf neu übersetzt; ggf. werden erst während des (interpretierten) Programmlaufs einzelne Programmabschnitte kompiliert. | ||
| + | * Zum Teil erzeugen Compiler einen noch nicht ausführbaren Programmcode, | ||
| + | * Mit [[Precompilern]] können spezielle, in der Programmiersprache selbst nicht vorgesehene Syntax-Konstrukte (zum Beispiel [[Entscheidungstabellen]]) bearbeitet und, vor-übersetzt in die gewählte Programmiersprache, | ||
| + | |||
| + | Zur Steuerung des Übersetzens kann der Quelltext neben den Anweisungen der Programmiersprache zusätzliche spezielle [[Compiler-Anweisungen]] enthalten. Komplexe Übersetzungsvorgänge werden bei Anwendung bestimmter Programmiersprachen / [[Entwicklungsumgebungen]] durch einen [[Projekterstellungsprozess]] und die darin gesetzten [[Parameter]] gesteuert. | ||
ric.1778607193.txt.gz · Last modified: by riccardo
