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

Inhaltsverzeichnis
Vorwort
Leitfaden
1 Die Wurzeln von Ubuntu
2 Was ist Ubuntu?
3 Die Versionen im Detail
4 Die Möglichkeiten der beiliegenden DVDs
5 Daten aus Windows sichern
6 Die Installation
7 Erste Schritte
8 Kubuntu und Xubuntu
9 Ubuntu mobil
10 Programme und Pakete installieren
11 Internet und E-Mail
12 Office
13 Grafik und Bildbearbeitung
14 Multimedia
15 Das Terminal
16 Programmierung und Design
17 Einrichtung der grundlegenden Hardware
18 Software- und Paketverwaltung
19 Architektur
20 Backup und Sicherheit
21 Desktop-Virtualisierung
22 Server-Installation
23 Sicherheit und Monitoring
24 Netzwerke
25 Server im Heim- und Firmennetzwerk
26 Der Server im Internet
27 Server-Virtualisierung mit KVM
28 Server-Virtualisierung mit Xen
29 Hilfe
30 Befehlsreferenz
Mark Shuttleworth
Glossar
Stichwort

Download:
- ZIP, ca. 34,8 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Ubuntu GNU/Linux von Marcus Fischer
Das umfassende Handbuch, aktuell zu Ubuntu 10.04 LTS "Lucid Lynx"
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
5., aktualisierte und erweiterte Auflage, gebunden, mit 2 DVDs
1.104 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1654-8
Pfeil 16 Programmierung und Design
Pfeil 16.1 Programmiersprachen
Pfeil 16.1.1 Interpretersprachen
Pfeil 16.1.2 Compiler-Sprachen
Pfeil 16.2 Integrierte Entwicklungsumgebungen
Pfeil 16.2.1 Anjuta – für C/C++
Pfeil 16.2.2 KDevelop – C/C++ unter KDE
Pfeil 16.2.3 Eclipse
Pfeil 16.2.4 Lazarus – Delphi-Klon
Pfeil 16.2.5 Gambas – Visual-Basic-Ersatz
Pfeil 16.3 Webdesign

»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.« Andree Beaulieu-Green (1925–2005), kanadische Computerwissenschaftlerin

16 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 man die wichtigsten Programmiersprachen und Entwicklerwerkzeuge installiert. Anhand eines durchgängigen Beispiels wird die Funktion der Werkzeuge demonstriert. Im letzten Abschnitt kommen auch Webentwickler und Layouter nicht zu kurz: Hier werden Werkzeuge zur Erstellung von Internet-Content vorgestellt.

Benötigtes Vorwissen

Kenntnisse in der Arbeit mit dem Terminal sind hilfreich (siehe Kapitel 15, »Das Terminal«).


Galileo Computing - Zum Seitenanfang

16.1 Programmiersprachen Zur nächsten ÜberschriftZur vorigen Überschrift

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

  • Interpretersprachen
  • Compiler-Sprachen

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


Galileo Computing - Zum Seitenanfang

16.1.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 ein kleines Programm erstellt werden soll, das nicht unbedingt auf komplexe Systemfunktionen zugreifen soll.

Shell-Skripte

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 eine 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 5 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 selbst wird als fakultaet.sh abgespeichert und wie folgt ausgeführt:

bash fakultaet.sh 5

Dash statt Bash

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


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 man einsetzt, sind nach dem done nicht zu sehen, da sie nicht an die Eltern-Shell zurückgegeben werden.


Rechte ändern

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

Abläufe automatisieren

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


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.


Perl

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 erstellen).


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, kann man sich Sicherheit verschaffen, indem man die Originaldateien behält: Durch -i.bak anstelle von -i bleiben die Originale erhalten und bekommen die Endung .bak.


Python

Python ist eine objektorientierte Programmiersprache, die sich durch einen klaren Aufbau auszeichnet. Unter Ubuntu wird Python über das Paket python installiert. 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.


Grep mit regulären Ausdrücken

Reguläre Ausdrücke werden verwendet, um Teile in einem Text-Bereich 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.)


Galileo Computing - Zum Seitenanfang

16.1.2 Compiler-Sprachen topZur vorigen Überschrift

Zu den Compiler-Sprachen zählt der Großteil der Programmiersprachen, die zur Umsetzung groß angelegter Software-Projekte eingesetzt werden. Abbildung 16.1 zeigt das prinzipielle Vorgehen zur Erstellung eines Programms mithilfe eines Compilers.

Der Programmierer muss sich meist »nur« um das Erstellen von einem korrekten Code kümmern, das Kompilieren und Linken der Programme erledigt ein einfacher Kommandozeilenbefehl.

C/C++

Das gesamte Betriebssystem Linux wurde in der Programmiersprache C erstellt. Möchten Sie selbst Programme aus Quellen übersetzen, so ist mindestens der C-Compiler erforderlich.

