JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Ce n’est pas une question importante, mais je me suis souvent demandé pourquoi.
Dans mon entreprise, il y a de nombreux scripteurs occasionnels en JSL et quelques poids lourds.Je suis un consommateur vorace de code (lecture) d'autres personnes et j'ai lu beaucoup de code de plus de 20 personnes ici.De plus, j'ai vu de nombreux exemples de code publiés ici dans les forums communautaires.
Presque universellement, je constate que les auteurs de code ne profitent pas de l'étrange décision de JMP d'ignorer les espaces et la casse dans les noms.Voici quelques exemples.
Il semble que la plupart des gens utilisent des fonctions intégrées, telles que Insérer dans() -- avec un espacement blanc, mais pour les noms définis par l'utilisateur, refusez généralement de le faire.
Ma question principale est pourquoi ?Je trouve que le code est beaucoup plus rapide à lire lors de l'utilisation d'espaces blancs comme on le ferait dans une écriture générale.
Je peux comprendre quand quelqu'un vient d'un langage de programmation traditionnel, mais j'ai vu pas mal de gens ici à mon travail qui sont des scripteurs débutants, et ils feront généralement la même chose (utilisez des espaces pour les noms intégrés, n'utilisez pas espacement pour les noms définis par l'utilisateur).
Personnellement, j'ai appris à apprécier grandement la flexibilité qu'offre JSL pour les noms, mais je suis curieux de savoir ce que pensent les autres ici.
Exemples:
depuis @drewfoglia dans ce poste :

depuis @Phil_Brown dans ce poste :

Le fichier libRecall_v2_0.jsl par @MikeD_Anderson
Et voici un extrait de mon code : j'utilise beaucoup les espaces dans les noms :

Automatisation et scriptsRe : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Je pense que lorsque j'ai commencé à écrire du JSL, j'ai immédiatement refusé toutes les façons dont JMP vous permet de définir les noms et c'était probablement parce que je ne lui faisais pas vraiment confiance et que c'était bizarre (j'avais quelques connaissances en javascript et Python MAIS je ne l'ai pas fait (il n'y avait pas de style de programmation approprié pour aucun langage à l'époque).
Aujourd'hui, je le fais utilisez beaucoup le reformatage du code lors de l'écriture de JSL et cela ajoutera des espaces aux noms JMP (car j'ai activé l'insertion d'espaces dans les noms d'opérateurs). Et dans mes noms, je n'utilise pas d'espaces (je suis vaguement une sorte de guide de style Python pour JSL), cela m'aide (parfois) à séparer mes propres noms des noms créés par JMP.
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Bon, je ne peux pas parler pour les autres, mais pour ma part, c'est surtout une habitude. Je codais en Basic, VB, LaTeX et Mathematica bien avant de commencer à utiliser JSL. Toutes ces langues ont des restrictions sur les espaces. Cela n'a jamais eu de sens pour moi de réorganiser mes compétences pour un langage alors qu'il me serait plus difficile de revenir dans les autres ou d'en entrer dans de nouveaux (comme lorsque j'ai choisi Python pendant le verrouillage).
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !J'ai certainement un certain nombre de problèmes pour passer de JSL à Python/JavaScript !Si vous passez beaucoup de temps à changer de langue, il est logique de conserver autant que possible un format uniforme.
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Une autre réflexion à ce sujet : étant donné que les variables intégrées (formules, etc.) ont une mise en évidence syntaxique intégrée à l'éditeur JSL, il est facile de dire qu'elles sont quelque chose de spécial. Avec les éléments définis par l'utilisateur, il devient difficile de dire quelle est une ou deux variables pour lesquelles il manque un point-virgule entre elles. Cela rendrait le débogage plus difficile sur les scripts et les applications plus longs.
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Vous avez raison à propos des noms de colonnes : ils ne correspondent pas strictement à la structure de noms de la plupart des noms JSL. C'est formidable d'entendre parler de la nouvelle fonctionnalité JMP18 – je vais certainement l'utiliser beaucoup !
Un autre problème avec les noms de colonnes JMP qui serait étonnant s'il devait être résolu : le fait qu'ils ont priorité sur les noms locaux/ici. Dans l'exemple de script ici, je ne peux pas utiliser le nom Here "device" car il porte le même nom qu'une colonne du petit tableau.
JSL doit avoir un mode de référence de colonne strict qui permet UNIQUEMENT l'accès aux colonnes (en dehors des formules de colonne) via une portée explicite. Ce serait une bonne chose...
Names Default to Here( 1 );
device = "ABC";
dt = New Table( "test",
<<NEW column=""></NEW>
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Hm, après avoir investi 2 heures dans le débogage d'un script et découvert que Concatenate, parfois, fait la différence entre les majuscules et les minuscules, vous commencerez à vous demander pourquoi la colonne "Âge" peut être différente de la colonne "âge" et de la colonne "âge" :
(c) @jthi de data-table-message-column-exists-colname
Voir plus...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; C'est à ce moment-là que j'ai décidé de m'en tenir à une règle 
Néanmoins, ce sera bientôt un peu plus simple :
Via dt << Has Column() un utilisateur aura la possibilité de rechercher une colonne - et de choisir si la correspondance doit être exacte ou avec une certaine liberté :

Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Peut-être qu'ici le problème est qu'il n'est pas possible d'écrire une chaîne dans une colonne, mais simplement dans une cellule :
Names Default to Here( 1 );
dt = New Table( "test",
Add Rows( 1 ),
New Column( "DEVICE", Character)
);
device = "TOOL1";
dt:device[1] = device;
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !oui, si les noms locaux et les colonnes ont le même nom, c'est très amusant d'utiliser les deux en parallèle :
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)
Au total, il y a 13 règles + quelques exceptions !
https://www.jmp.com/support/help/en/17.1/?os=win&source=application#page/jmp/rules-for-resolving-names.shtml
Re : JSL ignore les espaces blancs pour les noms, la plupart des gens n'en profitent pas !Il existe de nombreuses règles, mais il serait bien d'avoir un indicateur dans JSL pour activer un mode strict, de telle sorte que les noms sans portée soient FORCÉS à être locaux (c'est-à-dire, ne vérifier que la portée locale, pas ICI, pas GLOBAL, et certainement pas les noms de colonnes), et tout ce qui n'est pas local doit être explicitement limité à la portée. Ce serait bien.