Was ist ein Computerprogramm?



Ähnliche Dokumente
Softwareentwicklung Schrittweise Verfeinerung, Programmieren üben: Tic-Tac-Toe in Raten

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Softwareentwicklung Allgemeines und prozedurale Konstrukte

E-Commerce Recht Organisatorisches

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Primzahlen und RSA-Verschlüsselung

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Einführung in PHP. (mit Aufgaben)

Inventur. Bemerkung. / Inventur

3. Stored Procedures und PL/SQL

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

Barrierefreie Webseiten erstellen mit TYPO3

4 Aufzählungen und Listen erstellen

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

1 topologisches Sortieren

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Gutes Leben was ist das?

Datensicherung. Beschreibung der Datensicherung

Grundbegriffe der Informatik

Erfolgreiche Webseiten: Zur Notwendigkeit die eigene(n) Zielgruppe(n) zu kennen und zu verstehen!

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Was meinen die Leute eigentlich mit: Grexit?

Informatik 12 Datenbanken SQL-Einführung

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

OP-LOG

Anleitung - Archivierung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Internet Explorer Version 6

GEONET Anleitung für Web-Autoren

Urlaubsregel in David

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

Kapitel 3 Frames Seite 1

Gesicherte Prozeduren

icloud nicht neu, aber doch irgendwie anders

Excel Pivot-Tabellen 2010 effektiv

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Grundlagen der Theoretischen Informatik, SoSe 2008

Online-Publishing mit HTML und CSS für Einsteigerinnen

Professionelle Seminare im Bereich MS-Office

Abruf und Versand von Mails mit Verschlüsselung

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Mediator 9 - Lernprogramm

2. Word-Dokumente verwalten

Anleitung über den Umgang mit Schildern

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

Erfahrungen mit Hartz IV- Empfängern

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Hilfedatei der Oden$-Börse Stand Juni 2014

Informatik 1 Tutorial

Die YouTube-Anmeldung

Guide DynDNS und Portforwarding

Stammdatenanlage über den Einrichtungsassistenten

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

YouTube: Video-Untertitel übersetzen

Wann ist eine Software in Medizinprodukte- Aufbereitungsabteilungen ein Medizinprodukt?

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Lizenzierung von SharePoint Server 2013

Artikel Schnittstelle über CSV

4D Server v12 64-bit Version BETA VERSION

Kapitel 10 Aktive DBMS

Installation OMNIKEY 3121 USB

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Programmierkurs Java

Lizenzierung von System Center 2012

Lernwerkstatt 9 privat- Freischaltung

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Inkrementelles Backup

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

DB2 Kurzeinführung (Windows)

Professionelle Seminare im Bereich MS-Office

AcQuickPrint / AcSetPrinter Publizieren leicht gemacht / Drucker in Layouts tauschen

Anleitungen zum KMG- -Konto

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

KV Betriebssysteme. Mag. iur. Dr. techn. Michael Sonntag

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Partitionieren in Vista und Windows 7/8

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

ARCHIV- & DOKUMENTEN- MANAGEMENT-SERVER DATEIEN ARCHIVIEREN

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

BEDIENUNGSANLEITUNG: EINREICH-TOOL

Transkript:

Was ist ein Computerprogramm? Michael Sonntag Institut für Informationsverarbeitung und Mikroprozessortechnik (FIM) Johannes Kepler Universität Linz, Österreich sonntag@fim.uni-linz.ac.at 1

Problemaufriss Ist nicht klar, was ein Computerprogramm ist? In C, Java, geschrieben und wird kompiliert oder interpretiert! Nicht unbedingt, denn was ist mit: Shell Scripts? Funktionale/Logische Programmiersprachen? Programme mit schweren Fehlern (Syntax, nicht Semantik!)? Unvollständige Programme bzw. Klassenbibliotheken? Noch vergleichsweise einfach! Schnittstellen? Datenbankstrukturen? Motivation für die Untersuchung aufgrund konkreter Anfrage (Buchhaltungs-SW)! Konfigurationsdateien? VHDL: Nur-Simulation oder Synthesefähig? 2

