Subroutine
서브루틴. 현대적인 언어에서는 보통 함수로 구현한다.
역사
서브루틴 개념은 1945년 Konrad Zuse의 Z4 컴퓨터에서 처음 명시적으로 구현된다. 같은 해에 Alan Turing도 Proposals for development in the mathematics division of an automatic computing engine에서 파묻기(bury)와 파내기(unbury)라는 용어로 서브루틴 개념을 다루었다.
ALGOL 58은 “procedure” 키워드를 써서 사용자가 직접 서브루틴을 정의할 수 있었고, 전역 변수와 지역 변수를 구분했으며, “return” 구문으로 서브루틴에서 벗어날 수 있다. 현대의 대부분의 언어와 다른 점이라면 하나의 서브루틴에 여러 진입점이 있을 수 있다는 점.
그 밖에도 돌아갈 위치를 변수에 담고 변수의 값에 따라 어디로 돌아갈지 정해지는 방식(indirect jump), 함수는 있지만 Recursive function은 지원하지 않는 방식, Recursive function은 있지만 Tail-call optimization은 지원하지 않는 방식, 서브루틴은 있지만 변수의 범위(scope)는 없는 방식 등 다양한 구현이 있었다.