• Keine Ergebnisse gefunden

Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm

N/A
N/A
Protected

Academic year: 2021

Aktie " Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm"

Copied!
22
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Projektwoche

Projektwoche 2010 2010 Sprechen

Sprechen Sie Sie D? D?

Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm

Hochschule Harz

FB Automatisierung und Informatik

mwilhelm@hs-harz.de

http://mwilhelm.hs-harz.de

Raum 2.202

Tel. 03943 / 659 338

(2)

Inhalt

1. Sprachfamilien / Geschichte von D

Assembler, Interpreter, Native Sprachen, KI, GUI

2. Einfache Sprachkonstrukte

Datentypen, if-Bed., Schleifen, Unterprogramme

3. Ein- Ausgabe

4. Felder, Listen 5. Exception

6. Struct / Objekte

7. Reguläre Ausdrücke

8. Beispiele

(3)

C ⇒ C++ ⇒ D

(4)
(5)

1. Sprachfamilien / Geschichte von D

Sprachfamilien

Assembler: native, Hardwarenah, nicht portierbar, schnell, komplex, fehleranfällige Programmierung

Cobol, Fortran: native, alt, 1955, Unterprogramme, fehleranfällige Programmierung, technisch vs. kommerziell

C: native, Hardwarenah, (portierbar), schnell, komplex, fehleranfällige Programmierung, Pointer

Pascal, Modula, Oberon: Modular: native, modular, Schulsprache (Wirth)

Delphi: native, modular, Objektorientiert, Schnittstellen, modular,

(6)

Sprachfamilien / Geschichte von D

VBA, Basic: Interpreter, einfach zu lernen, Goto, frühe Skriptsprache

Perl, Python, PHP, Ruby: moderne Skriptsprachen, Interpreter, Objektorientiert

Haskell, Lisp: funktionale Sprache

C++: native, portierbar, sehr komplex, fehleranfällige

Programmierung, Objektorientiert, Multivererbung, Pointer

Java, C#: Interpreter, portierbar, komplex, leichte Programmierung, Objektorientiert, Schnittstellen, Garbage Colletion

D: native, portierbar, schnell, komplex, leichte Programmierung, Objektorientiert, Schnittstellen, Garbage Colletion, keine

Headerdateien,

(7)

Sprachfamilien

Sprachkonstrukte

Hexdezimale Programmierung

Assembler

Hochsprachen: Cobol, Fortran, C

Modular: Pascal, Modula, Oberon

Funktional: Haskell, Lisp

Skriptsprachen:

Objektorientiert, native, multivererbung: Smalltalk, C++

Objektorientiert, Intepreter: Java, C#

Objektorientiert, native, …: D

(8)

Ablauf Assembler-Programmierung

Assembler-Code: mov AX, 33

Übersetzen in hexadezimaler Darstellung: 3FE5 Ergebnis: OBJ-Datei

Zusammenfügen einer / mehrere OBJ-Dateien

Linker-Ergebnis: Exe-Datei

(9)

Ausgabe eines Textes mittels Assembler

data_seg segment 'data' zkette1 db 'Hallo Welt' data_seg ends

start: MOV bx,0

MOV dx,offset zkette1 MOV ah,40h

MOV cx,10 INT 21h

MOV al,0

MOV ah,4Ch

INT 21h

(10)

Ablauf Java-Programmierung

Java-Code: System.out.println("Hallo Welt");

Übersetzen in eine Pseudo-Code Ergebnis: Class-Datei

Starten der Java Virtual-Machine Parameter: Class-Datei

Übersetzen des Pseudo-Befehls in

Maschinenbefehle

(11)

Ablauf C/C++/D-Programmierung

Programm-Code: a=b+c;

Übersetzen in hexadezimaler Darstellung: 4FE5 Ergebnis: OBJ-Datei

Zusammenfügen einer / mehrere OBJ-Dateien

Linker-Ergebnis: Exe-Datei

(12)

Was ist D?

Allgemeine Hochsprache für systemnahe Programme

Modern konzeptiert, besser als C++, Geschichte

Native, Exe-Programm

Kein Interpreter

Einfach zu lernen

Portierbar (Windows, Linux)

D-Compiler ist wesentlich einfacher ein C++

Mit C++ kann man sehr unterschiedliche Programmstrukturen schreiben: C, C++, Mixed, Präprozessor, STL kein Bestandteil

C Standard hat 500 Seiten, C++hat 750 Seiten

D hat eine einfache Programmstruktur

(13)

Major Goals of D

Reduce software development costs by at least 10% by adding in proven productivity enhancing features and by adjusting language features so that common, time-consuming bugs are eliminated from the start.

Make it easier to write code that is portable from compiler to compiler, machine to machine, and operating system to operating system.

Support multi-paradigm programming, i.e. at a minimum support imperative, structured, object oriented, and generic programming paradigms.

Have a short learning curve for programmers comfortable with programming in C or C++.

Provide low level bare metal access as required.

Make D substantially easier to implement a compiler for than C++.

Be compatible with the local C application binary interface.

Have a context-free grammar.

Easily support writing internationalized applications.

Incorporate Contract Programming and unit testing methodology.

Be able to build lightweight, standalone programs.

Reduce the costs of creating documentation.

(14)

Features To Keep From C/C++

Die allgemeine Struktur (look and feel) von C/C++ bleibt erhalten. Es benutzt die

gleiche Algebraische Syntax. Identisch: Ausdrücke, IF, Schleifen, Allgemeine Layout.

D Programme können geschrieben werden in C style function-and-data, C++ style object-oriented, C++ style template metaprogramming, oder eine Mix.

Der Ablauf ist wie in C: compile/link/debug. Man könnte aber auch D in Bytecode und als Interpreter entwickeln.

