Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Leitfaden für die Nutzung des Buchs und der beiliegenden DVDs
Das Terminal – sinnvoll oder überflüssig?
1 Die Wurzeln von Ubuntu
2 Was ist Ubuntu?
3 Die Versionen im Detail
4 Daten sichern, migrieren und synchronisieren
5 Die Installation
6 Erste Schritte
7 Kubuntu
8 Programme und Pakete installieren
9 Internet und E-Mail
10 Office
11 Grafik und Bildbearbeitung
12 Multimedia
13 Programmierung und Design
14 Software- und Paketverwaltung
15 Architektur
16 Backup und Sicherheit
17 Desktop-Virtualisierung
18 Serverinstallation
19 Administration und Monitoring
20 Netzwerke
21 LAN-Server – im Firmennetzwerk oder als Multimediazentrale
22 Der Server im Internet
23 Servervirtualisierung mit KVM
24 Servervirtualisierung mit Xen
25 Hilfe
26 Befehlsreferenz
A Mark Shuttleworth
Stichwort

Download:
- ZIP, ca. 50,6 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Ubuntu GNU/Linux von Marcus Fischer
Das umfassende Handbuch, aktuell zu Ubuntu 11.04 »Natty Narwhal«
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
geb., mit 2 DVDs
1118 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1765-1
Pfeil 13 Programmierung und Design
  Pfeil 13.1 Interpretersprachen
    Pfeil 13.1.1 Shell-Skripte
    Pfeil 13.1.2 Perl
    Pfeil 13.1.3 Python
  Pfeil 13.2 Compiler-Sprachen
    Pfeil 13.2.1 C/C++
    Pfeil 13.2.2 Java
  Pfeil 13.3 Integrierte Entwicklungsumgebungen
    Pfeil 13.3.1 Anjuta – für C/C++
    Pfeil 13.3.2 KDevelop – C/C++ unter KDE
    Pfeil 13.3.3 Eclipse
    Pfeil 13.3.4 Lazarus – Delphi-Klon
    Pfeil 13.3.5 Gambas – Visual-Basic-Ersatz
  Pfeil 13.4 Webdesign
  Pfeil 13.5 Professioneller Satz mit LaTeX
    Pfeil 13.5.1 Warum LaTeX?
    Pfeil 13.5.2 Struktur
    Pfeil 13.5.3 Syntax
    Pfeil 13.5.4 LaTeX-Editoren

»Programmieren ist wie küssen: Man kann darüber reden, man kann es beschreiben, aber man weiß erst dann, was es bedeutet, wenn man es getan hat.« Andrée Beaulieu-Green (1925–2005), kanadische Computerwissenschaftlerin

13 Programmierung und Design

Was Sie in diesem Kapitel erwartet

Wer sich schon immer einmal näher mit dem Thema Programmierung beschäftigen wollte, der findet in diesem Kapitel eine Sammlung der beliebtesten Entwicklerwerkzeuge unter Linux. Die vorgestellten Beispiele können aber ein vollwertiges Fachbuch über Programmierung nicht ersetzen. Ich möchte dem Einsteiger hiermit lediglich ein wenig die Berührungsängste vor diesem Thema nehmen und dem fortgeschrittenen User die grundlegenden Werkzeuge vorstellen.

Im vorliegenden Kapitel möchte ich Ihnen einen Überblick geben, wie Sie die wichtigsten Programmiersprachen und Entwicklerwerkzeuge installieren. Anhand eines durchgängigen Beispiels wird die Funktion der Werkzeuge demonstriert. Auch Webentwickler und Layouter kommen nicht zu kurz: Ich stelle einige Werkzeuge zur Erstellung von Internet-Content und typografisch hochwertigen Dokumenten vor.

Benötigtes Vorwissen

Kenntnisse über das Terminal sind hilfreich (siehe Abschnitt »Das Terminal«).

Programmiersprachen

