![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Das Thema in diesem Abschnitt sind Programmiersprachen, vor allem
natürlich solche, die ich selber schon mal ausprobiert habe.
Die Auflistung erhebt keinen Anspruch auf Objektivität oder
Vollständigkeit. BASICMeine erste Programmiersprache war seinerzeit (1983) BASIC. Damals in Erscheinungsform des unsäglich langsamen BASICs des TI-99/4A Computers. Wie ich Jahre später las, lag das daran, daß der TI die BASIC Befehle in einen Zwischencode interpretierte, der seinerseits auch wieder interpretiert wurde. Wenig später folgte der Commodore 64 und sein 64er BASIC. Das war schon etwas schneller, aber hatte ebenfalls Beschränkungen, die einem heute die Haare zu Berge stehen lassen:
Nach dem 64er war der Commodore Amiga dran. Das BASIC dieses
Rechners war verglichen damit eine Wohltat. Anfänge der
strukturierten Programmierung waren zu erkennen und man brauchte
keine Zeilennummern mehr. 10 REM BEISPIELPROGRAMM IN 64ER BASIC 20 PRINT "HERZLICH WILLKOMMEN ZU DIESEM BEISPIELPROGRAMM" 30 FOR I = 0 TO 9 40 : PRINT I 50 NEXT I AssemblerMit dem Commodore 64 fing es an und seitdem habe ich fast alle Rechner auch mal in Assembler programmiert. Nie besonders intensiv, aber immerhin auf den Chips 6510, 68000, i486 und Mikrocontroller von Atmel. Assembler zu programmieren ist mühsam. Die kleinsten Dinge
brauchen scheinbar viele Befehle und man kommt nur sehr schleppend
voran. Außerdem ist es in keiner anderen Sprache so leicht,
vernichtende Fehler zu machen, die früher grundsätzlich
den ganzen Rechner abstürzen ließen. Trotz aller Handikaps habe ich immer mal gerne in Assembler
programmiert. Man lernt den Prozessor und das Betriebssystem
viel besser kennen als mit anderen Sprachen, weil man sonst
nicht mal kleinste Aufgaben lösen kann. ; Beispielprogramm in x86 Assembler fuer Linux section .data msg1 db 'Herzlich willkommen zu diesem Beispielprogramm!',0x0A len1 equ $ - msg1 align 4 msg2 db '0',0x0A align 4 section .text global _start _start: mov eax,4 mov ebx,1 mov ecx,msg1 mov edx,len1 int 0x80 mov ecx,msg2 mov edx,2 mov eax,48 mov esi,msg2 _schleife1: mov [esi],al mov edi,eax mov eax,4 int 0x80 mov eax,edi inc al cmp al,58 jne _schleife1 mov eax,1 int 0x80 ForthDiese ungewöhnliche Sprache war in den 70er und 80er Jahren
relativ populär. Es gab auch ein Forth für den 64er,
das ich mal irgendwo gesehen und ausprobiert habe. 3 2 8 + * Es gibt zwei Stacks in Forth, den üblichen um zum Beispiel
aus Unterprogrammen zurückzuspringen (Returnstack) und den Datenstack. Es wurden auch spezielle Chips entwickelt im Embedded-Bereich, die
zwei Stacks hardwaremäßig haben und darum natürlich mit
Forth besonders gut zu programmieren sind. / Beispielprogramm in Forth ." Herzlich willkommen zu diesem Beispielprogramm!" cr : schleife 10 0 ?do i . cr loop ; schleife PascalIm Studium lernten wir Pascal. Verglichen mit dem, was ich davor
gekannt hatte, war Pascal sehr streng. Man konnte nicht mehr
wie in BASIC oder Assembler verschiedene Datentypen der gleichen
Variable oder Speicherzelle zuweisen, alle Variablen mußten
vor der ersten Benutzung ausführlich deklariert werden usw. Eines der Hauptprobleme mit Pascal ist meiner Ansicht nach die Herkunft. Pascal wurde als reine Lehrsprache entwickelt, nicht für industriellen Einsatz. Daher fehlten viele nötige Konstrukte und es entstand eine Anzahl von Pascal Varianten, die diesen Umstand beheben sollten. Pascal hat moderne Nachfolger wie Modula-2 und Oberon, die aber nie diese Verbreitung gefunden haben. In Form von Delphi lebt Pascal weiter. {Beispielprogramm in Pascal} Program Beispiel; var i : integer; begin writeln('Herzlich willkommen zu diesem Beispielprogramm!'); for i:=0 to 9 do begin writeln(i); end end. CC brauchte ich im Studium. Zuerst war ich wenig begeistert,
und eigentlich bin ich es immer noch nicht. Viele Sicherheitsprobleme in heutigen Rechnern (man denke nur an die regelmäßigen Updates für Windows und auch Linux, die deswegen nötig sind) kommen von einigen Schwierigkeiten, die C verursacht. Besonders die Bufferoverflows sind ein typisches C Problem (und das seiner Nachfolger). Trotzdem sind C und C++ häufig benutzte Sprachen, wie gesagt habe auch ich jahrelang fast alles in C programmiert. Betriebssysteme wie Unix/Linux sind nahezu komplett in C programmiert und auch die dazu gehörigen grafischen Oberflächen fast immer. /* Beispielprogramm in C */ int main() { int i; printf("Herzlich willkommen zu diesem Beispielprogramm!\n"); for (i=0; i<10; i++) { printf("%d\n",i); } return 0; } // Beispielprogramm in C++ #include <iostream> using namespace std; int main (void) { cout << "Herzlich willkommen zu diesem Beispielprogramm!\n"; for (int i=0; i<10; i++) { cout << i << "\n"; } return 0; } PHPPHP als Skriptsprache wird hauptsächlich für die
Erstellung dynamischer Webseiten benutzt. Es ist auch wie andere
Skriptsprachen universell einsetzbar, aber dort gibt es
stärkere Konkurrenz (Python, Tcl/Tk, Ruby, Perl usw). <?php // Beispielprogramm in php echo "Herzlich willkommen zu diesem Beispielprogramm!\n"; for ($i=0; $i<10; $i++) { echo $i."\n"; }?> JavaErst 2003 geriet ich beruflich mit Java in
Berührung. Inzwischen ist Java meine Lieblingssprache. Auch weil ich
privat Windows, Linux und MacOS X verwende. Denn mit Javaprogrammen
muß ich am wenigsten ändern, um es auf allen Systemen
laufen zu lassen. // Beispielprogramm in Java class Beispiel { static public void main (String [] argu) { System.out.println("Herzlich willkommen zu diesem Beispielprogramm!"); for(int i=0; i<10; i++) { System.out.println(i); } } } PerlEbenfalls beruflich benutzte ich Perl. Diese Skriptsprache ist
besonders für die Verarbeitung von Texten geeignet (Spamfilter
beispielsweise oder Alignments in der Bioinformatik). Für bestimmte Anwendungen mag Perl große Vorteile haben, aber irgendwie gefällt mir diese Sprache nicht so sehr. Das kann durchaus an den seltsamen vordefinierten Variablennamen liegen, die so schwer zu merken sind: $_ $. $/ $" und wie sie alle heißen. # Beispielprogramm in Perl use strict; print "Herzlich willkommen zu diesem Beispielprogramm!\n"; my $i; for ($i=0; $i<10; $i++){ print $i,"\n"; } Common LispMeine neueste Entdeckung ist Lisp. Ironischerweise, denn Lisp
ist eine der ältesten Programmiersprachen, die es gibt. Nun, Common Lisp in seiner heutigen Erscheinung ist gar nicht so
alt. Der ANSI Standard ist von 1996, also etwa in der Zeit, in
der auch Java eingeführt wurde. Es ist ein weit verbreiteter Irrglaube, daß Lisp-Programme nur interpretiert werden und sehr langsam sind. Man kann Lisp selbstverständlich compilieren, aber auch interpretieren. Und es ist ebenfalls möglich, schnelle Programme zu schreiben. In Lisp ist es sehr gut möglich, funktional zu programmieren.
Das bedeutet vereinfacht gesagt, daß alles durch Funktionen ohne
Seiteneffekte berechnet wird. Es gibt Lisp Dialekte bzw. Sprachen, die
von Lisp geerbt haben, wo diese funktionale Programmierung noch
viel stärker ausgeprägt ist als in Common Lisp (zum Beispiel
Scheme). ;;;; Beispielprogramm in Common LISP (format t "Herzlich willkommen zu diesem Beispielprogramm!") (do ((i 0 (+ i 1))) ((> i 9) i) (print i)) Andere SprachenDiese kleine Übersicht war sehr subjektiv. Sowohl von der Auswahl als auch von den persönlichen Einschätzungen. Die Reihenfolge kommt chronologisch aus meiner Sicht zustande, also in welcher Reihenfolge ich mit diesen Sprachen programmiert habe. Es gibt noch beliebig viele andere Programmiersprachen, einige
habe ich mal ein paar Stunden angetestet:
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+. +++++++++++++.++++++++.--------------.---.------.+++++. [-]>++++++++[<++++>-]<. >++++++[>+++++[<<+++>>-]<-]<---. --------------.+++..-.++++.--..--------.+++++++++. [-]>++++++++[<++++>-]<. >++++++[>+++++[<<+++>>-]<-]<.-----. [-]>++++++++[<++++>-]<. >+++++++++++[<++++++>-]<++.+++++.----. ++++++++++++++.--------------.++++++++. [-]>++++++++[<++++>-]<. >++++++++[<++++>-]<++.>+++++++[<+++++>-]<. ++++.++++++++++.---.-------.----.+++++++.++++.++.---.--------. +++++++++++.>++++[<---->-]<-.++++++++++++.. [-]>++++++++[<++++>-]<+.[-]++++++++++.[-] >++++++++[<++++++>-] >++++++++++ <++++++++++[<.+>>.<-]Von anderen hab ich schon mal gehört oder ein Programm darin gesehen: Intercal (diese Sprache scheint auf maximale Unverständlichkeit hin optimiert zu sein), PL/1, Ada, Haskell, Simula, Smalltalk, Eiffel, F#, Opal, Comal, JavaScript, Apl, Elan, REXX, Snobol, Occam, C#, Dylan, Erlang, Scheme, Cobol (ebenfalls eine sehr alte Sprache, die immer noch sehr häufig benutzt, aber kaum noch gelehrt wird), Oberon, Algol, Logo, BCPL, Miranda und Ruby. Und dann gibt es noch viele weitere Sprachen, von denen ich noch nie was gehört habe. Das liegt unter anderem auch daran, daß nicht wenige Programmierer als Übung sich sozusagen neue Sprachen selber ausdenken und einen Compiler dazu schreiben. :-) |