JSL에 대한 C++ 프로그래머 가이드
문제
C++에 대해 어느 정도 알고 있고 C++ 객체가 무엇인지 어느 정도 알고 있으며 JMP 스크립팅 언어에 대한 20분 소개가 필요합니다.
해결책
- 도움말 메뉴에 JMP 스크립팅 색인이 있습니다. Functions, DisplayBoxes 및 Objects를 함께 또는 개별적으로 설명합니다. 더 깊이 파고 들면 제공되는 검색을 사용하십시오.
- JSL에는 유형이 지정된 변수가 없습니다. double, float, int 또는 bool을 선언하는 방법이 없습니다. JSL 변수는 일반적으로 숫자, 행렬 또는 목록과 같이 할당된 모든 항목을 보유하지만 DisplayBox, Expression, Function 또는 Object일 수도 있습니다.
- 테스트 및 루핑(for, while, if)을 위한 C 언어 제어 구조는 C에서 호출할 수 있는 함수와 매우 다릅니다. for 문은 C 컴파일러가 이해하는 것이지만 print 문은 C 런타임이 이해하는 것입니다. JSL은 다릅니다. JSL for 문은 실제로 JSL if 및 JSL while 문과 마찬가지로 함수입니다. JSL for 문을 수행하는 함수의 이름은 "for"이며 쉼표로 구분된 4개의 인수를 사용합니다(함수가 보일 것으로 예상됨).
for( icount = 1, icount <= 10, icount += 1, print( icount ); wait(1); );
- C for 루프와 유사해 보이지만 성가신 쉼표/세미콜론 문제는 최소한 한 번은 이해하게 됩니다. 네 번째 인수는 10번 실행될 JSL 표현식입니다. 또한 루프는 1에서 시작하여 <= 10으로 이동합니다. C에서는 거의 확실하게 0에서 시작하여 < 10...sae 반복 횟수에서 중지하지만 0을 기반으로 합니다. JMP는 1 기반을 선호합니다. JSL의 거의 모든 인덱싱은 1 기반입니다(FORTRAN에 대해 잊었습니다.). JSL if 문은 "if"라는 함수이며 최소한 두 개의 인수를 사용합니다.
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;
);
- if 함수가 허용하는 전체 패턴을 보여주기 때문에 복잡해 보입니다. 두 번째 인수 이후 어디에서나 멈출 수 있습니다. JSL while 문은 두 개의 인수를 사용하는 함수("while")이기도 합니다.
- 표현식은 JSL이 많은 힘을 얻는 곳입니다. 식은 JSL의 일부이며 for 함수의 네 번째 인수 또는 while 문의 두 번째 인수일 수 있습니다. 표현식이 변수에 있으면 함수에 전달되거나 평가되거나 검사 및 조작될 수 있습니다. JSL에는 문자열 값을 표현식으로 바꾸는 "구문 분석"이라는 함수가 있습니다.
- JSL 행렬, 목록 및 연관 배열은 높은 수준의 컨테이너 개체입니다. 종종 어떤 것을 사용할지 또는 데이터 테이블을 사용할지 여부는 흥미로운 디자인 선택이 될 것입니다. 각각은 다른 직업에 대한 약점과 강점을 가지고 있습니다.
- 데이터 테이블(또는 여러 테이블)은 JSL에서 사용할 수 있는 개체입니다. forEachRow( expression ) 문(또는 function...모든 것이 JSL의 함수임)을 사용하여 단일 테이블을 처리할 수 있습니다. 테이블이 여러 개인 경우 JSL 변수를 사용하여 다른 데이터 테이블 개체를 참조하고 메시지를 보낼 수 있습니다. JSL 메시지는 << 보내기 연산자를 사용하여 개체로 전송됩니다.
dt = open("$sample_data/big class.jmp");
dt << sort( by(height) );
- "정렬" 메시지 또는 방법은 데이터 테이블이 처리하는 방법을 알고 있는 많은 메시지 중 하나일 뿐입니다. 포인트 1의 스크립팅 색인을 기억하십시오. 모든 메시지를 나열하고 일반적으로 예가 있습니다. 데이터 테이블은 Distribution과 같은 개방형 플랫폼에 대한 요청도 처리합니다. 스크립팅 언어를 사용하여 함께 묶을 수 있는 크고 유용한 서브루틴과 같은 JSL 플랫폼을 생각하십시오. 당신의 목표는 플랫폼이 무거운 작업을 수행하고(C++로 작성되었기 때문에 매우 빠름) JSL 스크립팅을 사용하여 프레젠테이션을 조정하는 것입니다. (정말 타당한 이유 없이 JSL로 자신만의 분포 그래프를 작성하지 마세요!)
- JSL의 프레젠테이션, 그래프, 테이블, 출력은 일반적으로 창에 표시되는 중첩된 DisplayBox에서 빌드됩니다. DisplayBox는 특별한 종류의 객체이며 스크립팅 인덱스에서 특별하게 처리됩니다. 처음부터 사용자 정의 디스플레이를 구축할 수 있으며 배포와 같은 플랫폼에서 생성된 디스플레이를 사용할 수 있습니다. 많은 플랫폼에는 첨자로 액세스할 수 있는 디스플레이 상자 트리에 출력이 있습니다.
- JSL에는 전체 파일을 메모리로/다시 디스크로 이동하는 LoadTextFile 및 SaveTextFile 기능이 있습니다. 한 번에 몇 바이트의 읽기/쓰기가 없습니다.
- JSL에는 JSL의 파일을 읽어서 실행시키는 include 함수가 있습니다.
- JSL에는 "함수" 함수로 컴파일된 사용자 작성 함수가 있습니다.
- JSL에는 대규모 프로젝트를 작성할 때 많은 도움이 되는 로컬 변수가 있습니다. 기본적으로 변수는 전역 변수로 소규모 프로젝트 및 독특한 테스트에 적합하지만 중첩 루프에서 "i"를 처음 재사용하는 경우 로컬 변수를 살펴봐야 할 때일 수 있습니다.
Re: JSL에 대한 C++ 프로그래머 가이드감사해요! 스크립팅 인덱스는 getProperties가 반환하는 것과 동일한 정보로 작성되며 일반적인 사례에 대한 예제로 향상됩니다. 또한 더 많은 사례가 있었으면 합니다. 언어에는 책에서 더 잘 다루는 객체의 속성이 아닌 기능도 있습니다. JMP는 로그에 더 나은 메시지를 생성하는 측면에서 지난 N 릴리스에 비해 개선되었으며 때로는 사용 정보도 포함됩니다.
문서, 기술 지원 및 개발 팀은 더 많은/더 나은/개선된 문서가 필요한 모든 것에 대해 귀하의 의견을 듣고 싶습니다. 기술 지원을 거치면 추적할 수 있습니다.
@sheila_loring @shannon_conners @Wendy_Murphrey @XanGregg
Re: JSL에 대한 C++ 프로그래머 가이드Scirpting 인덱스에 대한 참고 사항: 통합 스크립팅 창과 사용자 지정 가능한 예제가 포함된 매우 강력한 도구입니다.
하지만 조금 어려웠던 점은 포괄적인 구문 색인이 없다는 점이었습니다. 실제로 JMP에 포함된 JSL 구문 참조라는 PDF 책이 하나 있지만 100% 포괄적인 것은 아닙니다. 함수 또는 메시지의 모든 인수에 대한 구문을 항상 찾을 수는 없습니다. 종종 << 속성 가져오기와 같은 메시지를 사용하여 로그에 표시해야 합니다.
이에 대한 JMP 위시리스트에 제안이 있습니다.