Die Programmiersprache gibt es nicht, je nach Zweck gibt es besonders geeignete Programmiersprachen, die sich in zwei Untergruppen einteilen lassen:

  • Interpretersprachen
    – Vertreter sind beispielsweise:
    Pfeil  Shell-Skripte
    Pfeil  Perl
    Pfeil  Python
  • Compiler-Sprachen
    – Vertreter sind beispielsweise:
    Pfeil  C/C++
    Pfeil  Java

Die genannten Vertreter dieser Untergruppen stelle ich Ihnen in den folgenden Abschnitten vor.


Galileo Computing - Zum Seitenanfang

13.1 Interpretersprachen  Zur nächsten ÜberschriftZur vorigen Überschrift

Bei der Verwendung von Interpretersprachen wird der Programmcode zur Laufzeit in maschinennahe Befehle übersetzt. Dieses Vorgehen eignet sich dann, wenn Sie ein kleines Programm erstellen, das nicht unbedingt auf komplexe Systemfunktionen zugreifen soll.


Interpreter: Ein Interpreter wandelt nicht mithilfe von Assemblern oder Compilern ein Skript in eine direkt ausführbare Datei um, sondern führt dieses während der Laufzeit aus.



Galileo Computing - Zum Seitenanfang

13.1.1 Shell-Skripte  Zur nächsten ÜberschriftZur vorigen Überschrift

Wir beginnen unseren Ausflug in die Welt der Programmierung mit Shell-Skripten. Diese dienen nicht nur der weitgehenden Automatisierung von Standardaufgaben, vielmehr sorgt auch das Abarbeiten von Skripten beim Starten des Systems für die automatische Konfiguration von Diensten. Derartige Skripte finden Sie z. B. im Verzeichnis /etc/init.d/.

Rechnen

Als Beispiel wollen wir selbst ein kleines Shell-Skript schreiben, das die sogenannte Fakultät einer natürlichen Zahl berechnet. Dabei wird die Zahl so lange mit einer jeweils um 1 reduzierten Zahl multipliziert, bis man 1 erreicht hat: 5! = 5 x 4 x 3 x 2 x 1 = 120.

Das Shell-Skript, das erst eine Zahl einliest, dann deren Fakultät berechnet und diese schließlich ausgibt, hat folgende Gestalt:

#!/bin/bash
declare -i zahl=$1
declare -i fakultaet=1
while [ $zahl -gt 1 ]; do
  fakultaet=$fakultaet*$zahl
  zahl=$zahl-1
done
echo "Fakultät = " $fakultaet
  • In der ersten Zeile wird zunächst der typische Header von Bash-Shell-Skripten definiert:#!/bin/bash.
  • In Zeile 2 und 3 werden die Variablen für das Programm definiert. Die Variable zahl wird direkt als Konsolenparameter eingelesen, daher ist zahl=$1.
  • Die eigentliche Berechnung erfolgt in den Zeilen 4 bis 8 innerhalb einer while-Schleife. Dabei wird der Inhalt der Variablen zahl pro Schleifendurchlauf immer um eine Einheit reduziert, bis man schließlich bei der Zahl 1 angelangt ist.
  • Nach Beendigung der Schleife wird der Inhalt der Variablen fakultaet schließlich auf der Konsole ausgegeben.

Das Skript wird als fakultaet.sh abgespeichert und durch bash fakultaet.sh 5 ausgeführt.


Tipp 180: Rechnen mit der Shell

Mit dem Befehl let führen Sie ganzzahlige Berechnungen durch:

i=0
let "i=i+1"
echo $i
# Oder auch so:
echo $((i+2))

Sie können selbstverständlich auch die grafische Variante des Taschenrechners verwenden. Sie finden sie unter Anwendungen • Zubehör • Taschenrechner. Unter Ansicht können Sie beispielsweise auch einen wissenschaftlichen Modus aktivieren, der Ihnen auch den einfachen Zugang zu Winkelfunktionen und Logarithmus-Berechnungen bietet.


