HTML

Vorwort

Wer in HTML programmieren will, muss sich an sehr viele Dinge ersteinmal gewöhnen:

  • Nicht jedes WYSIWYG Programm ist für eine saubere Programmierung geeignet.
  • Es gibt verschiedene Arten, HTML-Seiten zu programmieren und auch verschiedene Standards.
  • Nicht alles, was in HTML möglich ist, wird gerne gesehen und funktioniert auch nicht immer.
  • Wer eine Seite veröffentlichen will, muss sich mit sehr vielen gesetzlichen Auflagen herumschlagen.
  • Eine gute Seite zu programmieren bedarf sehr viel Geduld und einen großen Zeitaufwand.

Zu den aktuell gängigsten Standards gehören Javascript, PHP, Flash, XML, XHTML, HTML und CSS.
Dazu ist noch zu sagen, dass Javascript beinahe nichts mit Java, der Programmiersprache im Softwarebereich, zu tun hat. Javascript und PHP werden eingesetzt, wenn auf Datenbanken, gesicherte Seiten, Serverseitige Daten etc. zurückgegriffen werden muss. Beispiele dafür sind Bankseiten, aber auch Foren und eCommerce-Seiten.
Eine gemeine Internetseite begnügt sich in der Regel mit ein paar Flash-Animationen, etwas Javascript, CSS und normalen HTML oder XHTML. Für weitere Standards und die entsprechenden Erklärungen dazu wird später verwiesen.
Zu den zu beachtenden Rechtlichen Dingen gehören:

  • Namen von Internetseiten (geschützte Namen werden teuer!)
  • Copyrights- oder sogar Urheberrechtsverletzungen beim Kopieren, Drucken oder Speichern von Inhalten diverser Seiten
  • Das Bereitstellen von Software oder Archiven, die dem Urheberrecht unterliegen oder sogar gesetzlich verboten sind
  • Der Inhalt der eigenen Internetseite, der gegen keinerlei geltende Gesetze verstoßen darf (auch Verleumdungen)
  • Das Kopieren und abändern anderer Internetseiten, um dessen Aufbau für seine eigenen Zwecke zu verwenden, ist entweder verboten oder nur unter gewissen Voraussetzungen geduldet (z.B. Namen des Herstellers im Quelltext)

WYSIWYG-Programme

WYSIWYG-Programme (What you see is what you get) ermöglichen ein schnelles und meist auch problemloses zusammenstellen von Internetseiten. Das Problem, welches die meisten Programme dieser Art haben, ist, dass sie genau das machen, was der Benutzer will, und dass das zum Einen nicht immer die beste Methode und zum anderen nicht immer Browserübergreifend ist.
Deshalb empfehle ich jedem, der wirklich programmieren will, zu reinen Editoren. Natürlich gibt es sehr gute Programme wie Dreamweaver, die sind allerdings aufgrund ihres Preises nicht für jeden verfügbar. Ich selbst programmiere nur mit kostenlosen und guten Editoren wie Bluefish (Linux). Solche Editoren sind meist besser als manches WYSIWYG-Programm, da sie z.B. auch selbständig den Code vervollständigen. Bei solchen Programmen muss man einfach programmieren können und man weiß dann auch, was man tut. Eine solche Arbeitsweise ist sauber und erfordert etwas mehr Engagement.

Folgende (größere) WYSIWYG-Programme gibt es unter Windows:

  • 8 Legs Web Studio
  • Frontpage
  • Dreamweaver
  • Ant
  • Net Objects
  • Go live!
  • HomeSite
  • Live Markup
  • WebMedia Publisher

Unter Linux arbeitet man meistens mit den folgenden Programmen:

  • NVU
  • Quanta Plus

Dagegen gibt es unter Linux viel mehr Editoren, welche die oben genannte Arbeitsweise unterstützen.
Eine erweiterte Liste mit Erläuterungen und Links gibt es unter SELFHTML.

Webseiten erstellen

Wer nun richtig und auch professionell Webseiten erstellen möchte, kommt an SELFHTML nicht vorbei. Dabei handelt es sich um ein sehr großes Projekt, bei dem beinahe alles über Webseitenprogrammierung gelehrt wird. Die ganze Seite steht auch zum Download bereit. Dazu findet man hier noch eine sehr große Linkliste und viele Tipps, meiner Meinung nach die beste Seite im Netz zu diesem Thema.

↑ Nach oben

Software programmieren

Programmiersprachen

Um Software zu programmieren, bieten sich verschiedene Programmiersprachen an. Dabei spielt es primär keine Rolle, welche Programmiersprache man verwendet, wichtig ist nur, dass man diese 100prozentig beherrscht.
In der Softwareentwicklung unterscheidet man prinzipiell zwischen zwei großen Typen von Programmiersprachen:

>Interpretersprachen
>Compilersprachen

