TECH 으로 돌아가기
TECH HACKER NEWS 오늘 8분 읽기 32 READS

아이들에게 Forth를 가르친다는 것: 1970년산 언어로 프로그래밍 교육을 실험하다

아이들에게 Forth를 가르친다는 것: 1970년산 언어로 프로그래밍 교육을 실험하다
SOURCE IMAGE · HACKER NEWS

어린이·청소년 프로그래밍 교육이라고 하면 대개 파이썬이나 스크래치(Scratch)를 떠올린다. 문법이 비교적 쉽거나, 아예 블록을 끌어다 놓는 방식으로 코드를 감춰버리기 때문이다. 그런데 한 교육자는 중·고등학생을 대상으로 한 첫 정규 수업에서 1970년에 등장한 스택 기반 연접형(concatenative) 언어인 Forth를 선택했다. 흔히 임베디드 시스템이나 부트로더 같은 저수준 영역에서나 언급되는 이 언어를, 프로그래밍을 처음 접하는 학생들의 입문 도구로 삼은 것이다. 이 글은 그 실험의 설계와 진행, 그리고 끝난 뒤의 솔직한 회고를 담고 있다.

왜 하필 Forth였나

선택의 배경에는 몇 가지 판단이 겹쳐 있었다. 수업 시간은 주 1회 한 시간씩 총 12회로 매우 제한적이었고, 학생들이 별도의 숙제를 해올 여력도 크지 않았다. 이런 조건에서 강사는 '문법을 가르치는 데 시간을 쓰지 않겠다'는 원칙을 세웠다. 파이썬은 코드가 무엇인지 이미 아는 사람에게는 의사코드처럼 읽히지만, 완전한 초심자에게는 여전히 낯선 기호 덩어리라는 것이 그의 이전 일대일 교습 경험에서 얻은 교훈이었다. 후보로는 Forth와 Haskell이 올랐다. Haskell은 학생들이 수학 시간에 배운 변수·함수 개념과 잘 맞아떨어진다는 장점이 있었지만, 최종적으로 Forth가 낙점됐다. 맞춤형 학습 환경에 통합하기 쉬웠고, 수업 마지막의 시연에서 함수형보다 절차형 사고가 더 직관적일 것이라는 계산에서였다. 덤으로, 다소 생소한 언어라는 점 덕분에 이미 코딩을 해본 학생도 새로 배울 거리가 생겼다.

종이 접시로 만든 스택

가장 인상적인 대목은 컴퓨터를 켜기도 전에 진행한 오프라인 실습이다. Forth를 이해하려면 그 밑바탕인 데이터 스택을 먼저 그림으로 그릴 수 있어야 하는데, 문제는 학습 자료로 쓴 닉 모건(Nick Morgan)의 'Easy Forth'가 독자가 이미 한 가지 언어와 스택 자료구조를 안다고 전제한다는 점이었다. 그 간극을 메우기 위해 강사는 학생 각자에게 종이 접시 한 무더기를 나눠 줬다. 숫자를 스택에 넣으라고 하면 접시에 숫자를 적어 맨 위에 올리고, 상단 두 수를 더하라고 하면 두 접시를 걷어내 계산한 뒤 결과를 새 접시에 적어 다시 올리는 식이었다. 예컨대 7과 6을 넣고 더하면 13이, 2와 3을 넣고 곱하면 6이 남는다. 학생들은 이렇게 후입선출(LIFO) 구조를 몸으로 반복하며, 사실상 스스로가 Forth 인터프리터가 되어 평소 컴퓨터가 자동으로 처리하던 일을 손으로 재현했다. 기계가 대신 계산을 맡은 것은 그 감각이 충분히 익은 다음이었다.

