1. 부 프로그램 (Sub Program)
ㅇ 하나의 프로그램을 구성하는 여러 작은 단위의 프로그램들을 지칭함
- 프로그램 명령문들의 작은 단위 묶음 (특정 기능을 수행하는 코드의 묶음)
ㅇ 프로세스 추상화의 일종
- 일련의 명령문들을 모아두고, 이를 외부에서 호출할 수 있게한 구조
ㅇ 즉, 복잡한 연산을 간추려서, 이름을 붙이고, 쓰기 쉽도록 한 것
- 일단 정의되면, 여러번 호출되며, 즉시 실행될 수 있는, 프로그램 블록
2. 부 프로그램,서브루틴,함수,프로시저 비교
※ 모두 `어떤 행동을 수행하기 위한 일련의 작업순서`라는 뜻을 갖으나,
- 다음과 같이 미묘한 의미 차이 있음
ㅇ 부 프로그램 (Sub Program)
- 하나의 프로그램을 구성하는 여러 작은 단위의 프로그램을 뜻함
ㅇ 서브루틴 (Subroutine) : 리턴 값을 반환하지 않을 수 있음
- 호출되면 일련의 명령문 만을 수행하고, 결과 값을 반환 않을 수도 있음
ㅇ 함수 (Function) : 하나의 유일한 리턴 값을 반환하는 것이 원칙임
- 여러 매개변수를 전달하면, 함수는 그 연산 결과에 대한 하나의 값 만을 반환함
. 수식/표현식(Expression)의 일부로도/내부에서 쓰여질 수 있음
- 구조적으로는 서브루틴과 유사하지만, 의미적으로는 수학적 함수에 가까움
* [참고] ☞ C 함수,자바스크립트 함수 등 참조
ㅇ 프로시저 (Procedure) : 리턴 값을 반환하지 않을 수 있음
- `계산 수행 절차에 대한 정확한 기술/묘사`를 강조한 용어
. 즉, 할 일(계산)들을 어떻게(어떠한 규칙으로) 수행하는가를 구체적으로 밝혀 놓은 것
- 함수,서브루틴,부프로그램와 프로시저 비교
. 한편, 함수,서브루틴,부프로그램 등은 프로시저와는 달리,
. 사용자에게 어떻게 계산하는지에 대한 구체적인 정보를 주지 않을 수 있음
3. 부 프로그램의 사용 장점
ㅇ 프로그램 재사용으로 인한 절약
- 메모리 공간, 코딩 시간의 절약, 프로그램 크기를 줄임
ㅇ 가독성 증가
- 1개 호출문에 의해 실행
. 세부사항을 숨기면서 프로그램의 논리 구조를 강조함
.. 사용자는 호출이름,매개변수,기능 정도 만을 알면 됨
ㅇ 유지보수 및 확장성 용이, 문제 해결성 및 분할성 제고, 사용 용이 등
4. 부프로그램 동작상의 특징
ㅇ 각 부프로그램은 단일 진입점을 갖음
ㅇ 호출 부프로그램은 피호출 부프로그램의 실행 중에 중단됨
ㅇ 부프로그램 실행이 종료되면 제어는 항상 호출 부프로그램에게 돌아감
5. [참고용어]
ㅇ 코루틴 (Coroutine)
- 부프로그램의 특별한 경우로써, 코루틴 자체에 의해 제어되는 다중 진입점을 갖음
. 호출 및 피호출 부프로그램이 주종 관계가 아니라 대등함
ㅇ 콜백 함수 (Callback Function)
- 함수(또는,객체)를 매개로 전달하고서, 그것으로하여금 역 호출하게 하는 기법
ㅇ 클로저 (Closure)
- 부프로그램과 부프로그램의 참조환경
. 지역 변수(local variable)의 참조(by reference)를 가진 함수 블록