J (Programmiersprache)

Die J Programmiersprache, entwickelt am Anfang der 1990er Jahre durch Kenneth E. Iverson und Roger Hui, ist eine Synthese von APL (auch durch Iverson) und der FP und die FL von John Backus geschaffenen Funktionsniveau-Sprachen.

Um zu vermeiden, das APL spezielle Charakter-Problem zu wiederholen, verlangt J nur die grundlegende ASCII Codierung, den Gebrauch von gebildeten Digraphen mit dem Punkt oder den Doppelpunkt-Charakteren aufsuchend, um die Bedeutung der grundlegenden verfügbaren Charaktere zu erweitern. Zusätzlich, um fortzusetzen, grammatisch zu analysieren und die Sprache einfach, und den Mangel an der Charakter-Schwankung in ASCII, viele Charaktere zu ersetzen, die eventuell auf anderen Sprachen erwogen werden müssten (solcher als [] {} "" `` oder

J ist eine sehr knappe Reihe-Programmiersprache, und ist zur mathematischen und statistischen Programmierung besonders am meisten passend, wenn er Operationen auf matrices durchführt. Es ist auch in der Äußersten Programmierung und Netzleistungsanalyse verwendet worden.

Wie die ursprünglichen FP/FL Sprachen, J Unterstützungsfunktionsniveau-Programmierung (auch bekannt als höherwertige funktionelle Programmierung), über seine stillschweigenden Programmiereigenschaften (bemerken, dass Funktionsniveau-Programmierung nicht dasselbe als funktionelle Programmierung ist).

Verschieden von den meisten Sprachen, die objektorientierte Programmierung, das flexible hierarchische namespace Schema von J unterstützen (wo jeder Name in einem besonderen Schauplatz besteht) kann als ein Fachwerk sowohl für die klassenbasierte als auch für Prototyp-basierte objektorientierte Programmierung effektiv verwendet werden.

J ist nicht eine Programmiersprache von von Neumann; jedoch ist es möglich, den von Neumann zu verwenden, der Stil programmiert.

Seit dem März 2011 ist J freie und offene Quellsoftware laut der GPLv3-Lizenz. Man kann auch Quelle für den kommerziellen Gebrauch laut einer verhandelten Lizenz kaufen.

Beispiele

J erlaubt Stil ohne Punkte und Funktionszusammensetzung. So können seine Programme sehr knapp sein und überlegten schwierig, durch einige Programmierer zu lesen.

Das hallo Weltprogramm in J ist

'Hallo, Welt!'

Diese Durchführung hallo der Welt widerspiegelt den traditionellen Gebrauch von J - in Programme wird in eine J Dolmetscher-Sitzung eingegangen, und die Ergebnisse von Ausdrücken werden gezeigt. Es ist auch möglich Vorkehrungen zu treffen, dass J Schriften als eigenständige Programme durchgeführt werden, aber die Mechanismen, für eine Schrift mit dem Dolmetscher zu vereinigen, sind Systemabhängiger. Hier ist, wie das ein UNIX System betrachten könnte:

#!/bin/jc

hallen Sie 'Hallo, Welt!'

Ausgang

Historisch ist APL / gewöhnt gewesen, um die Falte anzuzeigen, so +/1 2 3 war zu 1+2+3 gleichwertig. Inzwischen wurde Abteilung mit dem klassischen mathematischen Abteilungssymbol vertreten (der obelus, ÷), der durch das Überanschlagen minus das Zeichen und ein Doppelpunkt (sowohl auf EBCDIC als auch auf ASCII Papierterminals) durchgeführt wurde. Weil ASCII im Allgemeinen Überschläge auf eine mit dem Gerät unabhängige Weise nicht unterstützt, und kein Abteilungssymbol per se, J Gebrauch-% einschließt, um Abteilung, als eine Sehannäherung oder Gedächtnishilfe zu vertreten. (Das illustriert etwas des mnemonischen Charakters der Jetons von J, und einige der durch den Gebrauch von ASCII auferlegten Dilemmas.)

Der folgende ist ein J Programm, um den Durchschnitt einer Liste von Zahlen zu berechnen:

avg =: + / %

#

und das ist eine Testausführung des Programms

avg 1 2 3 4

zählt die Zahl von Sachen im array.sums die Sachen auf

des array.divides die Summe durch die Zahl von Sachen. Bemerken Sie: Avg wird über dem Verwenden eines Zugs von drei Verben (" + / "," % ", und "#") bekannt als eine Gabel definiert. Spezifisch ist (V0 V1 V2) Ny dasselbe als (V0 Ny) V1 (V2 Ny), der etwas von der Macht von J. zeigt (Hier V0, V1, zeigen V2 Verben an, und Ny zeigt ein Substantiv an.)

Einige Beispiele des Verwendens:

v =:?. 20 $ 100

v

avg v

4 avg\v

m =:?. 4 5 $ 50

M

39 10 7 10 44

46 28 13 18 1

42 28 10 40 12 </Spanne>

avg "1 M

Reihe ist ein entscheidendes Konzept in J. Seine Bedeutung in J ist der Bedeutung von "ausgesuchten" in SQL und "während" in C ähnlich.

Hier ist eine Durchführung der Schnellsortierung aus dem J Wörterbuch:

sel =: Adverb def 'u #'

Schnellsortierung =: Verb definiert

wenn. 1>: #y tun. y

sonst.

(Schnellsortierung y

Ende.

)

Der folgende ist eine Durchführung der Schnellsortierung, die stillschweigende Programmierung demonstriert. Stillschweigende Programmierung ist mit dem Bestehen von Funktionen zusammen und nicht Verweisen ausführlich zu irgendwelchen Variablen verbunden. Die Unterstützung von J für Gabeln und Haken diktiert Regeln darauf, wie auf diese Funktion angewandte Argumente auf seine Teilfunktionen angewandt werden.

Schnellsortierung =: (($: (

Datentypen und Strukturen

J unterstützt drei einfache Typen:

  • Numerischer
  • Wörtlich (Charakter)
  • Geboxter

Dieser, numerisch hat die meisten Varianten.

Einer der numerischen Typen von J ist das Bit. Es gibt Zwei-Bit-Werte: 0, und 1. Zusätzlich können Bit in Listen gebildet werden. Zum Beispiel, 1 0 1 0 1 1 0 0 ist eine Liste von acht Bit. Und, syntaktisch, der J parser Vergnügen dass als ein einzelnes Wort (werden Raumcharaktere als ein Wortformen-Charakter anerkannt, wenn sie dazwischen sind, was numerische Wörter sonst sein würde). Listen der willkürlichen Länge werden unterstützt.

Außerdem unterstützt J alle üblichen binären Operationen auf diesen Listen, solcher, als und, oder, exklusiv oder, rotieren Sie, sich nicht usw. bewegen Sie. Zum Beispiel,

1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0

3 |. 1 0 1 1 0 0 1 1 1 1 1

Bemerken Sie, dass J auch höhere Ordnungsreihe von Bit unterstützt — können sie in den zweidimensionalen, das dreidimensionale, usw. Reihe gebildet werden. Die obengenannten Operationen leisten ebenso gut auf dieser Reihe.

Andere numerische Typen schließen ganze Zahl (3, 42) ein, Punkt (3.14, 8.8e22), Komplex (0j1, 2.5j3e88), erweiterte ganze Präzisionszahl (12345678901234567890x), und (erweiterte Präzision) vernünftiger Bruchteil (1r2, 3r4) schwimmen lassend. Als mit Bit können diese in Listen gebildet werden oder haben willkürlich Reihe dimensioniert. Als mit Bit werden Operationen auf allen Zahlen in einer Reihe durchgeführt.

Listen von Bit können zur ganzen Zahl mit # umgewandelt werden. Verb. Ganze Zahlen können zu Listen von Bit mit # umgewandelt werden: Verb. (Und, wenn man J grammatisch analysiert. und: Sind Wortformen-Charaktere. Sie sind nie Jetons durch sich, wenn nicht vorangegangen, durch einen Raum.)

J unterstützt auch den Druckfehler (Charakter) Typ. Druckfehler werden in Notierungen zum Beispiel eingeschlossen, oder. Listen von Druckfehlern werden auch mit der üblichen Tagung unterstützt, vielfache Charaktere in Notierungen, solcher als zu stellen. Gewöhnlich sind individuelle Druckfehler (ascii) 8 Bit breit, aber J unterstützt auch andere Druckfehler (unicode). Numerische und boolean Operationen werden auf Druckfehlern nicht unterstützt, aber Sammlung hat Operationen orientiert (solche, die rotieren), werden unterstützt.

Schließlich gibt es den in Schachteln gepackten Datentyp. Gewöhnlich werden Daten in einem Kasten mit gestellt

|1 0 0 1 0|

+---------+ </Spanne>

Der einzige durch J angebotene Sammlungstyp ist die willkürlich dimensionierte Reihe. Die meisten Algorithmen können sehr kurz mit Operationen auf dieser Reihe ausgedrückt werden.

Die Reihe von J wird zum Beispiel homogen getippt die Liste 1 2 3 ist eine Liste von ganzen Zahlen, ungeachtet der Tatsache dass 1 ein bisschen ist. Größtenteils sind diese Sorten von Typ-Problemen dem Programmierer durchsichtig. Nur bestimmte Spezialoperationen offenbaren Unterschiede im Typ. Zum Beispiel würde die Liste 1.0 0.0 1.0 0.0 genau dasselbe, durch die meisten Operationen, als die Liste 1 0 1 0 behandelt.

J unterstützt auch spärliche numerische Reihe, wo Nichtnullwerte mit ihren Indizes versorgt werden. Das ist ein effizienter Mechanismus, wo relativ wenige Werte Nichtnull sind.

J unterstützt auch Gegenstände und Klassen, aber das ist ein Kunsterzeugnis der Weise, wie Dinge genannt werden, und nicht sind, tippen Daten ein und von sich. Statt dessen werden in Schachteln gepackte Druckfehler verwendet, um sich auf Gegenstände (und Klassen) zu beziehen. J Daten hat Wertsemantik, aber protestiert, und Klassen brauchen Bezugssemantik.

Ein anderer Pseudotyp — vereinigt mit dem Namen, anstatt zu schätzen — ist kartografisch dargestellte Datei des Gedächtnisses.

Dokumentation

Die Dokumentation von J, verschieden von dieser von den meisten anderen Programmiersprachen, wird als ein Wörterbuch mit Wörtern in J organisiert, der als Substantive, Verben, Adverbien, Verbindungen und so weiter identifiziert ist. Die Wortarten werden mit der Preiserhöhung angezeigt. Bemerken Sie, dass Verben zwei Formen haben: monads (Argumente nur rechts) und dyads (Argumente links und rechts). Zum Beispiel in '-1' ist der Bindestrich ein monad, und in '3-2' der Bindestrich ist ein dyad. Die monad Definition ist der dyad Definition, unabhängig davon größtenteils unabhängig, ob das Verb ein primitives Verb oder ein abgeleitetes Verb ist.

Kontrollstrukturen

J stellt Kontrollstrukturen (Details hier) ähnlich anderen Verfahrenssprachen zur Verfügung. Die Steuerungen sind:

  • behaupten. T
  • Brechung.
  • weitermachen.
  • dafür. T tun. B Ende.
  • for_xyz. T tun. B Ende.
  • goto_name.
  • label_name.
  • wenn. T tun. B Ende.
  • wenn. T tun. B sonst. B1 Ende.
  • wenn. T tun. B
  • elseif. T1 tun. B1
  • elseif. T2 tun. B2
  • Ende.
  • zurückkehren.
  • auswählen. T
  • Fall. T0 tun. B0
  • fcase. T1 tun. B1
  • Fall. T2 tun. B2
Ende.
  • Werfen.
  • versuchen. B Fang. B1 catchd. B2 catcht. B3 Ende.
  • während. T tun. B Ende.
  • während. T tun. B Ende.

Siehe auch

  • + (Programmiersprache) - ein APL Dialekt
  • K (Programmiersprache) - eine andere APL-beeinflusste Sprache
  • Q - Die Sprache von KDB + und eine neue verschmolzene Version von K und KSQL.

Links

ist
  • J Wiki - Vitrine, Dokumentation, Artikel, usw.
  • Archive von J Forum - Diskussion der Sprache
  • Cliff Reiter - Verwirrung, fractals, und mathematischer symmetries, in J
  • Ewart Shaw - Schlussfolgerung von Bayesian, medizinische Statistik und numerische Methoden, mit J
  • Keith Smillie - Statistische Anwendungen von Reihe-Programmiersprachen, besonders J
  • John Howland - Forschung über parallelization von Reihe-Programmiersprachen, besonders J

Source is a modification of the Wikipedia article J (programming language), licensed under CC-BY-SA. Full list of contributors here.
Hatfield Haus / Wettervorhersage
Impressum & Datenschutz