Dash statt Bash

An dieser Stelle reicht kein einfacher Aufruf der Standard-Shell per sh, da Ubuntu statt der Bash die wesentlich schlankere Dash als Standard verwendet. Die Standard-Shell ist zuständig für den Systemstart und wird beim Booten des Systems dutzendfach gestartet und verwendet. Da ist es sinnvoll, eine möglichst schlanke Shell zu verwenden, und genau dies ist Dash. Die Bash ist allerdings weiterhin installiert.


Tipp 181: Schleifen

Wenn Dateien Leer- oder Sonderzeichen enthalten, wird das Arbeiten mit Shell-Skripten schwierig. Es ist aber nicht unmöglich:

for file in `find .`; do ... geht leider nicht!
find . | while read file
do
bsp_command "$file"
done

Beim obigen Beispiel müssen Sie jedoch beachten, dass die Bash für die Zeilen der while-Schleife eine neue Subshell erstellt. Umgebungsvariablen, die Sie einsetzen, sind nach dem done nicht zu sehen, da sie nicht an die Eltern-Shell zurückgegeben werden.


Rechte ändern

Alternativ hätten Sie das Skript auch nur fakultaet nennen und mittels chmod +x fakultaet ausführbar machen können. Dies erspart Ihnen den expliziten Aufruf des Interpreters via bash.

Abläufe automatisieren

Shell-Skripte sind insbesondere dann recht nützlich, wenn Sie komplizierte Programmaufrufe nicht mehrfach eingeben möchten, z. B. beim Mastern von bootfähigen CDs oder beim Transcodieren von Videomaterial.


Tipp 182: Bearbeiten einer Datei mittels eines Skripts

Das folgende Skript entfernt die Zeilen 5–10 und 16–20 ohne Umweg über eine temporäre Datei:

#!/bin/bash
ed $1 <<EOF
16,20d
5,10d
w
q
EOF

Die ed-Kommandos sind dieselben wie beim vi im Kommandomodus. Das Bearbeiten der Datei in umgekehrter Reihenfolge erleichtert die Arbeit.



Galileo Computing - Zum Seitenanfang

13.1.2 Perl  Zur nächsten ÜberschriftZur vorigen Überschrift

Die nächste häufig auftretende, interpretierbare Programmiersprache unter Linux ist Perl. Diese Sprache wurde von Larry Wall mit dem Ziel entwickelt, sich möglichst nahe an menschlichen Sprachgewohnheiten zu orientieren. Perl erfordert vom Einsteiger geringe programmiertechnische Vorbildung und zeichnet sich durch eine starke Kombinierbarkeit der Sprachelemente und einen reichen Wortschatz aus. Für eingefleischte Programmierer stellt Perl eine Art Schweizer Taschenmesser unter UNIX/Linux dar.

Möchten Sie Perl unter Ubuntu verwenden, so sollten folgende Pakete installiert sein:

  • perl
  • perl-base

Unser Fakultätsprogramm hätte unter Perl folgende Gestalt:

#!/usr/bin/perl
sub fac {
  $_[0]>1?$_[0]*fac($_[0]-1):1;
}
print fac(5);

Schlanker Code

Das Programm wird von einer Kommandozeile aus über perl fakultaet.pl gestartet, wenn es unter dem Namen fakultaet.pl abgespeichert wurde. Sie finden den Code kompliziert? Nun, auf den ersten Blick ist er das sicher. Der Algorithmus reduziert sich hier in genialer Weise auf eine einzige Zeile, in der die Fakultätsfunktion rekursiv berechnet wird.

Die Möglichkeiten von Perl veranlassen viele der sogenannten Geeks zu Wettbewerben wie Obfuscation

(dem Verschlüsseln von Programmen bis zur Unkenntlichkeit des Sinns) und Golf (mit dem Ziel, ein Programm für einen bestimmten Zweck in möglichst wenigen Codezeilen zu erstellen).


