Die Sprache J |
Mathematische Inhalte:
Mathematische Notation, Vektoren. Matrizen, Statistik
Anwendung:
Rechnen mit Vektoren und Matrizen sowie mit allen Arten von Tabellen und Zahlenreihen
Kurzzusammenfassung:
J ist eine universell einsetzbare, array-orientierte und funktionale Programmiersprache.
Die Sprache J wurde nach dem Vorbild menschlicher Sprachen entwickelt, und ist daher dem menschlichen Denken näher als herkömmliche Programmiersprachen, die in ihrer inneren Struktur die primitive, lineare Funktionsweise der Computer widerspiegeln. J ist eine am Computer ausführbare Sprache mit einer einfachen Grammatik und Syntax. Aufgrund dieser einfachen Grundstruktur bleiben J-Programme kurz und überschaubar.
Lehrplanbezug:
Alle Jahrgänge
Mediales Umfeld:
Betriebssysteme: Windows 3.1, Windows 95, Windows NT, Macintosh, OS/2, DOS
UNIX: LINUX, SUN OS, Solaris, AIX, ... .
Software:
kostenlos im Internet erhältlichAnmerkungen:
In diesem Beitrag wird die Sprache J vorgestellt. Einige konkrete Anwendungsbeispiele folgen in der nächsten Ausgabe.
Was ist J?
J ist eine universell einsetzbare, array-orientierte und funktionale Programmiersprache. Erfunden wurde J von Kenneth E. Iverson, implementiert von Roger K.W. Hui.
Die Idee hinter J
Iverson war in den 50'er Jahren an der Harvard University mit der Ausarbeitung der ökonomischen Thesen von Wassily Leontief (Nobelpreis) am Computer beauftragt. Er erkannte bald, daß er mit den damals zur Verfügung stehenden Mitteln, nämlich der Maschinensprache des MARK I von Prof. Aiken, sehr lange damit beschäftigt sein würde. Das hat Iverson dazu veranlaßt, darüber nachzudenken, auf welche Art und Weise Mathematik und elektronische Datenverarbeitung möglichst sinnvoll und effizient "niedergeschrieben" werden könnte: Wie funktionieren mathematisch-technische Notationen? Wie und unter welchen Umständen sind sie entstanden? Warum gibt es für Addition und Subtraktion die Symbole + und -, aber keines für das Maximum von zwei Zahlen oder für das Lösen von Gleichungssystemen? Wie muß eine Sprache aufgebaut sein, damit man mit ihr effizient Probleme lösen kann? Wie sehen die Syntaxregeln in der Mathematik aus? Sind sie frei von Widersprüchen und Ausnahmen? usw.
Als erstes Ergebnis dieser Überlegungen entstand das Buch "A Programming Language" (Wiley&Sons, New York, 1962), in dem Iverson eine logisch in sich widerspruchsfreie technische Sprache beschreibt. Z. B. entfernt er alle historisch gewachsenen Syntaxregeln (wie z.B. die Hierarchie unter den Funktionen, Punkt-vor-Strich-Regel) und führt für alle grundlegenden Prozesse der Datenverarbeitung Symbole ein. Ein großer Teil seiner Ideen wurde Ende der 60'er durch IBM in der Programmiersprache APL verwirklicht. IBM tat das hauptsächlich deswegen, weil mit APL die Spezifikation des IBM System/360 auf nur 20 Seiten vollständig definiert werden konnte, im Gegensatz zu tausenden von Seiten in konventioneller Schreibweise.
J - eine Neuentwicklung
Über die Jahrzehnte (seit ca. 1978) hat Iverson seine Ideen weiterentwickelt. Nach intensivem Studium der Funktionsweise von menschlichen Sprachen und in der Absicht funktionales Programmieren auf einfache Weise zu ermöglichen, hat Iverson seine Arbeit überdacht, Fehler in APL analysiert, und mit Roger K.W. Hui in kongenialer Zusammenarbeit noch einmal total von vorne begonnen.
Das Ergebnis ist die Sprache J, die in dem Büchlein "J - Introduction and Dictionary" vollständig beschrieben ist und für die verschiedensten Hardwareplattformen implementiert wurde. J kann als prozedurale oder auch als rein funktionale Programmiersprache verwendet werden und ist zugleich eine am Computer ausführbare mathematische Notation.
J und die natürliche Sprache
Hochinteressant ist auch die Nähe von J zur Sprache, die das Verständnis mathematischer Konzepte wesentlich vereinfacht und das Interesse für Grammatik weckt:
Im folgenden Beispiel wird anschaulich dargestellt, wie einfach der arithmetische Mittelwert mittels J ausgedrückt werden kann. J erlaubt es, Formeln so zu implementieren, daß die mathematischen Zusammenhänge klar zutage treten. Leider werden diese Zusammenhängen allzuoft durch die historisch gewachsene - und daher inkonsistente - Syntax und Semantik der konventionellen mathematischen Notation verschleiert.
In Worten: Das arithmetische Mittel (AM) ist die Summe dividiert durch die Anzahl der Elemente einer Zahlenliste.
In konventioneller Schreibweise:
In J:
sum=: +/
Plus eingefügtdiv=: %
Dividierenanz=: #
Anzahl der Elementeam=: sum div anz
am 1 2 3 4 5
3
Bitte vergleichen Sie die zwei Varianten. Die Definition in J sind rein funktional, d.h. ohne die explizite Erwähnung von Argumenten, wie z.B. xi oder n in der konventionellen mathematischen Notation, und kommt der Definition in Worten schon sehr nahe.
Das Einfüge-Adverb /
1+2+3+4+5
15
+/ 1 2 3 4 5
15
Das Adverb Einfügen (/) fügt sein linkes Verb-Argument (+) zwischen die Elemente der Liste ein. +/ entspricht ungefähr S . Das Adverb / (in der konventionellen mathematischen Notation ein Operator) verändert das Verb + (in der konventionellen mathematischen Notation eine Funktion) auf ähnliche Weise, wie das Adverb "ökonomisch" das Verb "denken" zu der neuen Einheit "ökonomisch denken" modifiziert. Vom programmiertechnischen Standpunkt aus, ist verb/ einfach einzutippen, schleifenfrei und schnell.
J ist ein Denkwerkzeug!
Die Sprache J wurde nach dem Vorbild menschlicher Sprachen entwickelt und ist daher dem menschlichen Denken näher als herkömmliche Programmiersprachen, die in ihrer inneren Struktur die primitive, lineare Funktionsweise der Computer widerspiegeln.
J ist eine am Computer ausführbare Sprache mit einer einfachen Grammatik und Syntax.
Aufgrund dieser einfachen Grundstruktur bleiben J-Programme kurz und überschaubar. Schon mit wenig Übung beginnt man in J zu denken und in der Folge Probleme effizienter zu lösen.
Welche Vorteile bringt J?
Mit einer Zeile in J können Sie Probleme lösen, die in herkömmlichen Programmiersprachen (PASCAL, C) hunderte Zeilen Code benötigen würden. (Zitat: Dick Pountain in "The Joy of J", BYTE, September 1995).
J ist leicht zu lernen,
Obwohl J am Beginn wegen seiner Neuartigkeit trotzdem etwas Befremdung auslösen kann, rentiert es sich, diese Hürde zu überwinden, weil man danach über ein mächtiges Denkwerkzeug verfügt. Dieses ermöglicht es, komplexe Probleme leichter gedanklich zu erfassen und diese kurz und prägnant niederzuschreiben.
Dazu kommt noch der Spaß, wenn man Probleme schneller und effizienter als die Konkurrenz bewältigen kann.
J ist eine interpretierte Sprache
Anwendungen werden in kleine Module aufgeteilt, die sofort interaktiv getestet werden können, ohne sie ständig kompilieren zu müssen.
Wozu sich J besonders eignet
Wer verwendet J?
J - The Accessible Language
Besonderer Wert bei der Implementierung wurde auf die Kommunikation mit anderer Software gelegt:
J 32-Bit DLL, OLE2 Automation, ODBC, SQL, TCP/IP, OpenGL, ...
Auf welchen Plattformen läuft J ?
J läuft auf allen populären Plattformen:
Die Kernsprache J ist bezüglich der verschiedenen Hardwareplattformen 1:1 kompatibel.
Beispiel: Sie können eine Anwendung auf einem PC entwickeln und testen, das Programm (=ASCII-File) dann zu einem UNIX-Rechner schicken und dort ohne eine Änderung am Code ausführen lassen. (Windows-spezifische Features gibt es unter UNIX natürlich noch nicht.)
Die zentrale Entwicklungsplattform für J ist Windows95/NT mit:
Komplettes GUI-Programming-Interface zum "Fensterl-Programmieren" mit einem praktischen Visual Form Editor.
J im Internet
J ist einschließlich der gesamten Dokumentation kostenlos auf http://www.jsoftware.com erhältich. Die europäische Spiegelung liegt auf http://www.gaertner.de/jsoftware.
J Austria erreichen Sie unter JoHo@ping.at .