LTCT KOREA세계 논리학의 지도
영국 국기영국편 · 연재 59

THE WORLD OF LOGIC · UNITED KINGDOM / 59

다음에 할 일을 건네면,
점프 뒤에 무엇이 실행될까요?

접수·저장·안내 세 줄 가운데 저장만 건너뛰어도 마지막 안내는 그대로 뜹니다. 어느 길을 지났는지 장부에 적어 보며, 스트레이치와 워즈워스가 점프를 어떻게 설명했는지 읽습니다.

원문 기반 가상 대담15개의 질문3가지 실행 실험
이 대담의 성격

1974년 옥스퍼드 기술보고서 PRG-11을 바탕으로 재구성한 가상 대담입니다. 도서관 기록과 실험의 수치는 편집부가 만든 교육용 예입니다. 명령과 식의 후속 계산을 원문의 구분에 맞춰 읽습니다.

Q

사회자 · 독자의 질문

마지막 화면만 보고도 저장 여부를 알 수 있을까요?

S·W

두 저자의 논의를 재구성한 답변

현재 상태, 정상 경로, 레이블에서 새로 고른 경로를 따로 적습니다.

이번 글의 흐름 살펴보기

PART I · 01–05

정상 순서와 점프의 갈림길

01
사회자

왜 보통 상태변환만으로 goto를 설명하기 어렵나요?

S·W원문 기반 가상 답변

명령의 뜻을 상태에서 상태로 가는 단순 함수로 놓으면 두 명령을 차례로 합성하기 쉽습니다. 문제는 첫 명령 안에서 바깥 레이블로 뛰어 둘째 명령을 생략할 때입니다. 정상적으로 끝난 뒤 이어갈 일을 인수에 넣어 두면, 점프는 그 인수와 다른 경로를 선택할 수 있습니다.

사회자 사례를 보겠습니다. 접수 A, 저장 B, 안내 C의 세 줄 중 B를 실행했는지는 어떻게 알까요?

답변 마지막 화면은 어느 쪽에서나 안내 C입니다. A에서 곧바로 C로 건너간 기록은 [A,C]이고, 저장을 거친 기록은 [A,B,C]입니다. 화면 제목이 같다는 사실만으로 저장이 끝났다고 판단하면 첫 경로를 놓칩니다. 줄 순서밖에 모르는 설명에는 이 둘을 가를 자리가 없습니다. 첫 줄을 읽을 때도 정상적으로 이어갈 B와 점프 대상 C를 함께 표현할 수 있어야 합니다.

생각그림 01 · 마지막 화면이 같은 두 실행편집부 모형
마지막 화면이 같은 두 실행정상 경로와 점프 경로는 마지막 안내가 같지만 저장 기록에서 갈라집니다.01 / 마지막 화면이 같은 두 실행접수 A정상 → 저장 B →안내 C점프 → 안내 C상태 로그에 B가 있는가?
정상 경로와 점프 경로는 마지막 안내가 같지만 저장 기록에서 갈라집니다.

원문·범위 · §1, 인쇄본 3–4쪽

마지막 안내가 떴다면 저장이 끝났다는 결론을 낼 수 있을까요?

실행 로그에서 B를 확인해야 합니다. 점프해도 안내 C는 보입니다.

02
사회자

continuation은 무엇인가요?

S·W원문 기반 가상 답변

계속해서 할 일을 나타내는 함수입니다. 이 원문의 명령 후속 계산은 어떤 저장 상태를 받아 프로그램이 끝날 때의 상태를 돌려줍니다. “다음 줄 번호”보다 많은 것이 들어갑니다. 그 줄에서 시작해 마지막까지 수행할 일이 담깁니다.

사회자 그렇다면 빈 로그를 받아 안내 C를 적는 것만으로도 ‘남은 계산’이 되나요?

답변 그렇습니다. k(σ)=σ 뒤에 C 추가라고 정하면 빈 로그에는 [C]가, 이미 A가 적힌 로그에는 [A,C]가 남습니다. 같은 k를 두 상태에 적용해도 결과는 달라집니다. 맨 끝에서 더 할 일이 없을 때는 상태를 그대로 돌려주는 항등 함수를 씁니다. 그 함수도 하나의 후속 계산입니다.