Exception handling. Das Exception-handling ist wesentlich besser als die tradiotionelle C Methode (error codes und errno globals).

Runtime Type Identification. Implemnetiert in Java/C++. In D ist diese Eigenschaften noch mehr ausgebaut. Besserer „garbage collection“, besseres Debugging, Objekte Speichern

D erlaubt die „link compatibility“ mit der C-Aufruf-Konvention. Damit kann man direkt auf C-API´s zugreifen. Kenntnisse bzgl. API können in D genutzt werden.

Wenige Änderungen in Programmcode.

(15)

Features To Keep From C/C++

Operator overloading. D Programme erlauben Funktionen mit Operatoren zu verknüpfen.

Template Metaprogramming. Templates, Schablonen, ist der Weg allgemeine Struktur-Programme zu schreiben (sortieren ohne Datentyp). Einge

Programmsprachen benutzen Makros zu diesem Zweck (Fehlerquelle). Der Datentyp

„Variants“ ist möglich, aber ineffizient und nicht sicher (type checking). Die „C++

templates“ sind komplex und sie fügen sich nicht sehr gut in die allgemeine Syntax ein. D bietet eine wesentlich einfacheres System für Templates.

RAII (Resource Acquisition Is Initialization). RAII Techniken erlauben die Identifizierung eines Objektes (Attribute, Methoden, Beans).

Down and dirty programming. D behält die Möglichkeit des „down-and-dirty programming“ ohne dass man externe Module, in anderen Sprachen, benötigt.

Manchmal ist es sinnvoll, Pointer oder direkten Assember-Code zu benutzen

(Systemprogramme). D's Ziel ist es nicht „down and dirty programming“ zu

verhindern, sondern zu minimieren.

(16)

Eigenschaften von D

Native, schnell

Assembleraufruf intern

OOP, Schnittstellen

Operator-overloading

Einfachere Templates

Echtes Typedef

Schneller Compiler

STL in der Sprache

Versionierung

Syntax à la Java

Link-Kompatibel mit C

Eingebettete Funktionen

Var-Parameter für einfache Datentypen

Einfachere Sprachkonstrukte

For each

Arrays, Teilarrays

Assoziative Arrays

Echte Funktionspointers

Modular

Exception

Eingebaute Unit-Tests

Reguläre Ausdrücke

Synchronization / Threads

Assert-Expression

Socket, URL etc

Keine deutschen Sonderzeichen,

auch nicht in Kommentaren. Z.Zt.

(17)

abstract alias align asm assert auto body bool Boolean break byte case cast catch cdouble cent cfloat char class const continue

dchar debug default delegate delete deprecated do

double else enum exit export extern false final finally float for foreach

foreach_reverse fprintf

goto idouble if

ifloat import in inout int

interface invariant ireal is lazy length long macro main mixin module new null

override package pragma printf private protected public puts real record ref return scope short size_t static struct super switch

synchronized template

thread throw timeval true try typedef typeid typeof ubyte ucent uint ulong union unittest ushort version void volatile wchar while with

Reservierte Wörter: C, C++, D

(18)

Datentypen

bool Boolean

byte sign 8 Bit

ubyte unsigned 8 Bit

short sign 16 Bit

ushort unsigned 16 Bit

int signed 32 Bit

uint unsigned 32 Bit

long signed 64 Bit

ulong unsigned 64 Bit

char 8 Bit

wchar 16 Bit

dchar 32 Bit

float single

double double

real Größter Typ

ifloat imaginär

idouble imaginär

ireal imaginär

cfloat komplexe Zahl

cdouble komplexe Zahl

creal komplexe Zahl

(19)

Startroutine

int main(char[][] args) {

}

Wird vom Betriebssystem aufgerufen, Start des Programms args sind die Argumente an das Programm

– args.length

– args[i]

(20)

Oberfläche

(21)

Eigenschaften der Oberfläche: DEdit

Multi-Editor

MDI-Fenster

Umleitung der Ergebnisse des Compiler

Umleitung der Ergebnisse des Linker

Umleitung der Ergebnisse des Programms

Syntax-Highlight

Keine Code-Vervollständigung

Einfügen von Code-Rahmen

Source-Code vorhanden

kostenlos

(22)

Eigenschaften der Oberfläche, Kurztasten

Datei öffnen STRG+O

Neue Datei STRG+N

Speichern STRG+S

Kompilieren F8

Starten F9

Dos-Ebene STRG+D

Explorer STRG+E

Vorheriges Fenster F5

Nächstes Fenster F6

Referenzen

ÄHNLICHE DOKUMENTE

– Semantische Elemente (header, section, summary, details, etc.). – Neue Formulare (number, range,

Beim Anklicken soll der Text der Eingabe ausgegeben werden. Falls leer, .Equals, soll eine Meldung erscheinen

■ Show(Text, Caption, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions,

Excel durch das Binary Interchange FileFormat (BIFF). • Das BIFF ist ein Format, welches Excel als

Aufrufprogramm erstellen: gemeinsamer Ordner Projektname: testdll.. DLL Projekt erstellen:

■ Xubuntu - mit dem schlanken Xfce als grafischer Oberfläche - besonders für ältere Rechner geeignet. ■ Edubuntu - eine speziell angepasste Version für Schulen, mehr im

•ReiserFS ist ein B*-tree basierendes Dateisystem mit einer guten Leistung und überholt sowohl ext2 und ext3 im Umgang mit kleinen Dateien (kleiner als 4 KB) oftmals mit einem

ESC ddp Übernimmt eine Textzeile in den Standardpuffer und löscht diese und fügt diese nach der nächsten Zeile wieder ein. ESC p Wenn der Standardpuffer eine Zeile enthält, wird