Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen 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ächtige Programme untaugliches Prinzip ● zweite Stufe der Programmiersprachenentwicklung wurde schnell erklommen Assemblersprachen – 2. Generation ● assemble – montiernen, zusammensetzen ● wurde in mehreren Varianten entwickelt ● Dialekte hatten zwei Dinge gemeinsam: 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 auf unterschiedliche Rechnern 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 auch Benutzer mit wenig Ahnung sollen Programme schreiben können 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 ● Was ist ein Programmierparadigma? • • Sind die zwei Hauptrichtungen der Programmiersprache Sind dafür da, dass Programmiersprachen mehr oder weniger die Basiskriterien, Lesbarkeit des Codes, Redudanzfreiheit, Modularität und Nebenwirkungsfreiheit eingehalten werden 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 Imperative Programmierparadigmen ● Strukturierte Programmierung ● Prozedurale Programmierung ● Modulare Programmierung ● Objektorientierte Programmierung 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. Beispiele für Objektorientierte Programmierung • Smalltalk - Ruby • Ada 95 ● Java ● C++ ● C# ● Python ● Perl ● PHP 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 Vorteile der deklarativen Programmierparadigmen ● ● ● Es gibt keine Nebeneffekte Beweise zur Korrektheit von Ergebnissen sind uneingeschränkt durchführbar Deklarative Programmierung ist nicht von irgendeiner Rechnerarchitektur abhängig Vergleich zwischen Java und einem Logistikprogramm Logistik Java