Tipp 183: Ersetzung regulärer Ausdrücke in Perl

Mit dem folgenden Befehl können alle Vorkommen des regulären Ausdrucks REGEX durch TEXT in allen Dateien namens DATEIEN ersetzt werden:

perl -i -p -e 's/<REGEX>/<TEXT>/g;' <DATEIEN> ...

Die Option -i zeigt an, dass die Originaldateien bearbeitet werden, und -p sorgt ausdrücklich für die Iteration über die Dateinamen. Wenn der reguläre Ausdruck kompliziert ist, können Sie sich Sicherheit verschaffen, indem Sie die Originaldateien behalten: Durch -i.bak anstelle von -i bleiben die Originale erhalten und bekommen die Endung .bak.



Galileo Computing - Zum Seitenanfang

13.1.3 Python  topZur vorigen Überschrift

Programmiersprachen gibt es wie Sand am Meer. Kaum eine ist dabei aber so intuitiv zu erlernen und einfach zu verstehen wie die Interpreter-Sprache Python. Dabei ist Python in seiner Architektur grundsätzlich plattformunabhängig, sodass sich alle mit dieser Sprache erstellten Programme ohne großen Aufwand auf sehr viele Plattformen portieren lassen.

Grundsätze

Die Sprache wurde von Guido van Rossum 1991 als Nachfolger der Programmier-Lehrsprache ABC veröffentlicht. Der Name geht auf die englische Komikergruppe Monty Python zurück. Als Beleg dafür gelten zahlreiche Verweise in der offiziellen Dokumentation. Dennoch setzte sich die Assoziation zur Schlangengattung durch. Dies zeigt sich unter anderem in der Programmiersprache Cobra sowie im Python-Toolkit Boa.

Seit Beginn seiner Entwicklung folgt Python zwei grundlegenden Grundsätzen:

  • Einfachheit
    Die Syntax von Python ist sehr einfach und verständlich, sodass sich auch Ein- und Umsteiger schnell zurechtfinden. Um die Übersichtlichkeit zu erhöhen, erfolgt die Strukturierung von Anweisungsblöcken nicht durch besondere Zeichen (; oder { }), sondern durch Einrücken.
  • Freiheit
    Python ist eine Multiparadigmensprache und unterstützt verschiedene Programmierstile, wie objektorientiertes, funktionelles oder aspektorientiertes Programmieren.

Neben den Standardfunktionen und -objekten gibt es eine sehr große Bibliothek mit Paketen zu verschiedensten Problemstellungen. Sie reichen von einfachen Aufgaben wie der XML- oder HTML-Verarbeitung bis hin zu Funktionen, die im universitären oder wissenschaftlichen Umfeld benötigt werden. Durch die riesige Bibliothek wird die Erstellung von Quellcode teilweise erheblich vereinfacht und beschleunigt.

Konsole, Editor oder IDE

Sie haben grundsätzlich drei verschiedene Möglichkeiten, Programme zu erstellen:

  • Die erste Möglichkeit nutzt die interaktive Python-Konsole, die bei der Installation von Python integriert ist. Die Arbeitsweise dieser Konsole ist ähnlich der Shell unter Linux. Sie ist gleichermaßen bei Einsteigern und Profis beliebt. Gerade zum Testen von kleineren Abschnitten des Quelltextes ist sie nützlich, da die eingegebenen Befehle sofort ausgeführt werden. Für Einsteiger gibt es zusätzlich eine besonders benutzerfreundliche Variante namens bpython.
  • Selbstverständlich können Sie auch normale Texteditoren zur Code-Erstellung verwenden und in Kombination mit der Konsole zur Ausführung bringen. Selbst professionelle Texteditoren für Programmierer wie Vim oder Emacs lassen sich für Python anpassen.
  • Darüber hinaus existieren für Python zahlreiche Entwicklungsumgebungen. Diese erfüllen teilweise spezielle Aufgaben wie beispielsweise Eric Python IDE. Es existieren allerdings auch Python-Plug-ins für größere IDEs wie Eclipse und Netbeans.