Interpretersprachen wie Java oder Flash sind Plattformunabhängig, d.h. es spielt in der Regel (außer sie sprechen spezielle Graphikbibliotheken etc. an) keine Rolle, ob diese unter Linux oder Windows laufen. Wichtig ist nur, dass das Betriebssystem etwas damit anfangen kann. Das heißt konkret, dass meist zum Interpretieren dieser Sprachen eine gewisse Bibliothek oder ein Programm benönitigt wird. Java beispielsweise benötigt die von Microsoft oder die von Sun angebotene Java Runtime Environment (JRE).
Compilersprachen sind zum Beispiel C, C++, Basic etc.. Schreibt man zunächst ein Programm in der dafür vorgesehenen Programmiersprache, z.B. C, so kann der Computer garnichts damit anfangen, weil er es nicht versteht. Ein Computer kann im allgemeinen nicht mehr als ein Mensch, er kann es "nur" schneller. Ein handelsüblicher PC versteht lediglich Ein und Aus Signale. Es ist für ihn nur relevant, ob ein Kondensator geladen ist oder nicht. Um nun dem Computer verständlich zu machen, was er tun soll, muss ein Programm kompiliert, d.h. in Computersprache übersetzt, werden. Das erledigt der Compiler, der entweder bei einer IDE (integrierte Entwicklungsumgebung=integrated development environment) dabei ist, oder aber im Internet kostenlos zum Download zur Verfügung steht. Allerdings handelt es sich bei den meisten Compilern nicht um reine Compiler, sondern um Compilerpakete. Dies wird aber später genauer erläutert.
Der Compiler übersetzt den Quellcode in einen für den Computer verständlichen Code, den Binärcode. Das heißt, dass Programm besteht, wenn es fertig ist, nur aus Nullen und Einsen. Das ganze wird im nächsten Kapitel genauer erklärt. Die folgenden Beispiele und Erklärungen werde ich in C++, einer Erweiterungen von C, halten. Das hat den praktischen Aspekt, dass Java und C ohne Probleme davon abgeleitet werden können, da sie zur gleichen oder ähnlichen Sprachfamilie gehören. Außerdem werde ich die Beispiele auch nicht C++ spezifisch machen, da ich denke, dass C++ Eigenheiten wie Klassen und Objekte ohnehin für einen absoluten Newbie viel zu kompliziert sind.

Programme

Um programmieren zu können, muss man unter Linux nur gcc und g++ sowie die benötigten Bibliotheken und einen Editor installiert haben, unter Windows empfehle ich folgende IDE: DevC++. Mit DevC++ kann man ohne Probleme kleinere Programme schreiben, kompilieren und ausführen, und sie ist kostenlos. Die zu herunterladende Datei sollte den Mingw/gcc Compiler enthalten, diesen allerdings im Moment noch nicht in der Version 4.0, da hier Probleme auftreten könnten.

C++ - Ein Einstieg

Vorweg: Ich kann hier nur einen kleinen Eindruck in die Programmierwelt geben, da viele Schriftsteller nicht umsonst 1000te Seiten geschrieben haben, um einigermaßen die Problematik auf Papier zu bekommen. Deshalb wird früher oder später ein Buch fällig werden. Für einen kleinen Einstieg allerdings wird diese Seite wohl genügen. Die folgenden Beispiele sind vom Copyright ausgenommen, da sie zur Veranschaulichung wenigstens einmal kompiliert sein müssen.
Das folgende Programm kann zunächst nur in der Konsole ausgeführt werden und macht fast nichts, es schreibt lediglich "Hallo Welt" auf den Bildschirm:


1 #include <iostream.h>
2 using namespace std;
3 int main (void){
4   //Ich bin ein sinnloser Kommentar, der über eine Zeile geht
5   /*Ich bin auch ein Kommentar und kann
6     mehrere Zeilen umfassen*/
7   cout << endl << "Hallo Welt" << endl;
8 return 0;
9 }
			   

Doch was tun nun diese Zeilen? Das und auch den genauen Kompiliervorgang werde ich im folgenden genauer Erläutern.
Die erste Zeile ist essentiell. Mit der sogenannten Präprozessordirektive #include wird dem Präprozessor (ein Teil des Compilerpacketes) mitgeteilt, dass er die benötigte Funktion für den cout - Befehl in der Datei iostream.h findet. Diese sog. Headerdateien (Erweiterung h) beinhalten bereits vorgefertigte Funktionen. Speziell bei iostream (in- and out stream=Ein- und Ausgabestrom) bedeutet dies, dass in dieser Datei beschrieben wird, wie cout arbeitet. Der Präprozessor hat nun die Aufgabe, beim Kompiliervorgang diese Headerdatei in die Quelldatei (obiger Code) einzufügen und die Kommentare zu beseitigen, da diese nur der Übersichtlichkeit dienen. Ist das getan, kommt der eigentliche Compiler zum Einsatz, der den Quellcode (meist in einer .cc oder .cpp Datei abgespeichert) nun in eine Objektdatei abspeichert (diese ist bereits im Binärcode vorhanden). Eine Objektdatei ist dabei ein Modul, dass auch später für andere Programme verwendet werden kann. Aber bis jetzt ist die Datei noch nicht ausführbar. Das erledigt der Linker, der die Objektdatei mit anderen Modulen und Standardbibliotheken zu einer ausführbaren (.exe) Datei bindet.