Definition für Computerprogramm (1) Gesetz/Richtlinien: Leider nein! Technische Quellen: Diverse! Problemlösungsverfahren in für Computer verständlicher Form Algorithmus einschließlich Datenobjekten in für Computer verständlicher Form einer Programmiersprache. Ist auf einem Computer ausführbar. Verfahren, Daten durch Algorithmen zu manipulieren für gewünschtes Ergebnis. Formulierung in einer versteh- und abarbeitbaren Sprache. Syntaktische Einheit aus Anweisungen und Vereinbarungen zur Lösung einer Aufgabe Beruhen alle auf Programmiersprache Auch hier gibt es Definitionen: Hilfsmittel zur Abbildung der Daten- und Kontrollstrukturen Künstliche Sprache zur präzisen Formulierung von Algorithmen Eine Folge von auf einem Computer ausführbaren Anweisungen 3

Definition für Computerprogramm (2) Gemeinsames Element: Programmiersprache Aber wie wird eine solche definiert? Erforderliche Aspekte sind: Formalisierung: Keine menschliche Interpretation nötig Ablauffähigkeit: Wenn nicht Entwurfsmaterial Problem: Unmittelbarkeit, Syntaxfehler Universalität: Alle Algorithmen sollen (sinnvoll!) umsetzbar sein Statischer Teil: Strukturierung von Daten (Aber: Datentypen erforderlich?) Dynamischer Teil: Sequenz, Verzweigung, (pot. unendliche) Schleifen Ähnlichkeit zu Turing-Vollständigkeit Kein bestimmtes Modell erforderlich ( Nicht Befehl, Anweisung,!) Imperative Sprache Schleife Funktionale Sprache Rekursion Beides ermöglicht Widerholungen mit statisch endlicher Länge, die dynamisch potentiell unendlich lange dauern! 4

Irrelevante Aspekte Weite Verbreitung: Auch Spezial-Programmiersprachen eines einzelnen Unternehmens erzeugen Programme Exakte Definition erforderlich: Auch andere müssten potentiell können! Art der Programmiersprache: Konkrete technische Umsetzung ist unerheblich Tatsächliche Ausnutzung aller Aspekte: Ein konkretes Programm bleibt ein Computerprogramm, auch wenn es keine Verzweigung/Schleife/ enthält Schutz kann dann durch das erforderliche (Minimal-)Niveau entfallen Konkrete Funktion: Korrekt, legal, sinnvoll, kommerziell erfolgreich Egal! Korrektheit: Auch Programme mit Syntaxfehlern sind in der jeweiligen Programmiersprache abgefasst Aber: Nicht ablauffähig Nur Entwurfsmaterial! 5

Laufzeitumgebung und Universalität Weitere Programme erforderlich: Fast jede SW benötigt ein Betriebssystem Interpreter, Bibliotheken, Laufzeitumgebungen könnten ein Problem sein Aber: Laufzeitumgebungen sind einheitlich für eine Vielzahl an Programmen! Daher kein Problem der Universalität: Ein Betriebssystem Unzählige Programme Was ist bei Klassenbibliotheken? Diese benötigen eine Laufzeitumgebung (=Hauptprogramm) dass speziell für sie geschrieben wird Nur genau für diese eine Bibliothek geeignet Dann kein Computerprogramm mehr, sondern nur mehr Entwurfsmaterial für ein solches Gleicher Schutz Alternative: Bei vielen Programmiersprachen ist Introspektion möglich; dies erlaubt es, ein Hauptprogramm für beliebige Bibliotheken zu schreiben. Aber: Konkrete Funktionalität ermöglicht dies nicht, lediglich einen technischen Aufruf! 6

