Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel 1. Einführung 1.1 Programmierung & Software 1.2 Programmiersprachen Wirtschaftsinformatik II Folie 9 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Grundbegriffe: Programm vs. Software Eine zur Lösung einer Aufgabe vollständige Anweisung zusammen mit allen erforderlichen Vereinbarungen heißt PROGRAMM. Ein PROGRAMM setzt sich aus Befehlen zusammen, die von der Zentraleinheit in logischer Reihenfolge abgearbeitet werden. Die Menge von PROGRAMMEN, zugehörigen DATEN und notwendigen DOKUMENTATIONEN, die zusammengefasst erlauben, mit Hilfe eines Computers Aufgaben zu erledigen, nennt man SOFTWARE. SOFTWARE-ENGINEERING: Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden, Konzepten, Notationen und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen SOFTWARE(-Systemen). Wirtschaftsinformatik II Folie 10 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Software - Charakteristika Software ist ein immaterielles Produkt Software ist schwer zu bewerten Software unterliegt keinem Verschleiß Software ist im allgemeinen leichter und schneller änderbar als ein technisches Produkt Software benötigt keine Ersatzteile Software altert Wirtschaftsinformatik II Folie 11 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Software - Tendenzen Zunehmende Bedeutung im Verhältnis zur Hardware Wachsende Komplexität Nachfragestau 9 Euro-Einführung 9 Jahr 2000-Problematik 60 MOI 50 MOI SPACE SCHUTTLE 40 MOI APOLLO 20 MOI GEMINI MERCURY 10 MOI 1960 1970 1980 1990 Strategischer Wettbewerbsfaktor Zunahme der Standardsoftware im Vergleich zur Individualsoftware Zunehmende Fremdentwicklung im Vergleich zur Eigenentwicklung Zunehmende Altlasten Zunehmende Qualitätsanforderungen Wirtschaftsinformatik II Folie 12 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Software - Systematisierung Software Software Systemsoftware Systemsoftware Anwendungssoftware Anwendungssoftware (Basissoftware) (Basissoftware) (application (application software) software) Betriebssysteme Betriebssysteme Technisch/Wissenschaftliche Technisch/Wissenschaftliche Programme Programme Steuerprogramme Steuerprogramme Übersetzungsprogramme Übersetzungsprogramme Kommerzielle Kommerzielle Programme Programme (auf (auf betriebliche betriebliche Fkt. Fkt. bezogen) bezogen) Dienstprogramme Dienstprogramme Systemnahe Systemnahe Software Software Branchenprogramme Branchenprogramme (z.B. (z.B. Datenbankverwaltungssysteme, Datenbankverwaltungssysteme, Kommunikationsprogramme) Kommunikationsprogramme) Programmiersprachen, Programmiersprachen, ProgrammentwicklungsProgrammentwicklungssysteme systeme (CASE-Systeme) (CASE-Systeme) Wirtschaftsinformatik II Folie 13 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Softwareschichten Benutzer Benutzeroberfläche Benutzer Anwendungssoftware Kommunikation CASE DBMS Branchenpakete BetriebsDienstsystem programme Assembler Interpreter Funktional orientierte Pakete Compiler Individuell entwickelte Programme Benutzer Wirtschaftsinformatik II Folie 14 Apr-05 Benutzer Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel 1. Einführung 1.1 Programmierung & Software 1.2 Programmiersprachen Wirtschaftsinformatik II Folie 15 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Programmiersprachen Eine PROGRAMMIERSPRACHE ist eine Künstliche Sprache zum Abfassen von Computerprogrammen (DIN 44300). Programmiersprachen sollen es ermöglichen, den Lösungsweg (Algorithmus) für eine spezielle Problemstellung in einer der Maschine verständlichen Sprache zu formulieren. Wirtschaftsinformatik II Folie 16 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Programmierumgebung Eine PROGRAMMIERUMGEBUNG ist ein Softwaresystem, das eine Sammlung von Werkzeugen, die zur Entwicklung von Software dient, zur Verfügung stellt. Wesentliche Komponenten: 9 TEXTEDITOR: zur Erfassung des Quelltextes 9 ÜBERSETZUNGSPROGRAMME: Programm, das Anweisungen in einer höheren Sprache liest, analysiert und in bedeutungsgleiche Maschinenbefehle umwandelt 9 DEBUGGER: ermöglicht ein schrittweises Abarbeiten des Programms zu Testzwecken 9 HILFESYSTEM: erlaubt die kontextsensitive Abfrage von Informationen zur Programmsyntax u.ä. 9 GUI-BUILDER: Modellierung der Benutzeroberfläche Wirtschaftsinformatik II Folie 17 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Programmierumgebung Visual Basic Übersetzungsprg. Debugger Wirtschaftsinformatik II Folie 18 Apr-05 Texteditor Hilfesystem Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Programmiersprachenstammbaum Wirtschaftsinformatik II Folie 19 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Sprachgenerationen Maschinensprache Sprachen der ersten Generation: MASCHINENSPRACHEN Sprachen der zweiten Generation: ASSEMBLERSPRACHEN Assemblersprachen Sprachen der dritten Generation: HÖHERE PROGRAMMIERSPRACHEN Höhere Programmiersprachen Sprachen der vierten Generation: 4GL-Systeme 4GL-SYSTEME Alternative Sprachrichtungen Alternative Sprachrichtungen: 9 SPRACHEN DER KÜNSTLICHEN INTELLIGENZ (Sprachen der fünften Generation) 9 OBJEKTORIENTIERTE PROGRAMMIERSPRACHEN 9 VISUELLE PROGRAMMIERSPRACHEN Wirtschaftsinformatik II Folie 20 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Maschinensprachen (1. Generation) Maschinenorientierte Sprache Jeder Befehl besteht aus einer Folge der Binärzeichen 0 und 1 entsprechend dem Befehlssatz des jeweiligen Prozessors. Beispiel: Addiere 3+4 (Großrechner) 9 Befehl ´Addition´, Operanden 3, 4: 00011010 0011 0100 4 Befehls- 3 wort unmittelbare Hardware-Orientierung, unverständlich, unübersichtlich, fehleranfällig Wirtschaftsinformatik II Folie 21 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Assemblersprachen (2. Generation) maschinenorientierte Sprache, die den Aufbau der Befehle der Maschinensprache beibehält, die Instruktionsteile jedoch nicht primär verschlüsselt, sondern durch Symbolik (mnemotechnische Abkürzungen) ausdrückt Beispiel: Addiere 3+4 9 Assemblerbefehl: ADD 3, 4 Die Übersetzung in Maschinensprache erfolgt mit Hilfe eines ASSEMBLIERERS (1:1-Übersetzung). optimale Speicherausnutzung und Verarbeitungsgeschwindigkeit enge Hardware-Orientierung, unübersichtlich, fehleranfällig Wirtschaftsinformatik II Folie 22 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Höhere / Prozedurale Programmiersprachen (3. Generation) Weitgehend genormte Sprachen, die für einen speziellen Anwendungsbereich konzipiert (problemorientiert) sind und nahezu unabhängig von einem bestimmten Rechnertyp sind. Die Programmierung erfolgt durch die Formulierung von Algorithmen (Algorithmus = Abfolge von Operationen, die jeweils Daten bearbeiten). Beispiel: Addiere 3+4: Operation SUMME = 3 + 4 Übersetzung in Maschinensprache erfolgt durch einen Compiler/Interpreter (1:n-Übersetzung) schlechtere Performance Wirtschaftsinformatik II Folie 23 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Übersetzungsprogramm I Ein Programm, das nicht in Maschinensprache abgefasst ist, wird QUELLPROGRAMM (QUELLCODE/SOURCECODE) genannt. Ein in Maschinensprache vorliegendes Programm (=Zielprogramm des Übersetzungsvorgangs) heißt OBJEKTPROGRAMM (OBJEKTCODE). Unter einem ÜBERSETZUNGSPROGRAMM (TRANSLATOR) versteht man ein Programm, das Anweisungen in einer höheren Sprache oder in Assemblersprache liest, analysiert (Optimierung) und in bedeutungsgleiche Maschinenbefehle umwandelt. Wirtschaftsinformatik II Folie 24 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Übersetzungsprogramm II QUELLCODE: QUELLCODE: PROGRAM PROGRAMtest; test; BEGIN BEGIN WriteLN WriteLN('Hallo!'); ('Hallo!'); ... ... ÜBERSETZUNGSÜBERSETZUNGSPROGRAMM PROGRAMM (Assemblierer, (Assemblierer, Compiler, Compiler,Interpreter) Interpreter) OBJEKTCODE: OBJEKTCODE: 0101000100111 0101000100111 0110010011111 0110010011111 1110110001100 1110110001100 1100011... 1100011... Hallo! Wirtschaftsinformatik II Folie 25 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Compiler vs. Interpreter Compiler 9 Ein Übersetzungsprogramm, das in einer höheren Programmiersprache abgefassten Quellcode komplett in Zielanweisungen einer maschinenorientierten Programmiersprache umwandelt (kompiliert). 9 Das erzeugte Objektprogramm kann für spätere Verarbeitungsläufe abgespeichert werden, so dass vor der (erneuten) Ausführung keine Übersetzung mehr nötig ist. Interpreter 9 Ein Programm zur schrittweisen Übersetzung von Quellcode in lauffähigen Maschinencode, welcher sofort (zeilenweise) ausgeführt wird. 9 Im Unterschied zum Kompilieren entsteht kein vollständiges, aufbewahrungsfähiges Objektprogramm. 9 Bei jedem Programmstart erfolgt ein erneuter Übersetzungsvorgang Wirtschaftsinformatik II Folie 26 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Assemblierer – Compiler – Interpreter Assemblierer Assemblierer Maschinensprache Compiler Compiler/ /Interpreter Interpreter 00011010 0011 0100 Assemblersprachen Höhere Programmiersprachen 4GL-Systeme Alternative Sprachrichtungen ADD 3, 4 SUMME = 3 + 4 Wirtschaftsinformatik II Folie 27 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Beispiele für 3-GL-Sprachen I COBOL (COmmon Business Oriented Language) 9 9 9 9 Entwicklung in den 50er Jahren betriebswirtschaftliche Anwendungen (Verarbeitung umfangreicher Datenbestände) meistgenutzte Programmiersprache auf Großrechnern Standard: ANSI-COBOL-85 FORTRAN (FORmula TRANslator) 9 Entwicklung in den 50er Jahren von IBM 9 technisch-wissenschaftliche Anwendungen (effiziente Programme für komplexe mathematische Algorithmen) 9 Standard: FORTRAN 90 BASIC (Beginners All-Purpose Symbolic Instruction Code) 9 Entwicklung in den 60er Jahren als ´vereinfachtes´ FORTRAN 9 fehlende Unterstützung der strukturierten Programmierung führte zu ´Spaghetticode´ 9 Weiterentwicklung (MICROSOFT) zur professionellen Makro- und Programmiersprache VISUAL BASIC (Visuelle Programmierung) Wirtschaftsinformatik II Folie 28 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Beispiele für 3-GL-Sprachen II C 9 Entwicklung in den 70er Jahren in den Bell Laboratories des amerikanischen Telekommunikationskonzerns AT&T 9 effizientes Laufzeitverhalten 9 eng mit dem Betriebssystem UNIX verbunden (UNIX zu 90% in C geschrieben) 9 universell einsetzbar auf allen gängigen Rechnern 9 objektorientierte Nachfolger: C++ Makrosprachen 9 Automatisierung von wiederkehrenden Abläufen innerhalb von Anwendungen (z.B. Textverarbeitung, Tabellenkalkulation) 9 Proprietär: Der Befehlsumfang wird ausschließlich von einem einzigen Hersteller definiert bzw. weiterentwickelt 9 zumeist herstellerspezifische Dialekte der Programmiersprache BASIC 9 z.B. Visual Basic for Application (VBA) von MICROSOFT, LotusScript von LOTUS Wirtschaftsinformatik II Folie 29 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Beispiele für 3-GL-Sprachen III PASCAL Niklaus Wirth 9 1971 von Prof. Niklaus Wirth an der ETH Zürich entwickelt 9 benannt nach französischen Mathematiker und Philosophen Blaise Pascal (1623-1662) 9 unterstützt die strukturierte Programmierung 9 durch leichte Erlernbarkeit für Ausbildungszwecke geeignet 9 geringe Verbreitung im Bereich kommerzielle Anwendungsentwicklung durch unkomfortable Ein- und Ausgabeanweisungen und unzureichende Dateiverarbeitung 9 Nachfolger: • MODULA 2 (modulare Programmierung) • ObjectPascal (objektorientierte Programmierung) • Delphi (visuelle Programmierung) Blaise Pascal (1623-1662) Wirtschaftsinformatik II Folie 30 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Nicht-prozedurale Sprachen 4GL-Systeme (4. Generation) Deskriptive Programmierung Der Programmierer muss nicht mehr angeben, auf welche Weise ein Problem Schritt für Schritt gelöst werden soll, sondern er legt in beschreibender Form das Resultat fest, was geschehen soll. Prozedurale Beispiel: Prozedurale Variante: Variante: 1. 1. Gehe Gehe zum zum ersten ersten Datensatz Datensatz in in der der Tabelle Tabelle Sortieren einer Kundenliste Kunde Datenbanksprache Structured Query Language (SQL) SELECT Vorname, Nachname FROM Kunden WHERE Ort = ´Bochum´ ORDER BY Nachname Kunde 2. 2. Solange Solange noch noch nicht nicht am am Ende Ende der der Tabelle Tabelle Kunde Kunde 2.1. 2.1. Wenn Wenn Ort Ort von von jeweiligen jeweiligen Datensatz Datensatz == ´Bochum´ ´Bochum´ 2.1.1. 2.1.1. Dann Dann Markiere Markiere den den Datensatz Datensatz 2.2. 2.2. Gehe Gehe zum zum nächsten nächsten Datensatz Datensatz 3. 3. Kopiere Kopiere von von markierten markierten Datensätzen Datensätzen Vorname, Vorname, Nachname Nachname in in eine eine temporäre temporäre Tabelle Tabelle 4. 4. Sortiere Sortiere Datensätze Datensätze der der temporären temporären Tabelle Tabelle nach nach Nachnamen Nachnamen Proprietär, hohe Inanspruchnahme der Hardwareressourcen bei Umsetzung, beschränkter Anwendungsbereich Wirtschaftsinformatik II Folie 31 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Alternative Richtungen: Sprachen der künstlichen Intelligenz Sprachen der 5. Generation Anwendungsgebiete: Expertensysteme, Robotersteuerung, Data Mining Funktionale Programmiersprachen 9 mathematische Funktionen auf Basis von Basisfunktionen (Aneinanderkettung, Iteration, Rekursion) 9 LISP (LISt-Processing Language): • 1958 am MIT (Massachusetts Institute of Technology) entwickelt • grundlegende Struktur der Liste für Programme und Daten Logische Programmiersprachen 9 Prinzipien der mathematischen Logik: aus Fakten und Regeln werden mit Hilfe der Prädikatenlogik neue Fakten gewonnen 9 PROLOG (PROgramming LOGic): • 1972 in Marseille entwickelt • kaum Ablaufsteuerung, Verwendung von Deduktionsverfahren Wirtschaftsinformatik II Folie 32 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Alternative Richtungen: Objektorientierte Programmierspr. Objekt 9 Daten: beschreiben den Zustand des Objekts 9 Methoden: beschreiben das Verhalten des Objekts Klassen: Objekte mit gemeinsamer Struktur und gemeinsamen Verhalten weitere Konzepte: einfache/mehrfache Vererbung, Polymorphismus Objektorientierte Programmiersprachen (OOP) 9 Simula (1967), Smalltalk (1972), Eiffel (1988), Java (1995) Hybridsprachen 9 C++ (1985), ObjectPascal (1985), Modula-3 (1985) Wirtschaftsinformatik II Folie 33 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Alternative Richtungen: Visuelle Programmiersprachen objekt- und ereignisorientierte Modellierung des optischen Erscheinungsbildes des Programms Kontroll-/Steuerelemente besitzen Eigenschaften (z.B. Farbe) und Ereignisse (z.B. Mausklick) den Ereignissen werden Ereignisprozeduren zugeordnet VISUAL BASIC von MICROSOFT DELPHI von BORLAND Wirtschaftsinformatik II Folie 34 Apr-05 Ruhr-Universität Bochum Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Gefragte Softwaretechnologien bei den IT-Kernberufen Softwareentwicklung / Programmierung IT-Organisation / IT-Projekte Netzwerke / Betriebssysteme Service / Support Datenbanken [CDI, Sept 2001] Wirtschaftsinformatik II Folie 35 Ruhr-Universität Bochum Apr-05 Lehrstuhl für Wirtschaftsinformatik Prof. Dr. Roland Gabriel Gefragte Softwaretechnologien bei den IT-Mischberufen Multimedia E-Business / E-Commerce SAP CAD Kaufmännische Sachbearbeitung [CDI, Sept 2001] Wirtschaftsinformatik II Folie 36 Apr-05 Ruhr-Universität Bochum