WSFN(프로그래밍 언어)
WSFN (programming language)WSFN(What stands Nothing)[1]은 리첸 왕이 만든 로봇을 제어하기 위한 해석된 프로그래밍 언어다.가능한 한 작은 언어, 즉 '티니' 언어가 되도록 고안되었는데,[2] 왕씨가 일찍이 노력했던 '팔로 알토 티니 베이직'과 유사하다.[3][4]WSFN은 1977년 9월 Dobb 박사의 저널에 처음 게재되었다.
언어는 주로 로봇에게 특정 방향으로 움직이도록 지시하는 단문자 명령으로 구성되며, 다른 명령어는 테스트나 기본적인 수학적 연산을 수행한다.이것들은 더 복잡한 프로그램을 만들기 위해 명명된 매크로로 분류될 수 있다.원본 버전에는 VDM-1 디스플레이에서 커서로 로봇을 시뮬레이션하거나 Cromemco Dazzler 디스플레이에서 그래픽으로 시뮬레이션한 코드도 포함되었다.이는 1969년 로고 프로그래밍 언어에 추가된 거북 그래픽과 비슷하다.
Extended WSFN은 1981년 해리 스튜어트가 쓰고 아타리 프로그램 거래소가[5] 발행한 아타리 8비트 가정용 컴퓨터 제품군을 위해 만든 구현이다.거북이 그래픽을 지원하는 것 외에도, 그것은 그 플랫폼의 그래픽과 사운드 기능을 제어하기 위해 많은 명령을 추가한다.그것은 "그래픽에 중점을 둔 초보자의 언어"[citation needed]로 제공되었다.
구문
WSFN은 거북이나 로봇의 움직임을 제어하기 위한 다수의 단일 문자 명령으로 구성되어 있다.이 명령들 중 어떤 것도 숫자로 접두사를 붙이면 반복될 수 있다.[2]예를 들어.F
거북이를 움직이다. 한 걸음 앞으로 나아간다.25F
25계단을 움직인다. R
그리고L
거북이를 오른쪽 또는 왼쪽으로 각각 한 단위를 돌리게 하고, 또한 포인트로 재설정할 수도 있다.N
스텝 크기와 턴 단위는 로봇 하드웨어에 의해 정의되지만 거북이 그래픽 버전에서는 1 픽셀과 45도로 설정된다.로봇 버전, 컴퓨터 버전에서 누락됨H
거북이를 스크린의 가운데로 돌려주고C
이전 도면을 지운다.따라서 끈으로 정사각형을 그릴 수 있다.[6]
BCWHN25F2R25F2R25F2R25F
이 지침들은 그림의 색을 검은색으로 설정하고, 화면을 지우고(현재 색으로 채워지는) 흰색으로 설정하고, 거북이를 거북이를 흰색으로 설정하고, 거북이를 북쪽을 가리키도록 재설정하고, 거북이를 25보 길이로 연속 4선을 그리며, 각각의 선 사이를 90도로 회전시킨다.화면 중앙에 왼쪽 하단 모서리가 있는 흰색 사각형이 결과물이다.[6]
명령 목록은 괄호로 둘러쳐 매크로를 만들 수 있다.예를 들어, 괄호 안에 사각형의 한 면을 그리도록 코드를 배치한 다음 4번 불러 같은 사각형을 그릴 수 있다.[6]
BCWHN4(25F2R)
매크로는 다른 매크로 내에서 불릴 수 있다.예를 들어, 이 코드는 화면 중앙을 중심으로 회전하면서 각각 45도씩 오프셋되는 8개의 사각형을 그린다.[6]
BCWHN8(4(25F2R)R)
매크로는 다음 명령을 사용하여 이름을 할당할 수 있다.D
efine 명령(Extended WSFN=
대신에이 코드는 화면을 지우고 도면을 재설정하기 위해 "X"라는 매크로와 사각형을 그리는 또 다른 "Z"를 정의한다.그런 다음 위의 예와 동일한 회전 사각형을 그리기 위해 다음 사항을 사용한다.[7]
DX(BCWHN) DZ4(25F2R) X8(ZR)
WSFN은 단일 축전지로 구성된 기본적인 연산 기능을 가지고 있다. A
로 증감할 수 있는+
그리고-
. 편지A
숫자가 나타날 수 있는 모든 곳에 배치될 수 있다.각 단계 사이에 축전지를 5배씩 증가시켜 일련의 정사각형을 더 크게 만들 수 있다.[2]
DX(BCWHN) 25A DZ4(AF2R) X8(Z5+)AR)
구문의 부작용은 다음과 같다.A-
축열조는 A의 숫자로 감소 명령을 수행하기 때문에 축열조를 0으로 설정한다.마찬가지로,A+
축전지의 가치를 [2]배가하다
프로그램 제어는 IF/THEN/ELSE 구조를 취급하는 다수의 명령으로 구성되며, 똑같이 초보적이다.가장 기본적인 형태는 입니다.T
est 명령, 축전지가 0보다 크거나 같으면 두 경로 중 하나를 따른다.예를 들어, 이 명령은 축전지가 0이 아닌 경우 거북이를 왼쪽으로 90도 돌게 하고 0이면 오른쪽으로 45도 돌게 한다.[2]
T(2L)R
변주곡:T
분기 구조는 다음을 포함?
, 시간의 50%의 첫 번째 또는 두 번째 분기로 무작위로 점프하는 것.S
로봇의 접촉 센서가 트리거되었는지 테스트하는 엔서.[8]확장 WSFN이 수정됨S
거북이 앞에서 색을 되돌려, 이전 그림에서 히트 감지를 허용하고, 그 색을 더했다.E
거북이가 드로잉 영역의 가장자리에 부딪히면 오른쪽 매크로로 점프하는 dge 테스트.[9]원래 WSFN에는 다음과 같은 기능이 없다.E
그리고 대신 그림 영역을 감싸서 거북이가 화면 반대편에 다시 표시되도록 한다.[2]확장 WSFN은 이러한 스타일의 플레이필드 래핑을 옵션으로 지원한다.[10]
한 글자 명령과 재귀 구문을 사용하기 때문에 WSFN 코드는 암호성이 월등하다.예를 들어, 이것은 시에르피에스키 곡선을 그리기 위한 WSFN 프로그램이다.[11]
DIT(-I2FI5RG5RI2)FI+)2R DG4F DY(HN63F2R61FRC4(2FI))
매크로 "I"의 정의에는 그 안에 I에 대한 호출을 포함한다는 점에 유의하십시오.이것은 WSFN 개념의 핵심 측면이다; 언어는 자연적으로 매우 재귀적이기 때문에 프랙탈과 같은 프로그래밍 자체 유사 패턴을 코드의 몇 줄에서 쉽게 달성할 수 있다.[11]
확장 WSFN의 핵심 개념은 매크로가 실행되는 동안에도 키보드가 항상 활성화되어 있다는 것이다.이것은 키보드 입력이 실행 중인 프로그램을 방해할 수 있게 해준다.이 기법을 이용하면 거북이를 움직이는 매크로를 일정한 방법으로 만들어 키보드의 글자에 배정한 뒤 다른 키를 연속해서 눌러서 이런 동작을 할 수 있다.이것은 더해서 도움이 될 수 있다.W
a 도면이 이루어지는 대로 사용자에게 응답할 시간을 주는 장소에서의 it [12]명령
키워드
닥터 돕스 기사 원본에서.[13]
키워드 | 설명 |
---|---|
A | 축열조 값에 의한 루프(A- 0으로 설정, A+가 2배 증가) |
B | 도면 색상을 검은색으로 설정 |
C | 화면 지우기(현재 색으로 채우기) |
D | 매크로 정의 |
F | 거북이를 앞으로 이동시킨다. |
H | 거북이를 원점으로 되돌리십시오. |
L | 거북이를 왼쪽으로 돌린다. |
N | 거북이를 북쪽(위)으로 가리키십시오. |
R | 거북이를 오른쪽으로 돌린다. |
S | 로봇의 접촉 센서 테스트(IF/THEN/ELSE) |
T | 0이 아닌 축전지에 대한 테스트(IF/THEN/ELSE) |
W | 도면 색상을 흰색으로 설정 |
= | 매크로 이름 정의 |
? | T와 마찬가지로 각 분기를 50%씩 따르는 랜덤 검정 |
+ | 축적기 증가 |
- | 감쇠 축전지 |
확장 WSFN 매뉴얼에서.[14]
키워드 | 설명 |
---|---|
B | 삐 |
D | 펜 다운 |
E | 거북이가 화면 가장자리에 있는지 테스트 |
P | 펜 색상을 축전지의 값으로 설정 |
S | 축전지를 거북이 앞의 색으로 설정(원래 버전과 같이 센스) |
U | 펜업 |
W | 한 번 기다려라 ()½초) |
= | 매크로 정의 |
=# | 변수 정의 |
# | 변수의 값을 기준으로 루핑 |
* | 방향 명령인 *L 또는 *R에 *를 추가하면 각도가 45도가 아닌 22.5도로 변경됨 |
$ | 선택한 방향에 대해 조이스틱 테스트(IF/THEN/ELSE) |
% | 패들 컨트롤러의 값을 어큐뮬레이터로 판독 |
& | 선택한 색상 레지스터에 축전지의 값 쓰기 |
; | 0에서 7까지의 거북이의 방향을 축전지로 읽어보십시오. |
@ | 축전지를 0으로 설정(WSFN에서 A-와 동일) |
참조
- ^ The Blue Book for the Atari Computer. WIDL Video. 1983. ISBN 9780684179216.
- ^ a b c d e f 왕 1977 페이지 334.
- ^ Wang, Li-Chen (May 1976). "Palo Alto Tiny BASIC". Dr. Dobb's Journal. 1 (5): 12–25.
- ^ Rauskolb, Robert (December 1976). "Dr. Wang's Palo Alto Tiny BASIC" (PDF). Interface Age. pp. 92–108.
- ^ APX 목록(atariarchives.org
- ^ a b c d 스튜어트 1982 페이지 4
- ^ 왕 1977 페이지 345.
- ^ 1977년, 페이지 334,335.
- ^ 스튜어트 1982, 페이지 10.
- ^ 스튜어트 1982 페이지 3
- ^ a b 1977년, 페이지 336.
- ^ 스튜어트 1982 페이지 5
- ^ 왕 1977년.
- ^ 스튜어트 1982.
참고 문헌 목록
- Wang, Li-Chen (September 1977). "An Interactive Programming Language for Control of Robots". Dr. Dobb's Journal. Vol. 2, no. 8. pp. 334–345.
- Stewart, Harry (1982). Extended WSFN (PDF). APX.