Wednesday, May 20, 2009

About Haskell (A Short Introduction to Haskell) 번역 (6)

C가 나은 경우
물론 함수형언어가 모든 경우에 있어서 뛰어나다는 것은 아니다. C의 퀵-정렬은 Hoare에 의해서 고안된 배열을 치환하는 것으로 정렬을 수행하는, 매우 기교있는 기법을 사용하므로, 여분의 기억용량이 필요없다. 결과적으로, 적은 메모리를 사용하면서 빠르게 실행될 수 있다. 이와는 대조적으로 Haskell의 프로그램은 그 이면에서 여분의 메모리를 확보함으로, C보다 실행이 늦다.

즉, C의 퀵-정렬은 해독하기 어려운 대신에, 기억용량의 코스트를 줄이기 위해서 매우 기교적인 메모리관리를 실행하고 있다.

퍼포먼스가 중요시되는 응용프로그램이나, 저레벨의 알고리듬을 보다 세부적으로 조절해야하는 경우에는, 계산이 어떻게 실행되느냐보다는 세밀하게 제어되는 코드가 필요하므로, C언어와 같은 명령형언어가 Haskell을 선택하는 것 보다 낫다.

.함수형 VS 명령형

그러나 무엇보다도 퍼포먼스가 요구되는 프로그램이라는 것은 그다지 많지 않다. 무엇보다도, 옛날의 내부 루프를 남겨두고, 우리는 어셈블러로 프로그램을 만드는 것을 그만두었습니다. 보다 서포트성이 높은 프로그래밍 모델(임의로 명명되는 변수, 숫자가 정해져 있는 몇몇개의 레지스터 대신에 사용될 수 있는 지역변수)를 채용함으로서 얻어지는 이익은, 프로그램을 실행할 때의 코스트를 감안하더라도 매우 중요합니다.

마찬가지로, 가상 메모리 페이징 시스템도 널리 받아들여지고 있습니다. 무한의 가상 메모리 영역등 보다 좋은 서프트성이 높은 프로그래밍 모델을 만들 수 있습니다. 오늘날 명시적인 메모리 관리를 더 이상 수행되고 있지 않습니다.

함수형언어는 보다 높은 레벨의 프로그래밍 모델로 발돗음을 하려고 하고 있습니다. 프로그램은 보다 나은 디자인, 기술, 보수가 용이해 지고 있습니다만, 컴퓨터에서의 상세한 제어는 하지 못하게 되고 있습니다. 이점은 거의 모든 프로그램에 있어서 허용범위입니다.

No comments: