Portabel Programmieren. Dr. Olaf Flebbe o.flebbe@science-computing.de



Ähnliche Dokumente
Objektorientiertes Programmieren mit Suse Linux

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Wir machen neue Politik für Baden-Württemberg

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

TISIS - Industrie 4.0. Ereignis, Ort, Datum

Software- und Druckerzuweisung Selbstlernmaterialien

Gezielt über Folien hinweg springen

Konzentration auf das. Wesentliche.

Der Kunde zahlt die Gehälter.

IMS - Learning Design

Verschlüsselung mit PGP. Teil 1: Installation

Speicher in der Cloud

Dynamic Ressource Management

Erfahrungen mit Hartz IV- Empfängern

Produktvorstellung: CMS System / dynamische Webseiten. 1. Vorwort

Viele Bilder auf der FA-Homepage

UNIX Ein kleiner Ausschnitt

die wichtigsten online-tools für augenoptiker websites

Worum geht es in diesem Projekt?

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

II. Daten sichern und wiederherstellen 1. Daten sichern

Artikel Schnittstelle über CSV

Grundbegriffe der Informatik

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Arbeit zur Lebens-Geschichte mit Menschen mit Behinderung Ein Papier des Bundesverbands evangelische Behindertenhilfe e.v.

Nach der Installation des FolderShare-Satellits wird Ihr persönliches FolderShare -Konto erstellt.

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Einführung in die C-Programmierung

Anleitung über den Umgang mit Schildern

C++ mit Eclipse & GCC unter Windows

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Welche Gedanken wir uns für die Erstellung einer Präsentation machen, sollen Ihnen die folgende Folien zeigen.

Objektorientierte Programmierung

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Einführung in PHP. (mit Aufgaben)

DLLs (dynamic loaded libraries) mit MingW erstellen

GEVITAS Farben-Reaktionstest

Webcontrolling Umsetzung in die Praxis. Toll, und wie ist es wirklich?

Auch Ihre gemeinnützige Organisation können wir unterstützen!

Print2CAD 2017, 8th Generation. Netzwerkversionen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

10 Erweiterung und Portierung

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Netzwerkversion PVG.view

BILDER TEILEN MIT DROPBOX

1 Vom Problem zum Programm

> Soft.ZIV. Maple Mathematisches Software System

united-domains.de Jetzt Partner werden!

Also heißt es einmal mehr, immer eine eigene Meinungen bilden, nicht beeinflussen lassen, niemals von anderen irgend eine Meinung aufdrängen lassen.

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

SMS/ MMS Multimedia Center

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Liesmich zum Kurs: Programmieren in der Bioinformatik mit Perl Konfigurierung der Programmierumgebung

FRONT CRAFT.

Aktivierung von Makros in den Erfassungshilfen

Einstellen der Makrosicherheit in Microsoft Word

Cad-OasEs Int. GmbH. 20 Jahre UG/NX Erfahrung prägen Methodik und Leistungen. Nutzen Sie dieses Wissen!

Eprog Starthilfe. 5. Oktober Einleitung 2

AutoTexte und AutoKorrektur unter Outlook verwenden

Installation OMNIKEY 3121 USB

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Geschrieben von: Stefan Sonntag, den 26. Juni 2011 um 09:45 Uhr - Aktualisiert Sonntag, den 26. Juni 2011 um 10:12 Uhr

Dokumentation Schedulingverfahren

Die richtigen Partner finden, Ressourcen finden und zusammenführen

facebook wie geht das eigentlich? Und was ist überhaupt Social media?

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Terminabgleich mit Mobiltelefonen

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

VO Projektmanagement

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Laborübung - Task-Manager (Verwalten von Prozessen) in Windows 7

1. Was ihr in dieser Anleitung

Vorbereitung einer Grafik zum Druck einer Glotze aus, Stadion an! -Zaunfahne Torsten Bunde, Stand 5. Juli 2014

Dazu stellen Sie den Cursor in die Zeile, aus der eine Überschrift werden soll, und klicken auf die gewünschte Überschrift.

Verschlüsselung mit PGP. Teil 1: Installation

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Zwischenablage (Bilder, Texte,...)

Von Steuben Straße Münster Tel muenster.de. Auslandsaufenthalt am Edinburgh College Teil II

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

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1

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

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

FAQ 04/2015. Auswirkung der ISO auf 3SE53/3SF13 Positionsschalter.

1: 9. Hamburger Gründerpreis - Kategorie Existenzgründer :00 Uhr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

NODELOCKED LIZENZ generieren (ab ST4)

39. Elektronik-Stammtisch

Mit dem sogenannten Seriendruck können Etiketten und Briefe mit einer Adressdatei (z. B. Excel) verknüpft werden.

Namibiakids e.v./ Schule, Rehoboth, Namibia

Wireless LAN PCMCIA Adapter Installationsanleitung

Autoformat während der Eingabe

Webalizer HOWTO. Stand:

Electronic Systems GmbH & Co. KG

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Finder > 'Programme' > 'Dienstprogramme' > 'Terminal'

evidisbasic mit ProPharma

Transkript:

Portabel Programmieren Dr. Olaf Flebbe o.flebbe@science-computing.de

Einführung Erfahrung im Portieren und Reengeneering Systemnahes Programmierung im CAx Umfeld Was heißt da portabel? Wohin portabel? Wie portabel? Was portabel? Warum portabel?

Was heißt da portabel? Programm so zu schreiben, dass die Chance besteht, es mit vertretbarem Aufwand auf einem anderen System benutzbar zu machen. Optimal: Das Programm auf System kopieren, tut. Murx: Das Programm wegschmeissen und neu schreiben. Optimal Murx

Warum portabel? Warum nicht? Killer-Applikation Catia: AIX in CAD Abteilungen MS Word, MS Excel auf Windos gimp für Linux/Unix? Erweitert die Einsatzmöglichkeiten Verlängert die Lebenszeit

Wohin portabel? Linux i386 (Debian, Ret Hat, Suse) Linux (m68k, alpha, sparc, IA64...) Unix (AIX, HP-UX, IRIX, Solaris, Unicos, Super-UX...) Echtzeit/Embedded systeme (Lynx, QNX,...) Windos Palmtops (EPOC, PalmOS)

Was ist portabel? Software, die auf vielen verschiedenen Systemen erhältlich ist: UNIX Linux TeX X11 perl GNU emacs

Wie programmiert man portabel? Wie haben es die Autoren erreicht, die Software auf vielen verschiedenen Systemen zu unterstützen? Viele Strategien werden verwendet: #ifdef Wüste && Automatisches Portieren Reduktion Abstraktion

#ifdef Wüste emacs perl Lässt sich manchmal nicht vermeiden

Automatisches Portieren Generieren von Kommandozeilen für bedingte Kompilierung perl: MetaConf GNU: autoconf Für UNIX ein Muss generieren von Makefiles X11: imake perl: MakeMaker Für X11 bzw. perl ein Muss

Zusammenfassung Das Feature testen, nicht das System! Autoconf und imake Autoconf testet dynamisch Imake verwendet statische Informationen imake ausserhalb von X11 nicht durchgesetzt: Viele UNIX Hersteller liefern falsche config Dateien.

Reduktion Verwenden von Standards: tex als batch prozessor in PASCAL, keine dynamische Speicherverwaltung, keine Grafik, kaum Benutzerinteraktion

C: Standards I ANSI C Der C Standard, räumt den Pseudo K&R Standard auf: function prototypes void I/O funktionen: fopen, fread, printf, rename, remove String fuktionen: strcpy, strchr... signal

C: Standards II POSIX 1003.1b Umfasst ANSI-C UNIX Schnittstellen I/O: open, creat, mkdir, link, KEINE symbolischen Links (-> Windos NT) Genauere Signale: sigaction etc Processe: exec, fork Weitere Posix Standards: pthreads, Echtzeit, IPC

C: Standards III System V (SVID) Posix 1003.1b BSD 4.x IPC: Semaphore, Shared Memory TLI (Das hat Linux nicht!) Networking: sockets X/Open, XPG4 und Unix95 termios curses

C: fremde Welten Win32 Palm EPOC ANSI gibt es praktisch immer, meist auch POSIX Unterstützung

C: Zusammenfassung Die unter Linux vorhandenen Funktionen sind ein bunter Topf von UNIX (z.t. Pseudo) Standards Die man pages sind gute Information, zu Standards Mit POSIX API fehlt Netzwerk, Grafik und alles was Spass macht.

Abstraktion Neue Programmiersprachen Virtuelle Maschinen Abstrakte Schnittstellen und ihre Implementation

Neue Programmiersprache UNIX: Erfindung von C, um von Assembler wegzukommen TeX: web: Literarisches Programmieren. Nicht mehr aktuell

Virtuelle Maschinen scheme, modula, oberon,... GNU emacs: Grosse Teile des Editors sind in lisp geschrieben: emacs ist eigentlich ein Lisp Interpreter TeX: LaTeX und plain TeX ist auf ein absolut minimales System aufgebaut java: Definition eines virtuellen Processors Weiterhin aktuell.

Abstraktion AWT SGI Open GL: Die Funktionalität ist in einer shared Library untergebracht, die zur Laufzeit geladen wird.

Skript Applikationen Verwendung einer Skriptsprache macht alleine noch keine portable Applikation csh ist generell zu vermeiden, da es keine Funktionen bietet sh ist sehr schwierig zu maintainen, läuft dafür aber auf jedem UNIX System (Autoconf zusammen mit m4)

Do It Yourself Wenn es keinen Standard gibt, dann beschränkt man sich nicht auf das Portable, sondern legt eben selbst Hand an: java SWING / java Allgemein qt Bibliothek StarOffice (StarView) Kann Performance stark beeinträchtigen

Was kann denn da noch schief gehen? Compiliert funktioniert Structure alignment pointer aliasing Unklare Standards

Ratschläge I Die richtige Sprache für das richtige Problem finden! Informieren zu vorhandenen Werkzeugen sammeln Portable Toolkits verwenden, soweit es geht. Verwendung von Standard Bibliotheken, soweit es geht.

Ratschläge II Systemabhängige Teile in einzelnen Modulen isolieren Abstraktion hierfür entwickeln Auf so vielen Plattformen wie möglich compilieren und testen! Immer alle Warnings ansehen. Optionen: (- Wall -Weffc++)