Anwendungsbeispiele: HTML (zum Aufwärmen!) HTML ist keine Programmiersprache Statische Aspekte (Datenorganisation) ist vorhanden, aber dynamische Aspekte fehlen: Weder sind Berechnungen möglich, noch können Schleifen formuliert werden Achtung: Eingebettetes JavaScript ist sehr wohl eine Programmiersprache! Und der Browser als Laufzeitumgebung? Ändert nichts daran, dass eine Webseite (ohne Benutzereingabe!) rein passiv bleibt Und was ist mit CSS? Erlaubt zumindest Verzweigungen (Bedingungen); HTML5+CSS3 ist (ev) Turingvollständig, dh es könnte damit potentiell ein beliebiger Computer simuliert werden! Aber: Allgemeiner Konsens, dass HTML keine Programmiersprache ist Ergebnis: Kein Computerprogramm (was rechtlich schon länger klar ist!) Und: LaTeX, PostScript, (beide klar Turing-vollständig!); PDF (nicht T.-v.)??? 7

Anwendungsbeispiele: Konfigurationsdateien Ähnlich wie Webseiten: Sowohl Konzept wie auch konkrete Erstellung kann viel Arbeit sein und wichtige Daten enthalten; Exakte Syntax und Semantik Werden vom Computer als Anweisungen verstanden: Was & Wie zu tun ist Aber: Nur statische Strukturierung Keine dynamischen Elemente Wiederholung, selbst wenn unbegrenzt: Keine unendlichen Schleifen Spezifizieren nur, ob etwas zu tun ist, aber nicht was Das steht im Programm! Einzelfälle; keine allgemeinen Regeln wie bei logischen/funktionalen Sprachen Daher: Kein Computerprogramm Achtung: Business-Rules etc. können enthalten sein; analog zu HTML+JavaScript können diese Computerprogramme sein Kein Einfluss auf Konfigurationsdatei! 8

Anwendungsbeispiele: Datenbankdefinitionen Eine gute Datenbankstruktur zu entwerfen ist schwierig und aufwändig, auch wenn es dafür Entwurfs-Regeln gibt, zb Normalisierung Was ist alles darin enthalten: Struktur der Daten; inkl. Datentypen Trigger: Wenn best. Bedingungen eintreten werden gewisse Aktionen ausgeführt Abfragen (zb in SQL) können trivial bis extrem komplex (Unterabfragen, Bedingungen, Gruppierung, Sortierung etc.) sein Abfragen können auch direkt in der Datenbank gespeichert werden ( Views ) Programme ( Stored procedures ) können gespeichert sein und beziehen sich auf die konkreten Strukturen Allerdings wird zwischen SQL und SQL-PL (oder anderem, zb Java) strikt unterschieden (Structured Query Language / SQL Procedural Language)! 9

Anwendungsbeispiele: Datenbankdefinitionen Berücksichtigt man die Definition von vorher: Formalisierung: Ist vorhanden. Die Definition ist klar und exakt möglich/erforderlich. Ablauffähigkeit: Ohne Datenbank-SW passiert nichts. Diese ist aber universell, da zb SQL (nach Standard!) in einer beliebigen DB-SW läuft, bzw. eine DB-SW beliebige Datenbanken betreiben kann. Die DB-SW ähnelt daher einem Betriebssystem. Daher ist die Datenbank aber auch nicht ein integraler Teil der DB-SW! Universalität: Statischer Teil (Datenstrukturierung) ist da, dynamischer Teil fehlt Abfragen und Programme beruhen zwar auf der Struktur, gehören aber nicht zu ihr dazu; Unterscheidung zwischen der DB-Struktur und ev. enthaltenen SQLbasierten Programmiersprachen Diese Programmiersprachen funktionieren auch ohne Tabellen! Ähnlich: Ersatz der DB durch eine Datei Das darauf zugreifende Programm ist ein Computerprogramm, die Datei oder ihre interne Struktur jedoch nicht 10

