Guide du programmeur C++ pour JSL
Problème
Vous connaissez un peu le C++ et avez une idée de ce qu'est un objet C++ et avez besoin de l'introduction de 20 minutes au langage de script de JMP.
Solution
- Il existe un index de script JMP dans le menu Aide. Il décrit, ensemble ou séparément, Functions, DisplayBoxes et Objects. Au fur et à mesure que vous creusez, utilisez la recherche qu'il propose.
- JSL n'a pas de variables typées ; il n'y a pas moyen de déclarer un double, un float, un int ou un bool. Les variables JSL contiennent tout ce qui leur est assigné, généralement un nombre, une matrice ou une liste, mais peut-être un DisplayBox, une expression, une fonction ou un objet.
- Les structures de contrôle du langage C pour les tests et les boucles (for, while, if) sont très différentes des fonctions que vous pouvez appeler en C. L'instruction for est quelque chose que le compilateur C comprend, mais l'instruction print est quelque chose que le runtime C comprend. JSL est différent : l'instruction JSL for est en fait une fonction, tout comme l'instruction JSL if et l'instruction JSL while. La fonction qui effectue l'instruction JSL for est nommée "for" et prend 4 arguments, séparés par des virgules (comme vous vous attendez à ce qu'une fonction apparaisse).
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- il ressemble à la boucle C for, mais ces problèmes de virgule/point-virgule vous feront au moins une fois. Notez que le 4ème argument est l'expression JSL qui sera exécutée 10 fois. Notez également que la boucle commence à 1 et va jusqu'à <= 10. En C, vous commenceriez presque certainement à 0 et vous arrêteriez à <10...sae nombre d'itérations, mais basé sur 0. JMP préfère la base 1 ; presque toute l'indexation dans JSL est basée sur 1 (j'ai oublié FORTRAN.) L'instruction JSL if est une fonction nommée "if" et prend au moins deux arguments :
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;
);
- Cela semble compliqué uniquement parce qu'il montre le modèle complet que la fonction accepte. Vous pouvez vous arrêter n'importe où après le 2ème argument. L'instruction while de JSL est également une fonction (nommée "while"), prenant deux arguments.
- Les expressions sont là où JSL tire une grande partie de sa puissance. Une expression est un peu de JSL, peut-être le 4ème argument de la fonction for ou le 2ème argument de l'instruction while. Si une expression est dans une variable, elle peut être passée à une fonction, ou elle peut être évaluée, ou elle peut être inspectée et manipulée. JSL a une fonction nommée "parse" qui transforme une valeur de chaîne en une expression.
- Les matrices, les listes et les tableaux associatifs JSL sont des objets conteneurs de haut niveau ; ce sera souvent un choix de conception intéressant qui utiliser, ou s'il faut utiliser une table de données. Chacun a des faiblesses et des forces pour différents emplois.
- La table de données (ou plusieurs tables) est un objet que vous pouvez utiliser dans JSL ; vous pouvez traiter une seule table avec l'instruction forEachRow( expression ) (ou fonction... tout est une fonction en JSL). Avec plusieurs tables, vous voudrez utiliser des variables JSL pour faire référence à différents objets de table de données et leur envoyer des messages. Les messages JSL sont envoyés à un objet avec l'opérateur d'envoi <<.
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- le message "tri", ou méthode, n'est qu'un des nombreux messages que la table de données sait gérer. Rappelez-vous l'index de script au point 1 ; il répertorie tous les messages et contient généralement un exemple. La table de données traite également les demandes d'ouverture de plates-formes telles que Distribution. Considérez les plates-formes JSL comme de gros sous-programmes utiles que vous pouvez enchaîner à l'aide du langage de script ; votre objectif devrait être de faire en sorte que les plates-formes fassent le gros du travail (puisqu'elles sont écrites en C++, elles sont très rapides) et d'utiliser les scripts JSL uniquement pour orchestrer votre présentation. (N'écrivez pas vos propres graphes de distribution en JSL sans une très bonne raison !)
- Les présentations, les graphiques, les tableaux et la sortie de JSL sont construits à partir de DisplayBoxes imbriquées qui sont généralement affichées dans une fenêtre. Un DisplayBox est un type spécial d'objet (et reçoit un traitement spécial dans l'index de script.) Vous pouvez créer des affichages personnalisés à partir de rien et vous pouvez utiliser des affichages créés à partir de plates-formes (comme Distribution). De nombreuses plates-formes ont une sortie dans l'arborescence displaybox à laquelle vous pouvez accéder en vous inscrivant.
- JSL a des fonctions LoadTextFile et SaveTextFile qui déplacent des fichiers entiers en mémoire/retour sur disque. Il n'y a pas de lecture/écriture de quelques octets à la fois.
- JSL a une fonction d'inclusion qui lit un fichier de JSL et l'exécute.
- JSL a des fonctions écrites par l'utilisateur, compilées par la fonction "function".
- JSL a des variables locales qui aident beaucoup lors de l'écriture de grands projets. Par défaut, les variables sont globales, ce qui convient aux petits projets et aux tests uniques, mais la première fois que vous réutilisez "i" dans une boucle imbriquée, il est peut-être temps de se pencher sur les variables locales.
Re : Guide du programmeur C++ pour JSLMerci! L'index de script est construit à partir des mêmes informations que celles renvoyées par getProperties et enrichi d'exemples pour les cas courants. J'aimerais aussi qu'il y ait plus d'exemples. Le langage a également des fonctionnalités qui ne sont pas des propriétés d'objets qui obtiennent une meilleure couverture dans le livre. JMP s'est amélioré au cours des dernières versions de N pour produire de meilleurs messages dans le journal, y compris parfois des informations d'utilisation.
Les équipes de documentation, de support technique et de développement aimeraient avoir vos commentaires sur tout ce qui nécessite plus/meilleur/amélioration de la documentation. Passer par le support technique s'assurera qu'il est suivi.
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
Re : Guide du programmeur C++ pour JSLUne note sur l'index Scirpting : C'est un outil très puissant en effet, avec sa fenêtre Scripting intégrée et des exemples personnalisables.
Mais, ce que j'ai trouvé un peu difficile, c'est l'absence d'un index de syntaxe complet. Il existe en effet un livre pdf appelé la référence de syntaxe JSL inclus dans JMP mais il n'est pas complet à 100 %. Vous ne pouvez pas toujours trouver la syntaxe de chaque argument d'une fonction ou d'un message. Vous devez souvent utiliser des messages tels que <
J'ai une suggestion dans la liste de souhaits JMP pour cela, j'espère qu'elle recevra des félicitations.