최근 수정 시각 : 2025-11-25 01:14:04

Forth


[[프로그래밍 언어|'''프로그래밍 언어
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 목록 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록
AActionScript · AdaT · AgdaTP · ALGOLT · ApexT · APL · awk · AssemblyT
BBASIC
C파일:C언어 로고.svg CT · 파일:C C#T · 파일:C++ 로고.svg C++T · CarbonT · 파일:clojure_logo.png ClojureS · COBOLT · CoffeeScript · Common LispS · CrystalT
D파일:external/upload.wikimedia.org/D_programming_language_logo.png DT · 파일:Dart 심볼.svg DartT
EElixir · 파일:Elm_logo.svg.png elmT · Erlang
F파일:fsharp-logo.png F#T · Factor · 파일:fennel-logo.svg FennelS · 파일:forth.png Forth · FortranT
GGNU Octave · 파일:Go 로고.svg GoT · Groovy
H파일:Haskell 로고 심볼.svg HaskellT · HolyCT · Haxe
I
J파일:Java 로고.svg JavaT · 파일:JavaScript 로고.svg JavaScript · 파일:julia-dots.svg Julia
K파일:Kotlin 심볼.svg KotlinT
LLeanTP · 파일:LISP_logo.svg LISPS · 파일:Lua 로고.svg Lua
MMATLAB · MaxV · MojoT · Moonlight
N파일:Nim 왕관 로고.svg NimT · 파일:Nix 로고.svg Nix
OOberonT · Objective-CT · 파일:ocaml.svg OCamlT
PPascalT · Perl · 파일:PHP 로고.svg PHP · Processing · Prolog · 파일:Python 심볼.svg Python
QQ#T · QML
R파일:R 로고.svg R · 파일:racket-logo.svg RacketS · Raku · ReasonMLT · 파일:rocq.png RocqTP · 파일:Ruby 로고.svg Ruby · 파일:Rust 로고.svg파일:Rust 로고 화이트.svg RustT
SSAS · 파일:Scala 로고.png ScalaT · SchemeS · 파일:스크래치(교육 플랫폼) 로고.svg ScratchV · sed · Shell Script · Smalltalk · SQL · 파일:Swift 심볼 배경.svg SwiftT
T파일:Typescript_logo_2020.svg TypeScriptT
UUdon
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV
WWave
XXSharp
Y
ZZenScript · 파일:Zig 로고마크.svg ZigT
한글누리 · V · 씨앗 · 약속 · 파일:엔트리 아이콘.svg 엔트리V · 창조
T: 정적 타입 프로그래밍 언어 · P: 증명 보조 언어 · S: LISP 방언 및 S-표현식 기반 언어 · V: 시각적 프로그래밍 언어 }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 순위 ]
{{{#!wiki style="margin: -5px -1px -10px"
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ IEEE Spectrum 2025 ]
{{{#!wiki style="margin: -5px -1px"
<tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 Python
2 Java 2 SQL
3 C++ 3 Java
4 SQL 4 JavaScript
5 C# 5 TypeScript
6 JavaScript 6 C#
7 TypeScript 7 C++
8 C 8 HTML
9 Shell 9 Go
10 Go 10 Shell }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ Stack Overflow 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#ffa500><colcolor=#fff> 2025년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어
1 JavaScript <colbgcolor=#ffa500><colcolor=#fff> 14 Rust
2 HTML & CSS 15 Kotlin
3 SQL 16 Lua
4 Python 17 어셈블리어
5 Bash/Shell 18 Ruby
6 TypeScript 19 Dart
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Groovy
10 PowerShell 23 Visual Basic
11 C 24 VBA
12 PHP 25 MATLAB
13 Go }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ TIOBE 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#2777c2><colcolor=#fff> 2025년 10월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=#2777c2><colcolor=#fff> 11 Fortran
2 C 12 Perl
3 C++ 13 R
4 Java 14 PHP
5 C# 15 Assembly language
6 JavaScript 16 Rust
7 Visual Basic 17 MATLAB
8 Go 18 Scratch
9 Delphi / Object Pascal 19 Ada
10 SQL 20 Kotlin }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ PYPL 2025 ]
{{{#!wiki style="margin: -5px -1px -10px"
<colbgcolor=green><colcolor=#fff> 2025년 11월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=green><colcolor=#fff> 11 Ada
2 Java 12 TypeScript
3 C++ 13 MATLAB
4 Objective-C 14 Kotlin
5 R 15 PowerShell
6 JavaScript 16 Go
7 C# 17 Dart
8 Swift 18 Ruby
9 PHP 19 Lua
10 Rust 20 VBA }}}}}}}}}}}} }}}}}}}}}}}}
실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어



." Hello, world!"


파일:forth.png

1. 개요
1.1. 명칭
2. 역사3. 문법4. 구현체
4.1. GForth4.2. SwiftForth, SwiftX4.3. pForth4.4. 기타 구현체
5. 외부 링크

1. 개요

포스 표준 홈페이지

찰스 무어(Charles H. Moore)에 의해 개발된 명령형, 절차적, 스택 기반 프로그래밍 언어이다. 반영(Reflective), 연결(Concatenative) 프로그래밍 패러다임에도 속한다. 주로 임베디드 장치를 위해서 쓰여지지만 PC를 타겟으로 한 프로그램도 작성된다.

포스는 스택 기반 패러다임으로, 입력된 데이터가 스택에 쌓이며 이를 처리한다. 때문에 코드 상으로 보면 LISP와는 정 반대인 역폴란드 표기법으로 수식을 작성하게 된다.

확장자는 .fs .fth .4th .forth 등이 쓰인다. .fs는 F#의 파일 확장자로 쓰이지만 제일 많이 쓰이는 포스 확장자 역시 .fs으로, Forth Source 혹은 Forth Script라는 뜻이다.

등장했을 때에는 컬트적인 인기를 끌어서 FORTH 신봉자들이 업계에서도 유명했다. 7~80년대 프로그래머들의 회고에서 종종 언급된다. 그러나 대중화되지 않아서 21세기 들어서는 이 언어를 아는 사람을 보기 힘들어졌다.

1.1. 명칭

Forth라는 이름은 4세대(차세대) 프로그래밍을 뜻하는 FOURTH로 지어졌으나, 당시 사용하던 시스템이 파일 이름을 5자로 제한했기 때문에, FORTH로 쓰게 됐다. 옛날에는 포스의 이름을 전부 대문자로 적었기 때문에 현재도 FORTH로 쓰는 경우가 많다.

실제로는 3세대 프로그래밍 언어로 분류된다.

2. 역사

포스는 1970년대 이전부터 찰스 무어에 의해 개발되기 시작하였다.

널리 보급된 이후, 1979년과 1983년에 FORTH-79, FORTH-83으로 정리되었고, 이는 1994년 ANSI에 의해 표준화되었다.
포스는 가볍고 단순했기 때문에 1980년대 상당한 인기를 끌었다.

1987년 KAIST의 변종홍은 '늘품'이라는 한국어 포스를 개발했다. 포스의 확장성으로 단어를 한국어로 바꿔 만든 것이다. 이는 당시 마이크로소프트웨어, 과학동아 등지에도 소개됐다.

이후 포스의 스택 기반 프로그래밍이라는 개념은 Factor, Joy 언어, 그리고 포스트스크립트에도 영향을 주었다.

3. 문법

파일:상세 내용 아이콘.svg   자세한 내용은 Forth/문법 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[Forth/문법#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[Forth/문법#|]] 부분을
참고하십시오.

4. 구현체

4.1. GForth

홈페이지
GNU 프로젝트 페이지

GNU 프로젝트의 일부로서 관리되는 구현체이다. 프리웨어, 자유 소프트웨어이다. 1992년 중반 Bernd Paysan, Anton Ertl 그리고 Jens Wilke에 의해 개발되었다. GForth는 ANSI/200x Forth 표준을 준수하며, 다양한 프로세서의 리눅스, 마이크로소프트 윈도, 맥 OS, 안드로이드, 그리고 GForth EC 임베디드 시스템에서 구동된다.

GForth는 GCC로부터 직접적으로 빠르게, 혹은 간접적으로 스레드된 코드를 컴파일한다.

4.2. SwiftForth, SwiftX

홈페이지

Forth, Inc.로부터 개발되는, 네이티브 코드를 생성하는 상용 구현체이다.

SwiftForth는 32비트 x86 호환 CPU에서 리눅스, 마이크로소프트 윈도, 맥 OS에서 사용할 수 있으며 IDE가 제공, 사용할 수 있다. 디버깅 툴로 역 어셈블러, 역 컴파일러, 단계별 디버거가 포함된다.

SwiftX는 ARM을 비롯한 임베디드 시스템을 타겟으로 한 구현체이다.

4.3. pForth

홈페이지
Github

Phil Burk에 의해 C로 쓰여진 오픈 소스 구현체이며, 이식성이 특징이다. 리눅스, 마이크로소프트 윈도, 맥 OS와 많은 임베디드 시스템에서 사용할 수 있다.

리눅스 터미널 안드로이드 앱인 Termux의 패키지 저장소에서 이 구현체를 설치할 수 있다.

4.4. 기타 구현체

  • SP-Forth: 러시아에서 개발된 구현체.
  • Mecrisp: MSP430를 위한 구현체.
  • VFX Forth: 고속의 네이티브 코드를 생성하는 구현체.

5. 외부 링크