JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Non è una domanda importante, ma spesso mi sono chiesto perché.
Nella mia azienda ci sono molti scripter occasionali in JSL e alcuni pesi massimi.Sono un consumatore vorace del codice (lettura) di altre persone e ho letto una grande quantità di codice da più di 20 persone qui.Inoltre, ho visto molti esempi di codice pubblicati qui nei forum della comunità.
Quasi universalmente vedo che gli autori del codice non approfittano della strana decisione di JMP di ignorare gli spazi bianchi e le maiuscole nei nomi.Di seguito sono riportati alcuni esempi.
Sembra che la maggior parte delle persone utilizzi funzioni integrate, come ad esempio Inserire() -- con spazi bianchi, ma per i nomi definiti dall'utente generalmente si rinuncia a farlo.
La mia domanda principale è: perché?Trovo che il codice sia molto più veloce da leggere quando si utilizzano gli spazi bianchi come si farebbe nella scrittura generale.
Posso capire quando qualcuno proviene da un linguaggio di programmazione tradizionale, ma ho visto parecchie persone qui nel mio lavoro che sono scripter alle prime armi, e generalmente fanno lo stesso (usa gli spazi per i nomi incorporati, non usa spaziatura per i nomi definiti dall'utente).
Personalmente ho imparato ad apprezzare molto la flessibilità che JSL offre ai nomi, ma sono curioso di sapere cosa pensano gli altri qui.
Esempi:
da @drewfoglia in questo inviare :

da @Phil_Brown in questo inviare :

Il file libRecall_v2_0.jsl di @MikeD_Anderson
Ed ecco un estratto dal mio codice: utilizzo ampiamente gli spazi bianchi nei nomi:

Automazione e scriptingRe: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Penso che quando ho iniziato a scrivere JSL ho immediatamente rinunciato a tutti i modi in cui JMP ti consente di impostare i nomi e molto probabilmente è stato perché non mi fidavo davvero e mi sembrava strano (avevo un po' di esperienza in Javascript e Python MA non lo sapevo (all'epoca non esisteva uno stile di programmazione adeguato per nessun linguaggio).
Al giorno d'oggi lo faccio usa molto la riformattazione del codice quando scrivi JSL e aggiungerà spazi bianchi ai nomi JMP (perché ho abilitato l'inserimento di spazi nei nomi degli operatori). E nei miei nomi non utilizzo gli spazi bianchi (seguo vagamente una sorta di guida allo stile Python per JSL), questo (a volte) mi aiuta a separare i miei nomi dai nomi creati da JMP.
Re: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Beh, non posso parlare per gli altri, ma da parte mia è più che altro un'abitudine. Stavo programmando in Basic, VB, LaTeX e Mathematica molto prima di iniziare a usare JSL. Tutte queste lingue hanno restrizioni sugli spazi bianchi. Non ha mai avuto senso per me riorganizzare le mie competenze per una lingua quando sarebbe stato più difficile per me tornare indietro nelle altre o entrarne in nuove (come quando ho preso Python durante il blocco).
Re: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Un'altra riflessione su questo: poiché le variabili integrate (formule, ecc.) hanno un'evidenziazione sintattica incorporata nell'editor JSL, è facile dire che sono qualcosa di speciale. Con le cose definite dall'utente, diventa difficile dire quale sia una o due variabili a cui potrebbe mancare un punto e virgola tra di loro. Ciò renderebbe più difficile il debug su script e applicazioni più lunghi.
Re: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Hai ragione riguardo ai nomi delle colonne: non corrispondono strettamente alla struttura dei nomi della maggior parte dei nomi JSL. È fantastico sapere della nuova funzionalità JMP18: la userò sicuramente molto!
Un altro problema con i nomi delle colonne JMP che sarebbe sorprendente se venisse risolto: il fatto che hanno la precedenza sui nomi locali/qui. Nello script di esempio qui non posso usare il nome "dispositivo" qui perché ha lo stesso nome di una colonna nella piccola tabella.
JSL dovrebbe avere una modalità di riferimento alle colonne rigorosa che consenta SOLO l'accesso alle colonne (al di fuori delle formule di colonna) tramite ambito esplicito. Sarebbe una cosa carina...
Names Default to Here( 1 );
device = "ABC";
dt = New Table( "test",
<<NEW column=""></NEW>
Re: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Hm, dopo aver investito 2 ore nel debug di uno script e aver scoperto che Concatenate, a volte, distingue tra lettere maiuscole e minuscole, inizierai a chiederti perché la colonna "Age" può essere diversa dalla colonna "age" e dalla colonna "age":
(c) @jthi da data-table-message-column-exists-colname
Visualizza altro...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;Questo è stato il momento in cui ho deciso di attenermi a una regola 
Tuttavia, presto sarà un po’ più semplice:
Tramite dt << Has Column() un utente avrà la possibilità di verificare la presenza di una colonna e scegliere se la corrispondenza deve essere esatta o con una certa libertà:

Re: JSL ignora gli spazi bianchi per i nomi, la maggior parte delle persone non ne approfitta!Forse qui il problema è che non è possibile scrivere una String in una colonna, ma solo in una cella:
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 gli spazi vuoti nei nomi, la maggior parte delle persone non ne approfitta!sì, se i nomi locali e le colonne hanno lo stesso nome, è molto divertente utilizzarli entrambi in parallelo:
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)
In totale ci sono 13 regole + alcune eccezioni!
https://www.jmp.com/support/help/en/17.1/?os=win&source=application#page/jmp/rules-for-resolving-names.shtml
Re: JSL ignora gli spazi vuoti nei nomi, la maggior parte delle persone non ne approfitta!Ci sono molte regole, ma sarebbe bello avere un flag in JSL per attivare una modalità rigorosa, in modo che i nomi senza ambito siano FORZATI a essere locali (come in, controlla solo l'ambito locale, non QUI, non GLOBALE e certamente non alcun nome di colonna), e tutto ciò che non è locale deve essere esplicitamente definito nell'ambito. Sarebbe bello.