Guía del programador de C++ para JSL
Problema
Conoce algo de C++ y tiene alguna idea de qué es un objeto de C++ y necesita la introducción de 20 minutos al lenguaje de secuencias de comandos de JMP.
Solución
- Hay un índice de secuencias de comandos JMP en el menú Ayuda. Describe, juntos o por separado, Funciones, DisplayBoxes y Objetos. A medida que profundiza, utilice la búsqueda que proporciona.
- JSL no tiene variables escritas; no hay forma de declarar un double, float, int o bool. Las variables JSL contienen todo lo que se les asigna, generalmente un número, matriz o lista, pero tal vez un cuadro de visualización, una expresión, una función o un objeto.
- Las estructuras de control del lenguaje C para pruebas y bucles (for, while, if) son muy diferentes de las funciones que puede llamar en C. La declaración for es algo que el compilador de C entiende, pero la declaración de impresión es algo que el tiempo de ejecución de C entiende. JSL es diferente: la declaración JSL for es en realidad una función, al igual que la declaración JSL if y JSL while. La función que hace la declaración JSL for se llama "for" y toma 4 argumentos, separados por comas (como es de esperar que se vea una función).
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- se ve similar al bucle C for, pero esos molestos problemas de coma/punto y coma lo atraparán al menos una vez. Tenga en cuenta que el cuarto argumento es la expresión JSL que se ejecutará 10 veces. También tenga en cuenta que el ciclo comienza en 1 y va a <= 10. En C, es casi seguro que comenzaría en 0 y se detendría en <10... el mismo número de iteraciones, pero basado en 0. JMP prefiere basado en 1; casi toda la indexación en JSL está basada en 1 (me olvidé de FORTRAN). La instrucción JSL if es una función llamada "if" y toma al menos dos argumentos:
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;
);
- Eso si parece complicado solo porque muestra el patrón completo que acepta la función. Puede detenerse en cualquier lugar después del segundo argumento. La declaración while de JSL también es una función (llamada "while"), que toma dos argumentos.
- Las expresiones son donde JSL obtiene mucho de su poder. Una expresión es un poco de JSL, tal vez el cuarto argumento de la función for o el segundo argumento de la instrucción while. Si una expresión está en una variable, se puede pasar a una función, se puede evaluar o se puede inspeccionar y manipular. JSL tiene una función llamada "parse" que convierte un valor de cadena en una expresión.
- Las matrices, listas y arreglos asociativos JSL son objetos contenedores de alto nivel; a menudo será una opción de diseño interesante cuál usar o si usar una tabla de datos. Cada uno tiene debilidades y fortalezas para diferentes trabajos.
- La tabla de datos (o tablas múltiples) es un objeto que puede usar en JSL; puede procesar una sola tabla con la instrucción forEachRow( expresión ) (o función... todo es una función en JSL). Con varias tablas, querrá usar variables JSL para referirse a diferentes objetos de tablas de datos y enviarles mensajes. Los mensajes JSL se envían a un objeto con el << operador de envío.
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- el mensaje o método de "clasificación" es solo uno de los muchos mensajes que la tabla de datos sabe cómo manejar. Recuerde el índice de secuencias de comandos en el punto 1; enumera todos los mensajes y normalmente tiene un ejemplo. La tabla de datos también procesa solicitudes para plataformas abiertas como Distribución. Piense en las plataformas JSL como subrutinas grandes y útiles que puede unir usando el lenguaje de secuencias de comandos; su objetivo debe ser lograr que las plataformas hagan el trabajo pesado (ya que están escritas en C++, son muy rápidas) y use secuencias de comandos JSL solo para orquestar su presentación. (¡No escriba sus propios gráficos de distribución en JSL sin una muy buena razón!)
- Las presentaciones, gráficos, tablas y resultados de JSL se crean a partir de DisplayBoxes anidados que generalmente se muestran en una ventana. Un DisplayBox es un tipo especial de objeto (y recibe un tratamiento especial en el índice de secuencias de comandos). Puede crear pantallas personalizadas desde cero y puede usar pantallas creadas a partir de plataformas (como Distribución). Muchas plataformas tienen resultados en el árbol del cuadro de visualización al que puede acceder mediante subíndices.
- JSL tiene funciones LoadTextFile y SaveTextFile que mueven archivos completos a la memoria/de vuelta al disco. No hay lectura/escritura de unos pocos bytes a la vez.
- JSL tiene una función de inclusión que lee un archivo de JSL y lo ejecuta.
- JSL tiene funciones escritas por el usuario, compiladas por la función "función".
- JSL tiene variables locales que ayudan mucho a la hora de escribir proyectos grandes. De forma predeterminada, las variables son globales, lo que es apropiado para proyectos pequeños y pruebas únicas, pero la primera vez que reutilice "i" en un ciclo anidado, podría ser el momento de buscar variables locales.
Re: Guía del programador de C++ para JSL¡Gracias! El índice de secuencias de comandos se crea a partir de la misma información que devuelve getProperties y se mejora con ejemplos para casos comunes. También me gustaría que hubiera más ejemplos. El lenguaje también tiene características que no son propiedades de los objetos que obtienen una mejor cobertura en el libro. JMP ha mejorado en las últimas N versiones en cuanto a la producción de mejores mensajes en el registro, que a veces también incluye información de uso.
A los equipos de documentación, soporte técnico y desarrollo les encantaría recibir sus comentarios sobre cualquier cosa que necesite más/mejor/mejora doc. Pasar por el soporte técnico se asegurará de que se rastree.
@sheila_loring @shannon_conners @Wendy_Murphrey @xangregg
Re: Guía del programador de C++ para JSLUna nota sobre el índice de Scirpting: es una herramienta muy poderosa, con su ventana de Scripting integrada y ejemplos personalizables.
Pero, lo que encontré un poco difícil fue la falta de un índice de sintaxis completo. De hecho, hay un libro en pdf llamado referencia de sintaxis JSL incluido en JMP, pero no es 100% completo. No siempre se puede encontrar la sintaxis de cada argumento de una función o mensaje. A menudo tiene que ir y usar mensajes como <
Tengo una sugerencia en la lista de deseos de JMP para esto, espero que reciba algunos elogios.