전 처음 파스칼 쓸때 "왜 꺽쇄는 놔두고 begin하고 end를 둬서 손꾸락 아프게 하는지..." 하고 매번 코딩 할때마다 불평했는데...^^
제 생각입니다만...
사전적인 의미에서 보면 function이 void값을 가진다는게 좀 안맞죠.
아시다 시피 원래 의미의 "함수"라는것은 어떤 입력값이 주어졌을때 어떤 결과값을 나타 내는게 함수죠..
그런데 void를 써서 입력값만 있고 출력값이 없는 함수를 만든 다는건... 좀 모순이죠.
이 모순 이라는게 파스칼 입장에서 모순 이라는거죠.
원래 파스칼의 철학중의 하나가 엄격한 규칙 이었답니다.
그러니 파스칼이란 언어의 입장에서 보면 분명히 function과 플로우에 따라 내용을 처리만 하는 procedure는 다른 형태로 봐야 하는겁니다. (쓰는 사람이 이해 해야죠..어쨌거나 쓰는 입장이니까...^^)
그래서 function과 procedure가 존재 하는게 당연한게 아닌가 하고 생각 해봤습니다.
function과 procedure 만 놓고보면 사실 function이라고 하나 procedure라고 하나 별 중요한건 아니지요.
그런데 파스칼 입장에서 보면 그런 사소한 부분 하나 하나의 엄격함이 파스칼의 강점이자 특징을 잘 나타내고 있습니다.
그 강점중의 하나가 엄격한 문법으로 인해 런타임시 발생될 오류를 컴파일시에 상당수 잡을수 있는게 됩니다.
더불어 설계시에는 이런 명확함이 C보다 유용 하게 쓰이고요.
델파이를 안한지 오년도 넘은거 같은데 그립군요.(얼렁 임베디드용좀 만들어 달라구요....^^)
쓰다보니 이런 생각이 드네요.
숫자 0이 있는데 이 0이라느게 값이 있냐 아니면 값이 없냐라고 했을때 어떤게 맞는걸까요.
생각해 보니까 아마도 쓰임새에 따라 맞고 틀리고 하는게 아닌가 싶습니다.
공감 하시나요?
^^
전용식 님이 쓰신 글 :
: procedure는 실행 후 결과값을 반환하지 않는 함수 이고 function은 실행 후 결과값을 반환하는 함수 인 이런 기본적인 것은
:
: 알고 있습니다.
:
: 근데 굳이 저렇게 분류해서 써줄 필요가 있을까 싶은데 그냥 C# 처럼 반환하지 않으면 void 이렇게 붙여서 하면 되는거 아닌가
:
: 요?
:
: 간단한 문제지만 너무 궁금합니다.
|