컴퓨터 프로그래밍에서 루틴과 서브 루틴은 어떤 프로그램이 실행될 때 불려지거나 반복해서 사용되도록 만들어진 일련의 코드들을 지칭하는 용어이다. 이를 이용하면 프로그램을 더 짧으면서도 읽고 쓰기 쉽게 만들 수 있으며, 하나의 루틴이 다수의 프로그램에서 사용될 수 있어서 다른 프로그래머들이 코드를 다시 작성하지 않도록 해준다. 프로그램 로직의 주요 부분에서는 필요할 경우 공통 루틴으로 분기할 수 있으며, 해당 루틴의 작업이 완료되면 분기된 명령의 다음 명령으로 복귀한다.
어셈블러 언어에서는 매크로 명령어라 불리는 인터페이스를 가진 매크로 정의 부분에 변수의 입력을 필요로 하는 루틴이 코딩될 수 있다. 프로그래머는 루틴을 포함하거나 그 루틴으로 분기하는 대신 매크로 명령어를 사용할 수 있다. 매크로 정의 및 명령어는 다수의 프로그램 특히, 소프트웨어 개발 프로젝트에 참여한 프로그래머 사이에서 공유되는 경우가 많다.
고급 프로그래밍 언어에서는 공통적으로 필요한 많은 루틴이 미리 함수로 만들어진다. 어떤 함수는 프로그램의 다른 코드와 함께 컴파일 되고, 어떤 함수는 프로그램이 실행될 때 시스템 서비스를 위한 동적 호출(dynamic call)을 하는 부분에서 컴파일 되기도 한다. 함수들은 때때로 라이브러리 루틴이라고도 불린다. 컴파일러와 라이브러리 루틴은 대체로 관련 소프트웨어 개발 패키지의 일부분이 된다.
윈도우와 같은 PC의 운영체계에서는 특정 입출력 장치와 상호작용 하는 기능을 수행하는 시스템 루틴을 동적 링크 라이브러리(DLL) 루틴이라 한다. 이 루틴들은 처음 불려질 때 비로소 메모리에 실제 로딩되기 때문에 앞에 동적(動的)이라는 말이 붙는다.
비교적 최근에 쓰이기 시작한 용어인 "프로시저"도 의미상으로는 루틴과 거의 비슷하다.
procedure ; 프로시저
- 프로그래밍에서, 프로시저는 루틴이나, 서브루틴 및 함수와 같은 뜻이다. 하나의 프로시저는 특정 작업을 수행하기 위한 프로그램의 일부이다.
- 일반적인 의미의 프로시저란, 어떤 행동을 수행하기 위한 일련의 작업 순서를 말한다.
|
library ; 라이브러리
라이브러리는 다른 프로그램들과 링크되기 위하여 존재하는, 하나 이상의 서브루틴이나 함수들이 저장된 파일들의 모음을 말하는데, 함께 링크될 수 있도록 보통 컴파일된 형태인 목적코드 형태로 존재한다. 라이브러리는 코드 재사용을 위해 조직화된 초창기 방법 중의 하나이며, 많은 다른 프로그램들에서 사용할 수 있도록, 운영체계나 소프트웨어 개발 환경제공자들에 의해 제공되는 경우가 많다. 라이브러리 내에 있는 루틴들은 두루 쓸 수 있는 범용일 수도 있지만, 3차원 애니메이션 그래픽 등과 같이 특별한 용도의 함수로 설계될 수도 있다. 라이브러리들은 사용자의 프로그램과 링크되어, 실행이 가능한 완전한 프로그램을 이룬다. 이러한 링크는 대개 정적 연결되지만, 시스템에 따라 동적으로 연결(DLL)될 수도 있다.
source code and object code ; 원시코드와 목적코드
원시코드와 목적코드는 프로그램이 컴퓨터에서 실행되기 위한 준비를 위해 컴파일 되기 "이전"과 "이후" 버전을 가리킨다. 원시코드는 프로그래머에 의해 텍스트 편집기나 비주얼 개발도구로 작성된 프로그램 문장들로 구성되며, 하나의 파일로 저장된다. 예를 들면, C 언어를 사용하는 프로그래머는 원하는 C 언어문장을 텍스트 편집기에 키보드로 입력한 뒤, 파일이름을 붙여서 저장한다. 바로 이 파일이 "원시코드"를 저장하고 있는 파일이다. 그것은 이제 C 컴파일러에 의해 컴파일될 준비가 된 것이며, 컴파일의 결과물, 즉 컴파일된 파일이 바로 "목적코드"라고 불린다. 목적코드 파일은 프로세서가 이해할 수 있는 명령어의 형태를 가지고 있기 때문에 사람들은 그것을 읽거나 수정하기 어렵다. 바로 이런 이유 때문에, 원시코드가 대부분 영원히 보존해야하는 프로그램으로 간주되는 것이다.
일반적으로 사용자들이 운영체계나 응용소프트웨어를 구매하거나 받을 때, 보통 컴파일된 목적코드의 형태만을 받게 되며, 여기에 원시코드는 포함되지 않는다. 대개 저작권이 걸린 소프트웨어 공급자들은 별도의 추가비용이 마련되지 않는 한 보통 자신의 코드를 개선시키는 노력을 하려하지 않는다. 최근, 기능개선을 위해 원시코드가 제공되는 개방형 소프트웨어를 개발하는 움직임이 있는데, 리눅스와 같은 소프트웨어가 그 예이다.
대형 프로그램 개발환경에서는 흔히, 프로그래머들이 각기 다른 원시코드 파일들의 상태나 수준을 기억하고 분류하는데 도움을 주는 관리시스템이 있다. Perl이나 자바스크립트와 같이 컴파일되지 않는 스크립트형 언어에서 원시코드나 목적코드라는 용어는 적용되지 않는데, 왜냐하면 그것들에는 오직 한가지 형태의 코드만이 존재하기 때문이다.
|
|
|