Unter Ubuntu installieren Sie sämtliche zum Erstellen von C-Programmen benötigten Pakete über das Meta-Paket build-essential. Dadurch werden sowohl der C- als auch der C++-Compiler sowie die fmake-Utilitys installiert. Sie können die Funktionsweise des Compilers erneut mithilfe unseres Standardprogramms testen.

Abbildung 16.1 Schritte zur Übersetzung eines Programms

Erstellen Sie eine Datei fakultaet.cpp mit folgendem Inhalt:

#include <iostream>
using namespace std;
int fak(int n);
int main(void)
{
  int n;
  cout << "Fakultät: " << fak(5) << endl;
}
int fak(int n) {
  if (n==0) return 1;
  else return n*fak(n-1);
  }

Im vorliegenden Fall wurde die Fakultätsberechnung als eigenständige, rekursive Funktion fak implementiert. Nach der Eingabe wird das Programm zunächst über

g++ -o fakultaet fakultaet.cpp

kompiliert und anschließend mittels ./fakultaet gestartet.

Anwenderprogramme kompilieren

Mithilfe des C-Compilers können Sie aber nicht nur kleine Programmierprojekte selbst realisieren; vielmehr sind Sie in der Lage, durch das Kompilieren von Quellen Linux-Anwenderprogramme ganz Ihren Anforderungen bzw. Ihrer Hardware anzupassen.

Java

In Ubuntu ist OpenJDK das standardmäßig installierte Java. Möchten Sie damit Java-Projekte realisieren, so benötigen Sie in jedem Fall das Paket openjdk-6-jdk. Um die Grafikfähigkeiten von Java zu demonstrieren, erstellen wir ein Programm, das eine Treppe aus Rechtecken erstellt, deren Höhe quadratisch zunimmt.

Erstellen Sie eine Datei treppe.java mit folgendem Inhalt:

import java.applet.*;
import java.awt.*;
public class treppe extends Applet{
  int x=1; int y;
  public void paint (Graphics pen) {
    while (y<100) {
      y=x*x;
      pen.fillRect(x*10, 100-y, 10, y);
      x++;
    }
  }
}

Das Programm wird mit dem folgenden Befehl übersetzt:

javac treppe.java

Applet einbinden

Dadurch wird eine Java-Klassendatei treppe.class generiert, die allerdings nicht eigenständig lauffähig ist. Binden Sie die Klasse in eine HTML-Datei namens treppe.html ein:

<HTML>
<BODY>
  <APPLET code="treppe.class" width=350 height=120>
  </Applet>
</BODY>
</HTML>

Nun können Sie das Applet im Applet-Viewer, der zum Sun-Java-Paket gehört, folgendermaßen testen (Abbildung 16.2):

appletviever treppe.html

Abbildung 16.2 Der »Applet-Viewer«

Wenn das klappt, dann lässt sich das Applet auch in jedem beliebigen Browser darstellen. Selbstverständlich haben Sie auch die Möglichkeit, browserunabhängige Java-Applikationen zu erstellen.


Buchtipp

Das folgende Beispiel wurde dem beliebten Java-Buch »Java ist auch eine Insel« von Christian Ullenboom entnommen, das als Openbook unter www.galileocomputing.de/2069 für jedermann frei verfügbar ist.


Java-Beispiel

import java.math.*;
class Fakultaet
{
  static BigInteger fakultät( int n )
  {
    BigInteger big = BigInteger.ONE;
    if ( n == 0 || n == 1 )
      return big;
    if ( n > 1 )
      for ( int i = 1; i <= n; i++ )
        big = big.multiply( BigInteger.valueOf(i) );
    return big;
  }
  static public void main( String args[] )
  {
    System.out.println( fakultät(100) );
  }
}

Kompiliert wird die Applikation wieder mittels javac, anschließend können Sie das Programm über

java Fakultaet

starten. Im vorliegenden Fall wird die Java-Mathematik-Bibliothek dazu verwendet, die Fakultäten möglichst großer Zahlen n in ganzzahliger Darstellung zu berechnen.

Mono

Als Open-Source-Alternative zu Microsofts .NET Framework ist Mono in aller Munde. Skeptiker bescheinigen dem Projekt jedoch leider keine große Zukunft, falls sich Software-Patente auf breiter Basis durchsetzen.

Unter Ubuntu sind einige (wenn auch veraltete) Mono-Pakete integriert. Eine brauchbare Entwicklungsumgebung lässt sich durch die Installation folgender Pakete installieren:

  • mono-devel
  • gtk-sharp2

Das letzte Paket stellt Bibliotheken zur Erstellung von GTK-Programmen in Verbindung mit dem C-Compiler des Mono-Pakets zur Verfügung.



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






 Linux


Zum Katalog: OpenVPN






 OpenVPN


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Webserver einrichten und administrieren






 Webserver einrichten
 und administrieren


Zum Katalog: VirtualBox






 VirtualBox


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2010
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