Gforth는 Forth 2012 언어의 자유 소프트웨어 구현체로, 빠르고 기능이 풍부하며 이식성이 높음.
GNU, BSD 및 유사 시스템, MS Windows, MacOS X에서 실행되며, GCC가 지원하는 다른 시스템으로도 어렵지 않게 이식할 수 있음.
HP 역폴란드 표기법(RPN) 계산기를 좋아한다면 Forth도 좋아할 수 있음. 무척 흥미로운 언어지만 내 머리로는 조금 복잡하게 느껴짐. 여유가 두 시간 있다면 한번 해보길 권함.
표준 라이브러리에 꽤 유용한 편의 기능들이 빠져 있어 이를 보완하는 작업을 하고 있음. 프로그래밍을 예술로 즐기던 기쁨을 되찾고 싶은 이들에게 Forth를 풀뿌리 언어로 가르치려 함.
100rabbits가 이미 이런 생각을 널리 퍼뜨리는 데 많은 일을 했지만, 나는 그들이 사용하는 Uxn 가상 머신 밖에서 작업하고 싶음. AI가 프로그래밍의 즐거움을 빼앗는다고 우리 프로그래머들이 주눅 들지는 않음. 생업인 업무용 프로그래밍은 그럴 수 있지만, 그것도 가끔만 재미있었음.
Forth는 계속 두뇌를 단련하고 논리와 데이터 흐름을 다루게 해줄 것이며, 이 능력은 생업에서 에이전트를 이끄는 데도 활용할 수 있음.
Factor는 고려해봤는지? Forth 및 연결형 언어 계열 중 Joy에서 영감을 받은 갈래에 속하며, 필요한 기능을 두루 갖췄는데도 상당히 저평가된 언어임. 이미지 기반 배포와 그래픽 REPL, 객체 검사기 등 실시간으로 상호작용하는 도구 덕분에 Smalltalk 같은 느낌도 있음.
Gforth가 계속 유지보수되어 반가움. 그런데 여전히 gcc myprog.c -o myprog처럼 운영체제용 네이티브 실행 파일을 만드는 기능은 없는 것인지?
Gforth는 네이티브 코드로 컴파일하는 대신 딕셔너리 이미지를 저장하는 스레디드 코드 가상 머신이기 때문임. Forth는 대체로 컴파일 시점과 실행 시점의 경계가 흐리며, C처럼 컴파일한 뒤 링크하는 명확한 경계가 없음.
SwiftForth, VFX Forth, iForth는 실제 실행 파일을 만들며, Linux용으로 더 작은 네이티브 코드 Forth 구현체들도 있음. 다만 그쪽을 택하면 Gforth의 이식성과 표준 지원이 풍부한 라이브러리 생태계를 포기해야 함.
그렇다면 ccforth가 마음에 들 수 있음. Gforth와 대체로 호환되며, C를 거쳐 네이티브 코드로 컴파일하는 컴파일러임. https://github.com/ncw/ccforth
Forth 인터프리터와 컴파일러를 동시에 실행하는 실험으로 직접 만들었음.
최근 Forth로 큰 프로젝트를 진행했는데, 예전만큼이나 유용함. 보안 모델도 없고 화려한 IDE나 편집기도 없어 프로젝트 관리에 직접 공을 들여야 함. 1988년에 작성한 내 코드를 확장해 Forth 표준 핵심 워드 테스트와 일부 확장 테스트를 통과하게 만든 뒤, Raspberry Pi의 모든 입출력 장치를 기본 연산으로 추가했음. 그 결과 로봇 분야의 임베디드 시스템을 만드는 데 아주 유용한 6천 줄, 외부 의존성 0개짜리 작은 도구 모음이 됨.
Gforth와 Don Hopkins가 알려준 다른 구현체도 고려했지만, 큰 프로젝트를 새로 파악하는 것보다 내 코드에 대한 익숙함을 택했음. 만든 장치는 기대를 훨씬 뛰어넘는 성능을 내고 있어 Forth를 선택한 것이 무척 만족스러움. 워낙 구식으로 느껴져 같은 선택을 할 사람은 드물 것 같음.
특히 거추장스러운 상위 구조가 없고, 워드 크기와 CPU 아키텍처가 다른 기기 사이에서도 쉽게 이식할 수 있어 좋았음. Forth는 여전히 쓸 자리가 있음. 이제 GA144 몇 개를 구해봐야겠음.