Guida per programmatori C++ a JSL
Problema
Conosci un po' di C++ e hai un'idea di cosa sia un oggetto C++ e hai bisogno dell'introduzione di 20 minuti al linguaggio di scripting di JMP.
Soluzione
- Nel menu Guida è presente un indice di script JMP. Descrive, insieme o separatamente, Funzioni, DisplayBox e Oggetti. Mentre scavi più a fondo, usa la ricerca che fornisce.
- JSL non ha variabili digitate; non c'è modo di dichiarare double, float, int o bool. Le variabili JSL contengono tutto ciò che viene loro assegnato, di solito un numero, una matrice o un elenco, ma forse un DisplayBox, un'espressione, una funzione o un oggetto.
- Le strutture di controllo del linguaggio C per il test e il looping (for, while, if) sono molto diverse dalle funzioni che puoi chiamare in C. L'istruzione for è qualcosa che il compilatore C comprende, ma l'istruzione print è qualcosa che comprende il runtime C. JSL è diverso: l'istruzione for JSL è in realtà una funzione, proprio come l'istruzione if JSL e l'istruzione while JSL. La funzione che esegue l'istruzione JSL for si chiama "for" e accetta 4 argomenti, separati da virgole (come ci si aspetterebbe che appaia una funzione).
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- sembra simile al ciclo C for, ma quei fastidiosi problemi con virgola/punto e virgola ti daranno almeno una volta. Notare che il quarto argomento è l'espressione JSL che verrà eseguita 10 volte. Si noti inoltre che il ciclo inizia da 1 e va a <= 10. In C quasi sicuramente inizierai da 0 e ti fermerai su <10... sae numero di iterazioni, ma basato su 0. JMP preferisce la base 1; quasi tutta l'indicizzazione in JSL è basata su 1 (ho dimenticato FORTRAN.) L'istruzione JSL if è una funzione denominata "if" e accetta almeno due argomenti:
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;
);
- Che se sembra complicato solo perché mostra il modello completo che la funzione accetta. Puoi fermarti ovunque dopo il secondo argomento. Anche l'istruzione JSL while è una funzione (denominata "while"), che accetta due argomenti.
- Le espressioni sono dove JSL ottiene molto del suo potere. Un'espressione è un po' di JSL, forse il 4° argomento della funzione for o il 2° argomento dell'istruzione while. Se un'espressione è in una variabile, può essere passata a una funzione, valutata o ispezionata e manipolata. JSL ha una funzione chiamata "parse" che trasforma un valore stringa in un'espressione.
- Le matrici JSL, le liste e gli array associativi sono oggetti contenitore di alto livello; spesso sarà una scelta progettuale interessante quale utilizzare o se utilizzare una tabella dati. Ognuno ha punti deboli e punti di forza per diversi lavori.
- La tabella dati (o più tabelle) è un oggetto che puoi usare in JSL; puoi elaborare una singola tabella con l'istruzione forEachRow(espressione) (o funzione...tutto è una funzione in JSL). Con più tabelle ti consigliamo di utilizzare le variabili JSL per fare riferimento a diversi oggetti della tabella di dati e inviare loro messaggi. I messaggi JSL vengono inviati a un oggetto con l'operatore << send.
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- il messaggio o metodo "sort" è solo uno dei tanti messaggi che la tabella dati sa come gestire. Ricorda l'indice di scripting al punto 1; elenca tutti i messaggi e di solito ha un esempio. La tabella dati elabora anche le richieste per aprire piattaforme come Distribution. Pensa alle piattaforme JSL come a grandi subroutine utili che puoi mettere insieme usando il linguaggio di scripting; il tuo obiettivo dovrebbe essere quello di fare in modo che le piattaforme facciano il lavoro pesante (poiché sono scritte in C ++, sono molto veloci) e utilizzare lo scripting JSL solo per orchestrare la tua presentazione. (Non scrivere i tuoi grafici di distribuzione in JSL senza una buona ragione!)
- Le presentazioni, i grafici, le tabelle e l'output di JSL sono costruiti da DisplayBox nidificati che di solito vengono visualizzati in una finestra. Un DisplayBox è un tipo speciale di oggetto (e riceve un trattamento speciale nell'indice di scripting). Puoi creare display personalizzati da zero e puoi utilizzare display creati da piattaforme (come Distribution). Molte piattaforme hanno l'output nell'albero della casella di visualizzazione a cui è possibile accedere tramite sottoscrizione.
- JSL ha funzioni LoadTextFile e SaveTextFile che spostano interi file in memoria/di nuovo su disco. Non è possibile leggere/scrivere pochi byte alla volta.
- JSL ha una funzione di inclusione che legge un file di JSL e lo esegue.
- JSL ha funzioni scritte dall'utente, compilate dalla funzione "funzione".
- JSL ha variabili locali che aiutano molto quando si scrivono progetti di grandi dimensioni. Di default le variabili sono globali, il che è appropriato per piccoli progetti e test unici, ma la prima volta che riutilizzi "i" in un ciclo nidificato, potrebbe essere il momento di esaminare le variabili locali.
Ri: Guida per programmatori C++ a JSLGrazie! L'indice di scripting viene creato dalle stesse informazioni restituite da getProperties e migliorato con esempi per casi comuni. Vorrei anche che ci fossero più esempi. Il linguaggio ha anche caratteristiche che non sono proprietà di oggetti che ottengono una migliore copertura nel libro. JMP è migliorato rispetto agli ultimi N rilasci per quanto riguarda la produzione di messaggi migliori nel registro, a volte includendo anche informazioni sull'utilizzo.
La documentazione, il supporto tecnico e i team di sviluppo vorrebbero avere i tuoi commenti su tutto ciò che necessita di più/migliore/migliorato documento. Passare attraverso il supporto tecnico assicurerà che venga monitorato.
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
Ri: Guida per programmatori C++ a JSLUna nota sull'indice Scirpting: è davvero uno strumento molto potente, con la sua finestra di scripting integrata ed esempi personalizzabili.
Ma quello che ho trovato un po' difficile è stata la mancanza di un indice di sintassi completo. C'è davvero un libro in pdf chiamato il riferimento alla sintassi JSL incluso in JMP ma non è completo al 100%. Non è sempre possibile trovare la sintassi per ogni argomento di una funzione o di un messaggio. Spesso devi usare messaggi come <
Ho un suggerimento nella lista dei desideri di JMP per questo, si spera che ottenga dei complimenti.