다이내믹 프로그래밍 언어 와 자바 의 위기 
 Posted by 大 山 Sat , 15 Jul 2006 14 : 48 : 00 GMT 
 다이내믹 프로그래밍 언어 란 프로그램 실행 중 ( 런타임 ) 에 프로그램 코드 자체 가 변경 될 수 있 는 프로그래밍 언어 를 말 한다 . 대표 적 인 다이내믹 언어 에 는 Lisp 이 있 으며 최근 에 많이 사용 되 는 언어 에 는 루비 , 파이썬 정도 가 있 다 . 
 혹시 Lisp 개발자 로부터 Lisp 으로 는 프로그램 을 짜 는 프로그램 을 작성 할 수 있 다는 이야기 를 들 어 보 았 는지 ? Lisp 의 이런 특징 이 바로 언어 의 다이내믹 함 에서 오 는 것 이 다 . 
 관련 성 은 있 지만 이 와 구분 되 는 개념 에 는 다이내믹 타이핑 , 자동 메모리 관리 등 이 있 다 . 꼭 그런 것 은 아니 지만 다이내믹 프로그래밍 언어 는 보통 자동 메모리 관리 , 다이내믹 타이핑 등 의 기능 도 가지 고 있 는 경우 가 많 다 . 재미있 는 점 은 이러 한 다이내믹 함 이 프로그래밍 언어 에 추가 될 때 마다 개발자 의 개발 생산 성 은 획기적으로 높 아 진다는 것 이 다 . 
 자동 메모리 관리 에 는 보통 Garbage Collection 이나 레퍼런스 카 운 팅 이 쓰이 는데 , 이 기능 이 있 고 없 고 가 바로 자바 와 C ++ 의 가장 큰 차이점 이 라고 볼 수 있 다 . 메모리 를 수동 으로 지정 하 여 사용 하 고 해제 할 경우 프로그램 의 속도 를 조금 더 빠르 게 할 수 는 있 지만 이 로 인해 손해 보 는 개발 생산 성 이 너무 크 다 . 바로 자바 가 성공 한 이유 이 다 . 앞 으로 자동 메모리 관리 를 지원 하 지 않 는 새로운 프로그래밍 언어 가 성공 할 확률 은 제로 에 가까울 것 이 다 . 
 다이내믹 ( Dynamic ) 타이핑 에 는 얽힌 오해 가 있 다 . C 언어 의 경우 포인터 타입 에러 로 인해 개발자 들 이 고생 을 많이 하 곤 했 는데 , 이 때문 에 자바 언어 의 설계 시 에 스 태 틱 ( Static ) 타이핑 이 라는 기능 이 들어갔 다 . 당연히 자바 입문서 들 은 스 태 틱 타이핑 을 예찬 하 곤 했었 다 . 문제 는 객체 지향 프로그래밍 이 도입 된 이상 스 태 틱 타이핑 은 사실 중요 하 지 않 게 되 었 다는데 있 다 . 결국 자바 의 스 태 틱 타이핑 은 불 필요 한 기능 에 가까운 것 이 다 . ( 물론 이러 한 사실 을 개발자 들 이 깨닫 는 데 10 년 에 가까운 시간 이 걸리 긴 했 다 . ) 다이내믹 타이핑 을 사용 하 면 코드 작성 이 훨씬 간편 해 지 기 때문 에 개발자 의 생산 성 이 상당히 올라간다 . 최근 들 어 루비나 파이썬 등 이 인기 를 얻 고 있 는 이유 중 의 하나 이 다 . 
 마지막 으로 언어 자체 의 다이내믹 함인데 , 이런 기능 을 지원 하 는 프로그래밍 언어 는 보통 eval 이 라는 함수 를 가지 고 있 다 . eval 은 문자열 로 전달 되 는 프로그램 코드 를 프로그램 내 에서 실행 시켜 주 는 함수 이 다 . 
 처음 접하 는 사람 에게 쉽 게 이해 가 가 는 개념 은 아니 니 , 심호흡 을 한 번 하 고 계속 읽 으시 길 . 도대체 왜 프로그램 코드 를 문자열 로 받 아서 실행 시키 느냐는 의문 이 들 것 이 다 . 이런 기능 은 어떨까 ? 프로그램 이 자신 이 돌아가 는 컴퓨터 에 연결 된 데이터베이스 에 접속 해서 데이터베이스 내부 의 데 이타 구조 를 들여다본 다음 그런 데 이타 를 접근 할 수 있 는 API 함수 들 을 동적 으로 ( 다이내믹 하 게 ) 만들 어서 개발자 가 바로 쓸 수 있 게 해 준다면 ? 
 바로 루비 로 만들 어 진 레 일스 프레임워크 의 핵심 모듈 인 액티브 레코드 의 기능 이 다 . 이러 한 프로그래밍 기법 을 흔히 메타 프로그래밍 이 라고 부르 는데 개발자 의 생산 성 을 획기적으로 높여 주 는 실 로 대단 한 기능 이 다 . 
 위 에서 설명 한 이유 로 인해 다이내믹 프로그래밍 언어 는 개발자 의 생산 성 을 무지막지 하 게 높여 준다 . 자바 의 끝 이 보이 기 시작 하 는 이유 이 다 . 
 Posted in 프로그래밍 | Tags 루비 , 자바 , 파이썬 , 프로그래밍 , Lisp | no comments | no trackbacks 
 http : / / beyond . daesan . com / articles / trackback / 125