프로그래밍 언어와 패러다임

다이어리|일상 2007/11/12 14:02
어제 문득 잠들기 전에 책장 한편에 꽃혀있는 프로그래밍 언어론 교재가 눈에 들어왔다.
학교다닐때 참 재미있게 공부했던 책이었다.
그 당시에는 정말 따근따근한 신간이었는데 다시 읽어보니 정말 오래된 이야기였다.
Programming Language : Principle and Pradigms 1993년판 이다.

일단 그 사이에 가장 드라마틱하게 변한 C++에 대한 내용을 보니 ,
C++은  객체지향언어의 단윈에 속해있었으며 , 그당시 C++의 기초적인 설명과
새로운 내용으로  C++ 2.0 부터는 C++도 다중상속을 지원한다 라는 이야기가 나왔다.
Turbo Pascal 5.5 에서 지원했던 Object Pascal 코드도 보였고
AI를 수강하던 시절에 1학기를 공부했었던 LISP 언어의 코드도 오랜만에 다시 보았다.
언어론이라는 책이 초창기 언어로 부터 시작하여 그당시의 최신 언어까지 다양하게
소개되었으니 말이다.

14년전 언어론을 배울때 의심스러웠던 것이 , 왜 프로그래밍 언어도 패러다임이라는
부제가 붙을 수 있는가?
였다. 물론 80년대와 90년대초는 패러다임 이라는 말이
아주 유행처럼 쓰였던 시절이기도 하다.

패러다임이라는 개념은  과학역사를 연구하던 토마스 쿤이 저술한
"과학혁명의 구조"  에서 나온 말로써 그 책에서 말하는 패러다임의 설명으로 보자면,
프로그래밍 언어는 패러다임이라고 말하기엔 무리가 있다고 생각했 기 때문이다.

그 당시에는 '말도 안되! 무슨 프로그래밍 언어가 패러다임이라고 말할 수 있는거지
이것은 완전 책 팔아먹으려고 하는 수작아냐' 라고 생각했었다.

*참조 : 패러다임 :
  한 시대 특정 분야의 학자들이나 사회 전체가 공유하는 이론,법칙,지식,가치,심지어
믿음이나 습관 같은 것을 통틀어 일컫는 개념을 말한다.

프로그래밍 언어가 프로그래머에게  전체적으로, 패러다임으로 말할 만한 언어,
언어론은 그 당시에도 보이지 않았고 , 물론 C 언어가 큰 점유율(?)을 가지고 있었지만
쿤이 말하는 그러한 의미의 패러다임은 찾기 힘들었다.

물론 엄밀히 말하자면 지금도 여전히 패러다임이라고 불려질 만한 것은 없다고
생각한다.

하지만  쿤이 말한 패러다임의 개념은 계속 확장되었고 그런의미에서는
충분히 쓸만하다고 이해할 수 있다.
즉 단체의 범위를 해당 언어론 또는 언어를 쓰는 단체에 국한해서 생각하고
프로그래밍 언어의 발전과정이 문제해결의 좀더 쉽게하려는 과정으로 부터
생성된것이기 때문에 그 방법론의 발전과정이 패러다임 시프트의 과정이라고
볼 수 있기 때문이다.

시간적인 흐름과 비교해서 본다면 고급 언어가 탄생하기 전까지
대부분의 프로그래머가 어셈블리를 사용했다가 절차적방법론과 구조적방법론이
탄생하고 C 언어 같은 언어의 탄생후 많은 프로그래머들이 C언어를 사용했고
OOP 방법론이 등장한 이후에는 많은 프로그래머들이  C++ 언어를 그리고
Java탄생 이후에는 또 많은 프로그래머들이 Java로 이동해갔다.
(다음사이트를 보면  http://www.tiobe.com/tpci.htm
2007년 기준으로 Java언어가 1위 2위는 C언어이다.)

어떤 범위에 단체를 국한하여 본다면 패러다임이라는 개념을 적용할 수
있고 그 패러다임은 변해왔다고 할 수 있다.

하지만 확장된 개념이 아닌 원래의 패러다임 개념으로 본다면  
프로그래밍 언어에 대해서는 패러다임의 생성은 애초부터
불가능 한 것이 아닌가 하는 생각이 있다. 프로그래머가 한가지 특정언어만을
쓰는 경우도 드물 뿐더러 개발환경에 따라 언어도 방법론도 틀려질 수 있기 때문이다.

아마도 프로그래밍 언어도 전산과학의 한 분류이고 전산과학은
How-to 의 해를 찾는 쪽에 위치하고 있기 때문이라고 생각된다.
즉 최적의 How-to를 찾는데 있어서는 정답이 없기 때문이다.
What is truth? 형태의 과학과는 즉 선언형 지식(Declarative knowledge)을
다루는 경우와는 틀릴 수 밖에 없다.

결국 그러하기 때문에 프로그래밍 언어에 대해서는 어떤 것이 정답이다고 말할 수도
없고 어떤것이 우월하다 말할 수 없는 듯 한다.

하지만 어찌되었든 프로그래밍 언어는 컴퓨터 과학이 발전하면서 자연스럽게 발전할 수
밖에 없고 새로운 것을 탐색하고 선택하고 즐기는 것은  자신의 몫인 것 같다.

조엘의 자기개발의 방법론중 하나에 나온 매년 하나 이상의 새로운 언어를
익히라는 것이 있는데 이것은 변화해가는 환경에 적응하는 하나의 방편으로
매우 좋은 방법인 것 같다.


top

Trackback Address :: http://xevious7.com/trackback/285

Write a comment