생각그림 02 · 같은 후속 계산에 다른 상태 넣기편집부 모형
같은 후속 계산에 다른 상태 넣기세 행에서 바뀌는 것은 들어온 상태입니다. C를 하나 덧붙이는 규칙은 같습니다.02 / 같은 후속 계산에 다른 상태 넣기입력k 뒤의 출력[][C][A][A,C][A,B][A,B,C]
세 행에서 바뀌는 것은 들어온 상태입니다. C를 하나 덧붙이는 규칙은 같습니다.

원문·범위 · §3, 7–9쪽

맨 끝의 k가 항등 함수라면 [A,B]에 적용한 결과는 무엇인가요?

[A,B]입니다. 끝났다는 표시 때문에 B를 지우거나 빈 상태로 되돌아가지 않습니다.

03
사회자

순차명령 C1;C2는 continuation으로 어떻게 읽나요?

S·W원문 기반 가상 답변

바깥 continuation k 앞에 C2의 의미를 붙여 새 continuation을 만들고, 그것을 C1에 전달합니다. 따라서 C1이 정상 종료하면 C2와 k가 이어지고, C1이 jump하면 이 정상 경로를 버릴 수 있습니다.

사회자 뒤에 있는 명령부터 묶으면 실행도 거꾸로 되는 것 아닌가요?

답변 종료 카드 k를 탁자에 놓고, 그 앞에 안내, 저장, 접수를 차례로 끼워 넣어 보세요. 완성된 묶음은 접수(저장(안내(k)))입니다. 실제 장부에는 접수부터 적힙니다. 뒤에서부터 만든 것은 나중에 할 일을 가리키는 연결이지 실행 로그가 아닙니다. 실험 1에서 저장과 안내의 자리를 바꾸면 연결 모양과 로그가 나란히 달라집니다.

생각그림 03 · 끝에서 만든 카드와 앞에서 쌓인 로그편집부 모형
끝에서 만든 카드와 앞에서 쌓인 로그아래에서 완성한 가장 바깥 카드는 접수입니다. 실행 로그는 접수부터 기록됩니다.03 / 끝에서 만든 카드와 앞에서 쌓인 로그끝 k안내 C(k)저장 B(C(k))접수 A(B(C(k)))
아래에서 완성한 가장 바깥 카드는 접수입니다. 실행 로그는 접수부터 기록됩니다.

원문·범위 · §3, 9–10쪽

A 뒤에 C, 그 뒤에 B를 실행하려면 A에 어떤 카드를 건넬까요?

C 뒤에 B와 끝을 붙인 C(B(k))를 건넵니다. 실제 기록은 A,C,B입니다.

04
사회자

jump는 continuation을 어떻게 바꾸나요?

S·W원문 기반 가상 답변

goto L은 레이블 환경에서 L의 후속 계산을 찾아 현재 상태에 적용합니다. 소스에서 바로 뒤에 적힌 명령은 점프 순간의 정상 경로에서 빠집니다. 뒤의 다른 지점에서 그 줄로 다시 돌아오는 프로그램이라면 나중에 방문할 수 있습니다.

사회자 goto가 B를 건너뛰면, 이미 적힌 A도 지워지나요?

답변 점프는 지금 가진 장부를 들고 L로 갑니다. 없애는 것은 앞으로 B를 실행하라는 연결입니다. 앞에서 A를 적었다면 L의 안내 C가 받은 장부에도 A가 있습니다. 따라서 결과는 [C]가 아니라 [A,C]입니다. 점프를 과거 상태로 되돌리는 동작과 혼동하면 이 한 글자가 달라집니다.

생각그림 04 · 점프에서 버리는 것과 보존하는 것편집부 모형
점프에서 버리는 것과 보존하는 것제어의 목적지만 바뀝니다. 이미 기록된 A는 L로 전달됩니다.04 / 점프에서 버리는 것과 보존하는 것goto L, 상태 [A]버린 연결 → 먼저 B기록고른 연결 → C 기록최종 로그 [A,C]
제어의 목적지만 바뀝니다. 이미 기록된 A는 L로 전달됩니다.

원문·범위 · §4, 13–14쪽

A; goto L; B; L:C에서 한 번도 방문하지 않은 명령을 고르세요.