Anwendungsbeispiele: Schnittstellendefinitionen Schnittstellen sind in einer Programmiersprache definiert, oft sogar nur ein Extrakt daraus (physisch integriert) Ähnlich zu Konstanten (zb Fakten) und sonstigen Daten (zb Text): Physisch enthalten, aber nicht Teil des Computerprogramms Ggf separater Schutz! Ähnlich wie Datenstrukturen uu (!) stark mit dem Algorithmus und der konkreten Implementierung verwoben (ähnlich: interne vs externe Schnittstellen) Dynamische Elemente fehlen jedoch: Es wird nur beschrieben, was aufgerufen werden kann (ev auch Reihenfolge), aber nicht wie es nun konkret aufgerufen werden soll oder woraus es besteht Unterschied zu logischen/funktionalen Sprachen: Kein Rezept, da jedes Element für sich alleine steht (keine Abbildung Eingabe Ausgabe) Daher kein Schutz als Computerprogramm, aber ev (!) als Teil eines solchen 12

Anwendungsbeispiele: Klassenbibliotheken Hier ist zu unterscheiden: Schnittstelle der Klassenbibliothek: Siehe Schnittstellendefinitionen Beinhaltet: Konzept, Aufteilung in Klassen, Struktur der Klassen, Hierarchie, Implementation der Klassenbibliothek: Hier untersucht! Eine Bibliothek ist alleine nicht ausführungsfähig Siehe oben: Daher kein Computerprogramm, sondern nur Entwicklungsmaterial für eines, ähnlich wie ein Programm das erst zur Hälfte fertig ist Ob auch alle Teile (oder überhaupt etwas) verwendet wird, spielt keine Rolle Andere Meinungen sind mm falsch: Ein Programmteil/-entwurf kann auch dann geschützt sein, wenn er nicht für ein ganz konkretes Programm geschaffen wird Denn der Einsatzzweck eines Programmes ist für den Schutz irrelevant, daher ist auch unbedeutend, wenn es (jetzt noch) keinen solchen gibt 13

Anwendungsbeispiele: VHDL Very High Speed Integrated Circuit Hardware Description Language Wird ua verwendet, um die Interna von Mikrochips zu beschreiben Hauptsächlich für Digital-Systeme verwendet; standardisiert Hardwarebeschreibungssprache, aber auch als Programmiersprache bezeichnet Eigentlich falsch: Nicht die Hardware wird beschrieben, sondern ein Verhalten! Stark formalisiert und standardisiert (=ablauffähig); sowohl statische wie auch dynamische Aspekte Kann vollständige CPU (potentiell kompletten Computer!) beschreiben und mit entsprechender Software auch emulieren Absolut universell Ergebnis: Schutz als Computerprogramm Untermenge: Synthesefähig Hardware kann automatisch generiert werden Freiwillige Selbstbeschränkung, daher keine Änderung Nicht umfasst: Daraus generierte Hardware/Pläne dafür; nicht mehr formell beschrieben oder emulationsfähig (entspricht der Ausgabe eines Programms)! 14

Ausblick Fokus auf Programmiersprache und die Elemente Formalisierung, Ablauffähigkeit und Universalität (Statisch + Dynamisch vollständig; sinnvoll einsetzbar) Weiterhin etwas problematisch: Wann ist sie sinnvoll einsetzbar? Ev: Würde ein Programmierer sie zumindest in Sonderfällen verwenden? erlaubt einfachere Beurteilung, was ein Computerprogramm ist und was nicht Vorteile: Abstraktion von Massen-Programmiersprachen und kein alleiniger Fokus auf imperative ( Befehl, Anweisung, ) Sprachen Leichter zu handhabende Definition, da die Elemente einfacher und nachvollziehbar überprüft werden können sowie unabhängig von einem konkreten Programm sind 15

Vielen Dank für Ihre Aufmerksamkeit! Michael Sonntag Institut für Informationsverarbeitung und Mikroprozessortechnik (FIM) Johannes Kepler Universität Linz, Österreich sonntag@fim.uni-linz.ac.at 16