Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier. Eine Programmiersprache ist eine formale Sprache zur Darstellung (Notation) von Computerprogrammen . Sie vermittelt dem Computersystem durch von Menschen geschriebenen Text genaue Angaben zu einer von internen Verarbeitungsschritten beteiligten Daten und deren in Abhängigkeit von internen oder externen Ereignissen.
Da digitale Computer intern nur die Werte 0 und verarbeiten wäre es nach heutigen Maßstäben extrem und mühsam die vielen Formen der Informationsverarbeitung Binärzahlen einzugeben (zu kodieren). Daher haben sich den letzten Jahrzehnten Verfahrensweisen etabliert nach denen häufig verwendete Zahlen und Zeichen und häufig grundlegende Operationen in symbolischen Befehlen angibt. Eine technische Einrichtung übersetzt dann diese Angaben in Daten einfachste Datenänderungsbefehle und Kontrollanweisungen die der dann schließlich ausführt.
Wird ein Programmtext als Ganzes übersetzt spricht man in Bezug auf den von einem Compiler . Der Compiler ist selbst ein Programm als Dateneingabe den menschenlesbaren Programmtext bekommt und Datenausgabe den Maschinencode liefert der direkt vom Prozessor verstanden wird (z.B. Objectcode EXE-Datei) oder einer Laufzeitumgebung (z.B. JVM oder .NET ) ausgeführt wird. Wird ein Programmtext hingegen für Schritt übersetzt und der jeweils übersetzte sofort ausgeführt spricht man von einem Interpreter . Interpretierte Programme laufen meist langsamer als
Eine logische Abfolge von Befehlen in Programmiersprache nennt man allgemein Programm Programmcode oder Quelltext . (Quelltext betont besonders die Lesbarkeit). Dieser von Programmierern verfasst.
Um die üblichen Arten von Informationen Computer abbilden zu können müssen Möglichkeiten zur von Daten oder Datenstrukturen bereitstehen auch als Datentyp bezeichnet. Hierbei kann zwischen typsicheren (zum C++ oder Java ) und typenlosen Sprachen (zum Beispiel JavaScript Tcl oder Prolog ) unterschieden werden. Bei typsicheren Sprachen sind entweder vordefinierte Einheiten für einzelne Zahlen ( Byte Integer Word etc.) und Zeichen ( Char ) oder auch zusammengesetzte für Daten Wörter sensorische Information und so weiter (Strukturen Klassen). besteht auch die Möglichkeit zusammengesetzte Objekte oder aufzubauen und als neuen Typ zu vereinbaren (etwa Arrays Listen Stacks Dateien). Die typenlosen Sprachen behandeln oftmals alle als Zeichenketten und kennen für zusammengesetzte Daten eine Liste (zum Beispiel Perl ).
Konzeptionell ist ein programmierbarer Rechner weit als eine Sammlung von Daten und auch starre Rechenmaschine. Vielmehr wird angegeben wie der mit variablen internen oder externen Daten zu hat. Elementare Anweisungen geben über Schlüsselwörter (key an WANN WAS WIE geändert werden soll. Sprache enthält eine WENN-DANN-artige Anweisung die letztlich mit dem Sprungbefehl ( GOTO ) die Universalität bereitstellt um allgemein auf Fälle reagierende Programme schreiben zu können. Falls für Schleifen mit Bedingungen (Bedingung zuerst dann oder: erst Anweisungsgruppe und dann Bedingung) zur stehen kann auf den Sprungbefehl vollständig verzichtet Niklaus Wirth hat dies mit Pascal gezeigt.
Der Kern der Bezugnahme ist die von Speicherplatz als so genannte Variable . Weitere Bezugnahmen sind Zeiger auf solche oder Variablengruppen. Auch Befehlsgruppen werden im Programm Namensaufruf als Prozedur oder Funktionsaufruf verfügbar gemacht. diese Weise wird durch Symbole einerseits eine Variabilität erreicht und durch Referenz auf vorhandene oder Datenteile andererseits ein hohes Maß an erreicht. Viele anwendungsbezogene Sprachen integrieren typische Aufgaben aufrufbare Befehle.
Für die oben genannten Zwecke hat Sprache meist eine besondere Philosophie entwickelt. Es der eine oder andere Aspekt besonders betont. Datenstrukturen oder Freiheit in der Notation oder was Zeigerstrukturen angeht.
Die meisten Sprachen bieten eine gute fordern aber auch ein hohes Maß an bezüglich Fehlerfreiheit. Programmiersprachen sind nicht fehlertolerant was Hilfen aber abgemildert ist. Einige wenige Sprachen große gestalterische Freiheiten bis hin zum sich verändernden Programm: dazu gehört Maschinensprache und auch
Die Entwicklung von Programmiersprachen selbst ist Aufgabe der Informatik. Die syntaktische Definition einer wird meist in der formalen Notation Backus-Naur-Form sowie Kontextbedingungen angegeben. Eine vollständige Spezifikation Programmiersprache in einem einzigen Kalkül ist Forschungsgebiet erst ansatzweise gelungen.
Erste Arbeiten stammen bereits von Lady Countess of Lovelace ( 1815 - 1852 Assistentin von Charles Babbage ) die als erste das Prinzip der Programmierbarkeit erkannte. Dies entwickelte sich erst spürbar mit Entwicklung der ersten elektronischen Rechenmaschinen und Verwendung der booleschen Algebra .
Meilensteine sind ca. 1937 Patente von Konrad Zuse die die beschreiben die später als Von-Neumann-Maschine bekannt wird sowie 1945 die Fertigstellung von Plankalkül durch Zuse. Die ersten praktisch eingesetzten sind FORTRAN ( 1954 John Backus) COBOL ( 1959 Grace Hopper ) LISP (1959 McCarthy) ALGOL-60 ( 1960 Strukturierte Programmierung)) und weitere (siehe Tabelle).
Inzwischen ist eine riesige Zahl von entstanden und es gibt einen evolutionären Prozess gegenseitiger Adaptierung. Eine wichtige Rolle spielen dabei die Standardisierungs-Organisationen ( ISO ). Die vorgenannten Sprachen existieren bis heute.
Die Entwicklung hat dahin geführt dass Universalisten am weitesten verbreitet sind d.h. diejenigen (wie C++ ) die weitestgehend alle wichtigen Aspekte integriert Hierzu gehören auch neuere Konzeptionen wie die objektorientierten Programmierung die Daten- Prozedur- und Referenzaspekte dem einzigen Konzept des Objekts vereinigt.
Neuere integrierte visuelle Entwicklungsumgebungen haben deutliche gebracht was Aufwand an Zeit Kosten (und angeht. Bedienoberflächen lassen sich meist interaktiv gestalten Codefragmente sind per Klick direkt erreichbar.
Weitere Arbeitserleichterungen sind vorgefertigte Komponenten und mit wiederverwendbarem Code. Dazu kann objektorientierte Methodik die Komplexität von Programmen erheblich reduzieren. Diese markieren gleichzeitig den Übergang von einer eher Kunst zu einem mehr industriell organisierten Prozess.
Maschinensprache ist der direkt auf einem Prozessor Code und in diesem Sinne keine Programmiersprache. Prozessorarchitektur hat eine eigene unterschiedliche Maschinensprache.
Assemblersprachen gehören immer direkt zu ihrer Maschinensprache. Die Maschinenbefehle werden jedoch in einer Form geschrieben. Weiter wird mittels Symbolen adressiert absoluten Adressen werden vom Assembler errechnet. Auch symbolische Konstanten benutzt und Makros die häufig Befehlsfolgen repräsentieren definiert werden.
LISP verwendet als konzeptionelle Hauptstruktur Listen. Auch Programm ist eine Liste von Befehlen die Listen verändern. FORTH verwendet als konzeptionelle Hauptstruktur Stacks und
Smalltalk Eiffel Modula-3 C++ Java C# Delphi/ObjectPascal und Oberon sind objektorientierte Sprachen. In objektorientierten Programmiersprachen Datenstrukturen und Methoden die auf diesen Datenstrukturen in Klassen gekapselt.
Bei regelbasierten Sprachen wie OPS-5 oder Prolog werden Regeln gegen eine Datenmenge auf Instanziierbarkeit geprüft. Aus allen Regelinstanziierungen wird eine alle) ausgewählt und die zur Regel gehörenden werden ausgeführt.
Daneben wird der Begriff Visuelle Programmierung auch für Programmiersprachen benutzt bei denen Programmstruktur graphisch in Diagrammen erzeugt wird. Diese sich jedoch nicht auf breiter Basis durchgesetzt.
Programmieren ist eine anspruchsvolle Tätigkeit und erfordert Ausdauer abstraktes Denkvermögen Kreativität und hohe Lernbereitschaft. Unterschiedlichste Aufgaben müssen die Symbole der Programmiersprache transferiert werden.
Das Programmieren als dieses reine Kodieren nur ein Teil der Tätigkeit eines guten der zum gesamten Softwareentwicklungsprozess beitragen können sollte: Analyse Entwurf Prototyping Realisation Testen Einführung Dokumentation Konsolidierung. Erheblichen Aufwand nimmt auch das genannte Debuggen ein also die Diagnose oder Fehlersuche.