센스톡
SenseTalk| 패러다임 | 사람 지향 프로그래밍, 다중 패러다임, 객체 지향 |
|---|---|
| 가족 | 스크립팅 언어 |
| 설계자 | 더글러스 시몬스 |
| 개발자 | 가지(소프트웨어) |
| 첫 등장 | 1992; 전 ( |
| 안정적 해제 | 2.07 / 2021년 11월; 전 |
| 타이핑 규율 | 오리 |
| 면허증 | 소유권 |
| 파일 이름 확장명 |
|
| 웹사이트 | www |
| 영향을 받은 | |
| xTalk, HyperTalk | |
SenseTalk는 XTalk 계열의 고급 영어와 유사한 스크립팅 언어로 절차적 패러다임과 객체 지향적 패러다임을 모두 지원한다.SenseTalk 스크립트는 프로그래밍 교육을 거의 받지 않은 일반인을 포함한 일반인이 읽을 수 있도록 제작되었다.
이를 위해 센스톡은 기본적인 기계 동작보다는 인간의 작업을 지향하는 기능을 제공하는 여러 언어 요소를 포함하고 있다.예를 들어 수량이 3으로 분할되는지 여부를 확인하기 위해 스크립트는 ""라는 표현을 사용할 수 있다.if quantity is divisible by 3 …" 또는 "if quantity is a multiple of 3 …" 가독성에 중점을 두고 인간의 가독성에 초점을 맞춘다.[1] 이를 보다 전통적인 프로그래밍 언어(C, Java, Python 등)와 비교해 보십시오. 일반적으로 동일한 테스트가 "로 기록됨if (quantity % 3) == 0 …" , 결과를 결정하는 데 필요한 기계 작동에 초점을 맞춘다.[2]
기본적인 기계 계산에서 벗어나, 인간 용어로 행태에 대한 영어와 같은 설명으로 초점을 바꾼 것은 센스톡을 "사람 지향 프로그래밍 언어"로 설명하도록 이끈다.[3]
특색
SenseTalk의 디자인의 특정 측면은 자칭 "People Oriented Programming" 언어로서 다른 프로그래밍 언어와 구별되어 독특한 풍미를 준다.이는 사례 불감증과 같은 일상적인 특성부터 가독성을 높이는 통사적 요소까지 유동 변수 유형과 같은 보다 미묘한 특성에 이르기까지 다양하다.
대소문자 구분 안 함
SenseTalk 키워드와 변수 이름은 모두 대소문자를 구분하지 않는다.이것은 사람들이 행동의 변화 없이 자본화를 무심하게 사용할 수 있게 해준다.
놓다 12 안으로 사과 놓다 5 로 바나나 놓다 "과일의 총 조각: " & 사과+바나나 ->"과일의 총 조각: 17"을 표시한다. 이것은 속성 목록에 있는 속성 이름(사전이나 해시 테이블의 SenseTalk의 이름)에도 해당된다.
{Name:"녹색", HexCode:"#00FF00"}을(를) AColor에 넣으십시오. --> 표시:"녹색" 표시:acolor의 HEXcode 삽입 --> 표시:#00FF00" 표시또한 비교, 검색 등을 포함한 텍스트 연산은 필요할 때 대/소문자를 구분할 수 있지만 기본적으로 대/소문자를 구분하지 않는다.
세트 이름을 붙이다 로 "맥마스터" 놓다 이름을 붙이다 포함하다 "주임" --> 참 표시(사례가 무시됨) 놓다 이름을 붙이다 포함하다 "주임" 고려해서케이스 --> False를 표시한다. 변수
대소문자를 구분하지 않는 이름을 갖는 것 외에도 센스톡의 변수는 일부 다른 측면에서 이례적이다.
변수는 선언할 필요가 없고 유형이 없다.변수는 처음 사용될 때 존재하며 그 유형은 변수에 저장된 값의 유형에 따라 달라진다.
유체 유형
이러한 유연성은 주어진 변수가 변수에 값을 할당할 때 설정되는 유형을 갖는 다른 언어에서 발견되는 "덕타입"을 넘어선다.SenseTalk에서 변수는 모든 유형의 값을 포함할 수 있는 "컨테이너"로 간주된다.변수가 포함하는 값의 유형은 스크립트 실행 중에 변경될 수 있으므로 동일한 변수가 숫자를 포함하는 시작, 나중에 문자열을 포함하는 다음 값 목록을 포함할 수 있다.이 "유형유동성"은 사람들이 매우 유연한 방법으로 일을 할 수 있게 하고, 마음대로 가치를 조작하며, 각 가치를 대본의 주어진 지점에서 어떻게 사용되고 있는지에 따라 처리하게 한다.
SenseTalk의 유형이 없는 변수의 한 가지 결과는 일반적으로 "과부하" 연산자가 없다는 것이다. 즉, 작업 중인 변수의 유형에 따라 다른 연산을 수행하는 연산자가 있다.예를 들어, 일부 언어에서 "+" 연산자는 숫자 피연산자와 함께 사용될 때 추가를 수행하고, 문자열 피연산자와 함께 사용될 때 문자열 연동을 수행한다.SenseTalk에서 피연산자는 모두 유동적이므로, 한 연산자가 그 피연산자를 숫자로 취급하는 추가("+")를 수행하고, 또 다른 연산자가 그 피연산자를 문자열로 취급하는 문자열 연결("&")을 수행하도록 해야 한다.
놓다 1 + 2 & 3 + 4 --> 디스플레이 37 이 예에서 + 연산자는 & 연산자보다 우선 순위가 높기 때문에 표현식은 '(1 + 2) & (3 + 4)' 또는 '3 & 7'로 '37'을 부여한다.괄호를 사용하여 먼저 & 연산자를 수행했다면 '1 + (2 & 3) + 4'가 1 + "23" + 4가 되어 28의 결과를 얻는다.
미리 정의된 변수
SenseTalk에는 수백 개의 "미리 정의 변수"가 포함되어 있다.일반 변수로 사용할 수 있지만 먼저 값을 저장하지 않고 사용할 경우 미리 정의된 값으로 시작하는 변수 이름이다.미리 정의된 값 중 일부는 pi 또는 0과 같은 숫자다.많은 것들이 euroSign, copySign 또는 hotBeverage와 같은 특별한 문자나 기호들이다.또한 listFormat과 같은 다른 유형의 값을 가진 사람도 있는데, 이 목록에는 listFormat 글로벌 속성을 설정하는 데 사용할 수 있는 여러 키/값 쌍이 포함된 속성 목록이 포함되어 있다.
놓다 "반경 5의 원 영역은: " & 파이 * 5 정사각형의 사전 정의된 값이 없고 아직 명시적으로 값을 할당받지 않은 변수는 해당 값이 사용되는 컨텍스트에 따라 자체 이름 또는 비어 있는 값으로 평가된다.이것은 인용문이 필요하지 않은 많은 경우에 인용되지 않은 단어를 사용할 수 있게 한다.
놓다 쿠키카운트 ->< CookieCount>를 표시한다. 추가하다 3 다스의 로 쿠키카운트 ->> 비어 있는 것으로 처리하거나, 0으로 처리한다. 놓다 쿠키카운트 --> 표시 36 단위
SenseTalk는 숫자 값에 연결된 단위를 가질 수 있도록 한다.단위 값은 산술 연산을 수행할 때 필요에 따라 변환된다.
놓다 5 Yds + 2 ft -> 17피트 디스플레이 변수에는 단위가 있는 값이 포함될 수 있다.단위는 값과 함께 운반되어 후속 계산에 적용된다.
놓다 5 Yds 로 길이 덧셈을 2 ft 로 길이 -- 길이 값을 호환 가능한 단위로 변환하여 덧셈을 수행함 놓다 길이 -> 17피트 디스플레이 놓다 42 인치 로 너비 세트 면적 로 길이 * 너비 놓다 면적 -> 59.5평방피트를 표시한다. 보다 복잡한 단위도 지원된다.
날짜
센스톡은 날짜와 시간을 매우 다양한 형식으로 인식하고 날짜와 시간 계산을 지원한다.
놓다 "8:22" - "8:15" -> 420초를 표시한다. 날짜/시간 값은 변수에 저장할 수 있고, 형식은 계산을 통해 유지된다.
놓다 "3월 3일" + 34 날들 ->"4월 6일"을 표시한다. 놓다 "2021-03-04" 로 다음 날짜 추가하다 4 몇 주 로 다음 날짜 놓다 다음 날짜 --> 표시 "1904-01" 추가하다 4 몇달. 로 다음 날짜 놓다 다음 날짜 --> 표시 "1908-01"
청크 식
SenseTalk의 청크 표현은 HyperTalk에서 파생된 XTalk 언어 계열의 일원으로서 그 전통에서 유래한다.청크 표현식은 문자, 단어, 항목, 줄과 같은 친숙한 영어 용어를 사용하여 텍스트 청크로 작업할 수 있다.SenseTalk는 원래 청크 구문으로 확장되며, 텍스트 이외의 항목으로, 목록 내의 항목과 이진 데이터 내의 바이트로 확장된다.
놓다 성격. 7 로 11 의 "럼펠스틸츠킨" --> 디스플레이" 스틸트" 놓다 그 맨 처음의 3 마차 의 그 둘째 단어 의 “책 목록을 만들다” -->"고양이"를 표시한다. 청크 식도 값을 수정하는 데 사용할 수 있다.Xtalk 언어 용어에서 컨테이너의 청크(변수 등)도 컨테이너이기 때문에 컨테이너의 값을 변경하는 모든 명령을 청크 변경에도 사용할 수 있다.
놓다 "럼펠스틸츠킨" 로 funnyName 놓다 “쾅쾅 부딪치다” 로 성격. 7 로 12 의 funnyName 놓다 funnyName ->>에 "Rumpelbumpkin"이 표시된다.
파일
SenseTalk에는 파일 열기, 읽기, 쓰기 등의 명령이 포함되어 있지만 거의 사용되지 않는다.텍스트 파일은 (변수와 같은) 컨테이너로 취급할 수 있으므로, 파일을 변수에 넣는 것만으로 파일 내용을 읽을 수 있다.마찬가지로 파일에 변수나 다른 표현식을 입력하면 파일 쓰기도 가능하다.
놓다 파일 "/tmp/addressList.txt" 로 주소 놓다 "미리암, 219 스패로우 린, 프리버그,MA" & 돌아오다 다음에 주소 놓다 주소 로 파일 "/tmp/addressList.txt" 파일은 컨테이너이기 때문에 컨테이너를 수정하는 모든 명령은 파일에서 직접 사용될 수 있다.
놓다 돌아오다 & "Earlybird,12 Elm St,Vista,NM" 다음에 선을 긋다 1 의 파일 "/tmp/addressList.txt" 데이터베이스
데이터베이스에서 레코드에 접근하는 것은 파일을 읽는 것보다 더 복잡하지만, SenseTalk는 여기에서도 컨테이너의 개념을 적용한다.이를 통해 데이터베이스에 접속하고 특정 레코드의 필드를 매우 적은 코드로 업데이트할 수 있다.
놓다 {타자를 치다:”ODBC”, DSN:”고객들.”, 사용자:”관리상의”, 암호:”sEcret”} 로 커스터DB 놓다 테이블 “구독료” 의 커스터DB 로 자급자족하다 -- DB 테이블에 연결 추가하다 12 몇달. 로 만료일 의 그 기록하다 의 자급자족하다 어디에 커스터Num 이다 “83946-d” -- 특정 레코드의 값 업데이트
패턴 언어
센스톡의 "패턴 언어"[4]는 읽기 쉬운 영어와 같은 구문을 사용하여 정규 표현을 구현한다.다음 예제는 미국 사회 보장 번호(예: "999-999-999")를 식별하는 패턴을 생성한다.
세트 ssn패턴 로 <3 숫자 그때 돌진하다 그때 2 숫자 그때 돌진하다 그때 4 숫자> 패턴은 다양한 방법으로 사용될 수 있다.
만일 userEntry 성냥 ssn패턴 그때 세트 validSSN 로 진실의 놓다 매사에 발생하다 의 ssn패턴 에 파일 “사용자 데이터” 로 ssnList 만일 clientInfo 하지 않다’t 포함시키다 ssn패턴 그때 놓다 “ <SSN 행방불명의>” 다음에 clientInfo
패턴 언어는 다른 패턴으로부터 패턴이 쌓일 수 있도록 한다.이 예에서는 앞의 ssnPatter를 사용하여 바로 앞 문자나 다음 문자도 숫자가 되는 경우 일치를 피하는 패턴을 정의한다.
세트 고립된SSN 로 <ssn패턴 아닌 선행의 에 의해 숫자를 매기다, 아닌 따랐다 에 의해 숫자를 매기다>
역사
SenseTalk 언어는 HyperCard를 모델로 한 NeXTSTEP 플랫폼용 멀티미디어 저작 애플리케이션인 HyperSense에서 스크립팅 언어로 1992년에 처음 등장했다.당시 언어는 하이퍼카드의 하이퍼토크 언어의 카피에 지나지 않았다.언어에 대한 보다 야심찬 재고와 재설계는 현 언어의 시작을 가져왔고, 2002년 가지 V1.0에서 버전 0.02가 스크립팅 언어로 제공되었다.언어는 다음과 같은 추가 지원을 포함하여 계속 성장하고 발전해 왔다.
- V1.26(2007)의 각 표현식(다른 언어의 "목록 포괄"과 유사)
- V1.30(2008)의 트리 데이터 구조(원래 XML 지원)
- V1.36(2008)의 반복기
- V1.38(2009)의 범위
- V1.53(2012년)의 HTTP 및 XML-RPC에 대한 직접 지원
- V1.63(2013년)의 SQL 데이터베이스
- V1.67 단위(2014년)
- V1.81(2018)의 SenseTalk 패턴 언어(읽을 수 있는 정규식)
- V1.91(2019년)에서 읽을 수 있는 토큰이 있는 날짜 형식
- V2.00(2020)의 경우 다중 사례 문
- 모든 식, V2.04(2021)의 용기에 대한 각 식 사용