JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!No es una pregunta importante, pero muchas veces me he preguntado por qué.
En mi empresa hay muchos scripters ocasionales en JSL y algunos pesos pesados.Soy un consumidor voraz de código de otras personas (lectura) y he leído una gran cantidad de código de más de 20 personas aquí.Además, he visto muchos ejemplos de código publicados aquí en los foros de la comunidad.
Casi universalmente veo que los autores del código no aprovechan la extraña decisión de JMP de ignorar los espacios en blanco y las mayúsculas y minúsculas en los nombres.A continuación se muestran algunos ejemplos.
Parece que la mayoría de la gente usa funciones integradas, como Insertar en() -- con espacios en blanco, pero para los nombres definidos por el usuario generalmente optan por no hacerlo.
Mi pregunta principal es ¿por qué?Encuentro que el código es mucho más rápido de leer cuando se usan espacios en blanco como se haría en la escritura general.
Puedo entender cuando alguien proviene de un lenguaje de programación tradicional, pero he visto bastantes personas aquí en mi trabajo que son programadores de scripts por primera vez y generalmente hacen lo mismo (usar espacios para nombres integrados, no usar espaciado para nombres definidos por el usuario).
Personalmente, he llegado a apreciar mucho la flexibilidad que JSL ofrece para los nombres, pero tengo curiosidad por saber qué piensan otras personas aquí.
Ejemplos:
de @drewfoglia en esto correo :

de @Phil_Brown en esto correo :

El archivo libRecall_v2_0.jsl por @MikeD_Anderson
Y aquí hay un extracto de mi código: uso mucho los espacios en blanco en los nombres:

Automatización y secuencias de comandosRe: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Creo que cuando comencé a escribir JSL, inmediatamente opté por no participar en todas las formas en que JMP te permite configurar los nombres y lo más probable es que fuera porque realmente no confiaba en él y me parecía extraño (tenía algunos conocimientos de javascript y Python, PERO no No tenía ningún estilo de programación adecuado para ningún lenguaje en ese entonces).
Hoy en día lo hago use el código para reformatear bastante al escribir JSL y agregará espacios en blanco a los nombres JMP (porque tengo habilitado insertar espacios en los nombres de los operadores). Y en mis nombres no uso espacios en blanco (sigo vagamente algún tipo de Guía de estilo de Python para JSL), esto (a veces) me ayuda a separar mis propios nombres de los nombres creados por JMP.
Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Bueno, no puedo hablar por los demás, pero por mi parte, es más que nada una costumbre. Estaba codificando en Basic, VB, LaTeX y Mathematica mucho antes de empezar a hacer JSL. Todos esos idiomas tienen restricciones en el espacio en blanco. Nunca tuvo sentido para mí reestructurar mi conjunto de habilidades para un idioma cuando me resultaría más difícil volver a los demás o acceder a otros nuevos (como cuando aprendí Python durante el bloqueo).
Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!¡Definitivamente tengo varios problemas al cambiar de JSL a Python/JavaScript!Si pasa mucho tiempo cambiando de idioma, tiene sentido mantener un formato uniforme tanto como sea posible.
Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Otra idea sobre esto: dado que las variables integradas (fórmulas, etc.) tienen resaltado sintáctico integrado en el editor JSL, es fácil decir que son algo especial. Con las cosas definidas por el usuario, resulta difícil saber cuál es una o dos variables a las que les puede faltar un punto y coma entre ellas. Eso dificultaría la depuración en scripts y aplicaciones más largos.
Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Tienes razón acerca de los nombres de las columnas: no coinciden estrictamente con la estructura de nombres de la mayoría de los nombres JSL. Es genial escuchar sobre la nueva función JMP18. ¡Definitivamente la usaré mucho!
Otro problema con los nombres de las columnas JMP que sería sorprendente si se solucionara: el hecho de que tienen prioridad sobre los nombres locales/aquí. En el script de ejemplo aquí no puedo usar el nombre "dispositivo" porque tiene el mismo nombre que una columna en la pequeña tabla.
JSL debe tener un modo de referencia de columna estricto que SÓLO permita el acceso a las columnas (fuera de las fórmulas de columna) mediante un alcance explícito. Sería algo bueno...
Names Default to Here( 1 );
device = "ABC";
dt = New Table( "test",
<<NEW column=""></NEW>
Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Hm, después de invertir 2 horas en depurar un script y luego descubrir que Concatenate, a veces, diferencia entre mayúsculas y minúsculas, comenzará a preguntarse por qué la columna "Edad" puede ser diferente de la columna "edad" y la columna "edad":
(c) @jthi de tabla-datos-columna-mensaje-existe-colname
Ver más...Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999; Este fue el momento en que decidí seguir una regla 
Sin embargo, pronto será un poco más fácil:
A través de dt << Has Column() un usuario tendrá la posibilidad de buscar una columna y elegir si la coincidencia debe ser exacta o con cierta libertad:

Re: JSL ignora los espacios en blanco para los nombres, ¡la mayoría de la gente no aprovecha esto!Quizás aquí el problema es que no es posible escribir un String en una columna, sino solo en una celda:
Names Default to Here( 1 );
dt = New Table( "test",
Add Rows( 1 ),
New Column( "DEVICE", Character)
);
device = "TOOL1";
dt:device[1] = device;
Re: JSL ignora los espacios en blanco en los nombres, ¡la mayoría de las personas no aprovechan esto!Sí, si los nombres y las columnas locales tienen el mismo nombre, es muy divertido usar ambos en paralelo:
Names Default to Here( 1 );
xxx = "device";
dt = New Table( "test", add rows(10), New Column( "DEVICE", set each value (random integer(20))),
New Column( "VALUE", set each value (1))
);
device = "value";
Print(device);
distribution of DEVICE = Distribution( Continuous Distribution( Column( device ) ));
distribution Of VALUE = Distribution( Continuous Distribution( Column( Eval(device )) ));
another distribution of DEVICE = Distribution( Continuous Distribution( Column( "device" ) ));
:value << set formula(device);
wait(3);
:value << set each value (device)
¡En total hay 13 reglas + algunas excepciones!
https://www.jmp.com/support/help/en/17.1/?os=win&source=application#page/jmp/rules-for-resolving-names.shtml
Re: JSL ignora los espacios en blanco en los nombres, ¡la mayoría de las personas no aprovechan esto!Hay muchas reglas, pero sería bueno tener una bandera en JSL para activar un modo estricto, de modo que los nombres sin ámbito estén OBLIGADOS a ser locales (es decir, solo verificar el ámbito local, no AQUÍ, no GLOBAL y ciertamente no los nombres de columnas), y se requiere que todo lo que no sea local tenga un ámbito explícito. Eso sería bueno.