Programmiersprachen und Programmierkonzepte Die Geschichte der Programmiersprachen: • Anfänge vor 200 Jahren • Programmierbare Webmaschinen von Jacquard (Lochkartensteuerung) • Mit den Entwicklungen von Konrad Zuse und John von Neumann zur Computerarchitektur fiel Startschuss zum Aufstieg der Informatik und Programmierung (1940er Jahre) Zwischen Null und Eins - 1. Generation: • CPU (Hauptprozessor) arbeitet nur mit den Zuständen Strom an und Strom aus, jede Anweisung muss mit Symbolen 0 und 1 als Synonym auskommen • Daten und Befehle wurden binär eingegeben (lange Reihen von Nullen und Einsen) → Maschinensprache • Nachteil: Komplexe Aufgaben zu notieren nahe zu unmöglich • Erste Programmierer mussten Code schreiben, die lang und unübersichtlich waren → Für mäch?ge Programme untaugliches Prinzip • zweite Stufe der Programmiersprachenentwicklung wurde schnell erklommen Assemblersprachen – 2. Generation: • assemble – montiernen, zusammensetzen 1. Stark an der Maschine orientiert 2. Befehle als Buchstabenkombination nach Regeln der Mnemotechnik • Verknüpfung von neuen mit vorhandenen Programmteilen → exe-Datei • bis in 90er – Jahre des 20. Jahrhunderts wurden Betriebssysteme, Computerspiele etc. in Assemblersprache geschrieben (heute teilweise auch noch) • Vorteil: Assembler ist maschinennah, Übersetzung wesentlich weniger Zeit als in Hochsprachen, manche Aufgaben auch präziser und schneller zu formulieren • Nachteil: Zu langer Code, geschränkte Einsatzmöglichkeit Die Hochsprachen – 3. Generation: • komplexere Aufgaben und maschinenarchitekturen erforderten neue Programmiersprachen, mussten folgenden Ansprüchen genügen: 1. Maschinenunabhängige Programmierung – Einsatz der Programme unterschiedliche Rechnern auf 2. Projekte und Programme besser strukturiert, auch um Lesbarkeit zu verbessern 3.Programmierer sollte von Rechnerspezialkenntnissen entlastet werden, um sich auf die Aufgabenstellung für die Programmierung und deren Lösung zu konzentrieren • erste Hochsprache FORTRAN für technisch-wissentschaftliche Anwendungen, entwickelt 1954 von John Bacus • es folgten LISP ( 1959 von John Mc Carthy) und COBOL (1959 von Grace Hopper) • großer Schritt war die Entwicklung von ALGOL, etliche Sprachen basieren darauf wie Pascal, Basic oder C Die 4. Generation: • Fourth Generation Language (4GL) vereint Programmiersprachen und Programmierumgebungen, die unterschiedliche Zwecke verfolgen Die wichtigsten Programmiersprachen unserer Zeit: C (C++ und C#) • häufigste eingesetzte Programmiersprache • Betriebssysteme wie Windows, Linux oder Mac OS X überwiegend in C verfasst • Erfinder: Dennis Ritchie (Oktober 2011 verstorben) • Entwicklung: 1969 bis 1973 Java • Erfinder: Computerhersteller Sun Microsystems • Entwicklung: 1991 bis 1995 • zweithäufigste Programmiersprache • Vor allem im Internet, aber auch bei Spielen etc. eingesetzt • Weitere wichtige Programmiersprachen sind PHP, JavaScript und Python Programmiersprachen Definition: • Sind aus Wörtern oder Wortteilen meist aus dem Englischen und Trennzeichen zusammengesetzt • Von Sprache zu Sprache gibt es für gleiche Zeichen verschiedene Bedeutungen • Kommen mit geringem Wort-und Zeichensatz aus • Ihre Zeichen kommen in der Regel aus der Mathematik Imperative Programmierparadigmen: • Programm mit linearer Folge von Befehlen arbeitet der Rechner in definierter Reihenfolge ab • Durch auf Prozessorebene angegebenen Mikrocode verfährt der Rechner mit jeweiligen Daten • Befehle manipulieren den Zustand der Speicherbereiche, die Daten zur Verarbeitung vorhalten • Zeitliche Abfolge ist durch Reihenfolge im Programm vorgegeben Objektorientierte Programmierung: • Daten und Funktionen werden möglichst eng in einem Objekt zusammengefasst und nach außen hin gekapselt • Implementierungsdetails werden bewusst verborgen, damit Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können. • Objektorientierte Programmierung ist heute das am weitesten verbreitete Prinzip Deklarative Programmierparadigmen: • Eine Idee der jüngeren Programmiergeschichte • Im Gegensatz zu den imperativen Programmierparadigmen fragt man in der deklarativen Programmierung nicht nach dem „Wie“, sondern nach dem „Was“ • Der Lösungsweg wird nicht programmiert, sondern man gibt an, welches Ergebnis erzielt werden soll