B를 적는 세 번째 줄입니다. 이동 전의 A와 이동 후의 C가 남습니다.

05
사회자

레이블의 뜻은 주소인가요?

S·W원문 기반 가상 답변

원전은 레이블의 뜻을 그 지점부터 끝까지 수행할 상태변환으로 줍니다. 구현은 이 동작을 코드 주소나 실행 기록으로 실현할 수 있습니다.

사회자 실행 파일에서 L이 120번 주소에 있었다가 다음 번에는 180번에 놓이면 의미도 달라질까요?

답변 두 배치 모두 L에서 안내 C를 실행하고 끝난다면, 여기서 비교하는 로그의 함수는 같습니다. 어느 주소에서 몇 바이트를 읽는지는 구현에 속합니다. 거꾸로 같은 숫자 주소도 다른 코드가 놓이면 다른 일을 합니다. 레이블 환경 ρ에서 L을 찾아 현재 상태에 적용하는 표현은 배치 주소에 기대지 않고 도착 이후의 일을 드러냅니다.

생각그림 05 · 주소와 그 장소에서 하는 일편집부 모형
주소와 그 장소에서 하는 일주소 표시는 다르지만 이 두 배치가 실현하는 안내 기능은 같습니다.05 / 주소와 그 장소에서 하는 일구현L의 일주소 120안내 C, 종료주소 180안내 C, 종료관찰값같은 입력 → 같은로그
주소 표시는 다르지만 이 두 배치가 실현하는 안내 기능은 같습니다.

원문·범위 · §3–4, 10쪽 및 13쪽

최종 로그만 관찰하는 이 모형에서 코드 배치가 달라졌음을 로그만으로 알아낼 수 있나요?

두 배치가 같은 입력에서 같은 기록을 남기면 그 로그 관찰로는 구별할 수 없습니다.

PART II · 06–10

값과 상태를 건네는 방법

06
사회자

식의 continuation은 명령의 것과 왜 다른가요?

S·W원문 기반 가상 답변

식은 상태뿐 아니라 계산한 값도 다음 단계에 전달해야 합니다. 식 continuation은 값과 상태를 받아 남은 계산을 수행합니다. 부분 결과가 있는 식 안에서 jump가 일어나는 경우를 설명하는 데 필요합니다.

사회자 책 두 권의 합계가 7이라는 값만 가져가면 바깥 계산을 마칠 수 있을까요?

답변 계산을 하는 동안 대출 장부의 수정 횟수도 하나 늘었다고 해 보겠습니다. 바깥 규칙이 ‘합계에 수정 횟수를 더한다’라면 값 7 하나만으로는 부족합니다. 똑같이 7을 얻어도 횟수가 1이면 다음 결과는 8, 2이면 9입니다. 그래서 식의 후속 계산에는 계산한 값과 그때의 상태를 함께 건넵니다.

생각그림 06 · 같은 값, 다른 상태, 다른 결과편집부 모형
같은 값, 다른 상태, 다른 결과표의 셋째 칸은 첫째와 둘째 칸을 함께 사용합니다.06 / 같은 값, 다른 상태, 다른 결과값 v수정 수v+수718729두 입력 · 값과 상태 함께 전달
표의 셋째 칸은 첫째와 둘째 칸을 함께 사용합니다.

원문·범위 · §3, 10–12쪽

값 7을 그대로 두고 수정 횟수를 1에서 2로 바꾸면 바깥 식의 값은 얼마만큼 바뀌나요?

7+1=8에서 7+2=9로 1 늘어납니다. 값 하나가 같아도 상태가 다른 두 실행을 구별합니다.

07
사회자

valof와 resultis 사례는 무엇을 보여 주나요?

S·W원문 기반 가상 답변

resultis는 값을 계산한 뒤, 자기를 가장 안쪽에서 감싸는 valof가 저장해 둔 식의 후속 계산에 그 값과 현재 상태를 건넵니다. 이 valof 안에서 해당 명령 뒤에 남아 있는 정상 경로는 여기서 끝납니다. valof가 겹쳐 있어도 더 바깥의 valof까지 한꺼번에 빠져나가지는 않습니다.

사회자 resultis를 만난 자리 뒤에 ‘장부 한 번 더 수정’이 있으면 몇 번을 셀까요?

