2012년 7월 19일 목요일

진화(進化)의 계단

이전에도 간혹 어렴풋이 들던 생각이,
최근에 다시, 좀 더 또렷하게 들고 있습니다.

프로그래밍 언어들에 대한 구분이 저수준(Low-Level)과 고수준(High-Level)이 되는 경우가 있는데, 이런 구분은 그 언어의 역할 및 용도를 보다 명확히 해 줍니다.
저수준의 언어는 근본적으로 프로그램이 작동하게 될 컴퓨터의 구조와 밀접하게 연관이 되며 군더더기 없고 간결하며 빠르게 작동하는 장점을 가집니다.
반면에 고수준의 언어는 컴퓨터의 구조에 대한 고민을 많이 줄여주고 인간의 복잡한 논리를 구현하는데 더 적합한 장점을 지니게 됩니다.
리버스 엔지니어링을 하다보면, 고수준의 언어로 작성된, 복잡한 알고리즘의 프로그램은 그 자체가 안티-리버싱의 역할도 하지 않나 생각될 정도입니다.

이런 프로그래밍 언어의 고수준화는 하나의 "진화의 계단" 역할을 합니다.
복잡하고 까다로운 논리를 저수준의 언어로 작성하는 것은 무척이나 어려웠을 것입니다.
기본적으로 저수준의 언어를 사용하는 프로그래머의 머리에는 컴퓨터의 구조, 레지스터, 스택, 메모리 사용 등에 대한 지식과 고려가 가득 차 있었을 것이므로 새로운 생각을 할 여유가 그 만큼 적었을 것이기 때문입니다.

비슷한 예로,
플랫폼 또한 하나의 "진화의 계단" 역할을 했을 겁니다.
'플랫폼'이라는 단어 자체가 무언가를 딛고 올라설 수 있는 평평한 곳을 의미하니 너무도 당연하기도 합니다.
많이 알려진 자바가 그렇고, 브라우저도 하나의 플랫폼이며, 플래쉬 또한 하나의 플랫폼이 됩니다.

좀 더 위로 올라가 보면,
MS-Office도 하나의 "계단"이 되지 싶습니다.
LaTex이나 PostScript도 제한적이지만 "계단"이 될 수 있으며,
PhotoShop이나 그림판도 "계단"이 될 수 있지 않을까요?

어쩌면 모든 프로그램은 하나의 "계단"이 아닐까 싶습니다.
무언가를 만들거나 만드는게 도움이 되는...

...
다시 아래로 내려가 볼까요?
Operating System은 확실하게 "진화의 계단" 역할을 했습니다.
이만큼 광범위하고 다양하게 컴퓨터의 자원과 기능들을 사용할 수 있는 편의장치(facility)를 제공해 주는 건, 확실히 쉽지 않은 일입니다.

좀 더 내려가 보면,
컴퓨터의 모든 부품들과 컴퓨터 그 자체 또한 너무나도 당연히 "진화의 계단"입니다.


초기의 컴퓨터를 설계한던 사람들은 그들이 만든 이 "계단"이 지금 이만큼까지 올라올걸 상상이나 했을까요?
아마도 이만큼은 절대 상상하지 못했을 겁니다.
단지 그들은 좀 더 위로 올라가기 위한 하나의 "계단"을 만들었을 뿐이겠죠.
그리고 하나의 계단을 딛고 올라선 사람들은 다시 또 하나의 계단을 만들었을 것입니다.






좀 엉뚱한 상상이지만,
진화론의 측면에서 바라보면, 인간 또한 하나의 "계단"은 아닐까요?

댓글 없음: