|
|
  |
|
|||||||||||
|   |   Portrait   |   Publikationen, Anleitungen etc.   |   Programmieren   |   Photoalbum   |   Links   |   switch to english   |   | ||||||
|
|
  |
|
|||||||||||
|
Programmierung und EntwicklungEin Nachteil gegenüber der alten Zettelwirtschaft ist, dass es nicht unbedingt die eigene Schuld sein muss, wenn man nichts wiederfindet. Seiten ziehen leider oft um und die besten sterben auch hier manchmal jung. Wenn einer dieser Links tot ist, würde ich mich über eine E-Mail freuen. Wenn Sie einem der Links folgen und den Artikel sehr gut finden, empfehle ich Ihnen, diese mit w3mir oder wget zu spiegeln. Damit ist die Zettelsammlung doch wieder auf dem eigenen Rechner und man ist wieder selbst Schuld, wenn man nichts findet ... ;-) Zu folgenden Themen sind hier Informationen zusammengetragen :
ProgrammiersprachenWenn man etwas programmieren will, braucht man zu allererst eine Programmiersprache. Hier eine kleine Auswahl von Sprachen und Dokumentationen.Cist die Ursprache des Betriebssystems Linux und diverser anderer Unixsysteme. Man kann mit C u.a. sehr leistungsfähige schnelle Programme schreiben, wichtig z.B. im mathematisch anspruchsvollen Bereich. Ein weiterer Vorteil von C ist sicher, dass auf Grund des ANSI-Standards C-Programme, die portable Bibliotheken verwenden, sehr gut zwischen verschiedenen OS hin und her portiert werden können. Auch ist C die Grundlage von C++ und als solche auch ein guter Einstieg in diese Programmiersprache. (Die Freunde und Verfechter einer stark objektorientierten Programmierung wollen das sicher nicht hören :-) )Compiler & Ressourcen Die Homepage des gcc Compilers. Skripte zum Einsteigen und Weiterbilden gibt es u.a. hier
C++C++ ist quasi C mit der Möglichkeit der objektorientierten Programmierung. Damit ist C++ eine echte Mehrzwecksprache und unterstützt insbesondere effiziente und maschinennahe Programmierung und Datenabstraktion. Da man in C++ nicht immer unbedingt OO programmieren muss wird C++ auch oft als Hybridsprache bezeichnet.Compiler & Ressourcen Auch hier kann der gcc als Compiler dienen. Mit dem Aufruf g++ ist man im ''C++ -Modus''. Skripte zum Einsteigen und Weiterbilden gibt es u.a. hier
PascalIch habe Pascal in der Schule gelernt und auch später auf meinem Atari (ja Atari nicht Amiga *bäh*) mit Borland Pascal programmiert.Ich denke, Pascal ist immer noch eine der schönste Sprachen zum Programmiereinstieg (Lehre). Dank dem GNU Pascal- und dem Free Pascal Compiler und in gewisser Weise auch Borlands Delphi ist Pascal durchaus in der aktuellen Entwicklung im Einsatz. Compiler & Ressourcen Die Homepage des GNU Pascal Compilers. Ich würde empfehlen, den Compiler unbedingt direkt von der Homepage herunter zu laden, da manche Linux Distributionen (z.B. SuSE) zumindest eine zeitlang eine total veraltete Version ausgeliefert haben. Er unterstützt unter anderem die Pascal Standards UCSD Pascal, Borland Pascal, Pascal-SC. Außerdem unterstützt er die Crossentwicklung für Linux-Windows und die Bibliothek gtk (s.u.). Skripte zum Einsteigen und Weiterbilden gibt es u.a. hier
FortranIch habe oft gehört, Fortran sei tot... nun, für einen Toten läuft mir diese Sprache ziemlich oft über den Weg. Viele ''alte'' Programme im natur/ingenieurwissenschaftlichen Bereich sind in Fortran geschrieben und werden noch immer genutzt und gewartet.Compiler & Ressourcen Auch hier kann der gcc als Compiler dienen. Mit dem Aufruf f77 ist man im ''Fortran-Modus''. Skripte zum Einsteigen und Weiterbilden gibt es u.a. hier
Shell-ProgrammierungBeim Linux-Magazin liegen ein paar alte Artikel, die man sich zu dem Thema mal durchlesen könnte und zwar:Perl
Bibliotheken / LibsGrafik/GUIgtk+Die gtk ist eine der Bibliotheken, die das Erstellen von graphischen Oberflächen für viele verschiedene Betriebssysteme unter vielen verschiedenen Programmiersprachen erlaubt. Außerdem steht sie unter der LGPL, was für viele ein großer Vorteil gegenüber der QT ist.Außerdem bringt die gtk mit der GLib eine wunderbare, portable ''Erweiterung'' für C-Programmierer mit. Die GLib ist als solche schon so interessant, weshalb ich auch jemandem, der keine graphische Oberfläche programmieren möchte, einen Blick auf die gtk-Seiten nahe legen möchte. Homepage : http://www.gtk.org Tutorials :
QTDie QT ist eine sehr mächtige Bibliothek, die die Erstellung von graphischen Oberflächen vorwiegend mit C++ unter Windows und Linux ermöglicht.Seitdem Trolltech eine Open Source Version der QT auch für Windows freigegeben hat, ist ein großes Hindernis für die Crossentwicklung weggefallen. Homepage : Die Seiten von Trolltech Tutorials :
OpenGLHomepage :http://www.opengl.org/ Tutorials : Sehr gut ist folgende Tutorial-Serie aus der iX zum Einstieg in OpenGl geeignet. OpenGL-Tutorial, Teil 1 - http://www.heise.de/ix/artikel/1999/12/160/ OpenGL-Tutorial, Teil 2 - http://www.heise.de/ix/artikel/2000/01/152/ OpenGL-Tutorial, Teil 3 - http://www.heise.de/ix/artikel/2000/02/145/ SDL'' Simple DirectMedia Layer is a cross-platform multimedia library designed to provide fast access to the graphics framebuffer and audio device. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power." Simple DirectMedia Layer supports Linux, Win32, BeOS, MacOS, Solaris, IRIX, and FreeBSD.''Homepage : http://www.libsdl.org/ Tutorials : Hier liegen das Tutorial für die SDL: (n)cursesMit (n)curses ist die Programmierung textbasierter Oberflächen möglich. Einige mögen den Sinn einer textbasierten Oberfläche in Zeiten graphischer GUI bestreiten...Ich zumindest tue dies nicht. Erstens benötigt man zum Erstellen einer graphischen GUI in der Regel mehr Zeit, was aber die Leistung und die Benutzerfreundlichkeit des Programms nicht zwangsläufig verbessert. Zweitens sind die graphischen GUI in der Regel sehr netzwerkfeindlich. Starten Sie mal, z.B. den emacs im X-Modus, wenn Sie mit dem Recher, auf dem er läuft, über eine ISDN-Leitung verbunden sind. Das ist völlig unpraktikabel, aber wenn Sie den emacs im Textmodus starten (-nw), dann lässt sich über die schmale Leitung wunderbar arbeiten. Drittens sind textbasierte Oberflächen extrem resourcenschonend und können mit etwas Phantasie auch sehr benutzerfreundlich gestaltet werden. Beispiele sind z.B. w3m, mp3blaster, emacs, lynx, mutt usw. Tutorials :
NumerikMathtools.net - Sammlung von wissenschaftlichen und ingenieurtechnischen AlgorithmenGNU mp- Arithmetik mit beliebiger Präzision GNU Scientific Library - Große Sammlung von Routinen für numerische Berechnungen Die Meta Matrix Library ist eine Open Source Bibliothek welche dichte und dünnbesetze Matrizen unterstützt Die Free Finite Element Package ist eine Open Source Bibliothek welche wesentliche Funktionen zum Arbeiten mit Finiten Elementen enthält Blitz++ - C++ Klassenbibliothek für wissenschaftliche Berechnungen Numerical Recipes - Umfangreiches Online Buch, DIE Referenz für numerische Algorithmen Datenkomprimierungzlib - Patentfreie Routinen zur Datenkomprimierung.LZO - Bibliothek für schnelle Datenkomprimierung. OpenSSL - Implementierung von SSL, TLS und kryptografischer Routinen wie RSA Crypto++ - Freie C++ Klassenbibliothek mit kryptografischen Algorithmen Kryptografische Bibliotheken - Verzeichnis von Entwicklertools und Libraries zu kryptografischen Algorithmen EntwicklungswerkzeugegdbEin Debugger ist ein Entwicklungswerkzeug zur Fehlersuche im Programmcode. Mit ihm kann der Programmierer das Verhalten eines Programms Zeile für Zeile analysieren. In vielen Entwicklungsumgebungen ist bereits eine Schnittstelle zu einem entsprechenden Debugger eingebaut. Unter Linux und vielen anderen Unixsystemen ist der gdb (GNU-Debugger) dieser Debugger. Für echte Gurus ist vermutlich der ``direkte gdb`` das Werkzeug der Wahl, u.a. wegen seines riesigen Kommandoumfangs. Des Profis Freud ist des Anfängers Leid. Für Anfänger ist es häufig vielleicht sinnvoll, sich eine GUI zum gdb anzusehen, z.B. den ddd (s.u.).Homepage : http://www.gnu.org/software/gdb/gdb.html Tutorials :
dddFür Einsteiger jedoch ist eine graphische Schnittstelle zum gdb (s.o.) hilfreicher. Das graphische Frontend ddd bietet hier alles, was man sich so wünschen kann.Homepage : http://www.gnu.org/software/ddd/ddd.html Tutorials :
Autoconf, Automake & Libtoolssind Werkzeuge um dem Autor von Software für Unix-Betriebssysteme die Distribution zu erleichtern. Die Unix-Betriebssystem Welt ist nämlich im Allgemeinen nicht sehr einheitlich. Es existieren u.a. zahlreichen unterschiedliche Ort wo sind eine Lib befinden könnte.Darin unterscheiden sich schon die diversen Linux-Distributionen, was häufig eine spezielle Anpassung der eigenen Software an das System erfordert würde. Es besteht die Hoffnung, dass sich dieses Problem in der Zukunft durch den LFS verringern wird. Um den Arbeitsaufwand bei der Installation in Grenzen zu halten, bietet sich eine automatisierte Anpassung des Programmpaketes an die Umgebung während der Installation an. Eben diese Automatisierung leisten autoconf, automake und die libtools. Für viele sind diese Werkzeuge der Weg um Software für Unix-Betriebssysteme zu verteilen. Alternativen wie das rpm-Format haben den Nachteil, dass es wieder distributionsabhängig ist und das die Software bereits vorkompiliert wurde, und zwar für einen i386. Es ist klar, dass dies zu Performance-Verlusten führt... Homepage : http://www.gnu.org/manual/autoconf/ http://www.gnu.org/software/automake/ http://www.gnu.org/software/libtool/ Tutorials :
CVSCVS verwaltet die History des Quellcodes eines Softwareprojekts (es kann auch für Internetseiten und Ähnliches eingesetzt werden). Es werden zu jeder bearbeiteten Datei die Veränderungen, ihre Uhrzeit und der Urheber gespeichert. Außerdem kann die Datei mit beschreibenden Hinweisen versehen werden, damit die Mitentwickler wissen, was warum geändert wurde. usw. etc. ...Für umfangreichere Projekte mit vielen Beteiligten ist ein CVS-Server sicher eine große Hilfe. Homepage : http://www.cvshome.org/ Tutorials :
gladeMit glade ist man in der Lage, die Entwicklungszeit für eine gtk-GUI um ein Vielfaches zu beschleunigen. Die Oberfläche läßt sich mit der Maus designen und man kann sich anschließend auf die wesentliche Programmierarbeit beschränken.Glade ist in der Lage, sowohl einen Programm-Code in C/C++/Perl usw. zu erzeugen als auch ein XML Dokument ... eine Funktion, die ich noch nie benutzt habe. Homepage : http://www.gtk.org Tutorials :
Editoren und EntwicklungsumgebungenemacsEs ist sehr schwierig, den emacs in ein paar Zeilen zu beschreiben, da es sich um ein sehr mächtiges Programm handelt, mit dem man sehr viel mehr machen kann, als nur Texte zu schreiben oder zu verändern (z. B. mail, file-transfer, Dateiverwaltung). Ein großer Vorteil des emacs aus meiner Sicht ist, dass es ihn für so ziemliches jedes OS gibt; das bedeutet, wenn ich mich einmal in den emacs eingearbeitet habe, kann ich ihn unter Linux, Solaris, Windows usw. verwenden. Der emacs ist aus vielen Funktionen (Befehlen) aufgebaut, die in der Sprache LISP geschrieben sind. Es ist also auch möglich, Kenntnisse in LISP vorausgesetzt, ihn beliebig zu erweitern. Desweiteren stehen unterschiedliche Modi für die verschiedensten Aufgaben zur Verfügung, z.B. ein LaTex-, C-, Text-Modus usw.Homepage : Tutorials :
vivi ist der Texteditor, der auf nahezu jedem UNIX-Rechner vorhanden ist und auf den man bei den meisten ''Rettungssystemen'' noch setzen kann. Auf viele wirkt der vi recht antiquiert, auf mich auch, aber ich habe schon wahre Meister dieses Editors gesehen und bei denen wirkte er... wesentlich besser. Auch wenn die Verwendung eines anderen Editors vielleicht einfacher erscheint, ist es nützlich, vi zu kennen, nämlich dann, wenn man an einem Rechner arbeitet, auf dem sonst kein anderer Editor läuft. Außerdem ist unter Linux die Bedienung vieler Programme an die des vi angelehnt, z.B. less.Homepage : Tutorials :
kdevelop''Das KDevelop-Projekt wurde 1998 begonnen, um eine einfach zu benutzende graphische C/C++ IDE (Integrierte Entwicklungsumgebung) für Unix bereit zu stellen. Seit damals ist die KDevelop IDE öffentlich unter der GPL erhältlich und unterstützt Qt/KDE, GNOME, C und C++ Projekte.''(dt.kdevelop-Seite)Im Moment ist kdevelop eine der besten Entwicklungsumgebungen unter Linux, die als OpenScource erhältlich ist. Leider ist es im Moment noch nicht möglich, kdevelop zur Entwicklung von Bibliotheken einzusetzen. Auch größere Projekte, die auf einen bestimmten Aufbau des src/ - Verzeichnisses bestehen, sind noch schwer zu integrieren. Aber in seinem Urgebiet, als Entwicklungsumgebung von QT/GNOME Programmen, ist er sicher fast unschlagbar. Auch gibt er ''Anfängern'' die Möglichkeit, mit so schönen Entwicklungswerkzeugen wie CVS und die AutoTools des GNU-Projekts zu arbeiten, ohne sich lange in deren Konfiguration einarbeiten zu müssen. Homepage : Die Kdevelop-Homepage in Englisch Kdevelop-Homepage in Deutsch Tutorials : Allgemein zu IDE'sEin Artikel aus dem Linux-Magazin allgemein zu IDE's unter Linux, *BSD und OpenSource |