답변 입력 3에서 첫 수정을 하고 곧바로 3을 넘기면 횟수는 1이고 바깥 값은 4입니다. 두 번째 수정까지 진행한 뒤 3+3을 넘기는 경로에서는 횟수 2와 값 6이 건너가므로 바깥 값은 8입니다. 두 호출 모두 바깥 계산은 계속됩니다. 끝나는 것은 그 valof 내부에서 아직 남았던 일입니다.

생각그림 07 · 두 탈출 시점의 장부편집부 모형
두 탈출 시점의 장부괄호의 앞은 넘긴 값이고 뒤는 그때까지의 수정 횟수입니다.07 / 두 탈출 시점의 장부입력 3 → 첫 수정이른 탈출 →(3,1) → 4둘째 수정 →(6,2) → 8두 경우 모두 바깥에서 덧셈
괄호의 앞은 넘긴 값이고 뒤는 그때까지의 수정 횟수입니다.

원문·범위 · §4, 17–18쪽

늦게 빠져나가는 경로에서 두 번째 수정만 놓치면 어떤 오답이 생길까요?

값 6에 횟수 1을 더해 7이라고 답하게 됩니다. 정확한 값 8에는 두 수정이 모두 반영됩니다.

08
사회자

continuation은 실행 스택과 같은가요?

S·W원문 기반 가상 답변

후속 계산은 남은 계산의 기능을 나타냅니다. 실행 스택은 그 기능을 실현하는 방법 가운데 하나입니다. 읽고 있는 것이 수학적 정의인지, 정의를 실행하는 장치인지 구별하면 비교 기준이 분명해집니다.

사회자 종이에 남은 일을 적어 실행해도 스택이 꼭 있어야 하나요?

답변 교사는 ‘저장하고 안내’라고 적은 쪽지를 들고, 다른 교사는 두 개의 상자에 같은 순서를 쌓을 수 있습니다. 두 구현을 비교할 때는 쪽지의 모양이 아니라 어떤 입력에 어떤 순서의 로그를 남기는지 봅니다. 중간에 L로 가면 쪽지와 스택 모두 정상 후속 일을 버리고 L에서 이어야 합니다. 이를 확인하는 테스트 한 건으로 모든 입력이 같다고 결론짓지는 않습니다.

생각그림 08 · 구현 두 가지에 같은 관찰값 요구편집부 모형
구현 두 가지에 같은 관찰값 요구스택의 크기 대신 구현이 실현하는 후속 동작을 비교합니다.08 / 구현 두 가지에 같은 관찰값 요구방법보관한 다음 일쪽지저장 다음 안내스택꺼낼 차례로 저장·안내비교입력별 로그와 종료여부
스택의 크기 대신 구현이 실현하는 후속 동작을 비교합니다.

원문·범위 · §5, 19–21쪽 및 편집부 비교

스택 높이가 같다는 사실만으로 두 구현의 동작이 같을까요?

같은 높이의 스택에도 서로 다른 후속 일이 담길 수 있습니다. 남은 연산과 상태에 따른 결과를 비교해야 합니다.

09
사회자

while 반복도 continuation으로 설명되나요?

S·W원문 기반 가상 답변

반복 몸체가 끝나면 조건 검사로 돌아가는 continuation을 만들 수 있습니다. 의미 방정식은 자기 자신을 참조하므로 최소 고정점 조건이 함께 필요합니다.

사회자 반복 조건을 “남은 책 수가 0보다 크다”로 두면 몸체 뒤에는 무엇을 붙일까요?

답변 책이 두 권이면 한 권을 처리하고 조건을 다시 봅니다. 2→1→0을 지나 조건이 거짓이 되면 비로소 반복문 바깥의 k로 갑니다. 반복 몸체에 k만 직접 붙이면 한 번만 처리하고 끝나 버립니다. 반대로 참·거짓을 확인하지 않고 늘 몸체로 가면 0이 되어도 멈추지 못합니다.