원래 계획은 러스트(Rust)로 Forth를 직접 구현해 WASM으로 수업 웹사이트에 심는 것이었으나, 버그를 잡는 데 예상보다 시간이 걸려 방향을 틀었다. 대신 Easy Forth를 커리큘럼이자 인터프리터로 그대로 채택했다. 설치나 다운로드 없이 어떤 운영체제에서도 브라우저만으로 돌아가야 한다는 조건이 중요했는데, 학생들이 제각기 다른 기기를 쓰고 일부는 서드파티 소프트웨어를 깔 수 없을 수도 있었기 때문이다. 강사는 Easy Forth의 그래픽 플레이그라운드 코드를 떼어내 한쪽에는 코드, 다른 쪽에는 결과 그림이 크게 보이는 별도 페이지로 확장했다.

최종 결과물과 남은 의문

마지막 수업의 목표는 각자 Forth 환경에서 자기만의 작품을 만드는 것이었다. 내장된 스네이크 게임을 조금씩 고쳐 규칙과 색을 바꿔 보게 했더니, 학생들은 대규모 리팩터링까지는 못 해도 코드를 두려워하지 않고 이리저리 만지작거리는 단계에는 도달했다. 이어 직접 그림을 그리게 하자 대부분 픽셀을 하나씩 찍어 나가는 방식으로 작품을 완성했다. 강사가 이 과제를 고집한 이유는 분명하다. 기술적 세부만 잔뜩 배우고 손에 쥔 결과물이 없으면 학습은 쉽게 지친다는 것이다.

다만 회고는 자기비판적이다. Forth는 어려운 문법이 없다는 장점이 있었지만, 정작 숙련된 프로그래머조차 평소 추상화 아래에 묻어두는 부분—스택 같은 저수준 구조—을 초심자에게 정면으로 요구했다. 스택은 분명 기초 자료구조이지만, 교육 초기부터 전면에 놓아야 할 개념인지는 의문이라는 것이다. 그럼에도 결과 코드가 '단어의 나열'에 불과하다는 점은 강력했고, Factor 같은 고수준 구성을 갖춘 연접형 언어라면 교육에 더 나을 수 있다는 여지를 남겼다. 결국 그는 스크래치처럼 즉각적이고 명확한 시각적 피드백을 주면서 저수준 구조는 덜 드러내는 매체를 골랐을 것이라고 돌아본다.

실무자에게 남기는 함의

이 실험이 던지는 실질적 메시지는 '언어 선택이 생각만큼 결정적이지 않다'는 것이다. 짧은 과정이었음에도 학생들은 생소한 언어를 충분히 익혔고, 어떤 패러다임을 더 잘 받아들이느냐는 개인차일 뿐 학습 과정을 완벽히 미세 조정할 방법은 없다는 결론에 이른다. 정작 중요한 것은 자신이 만든 것의 출력을 빠르고 반복적으로 확인할 수 있는 환경, 그리고 스스로 방향을 정할 여지다. 교육 도구를 고르는 사람이라면, 특정 언어의 우아함보다 이 두 가지—즉각적 피드백과 자기주도성—를 먼저 점검하는 편이 낫다는 뜻이다.

글은 LLM 시대에 대한 우려로 마무리된다. 이미 프로그래밍을 아는 사람은 LLM에 의존할수록 실력이 위축되고, 한 번도 배운 적 없는 사람은 아예 그 기술을 통째로 포기해 버릴 위험이 있다는 것이다. 새 기술을 배우려는 사람들이 검증된 출처 대신 부정확하고 아첨하기 쉬운 기술에 의존하는 흐름은 특히 세상을 처음 익혀 가는 아이들에게 더 위험하다고 강사는 지적한다. 화려한 자동화가 코딩을 대신하는 시대일수록, 사람이 사람에게 가르치는 인간 중심의 학습 환경을 지켜야 한다는 문제의식이다. 종이 접시로 스택을 쌓게 한 이 소박한 실험은, 바로 그 지점을 겨냥한 하나의 대답인 셈이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://gracefulliberty.com/articles/teaching-kids-forth/
SHARE
처리 중...