C++-Programmierhandbuch für JSL
Problem
Sie kennen sich mit C++ aus und haben eine Vorstellung davon, was ein C++-Objekt ist, und benötigen die 20-minütige Einführung in die Skriptsprache von JMP.
Lösung
- Es gibt einen JMP-Scripting-Index im Hilfemenü. Es beschreibt, zusammen oder getrennt, Funktionen, DisplayBoxes und Objekte. Wenn Sie tiefer graben, verwenden Sie die bereitgestellte Suche.
- JSL hat keine typisierten Variablen; Es gibt keine Möglichkeit, Double, Float, Int oder Bool zu deklarieren. JSL-Variablen enthalten alles, was ihnen zugewiesen ist, normalerweise eine Zahl, Matrix oder Liste, aber möglicherweise eine DisplayBox, einen Ausdruck, eine Funktion oder ein Objekt.
- Steuerstrukturen der C-Sprache zum Testen und Schleifen (for, while, if) unterscheiden sich stark von Funktionen, die Sie in C aufrufen können. Die for-Anweisung ist etwas, das der C-Compiler versteht, aber die print-Anweisung ist etwas, das die C-Laufzeitumgebung versteht. JSL ist anders: Die JSL-for-Anweisung ist eigentlich eine Funktion, genau wie die JSL-if- und die JSL-while-Anweisung. Die Funktion, die die JSL for-Anweisung ausführt, heißt "for" und benötigt 4 Argumente, die durch Kommas getrennt sind (wie Sie es von einer Funktion erwarten würden).
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- Es sieht ähnlich aus wie die C for-Schleife, aber diese lästigen Komma-/Semikolon-Probleme werden Sie mindestens einmal erwischen. Beachten Sie, dass das vierte Argument der JSL-Ausdruck ist, der 10 Mal ausgeführt wird. Beachten Sie auch, dass die Schleife bei 1 beginnt und bis <= 10 geht. In C würden Sie mit ziemlicher Sicherheit bei 0 beginnen und bei < 10 aufhören ... dieselbe Anzahl von Iterationen, aber 0-basiert. JMP bevorzugt 1-basiert; Fast die gesamte Indizierung in JSL ist 1-basiert (ich habe FORTRAN vergessen.) Die JSL if-Anweisung ist eine Funktion namens „if“ und nimmt mindestens zwei Argumente an:
if( a < b
, // comma
print("a is less than b"); x=9;
, // comma
c < d
, // comma
print("c is less than d"); x=10;
, // comma
print("a is not < b and c is not < d"); x=11;
);
- Das sieht nur kompliziert aus, weil es das vollständige Muster zeigt, das die Funktion akzeptiert. Sie können nach dem 2. Argument überall aufhören. Die JSL-while-Anweisung ist ebenfalls eine Funktion (mit dem Namen „while“), die zwei Argumente akzeptiert.
- Ausdrücke sind der Bereich, in dem JSL einen Großteil seiner Leistungsfähigkeit erhält. Ein Ausdruck ist ein bisschen JSL, vielleicht das 4. Argument der for-Funktion oder das 2. Argument der while-Anweisung. Wenn sich ein Ausdruck in einer Variablen befindet, kann er an eine Funktion übergeben oder ausgewertet oder untersucht und manipuliert werden. JSL hat eine Funktion namens „parse“, die einen Stringwert in einen Ausdruck umwandelt.
- JSL-Matrizen, Listen und assoziative Arrays sind Containerobjekte auf hoher Ebene. Oft ist es eine interessante Designentscheidung, welche zu verwenden ist, oder ob eine Datentabelle verwendet werden soll. Jeder hat Schwächen und Stärken für verschiedene Jobs.
- Die Datentabelle (oder mehrere Tabellen) ist ein Objekt, das Sie in JSL verwenden können; Sie können eine einzelne Tabelle mit der Anweisung forEachRow( expression ) verarbeiten (oder function...in JSL ist alles eine Funktion). Bei mehreren Tabellen sollten Sie JSL-Variablen verwenden, um auf verschiedene Datentabellenobjekte zu verweisen und ihnen Nachrichten zu senden. JSL-Nachrichten werden mit dem Sendeoperator << an ein Objekt gesendet.
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- Die "Sort"-Nachricht oder -Methode ist nur eine von vielen Nachrichten, die die Datentabelle verarbeiten kann. Denken Sie an den Skriptindex in Punkt 1; Es listet alle Nachrichten auf und enthält normalerweise ein Beispiel. Die Datentabelle verarbeitet auch Anforderungen an offene Plattformen wie Distribution. Stellen Sie sich JSL-Plattformen wie große nützliche Subroutinen vor, die Sie mithilfe der Skriptsprache aneinanderreihen können. Ihr Ziel sollte es sein, Plattformen dazu zu bringen, die schwere Arbeit zu erledigen (da sie in C++ geschrieben sind, sind sie sehr schnell) und JSL-Skripting zu verwenden, nur um Ihre Präsentation zu orchestrieren. (Schreiben Sie nicht ohne wirklich guten Grund Ihre eigenen Verteilungsdiagramme in JSL!)
- Die Präsentationen, Grafiken, Tabellen und Ausgaben von JSL werden aus verschachtelten DisplayBoxes erstellt, die normalerweise in einem Fenster angezeigt werden. Eine DisplayBox ist eine besondere Art von Objekt (und wird im Skriptindex besonders behandelt.) Sie können benutzerdefinierte Anzeigen von Grund auf neu erstellen und Anzeigen verwenden, die von Plattformen (z. B. Distribution) erstellt wurden. Viele Plattformen haben Ausgaben im Displaybox-Baum, auf die Sie zugreifen können, indem Sie sie abonnieren.
- JSL verfügt über die Funktionen LoadTextFile und SaveTextFile, die ganze Dateien in den Speicher/zurück auf die Festplatte verschieben. Es gibt kein Lesen/Schreiben von ein paar Bytes auf einmal.
- JSL hat eine Include-Funktion, die eine Datei von JSL liest und ausführt.
- JSL verfügt über vom Benutzer geschriebene Funktionen, die von der Funktion "Funktion" kompiliert werden.
- JSL verfügt über lokale Variablen, die beim Schreiben großer Projekte sehr hilfreich sind. Standardmäßig sind Variablen global, was für kleine Projekte und einzigartige Tests geeignet ist, aber wenn Sie "i" zum ersten Mal in einer verschachtelten Schleife wiederverwenden, ist es möglicherweise an der Zeit, sich mit lokalen Variablen zu befassen.
Betreff: C++-Programmierhandbuch für JSLDanke! Der Skriptindex wird aus denselben Informationen erstellt, die getProperties zurückgibt, und mit Beispielen für häufige Fälle erweitert. Ich wünschte auch, es gäbe mehr Beispiele. Die Sprache hat auch Merkmale, die keine Eigenschaften von Objekten sind, die im Buch besser behandelt werden. JMP ist in den letzten N Versionen besser geworden, was die Erstellung besserer Meldungen im Protokoll betrifft, die manchmal auch Nutzungsinformationen enthalten.
Die Dokumentation, der technische Support und die Entwicklungsteams würden gerne Ihre Kommentare zu allem haben, was mehr/bessere/verbesserte Dokumentation benötigt. Durch den technischen Support wird sichergestellt, dass es nachverfolgt wird.
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
Betreff: C++-Programmierhandbuch für JSLEine Anmerkung zum Skripting-Index: Es ist in der Tat ein sehr mächtiges Werkzeug mit seinem integrierten Skripting-Fenster und anpassbaren Beispielen.
Was ich jedoch etwas schwierig fand, war das Fehlen eines umfassenden Syntaxindex. Es gibt tatsächlich ein PDF-Buch namens JSL-Syntaxreferenz, das in JMP enthalten ist, aber es ist nicht 100 % umfassend. Sie können nicht immer die Syntax für jedes Argument einer Funktion oder Nachricht finden. Sie müssen häufig Nachrichten wie <
Ich habe dafür einen Vorschlag in der JMP-Wunschliste, hoffentlich bekommt er ein paar Kudos.