생각그림 09 · 몸체 뒤에서 다시 만나는 조건편집부 모형
몸체 뒤에서 다시 만나는 조건원전은 재귀적으로 나타나는 반복의 의미를 최소 고정점으로 다룹니다. 이 표는 종료하는 입력 한 개의 추적입니다.09 / 몸체 뒤에서 다시 만나는 조건조건: 남은 수 2 → 참한 권 처리 → 남은 수 1다시 확인 → 처리 → 0조건 거짓 → 바깥 k
원전은 재귀적으로 나타나는 반복의 의미를 최소 고정점으로 다룹니다. 이 표는 종료하는 입력 한 개의 추적입니다.

원문·범위 · §4, 15–16쪽

처음부터 0권이라면 본문과 바깥 k 중 어디로 먼저 갈까요?

조건이 거짓이므로 본문을 한 번도 실행하지 않고 k로 갑니다.

10
사회자

jump 뒤의 명령이 정말 무시되는지 어떻게 검사하나요?

S·W원문 기반 가상 답변

상태에 추적 표식을 하나 추가합니다. jump 다음 명령이 표식을 바꾸도록 한 뒤 실행 결과에서 표식이 그대로면 정상 continuation이 버려졌음을 작은 모형 안에서 확인할 수 있습니다.

사회자 화면이 너무 빨라 B를 못 본 것과 B를 아예 건너뛴 것은 어떻게 가르나요?

답변 B의 줄에서만 장부에 고유 표식을 넣게 합니다. 점프가 없는 경로는 1,2,3,4를 방문해 로그 [A,B,C]를 남깁니다. L로 가는 경로는 1,2,4만 방문해 [A,C]를 남깁니다. 만약 B와 C가 같은 글자를 출력하게 만들었다면 글자만 보고는 구별이 덜 분명합니다. 줄 번호와 기록을 함께 남겨 놓는 까닭입니다.

생각그림 10 · 줄 번호와 장부를 나란히 보기편집부 모형
줄 번호와 장부를 나란히 보기방문한 명령과 보이는 출력은 서로 다른 관찰입니다.10 / 줄 번호와 장부를 나란히 보기경로방문로그정상1·2·3·4A,B,C점프1·2·4A,C차이3번 미방문B 없음
방문한 명령과 보이는 출력은 서로 다른 관찰입니다.

원문·범위 · §4, 13–14쪽에 기댄 편집부 추적

두 실행 모두 안내 C가 출력됐을 때, 어떤 추가 자료가 점프를 보여 줄까요?

세 번째 줄의 방문 여부와 B 표식의 유무를 봅니다. 실험 2에서는 같은 입력에서 두 자료를 함께 비교할 수 있습니다.

PART III · 11–15

레이블의 순환과 모형의 한계

11
사회자

여러 레이블이 서로 점프하면 의미가 순환하지 않나요?

S·W원문 기반 가상 답변

각 레이블 continuation이 서로를 참조하는 연립 재귀 방정식이 됩니다. 원전은 의미 영역과 최소 고정점 이론으로 해를 설명합니다. 유한 시뮬레이션에서 반복을 제한했다고 일반 해의 존재가 증명되는 것은 아닙니다.

사회자 L에서 M, M에서 다시 L로 간다면 다음을 미리 계산해 둘 수 있나요?

답변 두 레이블의 후속 일은 서로를 가리킵니다. 단순히 마지막 줄부터 한 번씩 값을 채우는 설명으로는 이 원을 풀기 어렵습니다. 원전의 고정점 해석과 별도로, 실험에서는 여덟 번만 실행해 보고 관찰을 멈추도록 했습니다. 여덟 번 만에 끝나지 않았다는 결과만으로 임의의 프로그램이 영원히 돈다는 정리를 얻지는 못합니다. 다만 ‘현재 상태에서 L과 M이 무조건 서로로만 간다’ 같은 추가 구조가 확인된 이 사례에 대해서는 별도 논증을 할 수 있습니다.

생각그림 11 · 서로의 후속 일을 참조하는 두 레이블편집부 모형
서로의 후속 일을 참조하는 두 레이블이번 표에는 탈출 가지가 없습니다. 단계 제한의 결과와 그래프 자체로 따지는 논증을 구분하세요.11 / 서로의 후속 일을 참조하는 두 레이블차례도착지다음1LM2ML3LM
이번 표에는 탈출 가지가 없습니다. 단계 제한의 결과와 그래프 자체로 따지는 논증을 구분하세요.