Ein weiterer wichtiger Punkt im Quellcode ist die Funktion int main(void){}, die in jedem C++ Programm vorhanden sein muss. Dabei handelt es sich um, wie der Name schon sagt, die Hauptfunktion des Programms, bei der alles anfängt und aufhört. Prinzipiell wird ein Programm von oben nach unten abgearbeitet. Dazwischen kann es vorkommen, dass es in andere Funktionen des Quellcodes springt oder ganze Teile überspringt, weil eine Bedingung nicht erfüllt ist. Dazu gibt es später noch ein ausführlicheres Beispiel, dass dies noch genauer zeigt. Das int vor main ist ein spezieller Datentyp, der integer (Ganzzahl) Datentyp. Einen solchen, ganzzahligen, Wert gibt das Programm nach erfolgreichem Durchlauf an das Betriebssystem zurück, denn Betriebssystem und Programm kommunizieren miteinander. Ist das Programm vollständig durchgelaufen, gibt es mit dem Befehl return 0; den Wert 0 an das Betriebssystem zurück, was bedeutet, dass alles ok war. Wurde das Programm nicht vollständig und damit fehlerbehaftet durchlaufen, gibt das Programm einen von Null verschiedenen, größeren Wert zurück. In der Regel sind die diversen Zahlen (bis 256) jeweils mit einem bestimmten Fehlercode versehen, der dem User den mitgeteilt wird. Die öffnente und schließende, geschweifte Klammer grenzt den Bereich der main Funktion ein. Der Teil using namespace std; ist eine C++ Speziallität, die jetzt nicht besprochen, sondern nur akzeptiert werden soll. Ein umfangreicheres Tutorial wird zur Zeit noch ausgearbeitet und soll erst zu einem späteren Zeitpunkt online gestellt werden.

↑ Nach oben

Objektorientierte Programmierung

Bei der Objektorientierten Programmierung handelt es sich nicht, wie viele Glauben, um GUI-Programmierung, sondern um ein Gedankenmodell. In der Programmiersprache C hat man die Möglichkeit, Standardfunktionen wie mathematische Funktionen in Headerdateien zu packen. Mit Hilfe der #include-Direktive kann man dann jederzeit auch in einem anderen Programm darauf zurückgreifen.
In C hat man außerdem noch die Möglichkeit, Variablen von mehreren, einzelnen Datenvariablen in sogenannte Strukturen zu fassen. Beispiel: Eine Struktur Auto enthält Daten wie Benzinverbrauch, Gewicht, Fahrzeugmodell ... Da beispielsweise das Fahrzeugmodell als Zeichenkette und das Gewicht als Fließkommazahl abgespeichert werden müssen, braucht man eine Struktur, da in ihr verschiedene Datentypen deklariert sein können. Kurzum: Die Struktur Auto ist eine Zusammenfassung der Eigenschaften eines Fahrzeugs. Da man nun verschiedene Automodelle etc. hat, muss man nur noch Variablen für diese Modelle deklarieren, die dann quasi den "Datentyp" Auto haben. Um das Ganze noch übersichtlicher zu machen, kann man dann noch Strukturen als Unterstrukturen in andere Strukturen einbinden. Beispiel: Man kann in die Struktur Auto noch die Struktur Hersteller einbinden, die z.B. den Namen und die Adresse des Herstellers beinhaltet.
Zur Objektorientierung: Im Laufe der Zeit wurden die Programme, gerade bei GUI- Anwendungen, immer umfangreicher. Zunächst versuchte man, dies mit mehreren Header- und Quelldateien zu kompensieren. Als dies nicht mehr ausreichte bzw. zu unübersichtlich wurde, dachte man über eine Erweiterung von C nach.
C++ ist eine Erweiterung der Programmiersprache C. Man stellte fest, dass Strukturen alleine nichts nutzten, da man ja mit einem Auto ja auch bremsen, anfahren etc. kann, und diese Dinge eigentlich auch zur Struktur Auto gehörten. Damit war der Grundstein für Klassen gelegt.
Klassen sind quasi eine Erweiterung der in C bekannten Strukturen. Klassen beinhalten sog. Objekte wie Eigenschaften und Methoden. Dabei handelt es sich bei den Eigenschaften um nichts anderes als Variablen, die eine bestimmte Klasse ausmachen. Methoden sind dagegen Funktionen, die zu einer bestimmten Klasse gehören.
Ein Beispiel:
Eine Klasse Buch beinhaltet Eigenschaften wie Seitenzahlen (Datentyp Integer), Inhalt (Datentyp char/string) etc.. Methoden dieser Klasse wären blättern, suchen, lesen ...

  ©2005 by Antonio Zangaro