ein typisches Projekt besteht aus:
nenne weitere Sprachen, die üblicherweise in einem solchen Projekt vorkommen
Programm ist Folge von Befehlen (=
Arbeitsweise: Methoden, Konzepte, Paradigmen
Ziel:
strukturierte (imperative) Programmierung
objektorientierte Modellierung und Programmierung, funktionale Programmierung und OO-Entwurfsmuster
Übungsgruppe wählen: https://autotool.imn.htwk-leipzig.de/shib/cgi-bin/Super.cgi
(nach Sebesta: Concepts of Programming Languages)
1. Anwendungsgebiete von Programmiersprachen, wesentliche Vertreter
zu Skriptsprachen: finde die Anzahl der "*.java"
-Dateien
unter $HOME/workspace
, die den Bezeichner String
enthalten.
(Benutze eine Pipe aus drei Unix-Kommandos.)
Lösungen:
find workspace/ -name "*.java" | xargs grep -l String | wc -l find workspace/ -name "*.java" -exec grep -l String {} \; | wc -l
2. Maschinenmodelle (Bsp: Register, Turing, Stack, Funktion)
funktionales Programmieren in Haskell (http://www.haskell.org/)
ghci :set +t length $ takeWhile (== '0') $ reverse $ show $ product [ 1 .. 100 ]
Kellermaschine in PostScript.
42 42 scale 7 9 translate .07 setlinewidth .5 setgray/c{arc clip fill setgray}def 1 0 0 42 1 0 c 0 1 1{0 3 3 90 270 arc 0 0 6 0 -3 3 90 270 arcn 270 90 c -2 2 4{-6 moveto 0 12 rlineto}for -5 2 5{-3 exch moveto 9 0 rlineto}for stroke 0 0 3 1 1 0 c 180 rotate initclip}for showpage
Mit gv
oder kghostview
ansehen (Options: watch file).
Mit Editor Quelltext ändern.
Finden Sie den Autor dieses Programms!
(Lösung: John Tromp, siehe auch http://www.iwriteiam.nl/SigProgPS.html)
3. http://99-bottles-of-beer.net/ (top rated ...)
Java:
javac Foo.java # erzeugt Bytecode (Foo.class) java Foo # führt Bytecode aus (JVM)Einzelheiten der Übersetzung:
javap -c Foo # druckt Bytecode
C:
gcc -c bar.c # erzeugt Objekt(Maschinen)code (bar.o) gcc -o bar bar.o # linkt (lädt) Objektcode (Resultat: bar) ./bar # führt gelinktes Programm ausEinzelheiten:
gcc -S bar.c # erzeugt Assemblercode (bar.s)
Aufgaben:
gcc für Java (gcj):
gcj -c Foo.java # erzeugt Objektcode gcj -o Foo Foo.o --main=Foo # linken, wie oben
gcj -S Foo.java # erzeugt Assemblercode (Foo.s)
gcj -C Foo.java # erzeugt Class-File (Foo.class)
2015-08-17