Linux-Grundlagen, Einführung in die Programmierung

Werbung
Vorkurs Programmierung
Begrüßung und Einführung
Prof. Dr. Detlef Krömker
Dipl.-Inf. Jörg Demmer
Professur für Graphische Datenverarbeitung
Institut für Informatik
Fachbereich Informatik und Mathematik (12)
Hier wird Wissen Wirklichkeit
Lernziele
Sie sollen in der Lage sein, die Arbeitsplatzrechner in der RBI zu nutzen.
Hierzu wird eine (kurze) Einführung in das Linux-Betriebssystem
gegeben:
‣
‣
Geschichte, Grundlagen und Konzepte
Wichtige Befehle
Weiterhin:
‣
‣
‣
2
Wie funktioniert ein Computer?
Wie programmiert man einen Computer?
Einführung in Python und IDLE
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
1
Überblick
1. Linux – eine Einführung
1. Geschichtliches
2. Distributionen
3. Konzepte
4. Befehle
5. Die Arbeitsumgebung in der RBI
2. Computer und Programmiersprachen
1. Analog- und Digitaltechnik
2. Maschinensprache / Assembler
3. Hochsprachen
4. Python
5. Ausblick
3
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Von Unix zu Linux I
‣
‣
‣
‣
4
Entwicklung von Unix begann 1969 an den Bell Laboratories,
Tochterfirma von AT&T, durch Ken Thompson, Dennis Ritchie u.a.
Erfuhr Mitte der 70er Jahre große Verbreitung im akademischen
Bereich, u.a. an der University of California in Berkeley, die es
erheblich weiterentwickelte und ihre eigene Unix-Distribution
herausbrachte, die Berkeley Software Distribution (BSD)
1979 begann AT&T mit der kommerziellen Vermarktung von Unix und
stellte den Quellcode nicht mehr zur Verfügung. Da AT&T auch Rechte
an BSD beanspruchte, rief Richard Stallman 1983 das GNU-Projekt
(GNU is not Unix) ins Leben
Ziel von GNU war die Entwicklung einer vollständig freien
Implementierung des POSIX-Standards unter der GNU General Public
License (GPL)
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
2
Von Unix zu Linux II
‣
‣
‣
‣
‣
5
Anfang der 90er Jahre waren große Teile des Userlands fertig gestellt.
Es fehlte jedoch noch ein Betriebssystemkern.
Kern für das Betriebssystem sollte der HURD werden. Entwicklung
verlief jedoch sehr schleppend.
1991 begann Linus Torvalds mit der Entwicklung einer TerminalEmulation, die sich schließlich zu einem Betriebssystemkern
entwickelte und unter dem Namen Linux veröffentlicht wurde
Wegen der pragmatischen Vorgehensweise bei der Entwicklung fand
das Projekt schnell viele Anhänger, die sich beteiligten
Linux bezeichnet eigentlich nur den Kern, ist aber heute gängige
Bezeichnung für ganze Software-Distributionen, bestehend aus Kern,
Systemprogrammen (hauptsächlich GNU) und Drittanwendungen
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Linux-Distributionen
Da Linux und GNU im Quellcode zur Verfügung stehen, kann sich
prinzipiell jeder die Quellen besorgen und sich sein Betriebssystem
selbst zusammenstellen. Aber will man das?
www.opensuse.org
www.redhat.com
www.gentoo.org
www.debian.org
www.ubuntu.com
fedora.redhat.com
6
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
3
Linux - Konzepte - Aufbau
Applikationen
Shell
Windowmanager
Konsole
X-Window-System
Userland
Kernel
Hardware
7
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Linux - Konzepte - Benutzer
‣
‣
‣
‣
‣
8
Benutzer können Gruppen zugeordnet werden; auf diese Weise
sind gruppenbasierte Zugriffsrechte möglich
Prozesse laufen im Kontext des Benutzers, der sie gestartet hat
Benutzer können Prozesse anderer Benutzer nicht beenden
Zugriff nur auf Resourcen, die für den jeweiligen Benutzer
freigegeben sind
Ausnahme: Systemadministrator „root“ darf alles
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
4
Linux - Konzepte - Dateisystem
/
/bin
/boot
/dev
/etc
/usr/bin
/usr/local/bin
Spezialfälle:
9
/home
/lib
/usr/lib
/usr/local
/usr/local/lib
/media
/opt
/sbin
/usr/sbin
/usr/local/sbin
/usr
/tmp
/usr/share
/var
/usr/src
/usr/local/share
. Das aktuelle Verzeichnis
.. Das Elternverzeichnis
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Linux - Befehle I
‣
‣
‣
‣
‣
‣
10
Das Wichtigste vorweg: Zu allen Befehlen gibt es ein Online-Manual,
das mit dem Befehl man angezeigt werden kann, Bsp: man ls
Bei der Benennung von Dateinamen können auch die aus MS-DOS
bekannten Wildcards * und ? verwendet werden.
cd Verzeichnis - Wechselt das Arbeitsverzeichnis. Ohne
Verzeichnisangabe wird in das Homeverzeichnis des Benutzers
gewechselt.
mkdir [Option] Verzeichnis - Erstellt ein neues Verzeichnis.
Option: -p - Erstellt Elternverzeichnisse, wenn nötig.
rmdir Verzeichnis - Löscht ein leeres Verzeichnis
rm [Option] Dateien … - Löscht Verzeichnisse und Dateien.
Optionen: -i, -f, -r
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
5
Linux - Befehle II
‣
‣
‣
‣
‣
‣
11
cp [Option] alt neu - Dateien kopieren. Option: -R - Rekursiv.
–p - Rechte und Attribute erhalten. –d - Verweise erhalten. –a = -dpR.
mv alt neu - Dateien umbenennen oder verschieben
ln [Option] alt neu - Einen Link erstellen. Option: -s - Einen
symbolischen Link erstellen
chmod [Option] MODE Datei … - Zugriffsrechte ändern
chown [Option] Besitzer[:Gruppe] datei … - Besitzer
ändern (nur root). Option: -r - Rekursiv.
ls [Option] Datei … - Dateien oder Verzeichnisse anzeigen.
Option: -l - ausführliche Anzeige. –a - auch versteckte Dateien
anzeigen.
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Linux - Zugriffsrechte
Sehen wir uns die Ausgabe von ls –l mal genauer an …
-rwxr-xr-x 2 root system
Typ Rechte
12
Besitzer Gruppe
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
256 Sep 22 15:08 test.txt
Größe
Zuletzt
geändert
Dateiname
Hier wird Wissen Wirklichkeit
6
Die Linux-Umgebung auf den RBI-Rechnern
‣
‣
‣
‣
13
Verwendete Distribution ist Fedora Core 5
Standard-Desktopumgebung ist KDE
… sehr windowsähnlich, aber man wird früher oder später auf der
Kommandozeile landen
Starten einer Terminal-Emulation über Startmenü – System – Terminal
Wichtig: Rechner nicht ausschalten oder herunterfahren!
Abmelden und Bildschirm aus genügt!
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Die Linux-Umgebung auf den RBI-Rechnern
14
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
7
Die Linux-Umgebung auf den RBI-Rechnern
15
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Weiterführende Literatur
‣
‣
‣
16
SUSE-Dokumentation, http://de.opensuse.org/Dokumentation
Michael Kofler: Linux: Installation, Konfiguration, Anwendung, 7.
Auflage, Addison-Wesley 2005 (auch hier in der Bibliothek)
Arnold Willemer, Wie werde ich Unix-Guru, Galileo-Computing 2003,
http://www.galileocomputing.de/openbook/unix_guru/
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
8
Was ist ein Computer?
Eine Maschine (heute i.d.R. ein digitalelektronische) zur Speicherung und
automatischen Verarbeitung von Daten resp. Informationen (z.B. für
mathematische Berechnungen oder allgemeiner Zeichenersetzungen)
durch Angabe einer programmierbaren (Rechen-)vorschrift.
Die programmierbare, d.h. veränderbare (Rechen-)vorschrift nennen wir
Programm
Ł Hardware (die Elektronik), das „unveränderbare“
Ł Software (das Programm), das „veränderbare“
17
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Digitalcomputer - Analogcomputer
Unsere Definition ist eingeschränkt auf Digitalrechner, also solche
Rechner, die mit diskreten, endlichen Zahlenmengen oder
Zeichenmengen arbeiten (Informationstragenden Größen = Daten)
Historisch gibt es eine andere Art: die Analogcomputer oder
Analogrechner:
Sie repräsentieren ihre Daten nicht als diskrete Werte, sondern als
kontinuierliche – eben analoge – Größen, zum Beispiel in Form von
geometrischen Längen oder Winkeln (mechanisch, z.B.
Rechenschieber, Planimeter) oder elektrischen Spannungen oder
Strömen.
18
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
9
Digitalcomputer
‣
‣
‣
‣
‣
19
Wenn wir heute „digital“ sagen, meinen wir damit Rechner, die auf der
Grundlage eines dualen Stellenwertsystems arbeiten
Dieses kennt nur die Ziffern 0 und 1, im Computer z.B. repräsentiert
durch „Strom“ und „kein Strom“.
Die kleinste Speichereinheit, die Information speichern kann, ist das
Bit. Es kann die Zustände 0 und 1 annehmen.
Acht Bit fasst man zusammen zu einem Byte. Damit lassen sich
28 = 256 verschiedene Zustände darstellen.
Ein (Maschinen-)Wort ist die Anzahl der Bits, die ein Prozessor in
einem Arbeitsschritt verarbeiten kann. Bezeichnet zugleich den
maximal adressierbaren Speicher. Im PC-Bereich sind noch 32 Bit
üblich, aber der Sprung auf 64 Bit steht bevor.
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Maschinensprache
Die Sprache, die der Rechner unmittelbar versteht, ist für den Menschen
unverständlich. Es handelt sich um Binärcode, den der Prozessor
direkt ausführen kann.
Es wird ein Wort aus dem Speicher gelesen. Dieses besteht aus einer
Instruktion und Argumenten.
Der Prozessor führt die Instruktion aus, und lädt das nächste Wort aus
dem Speicher.
20
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
10
Beispiel
21
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Assembler
‣
‣
‣
‣
22
Da nur wenige Erleuchtete in der Lage waren, in Maschinensprache zu
programmieren, wurde die Maschinensprache durch Wahl einer
geeigneten Repräsentation lesbarer gemacht.
Befehle werden durch Mnemonics repräsentiert, für Register
Bezeichner verwendet
Nutzung von Sprungmarken und Kommentaren ist ebenfalls möglich.
Ein Assembler übersetzt die Mnemonics in Maschinensprache
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
11
Beispiel
23
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Hochsprachen
Schon einfacher, aber:
‣
‣
Immer noch sehr maschinennah, wenig abstrakt
Schwer zu portieren: Jede Architektur hat ihre eigene
Assemblersprache
Eine höhere Abstraktion ist erwünscht, damit der Programmierer seine Zeit
damit verbringen kann, Probleme zu lösen, nicht CPU zu spielen und
wie eine Maschine zu denken.
Außerdem will niemand dasselbe Programm zweimal schreiben. Daher
sollten Programme leichter portierbar sein.
24
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
12
Compiler
‣
‣
‣
‣
‣
25
Bei einer Hochsprache wird ein Programm in einer wesentlich
abstrakteren, für den Menschen leichter verständlichen Form
repräsentiert.
Die Übersetzung in Maschinencode wird vom Rechner übernommen.
Dies erledigt der Compiler.
Der Compiler kann direkt Maschinencode erzeugen
(plattformabhängig) oder plattformunabhängigen Bytecode, der zur
Laufzeit in Maschinencode umgewandelt wird (Just-In-Time-Compiler)
Beispiele für compilerbasierte Programmiersprachen: C, C++,
FORTRAN
Bytecode-Sprachen: Java, .NET-Sprachen
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Interpreter
Ein Interpreter führt ein Programm direkt aus. Der Schritt des
vorgelagerten Übersetzens entfällt; jeder Befehl wird direkt
ausgewertet und in Maschinensprache übersetzt.
Vorteile: Kein zeitaufwändiges Übersetzen; die Auswirkungen von
Änderungen können sofort getestet werden; hochgradig
plattformunabhängig und portabel.
Nachteil: Programme laufen langsamer als vorkompilierter, optimierter
Maschinencode.
Beispiele: Basic, Python
26
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
13
… und damit zu Python
‣
‣
‣
‣
‣
‣
‣
27
Objektorientierte „Very high level“-Sprache
Schwerpunkt liegt auf Übersichtlichkeit und Einfachheit
Kostenlos verfügbar
Homepage: http://www.python.org
Versionen verfügbar für Windows, Linux uvm
Entwicklungsumgebung IDLE enthalten
Laden Sie Python herunter und experimentieren Sie zu Hause!
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Syntax
‣
Datentypen werden implizit erkannt, müssen nicht deklariert werden:
Dynamische Typbindung:
a = 2 # Variable a hat jetzt einen Integerwert
a = „Hallo!“ # Jetzt ist a eine Zeichenkette
Zulässig, aber schlechter Stil.
‣
‣
28
Kommentare werden mit einem # eingeleitet. Alles, was in einer Zeile
danach folgt, wird vom Interpreter ignoriert
Kommentieren Sie Ihre Programme!
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
14
Syntax
‣
Blöcke werden durch Einrücken gekennzeichnet:
if 1 == 1:
print „Es gilt: 1 = 1“
print „Stimmt doch, oder?“
elif 1 == 0:
print „Es gilt: 1 = 0“
print „Das kann nicht sein.“
else:
print „Es gilt nicht: 1 = 1!“
print „Kann das sein?“
print „Hier geht es weiter“
29
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Syntax
Einige Operatoren:
+ Addition bzw. Konkatenation
- Subtraktion
* Multiplikation
/ Division
% Rest
** Exponentiation
= Zuweisung
== Vergleichen: Ist gleich
> Vergleichen: Ist größer
< ist kleiner
>= Vergleichen: Ist größer oder gleich >= ist kleiner oder gleich
Präzedenz: Wie in der Mathematik!
30
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
15
Daten einlesen
Wir haben jetzt schon gesehen, wie man etwas ausgeben kann (mit
print). Aber wie liest man Daten ein?
Eingabe = raw_input()
Print „Die Eingabe war “ + Eingabe
Oder auch:
Eingabe = raw_input(„Geben Sie etwas ein: “)
Print „Die Eingabe war “ + Eingabe
31
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Zusammenfassung
Wir können jetzt…
‣
‣
32
Grundlegende Dateioperationen unter Unix/Linux durchführen
Einfache Batchprogramme unter Python schreiben und dabei Daten
von der Konsole einlesen, auf die Konsole ausgeben, einfache
arithmetische Operationen durchführen und dabei Bedingungen
auswerten.
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
16
Ausblick
Wir müssen noch …
‣
‣
‣
‣
‣
‣
33
die grundlegenden numerischen Datentypen und Zeichenketten
genauer kennenlernen
lernen, wie man Anweisungen automatisch wiederholen lässt, bis eine
Bedingung erfüllt ist
lernen, wie man häufig benötigte Funktionalität auslagert und
wiederverwendbar macht
die Klassenbibliothek von Python genauer kennenlernen
auf Fehlersituationen reagieren können
uns einen grundlegenden Überblick über objektorientierte
Programmierung verschaffen
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
Vielen Dank für Ihre Aufmerksamkeit!
34
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
17
Fragen?
35
Vorkurs Programmierung
WS 2006/2007
Dipl.-Inf. Jörg Demmer
Hier wird Wissen Wirklichkeit
18
Herunterladen