# Subroutine > 서브루틴. 현대적인 언어에서는 보통 함수로 구현한다. 서브루틴. 현대적인 언어에서는 보통 <함수>로 구현한다. ## 역사 [서브루틴](https://wiki.g15e.com/pages/Subroutine.txt) 개념은 <1945년> 컴퓨터에서 처음 명시적으로 구현된다. 같은 해에 [Alan Turing](https://wiki.g15e.com/pages/Alan%20Turing.txt)도 에서 파묻기(bury)와 파내기(unbury)라는 용어로 서브루틴 개념을 다루었다. ALGOL 58은 "procedure" 키워드를 써서 사용자가 직접 서브루틴을 정의할 수 있었고, <전역 변수>와 <지역 변수>를 구분했으며, "return" 구문으로 서브루틴에서 벗어날 수 있다. 현대의 대부분의 언어와 다른 점이라면 하나의 서브루틴에 여러 진입점이 있을 수 있다는 점. 그 밖에도 돌아갈 위치를 변수에 담고 변수의 값에 따라 어디로 돌아갈지 정해지는 방식(indirect jump), 함수는 있지만 은 지원하지 않는 방식, 은 있지만 은 지원하지 않는 방식, 서브루틴은 있지만 변수의 범위(scope)는 없는 방식 등 다양한 구현이 있었다.