Python ist kostenlos von der Seite www.python.org zu beziehen; den meisten Linux-Distributionen liegt es standardmäßig bei oder ist in den Paketarchiven vorhanden. Es ist eine der drei Sprachen, die meistens in einer LAMP-Umgebung eingesetzt werden.


LAMP: Das Kürzel LAMP ist ein Akronym für eine Programmkombination, in deren Rahmen dynamische Webseiten und -anwendungen entwickelt werden können. Dabei stehen die einzelnen Buchstaben für die verwendeten Komponenten: Linux, Apache, MySQL und PHP (manchmal auch Perl oder Python).


Einsatz

Python ist in der Praxis weit verbreitet. So nutzen viele Web-Application-Frameworks Python,z. B. Django oder Zope. Es existiert sogar ein Python-Interpreter für das Symbian-Betriebssystem, sodass Python selbst auf Mobiltelefonen Verbreitung gefunden hat.

Python hat sogar Einfluss auf das 100-Dollar-Laptop (http://laptop.org): So dient es als Standardsprache für die Benutzeroberfläche. Um seinen Benutzern einen Einblick hinter die Kulissen zu gewähren, kann während der Benutzung der grafischen Benutzeroberfläche auf Knopfdruck der aktuelle Python-Quellcode angezeigt werden.

Python 3

Seit Anfang 2009 ist parallel zu der 2.x-Reihe ebenfalls Python 3 verfügbar. In Python 3 hat es zwar keine fundamentalen Veränderungen der Sprache gegeben, aber die Veränderungen waren dennoch zu stark, um die Kompatibilität mit der 2.x-Reihe sicherzustellen. So wurden viele kleine Unzulänglichkeiten von Python 2.x beseitigt. Um den Übergang von Python 2 auf 3 so sanft wie möglich zu gestalten, wird die 2.x-Reihe weiterhin unterstützt und gepflegt. Mit dem Kommandozeilenparameter –3 können Sie sich alle Konstrukte in Ihrem Code anzeigen lassen, die es in Python 3.0 nicht mehr gibt.

Ein Programm erstellen

Der Standardweg, ein Python-Programm zu erstellen, geht normalerweise über einen Editor. Durch die einfache Struktur ist eine Entwicklungsumgebung nicht zwingend nötig. Editoren bieten viele Hilfen wie Syntaxhervorhebung oder automatische Einrückung. Die Vorgehensweise ist sehr einfach. Zuerst erstellen Sie den Quelltext und speichern diesen als *.py ab. Das klassische Beispiel Hello World würde dann so aussehen:

#!/usr/bin/python
#mein Hallo-Welt-Programm
print 'Hallo Welt!'

und unter ~/hallowelt.py abgespeichert. In einem zweiten Schritt öffnen Sie ein Terminal und wechseln in das Verzeichnis der Quelldatei. In diesem Ordner können Sie durch den Befehlpython hallowelt.py den Code ausführen. Sie können übrigens problemlos Unicode verwenden.

Bibliothek

Eine der größten Stärken von Python ist die riesige Bibliothek, die dem Anwender eine überaus große Flexibilität an die Hand gibt. Hier finden sich Standards, um sich die Arbeit als Programmierer deutlich zu vereinfachen. Die allermeisten Funktionen sind plattformunabhängig, sodass selbst große Python-Projekte ohne große Änderungen leicht auf UNIX, Windows, Mac OS X oder andere Plattformen portiert werden können. Besonders praktisch ist die Möglichkeit der Kombination der Module mit in C oder Python selbst geschriebenen Modulen.

Grafische Oberflächen

Selbst das Erstellen von grafischen Oberflächen gelingt zumeist auf Anhieb. Durch das mitgelieferte Modul Tkinter können Sie in Python besonders schnell eine grafische Oberfläche erzeugen. Dies ist ähnlich einfach wie unter Perl oder TCL. Aber auch die Anbindung an GUI-Bibliotheken anderer Programmiersprachen wie beispielsweise PyGTK oder PyQt ist kein Problem.

Programme ausführen

Die Vorgehensweise bei der Ausführung von Python-Programmen folgt einem einfachen Schema: Der Text eines Python-Programms wird transparent in einen Zwischencode übersetzt. Letzterer wird dann von einem Interpreter ausgeführt. Eine besonders hohe Flexibilität erreichen Sie durch die Möglichkeit, Programme anderer Sprachen als Modul einzubetten. Ihre Programme können dann das Beste aus verschiedenen Welten in einem Python-Rahmen kombinieren. Python kann aber auch als Skriptsprache eines anderen Programms dienen, wie dies beispielsweise bei LibreOffice der Fall ist.

Datentypen werden dynamisch verwaltet. Somit existiert keine statische Typprüfung, wie es beispielsweise bei C++ der Fall ist. Eine weitere nützliche Eigenschaft ist die automatische Speicherbereinigung, die nicht mehr benutzte Speicherbereiche freigibt. Besonders interessant ist die Ausnahmebehandlung unter Python, die eine Syntaxüberprüfung von Programmstrukturen während der Laufzeit gestattet.

Betrachten wir als Beispiel einmal folgenden Code-Abschnitt:

#!/usr/bin/env python
while True:
  try:
    num = raw_input("Eine Zahl eingeben: ")
    num = int(num)
    break
  except ValueError:
    print "Eine _Zahl_, bitte!"

Dieser Code wird den Benutzer so lange nach einer Nummer fragen, bis dieser einen String eingibt, der sich per int() in eine Ganzzahl konvertieren lässt, ohne dass ein Fehler auftritt. Erwähnenswert ist, dass sowohl das BitTorrent-Filesharing-Protokoll als auch das MoinMoinWiki-System in Python implementiert wurden.


Tipp 184: Grep mit regulären Ausdrücken

Reguläre Ausdrücke werden verwendet, um Teile in einem Textbereich zu finden. Der Ausdruck

find . | grep -E '.txt$|\.html$'

findet alle Dateien ab dem aktuellen Verzeichnis, die mit .txt oder .html enden ($ = Ende). Symlinks werden nicht aufgelöst. Hierbei bedeuten:

-E (Extended Regular Expression) -P (Perl Compatible Regular Expression. Wird meist leider nicht unterstützt.)

Schwächen

Python hat selbstverständlich auch einige Schwächen:

  • So sind einige in anderen Sprachen gebräuchliche Kontrollstrukturen (z. B. do/while) in Python nicht vorhanden. Diese müssen durch ein äquivalentes while True: ... break substituiert werden.
  • Die Unterstützung von Multiprozessor-Systemen ist mangelhaft. Der sogenannte Global Interpreter Lock (GIL) senkt die Effizienz von Python-Anwendungen bei Verwendung von Multi-Threading. Dieses Problem betrifft allerdings nur CPython und tritt beispielsweise unter JPython nicht auf. Eine Lösung wäre, statt Threads mehrere miteinander kommunizierende Prozesse zu verwenden.

Tabelle 13.1  Anlaufstellen für Python

Befehl Wirkung

www.python.org

offizielle Dokumentation und Website

http://abop-german.berlios.de/

Tutorial

http://cobra-language.com/

Cobra

http://boa-constructor.sourceforge.net/

Boa




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Ubuntu GNU/Linux

Ubuntu GNU/Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Linux-Server einrichten und administrieren






 Linux-Server
 einrichten und
 administrieren


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: Linux






 Linux


Zum Katalog: Debian






 Debian


Zum Katalog: Android 3






 Android 3


Zum Katalog: GIMP






 GIMP


Zum Katalog: Webserver einrichten und administrieren






 Webserver einrichten
 und administrieren


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de