원문·범위 · §3–4, 레이블 환경과 재귀적 정의

100번까지 못 끝난 프로그램이 101번째에 끝날 가능성도 있을까요?

한도 결과만 가지고는 남아 있습니다. 특정 모형이 영원히 도는지 보이려면 되풀이되는 상태와 가능한 전이를 별도로 확인해야 합니다.

12
사회자

후속 계산 전달 방식(CPS)은 이 논문과 어떤 관계인가요?

S·W원문 기반 가상 답변

남은 계산을 명시적으로 인수에 넣는 발상을 공유합니다. 이 논문의 대상은 점프가 있는 작은 언어의 의미 방정식입니다. 현대 언어 전체를 CPS로 변환하는 규칙과 보존 증명은 따로 정해야 합니다.

사회자 명령에 k를 붙이면 그 자체가 현대 언어의 CPS 변환 전체인가요?

답변 원전은 jump가 있는 작은 언어의 뜻을 수학적으로 정의합니다. 현대 변환을 설명하려면 원래 언어와 결과 언어, 호출 순서, 어떤 결과를 보존할지를 정해야 합니다. 예를 들어 A와 B가 순서대로 장부에 글자를 적는다면 변환 뒤에도 [A,B]가 남아야 합니다. 같은 k 표기를 쓴 사실 하나만으로 이 보존 성질이 증명되지는 않습니다.

생각그림 12 · 무엇이 같아야 변환이 맞을까요?편집부 모형
무엇이 같아야 변환이 맞을까요?예시는 오늘의 비교 기준을 설명합니다. 논문이 이 현대 변환을 직접 제시했다는 뜻은 없습니다.12 / 무엇이 같아야 변환이 맞을까요?비교 항목원래변환 뒤최종 숫자44장부 순서A,BB,A판정 · 로그까지 보면 다름
예시는 오늘의 비교 기준을 설명합니다. 논문이 이 현대 변환을 직접 제시했다는 뜻은 없습니다.

원문·범위 · 원전 §0·§5와 편집부의 비교

두 프로그램이 같은 최종 숫자를 냈는데 로그는 [A,B]와 [B,A]라면 변환 성공일까요?

관찰 기준에 로그가 포함된다면 실패입니다. 숫자만 같은지, 상태 변화와 종료까지 같은지를 미리 정해야 합니다.

13
사회자

예외 처리와도 연결되나요?

S·W원문 기반 가상 답변

오류가 났을 때 정상 continuation 대신 오류 처리 continuation으로 이동하는 구조로 설명할 수 있습니다. 다만 현대 언어의 형식적 예외 체계 전체는 별도 정의가 필요합니다.

사회자 신청 오류뿐 아니라 이미 빌린 장비의 반납까지 자동으로 처리될까요?

답변 오류 처리 카드에 무엇을 적었는지에 달렸습니다. ‘안내 C로 이동’이면 안내만 하고, ‘장비 반환 뒤 안내’이면 둘 다 합니다. 정상 후속 일 대신 오류 후속 일을 선택한다는 설명만으로 반환이 실행되지는 않습니다. 두 경로의 장부를 나란히 읽으면 제어 이동과 정리 정책이 별도라는 점이 분명해집니다.

생각그림 13 · 오류 경로에 무엇을 적었나요?편집부 모형
오류 경로에 무엇을 적었나요?현대 예외 처리는 여기서 비유한 사례이며 PRG-11의 전체 정의로 다루지 않습니다.13 / 오류 경로에 무엇을 적었나요?오류 감지처리 카드 1 → 안내처리 카드 2 → 반환후 안내장부에 반환 기록 확인
현대 예외 처리는 여기서 비유한 사례이며 PRG-11의 전체 정의로 다루지 않습니다.

원문·범위 · §1의 오류 탈출 및 편집부의 적용

오류 경로의 마지막에 안내가 있으면 반드시 장비가 반환됐을까요?

반환 연산이 그 경로에 들어 있는지 봐야 합니다. 안내만 실행한 경로도 있을 수 있습니다.

14
사회자

continuation을 쓰면 모든 제어 문제가 해결되나요?

S·W원문 기반 가상 답변

원전은 매우 일반적인 jump를 다룰 힘을 보여 주지만, 동시성·비동기 입출력·자원 해제 정책은 각각 추가 의미가 필요합니다. 강력한 표현 도구라는 결론과 모든 문제의 완성 해법이라는 주장을 구별합니다.

사회자 버튼을 눌러 안내로 이동하는 것과 네트워크 응답을 기다리는 것은 무엇이 다를까요?

답변 현재 실습은 매 단계 다음 명령 하나를 고릅니다. 서로 다른 작업이 언제 실행될지, 외부 응답이 어느 순서로 도착할지는 모형에 들어 있지 않습니다. 그런 문제에는 사건 순서나 자원 소유권을 표현하는 규칙을 더해야 합니다. 점프를 정확히 설명할 수 있다는 사실 그대로가 동시성까지 풀었다는 근거가 되지는 않습니다.

생각그림 14 · 이 실습이 구분하는 것과 더 필요한 것편집부 모형
이 실습이 구분하는 것과 더 필요한 것한 모델을 다른 문제에 적용하려면 그 문제를 가를 정보가 모델에 들어 있어야 합니다.14 / 이 실습이 구분하는 것과 더 필요한 것상황필요한 정보goto L레이블과 현재 상태동시 실행허용된 실행 순서자원 반환경로별 정리 규칙
한 모델을 다른 문제에 적용하려면 그 문제를 가를 정보가 모델에 들어 있어야 합니다.

원문·범위 · §0의 소형 언어 범위, §5의 논의

응답 두 개의 도착 순서를 바꾸는 실험을 이 도구로 할 수 있을까요?

이 도구에는 외부 응답과 스케줄러가 없습니다. 두 사건의 가능한 순서를 검사하려면 상태와 전이 규칙을 추가해야 합니다.

15
사회자

이번 글에서 확인한 결론은 무엇인가요?

S·W원문 기반 가상 답변

명령의 뜻에 ‘다음에 할 일’을 포함하면 정상 순서와 jump를 한 합성적 의미 체계에서 구별할 수 있습니다. 교육용 모형은 이 제어 흐름을 보여 주며, 1974 원문의 일반 방정식과 증명 범위를 대체하지 않습니다.

사회자 처음 도서관으로 돌아가면 어떤 세 가지를 물어야 할까요?

답변 오류 직전 장부에는 A가 있습니다. 정상 후속 일에는 B 뒤 C가 있고, 목적지 L의 후속 일에는 C가 있습니다. 오류일 때 셋째 봉투를 고르면 최종 장부는 [A,C]입니다. 식 안에서 빠져나온다면 봉투에 값도 넣습니다. 이 네 줄을 말할 수 있으면 단순히 “goto는 이동이다”라고 외운 것보다 한 단계 더 설명한 셈입니다.

생각그림 15 · 마지막 검산표편집부 모형
마지막 검산표세 항목을 직접 써 보면 버려지는 일과 보존되는 상태가 갈라집니다.15 / 마지막 검산표현재 상태 [A]정상 후속 B 다음 C레이블 L의 후속 CL 선택 → 최종 [A,C]
세 항목을 직접 써 보면 버려지는 일과 보존되는 상태가 갈라집니다.

원문·범위 · §3–4, 명령·식 continuation과 점프

점프를 만났을 때 기록할 세 항목을 말해 보세요.

그 순간의 상태, 버려지는 정상 후속 일, 레이블 환경에서 고른 새 후속 일입니다. 값을 들고 나가는 식 탈출이라면 전달되는 값도 함께 기록합니다.

INTERACTIVE NOTEBOOK

장부를 바꾸며 세 가지를 시험하기

먼저 로그나 결과를 예상하고 선택을 바꿔 보세요. 세 실험은 브라우저 안의 작은 언어에서만 실행됩니다.

1. 남은 계산 카드의 순서

세 장의 카드를 다른 순서로 놓으면 뒤에서 묶는 방법과 실제 기록 순서가 어떻게 달라질까요?

접수 다음 저장, 그다음 안내 순서의 로그는 접수·저장·안내입니다.

2. 점프가 버리는 줄

기록 A와 안내 C 사이에 있는 두 번째 명령을 바꿔 보세요. 존재하지 않는 레이블은 실행 전에 검사합니다.

