셰익스피어 프로그래밍 언어
Shakespeare Programming Language셰익스피어 프로그래밍 언어(SPL)는 Jon Oslund와 Karl Wiberg가 [1]설계한 난해한 프로그래밍 언어입니다.셰프 프로그래밍 언어처럼, 그것은 프로그램이 프로그램이 아닌 것처럼 보이게 하기 위해 고안되었습니다 - 이 경우, 셰익스피어는 연극을 합니다.
프로그램 시작의 캐릭터 리스트는 다수의 스택을 선언하며, 자연스럽게 "Romeo"나 "Juliet"와 같은 이름을 사용합니다.이들 캐릭터는 서로의 최상위 값을 조작하고 서로 밀어서 팝하며 I/O를 수행하는 대화에 들어갑니다.또한 캐릭터는 서로 조건부 문장으로 동작하는 질문을 할 수도 있습니다.전반적으로 프로그래밍 모델은 어셈블리 언어와 매우 유사하지만 훨씬 더 상세합니다.
셰익스피어의 프로그래밍
제목
셰익스피어 프로그램의 첫 줄은 '제목'이라고 불린다.컴파일러는 첫 번째 줄부터 첫 번째 마침표까지를 코멘트로 간주합니다.
드라마티스 페르소나
변수가 선언되는 섹션입니다.각 변수는 부호 있는 정수 값을 유지할 수 있으며 다음 형식입니다.
이름, 설명
어디에Name
변수 이름 및Description
는 컴파일러에 의해 무시됩니다.컴파일러는 실제 셰익스피어 [1]문자에 해당하는 이름만 인식합니다.
액트 및 장면
셰익스피어의 코드 조각이 깨졌다.Acts
포함하다Scenes
캐릭터(예: 캐릭터)가 상호 작용합니다.각각Act
그리고.Scene
로마 숫자로 번호가 매겨져 있으며, 로서의 역할을 한다.GOTO
콜론 뒤의 코드는 코멘트로 간주됩니다다음 형식으로 작성됩니다.
1막: 햄릿의 모욕과 아첨.장면 I: 로미오에 대한 모욕.
시작, 종료 및 실행
코드의 각 행은 일반적으로 한 문자에 의해 다른 문자에 의해 대화되는 형식의 형태를 취합니다.이는 변수(대화되는 문자)의 값이 할당, 변경 또는 출력되는 방법입니다.문자는 "you" 또는 "thou"로만 지정할 수 있습니다.따라서 대사를 말할 때마다 "무대"에 정확히 두 개의 캐릭터가 있어야 합니다.하나는 말하기 위한 캐릭터이고 다른 하나는 말하기 위한 캐릭터입니다.[1]스테이지에 변수를 호출하려면Enter
명령어는 하나 이상의 문자 목록과 함께 사용됩니다.그Exit
명령어는 나열된 한 명의 캐릭터에게 스테이지를 종료하도록 지시합니다. Exeunt
는 둘 이상의 문자를 호출하여 탈퇴합니다.또는 문자가 목록에 없는 경우 모든 캐릭터가 스테이지를 [1]종료합니다.다음 형식이 사용됩니다.
[줄리엣 입력] [로미오와 줄리엣 입력][로미오와 줄리엣 종료][Exeunt Romeo and Juliet]
줄들
행은 캐릭터가 말하는 대화로 표현되며 적어도 하나의 문장으로 구성됩니다.각 문장은 변수에 새 값을 할당하거나 변수의 값을 출력하도록 지시하거나 입력을 받도록 지시할 수 있습니다.행은 스택을 조작하거나 if/then 또는 goto 문처럼 동작할 수도 있습니다.행은 캐릭터의 이름과 콜론으로 시작합니다.이 캐릭터는 스피커이기 때문에 스테이지의 다른 캐릭터는 "you" 또는 "thou"로 표현되는 변수입니다.
상수 및 값 할당
상수는 명사와 형용사의 조합으로 표현된다.언어는 각각의 유한한 목록을 인식하며, 두 목록 모두 오스트룬드와 하셀스트롬에 의해 인식되는 양의, 음의, 또는 중립적인 어조를 가진 것으로 구분된다.양의 명사와 중성 명사는 값이 1이고 음의 명사는 값이 -1입니다.어떤 형용사든 명사에 2를 곱하면 형용사는 [1]합성될 수 있다.소유대명사는 파서에 의해 무시되며, 기본 산술과 관련된 단어는 "sum", "quotient" 및 "cube"와 같은 연산으로 인식됩니다.문자에 값을 할당하는 문장은 "You" 또는 "Thou"로 시작하고 선택적으로 "as [any 형용사] as"로 이어지며 명사, 형용사, 변수 및 새로운 값에 대한 연산자로 수학 공식을 제공할 수 있습니다.이러한 행의 예는 다음과 같습니다.[1]
햄릿: 이 바보 같은 거짓말쟁이 아버지 없는 냄새나는 겁쟁이야!줄리엣:당신은 로미오의 제곱근만큼 악랄해요!
수학 공식은 또한 다른 캐릭터의 이름을 사용하여 계산에서 해당 캐릭터의 현재 가치를 활용하거나, 말하는 캐릭터에 대해 "자신" 또는 "자신"을 사용할 수 있습니다.
입출력
회선에서는, 출력 또는 입력의 수신에 필요한 변수를 호출할 수도 있습니다."Open your heart"는 변수의 숫자 값을 출력하고 "Speak your mind"는 해당 ASCII 문자를 출력합니다."Listen your heart" 또는 "Open your mind"로 인해 변수는 사용자로부터 입력을 받습니다.전자는 숫자, 후자는 [1]문자입니다.
조건문 및 설명
if/then 스테이트먼트는 캐릭터에 의해 제기되는 질문으로 표현됩니다."as [any any any 형용사 as"는 평등에 대한 검정을 나타내며, "better"와 "worse"는 각각 보다 크고 작음을 나타냅니다."만약 그렇다면" 또는 "그렇지 않다면"로 시작하는 후속 행은 원래 조건의 참 또는 거짓에 대한 응답으로 어떤 일이 일어나는지 결정합니다.goto 스테이트먼트는 "Let us", "We should", 또는 "We have to"로 시작하여 "ret to" 또는 "proceed to"로 이어지며 행위 또는 장면을 제공합니다.씬(scene)은 현재 액트의 해당 씬(scene)과 구문 분석됩니다. goto 스테이트먼트는 다른 [1]액트의 씬(scene)을 호출할 수 없습니다.goto를 호출하는 조건문은 다음과 같습니다.[1]
줄리엣: 내가 너보다 낫니?햄릿:그렇다면 장면 III로 넘어갑시다.
스택 푸시 및 팝핑
각 변수는 스택입니다.행이 문자에게 "Remember me" 또는 "Remember yourself"와 같은 적절한 값을 "기억"하도록 지시하는 경우 변수는 스택에 정수를 푸시합니다.문자가 임의의 것을 「호출」하도록 지시되었을 경우, 스택내의 맨 위 값이 팝 됩니다(즉, 변수는 이 값을 가정합니다).이 단어 뒤의 모든 텍스트는 [1]코멘트로 취급됩니다.
코드 예시
Do Not Adieu, 2막짜리 연극.로미오, 대단한 인내심을 가진 젊은 남자.줄리엣도 마찬가지로 우아한 젊은 여성이다.오필리아, 햄릿과 많은 논쟁을 벌이고 있는 주목할 만한 여성이다.안데르센 모욕 A/S의 아첨꾼 햄릿.1막: 햄릿의 모욕과 아첨.장면 I: 로미오에 대한 모욕.[햄릿과 로미오를 입력하세요]햄릿:이 바보 같은 거짓말쟁이 아버지 없는 냄새나는 겁쟁이야!당신은 잘생기고 부자인 용감한 영웅과 당신 자신과의 차이만큼 멍청해요!속마음을 털어놔!당신은 당신의 뚱뚱하고 작은 박제된 먼지투성이의 오래된 썩은 대구 조각과 아름답고 따뜻하고 평화로운 여름날을 합친 것만큼이나 용감합니다.당신은 가장 달콤한 빨간 장미의 합과 나의 아버지와 당신과의 차이만큼 건강합니다!속마음을 털어놔!너는 너 자신을 합친 것만큼이나 비겁하고 크고 자랑스러운 왕국과 말의 차이점이야.속마음을 털어놓으세요.속마음을 털어놓아라![로미오 퇴장] 장면 2: 줄리엣에 대한 찬사.[줄리엣 입력] 햄릿:당신은 로미오와 그의 말 그리고 그의 검은 고양이의 합을 합친 것 같이 달콤합니다!속마음을 말해![줄리엣 퇴장]장면 III:오필리아에 대한 찬사.[오필리아 입력] 햄릿:당신은 로미오와 거대한 녹색의 평화로운 나무의 광장의 차이만큼 아름답습니다.속마음을 털어놓아라!당신은 큰 시골 마을의 산물과 끝없이 수놓은 나의 놀라운 지갑처럼 사랑스럽습니다.속마음을 털어놓아라!당신은 가장 맑고 달콤한 하늘과 다람쥐와 백마의 산물처럼 사랑스럽다.당신은 줄리엣과 당신 자신의 차이만큼 아름답습니다.속마음을 말해봐! [오필리아와 햄릿] 2막: 햄릿의 등뒤에서.장면 1: 로미오와 줄리엣의 대화.[로미오와 줄리엣 입장]로미오: 속마음을 털어놓으세요.당신은 나의 작고 부드러운 햄스터와 나의 코의 차이만큼 걱정합니다.속마음을 털어놔!줄리엣: 속마음을 털어놔!넌 햄릿만큼 나빠!넌 내 작은 조랑말과 네 털북숭이 사냥개랑 네 불쌍한 대구 조각의 큐브 사이의 차이만큼 작아.[로미오 퇴장]장면 2: 줄리엣과 오필리아의 대화[오필리아 입력] 줄리엣:당신은 로미오와 작은 털북숭이 동물과 거머리의 합계의 몫만큼 훌륭합니다.속마음을 털어놔!오퍼리아:로미오와 겨우살이와 배어 나오는 감염 물집 사이의 두 배 차이만큼 넌 역겨워!속마음을 털어놔![Exeunt]
「 」를 참조해 주세요.
레퍼런스
인라인 참조
일반 참고 자료
- Herrick, Chloe (27 June 2011). "The A-Z of Programming Languages: Shakespeare". Computerworld. Retrieved 10 November 2018.
- Byrne, Michael (26 September 2015). "Know Your Language: Coding Toil and Trouble with Shakespeare". Motherboard. Retrieved 10 November 2018.
- Lang, Mirco; Augsten, Stephan (12 July 2017). "Esoteric Programming, Teil 2: Shakespeare Programming Language". dev-insider.de (in German). Retrieved 10 November 2018.
- Nelson, Andy (2 March 2014). "Shakespeare Programming Language". English Theater and Literature in London. Retrieved 10 November 2018.
- Kühnast, Charly (December 2010). "Aus dem Alltag eines Sysadmin: Shakespeare Programming Language". Linux-Magazin (in German). Retrieved 10 November 2018.
- Vee, Annette (2017). Coding Literacy: How Computer Programming is Changing Writing. Cambridge, MA: MIT Press. pp. 124–125. ISBN 9780262036245.
- "StackHack - Shakespeare Programming Language - Datorföreningen Stacken". www.stacken.kth.se (in Swedish). Retrieved 10 November 2018.
외부 링크
- 홈페이지
- Source Forge 페이지
- 슬래시닷의 셰익스피어 프로그래밍 언어
- 프로그래밍 언어의 A-Z: 컴퓨터 세계의 셰익스피어
- Python으로 작성된 SPL 인터프리터(GitHub 저장소)
- GitHub에서 Python으로 작성된 Shakespeare to C 컴파일러
- shakespearelang.org