1. 기록 A
2. goto L
3. 기록 B
4. L: 기록 C
기본 경로는 1·2·4번 줄을 방문해 A와 C를 기록합니다.

3. 식에서 빠져나올 때의 값과 장부

첫 기록을 남긴 뒤 입력값 그대로 나가거나, 두 번째 기록 후 입력에 3을 더해 나갑니다. 바깥 계산은 넘겨받은 값과 장부의 수정 횟수를 더합니다.

입력 3에서 첫 기록 뒤 나오면 값 3과 횟수 1을 건넵니다. 바깥 결과는 4입니다.

원문으로 돌아가는 길

  1. 옥스퍼드 PRG-11 원문 PDF. 1974년 1월 기술보고서. 1절의 문제 제기, 3절의 명령·식 후속 계산, 4절의 레이블·반복·식 탈출 방정식을 읽었습니다. 본문 쪽수는 보고서에 인쇄된 쪽입니다.
  2. 옥스퍼드 컴퓨터과학과 서지. 1973년 파리 발표를 개정·확장한 1974년 판본을 기준으로 삼았습니다.
읽은 뒤 장부에 남길 한 줄

점프가 바꾸는 것은 다음에 할 일입니다. 그 순간까지의 상태는 새로 고른 후속 계산에 전달됩니다. 식 탈출은 계산한 값도 함께 전달합니다.

포함된 서체의 라이선스 보기
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded, 
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.


DejaVu Sans license and copyright:

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: DejaVu fonts
Upstream-Author: Stepan Roh <src@users.sourceforge.net> (original author),
                  see /usr/share/doc/fonts-dejavu-core/AUTHORS for full list
Source: https://dejavu-fonts.github.io/

Files: *
Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. 
 Bitstream Vera is a trademark of Bitstream, Inc.
 DejaVu changes are in public domain.
License: bitstream-vera
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of the fonts accompanying this license ("Fonts") and associated
 documentation files (the "Font Software"), to reproduce and distribute the
 Font Software, including without limitation the rights to use, copy, merge,
 publish, distribute, and/or sell copies of the Font Software, and to permit
 persons to whom the Font Software is furnished to do so, subject to the
 following conditions:
 .
 The above copyright and trademark notices and this permission notice shall
 be included in all copies of one or more of the Font Software typefaces.
 .
 The Font Software may be modified, altered, or added to, and in particular
 the designs of glyphs or characters in the Fonts may be modified and
 additional glyphs or characters may be added to the Fonts, only if the fonts
 are renamed to names not containing either the words "Bitstream" or the word
 "Vera".
 .
 This License becomes null and void to the extent applicable to Fonts or Font
 Software that has been modified and is distributed under the "Bitstream
 Vera" names.
 .
 The Font Software may be sold as part of a larger software package but no
 copy of one or more of the Font Software typefaces may be sold by itself.
 .
 THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
 TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
 FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
 ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
 THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
 FONT SOFTWARE.
 .
 Except as contained in this notice, the names of Gnome, the Gnome
 Foundation, and Bitstream Inc., shall not be used in advertising or
 otherwise to promote the sale, use or other dealings in this Font Software
 without prior written authorization from the Gnome Foundation or Bitstream
 Inc., respectively. For further information, contact: fonts at gnome dot
 org.

Files: debian/*
Copyright: (C) 2005-2006 Peter Cernak <pce@users.sourceforge.net> 
           (C) 2006-2011 Davide Viti <zinosat@tiscali.it>
           (C) 2011-2013 Christian Perrier <bubulle@debian.org>
           (C) 2013 Fabian Greffrath <fabian+debian@greffrath.com>
License: GPL-2+
 This program is free software; you can redistribute it
 and/or modify it under the terms of the GNU General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later
 version.
 .
 This program is distributed in the hope that it will be
 useful, but WITHOUT ANY WARRANTY; without even the implied
 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 PURPOSE.  See the GNU General Public License for more
 details.
 .
 You should have received a copy of the GNU General Public
 License along with this package; if not, write to the Free
 Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 Boston, MA  02110-1301 USA
 .
 On Debian systems, the full text of the GNU General Public
 License version 2 can be found in the file
 /usr/share/common-licenses/GPL-2'.