아직 파이썬을 안다고 할 수 없다. 아직 문법 공부를 시작한 것도 아니니 당연하다고 할 수 있지만, 내가 지금 이야기하는 것은 파이썬을 완벽하게 정의할 수 없다는 뜻이다.
다 좋은데, "동적 객체 지향 언어"가 무슨 말인지 모르겠다. 나는 10년 가까이 C++, C#, Java와 같은 객체 지향 언어로 프로그래밍 해왔다. 그런데 "동적"이라는 게 무슨 뜻인가?
 
이럴 때는 요즘 애들 말마따나 "닥치고 구글질"이다. "Dynamic Programming Language"라는 키워드로 검색을 하니 위키피디아의 링크가 제일 먼저 올라온다. 한페이지 분량으로 동적 프로그래밍 언어에 대해 설명하고 있는데, 이 문서가 정의하는 동적 프로그래밍 언어는 다음과 같다. 
 

Dynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution. These behaviors can be emulated in nearly any language of sufficient complexity, but dynamic languages provide direct tools to make use of them. Most dynamic languages are dynamically typed, but not all.


안되는 영어를 동원해서 번역을 해봤다 
 

동적 프로그래밍 언어는 여타 프로그래밍 언어들이 컴파일 과정 중에 수행하는 다양한 일반적인 동작들을 런타임에 실행하는 고수준 프로그래밍 언어의 한 부류를 묘사하기 위해 컴퓨터 과학 분야에서 폭넓게 사용되는 용어다. 여기에서 "동작"이란 프로그램의 실행 중 새로운 코드의 추가, 객체와 정의의 확장, 또는 타입 시스템의 변경 등을 통한 프로그램의 확장을 아우른다. 거의 어떤 언어에서나 상당한 복잡성을 통해 이러한 동작들을 모방할 수 있지만, 동적 언어는 이들을 사용할 수 있는 직접적인 도구를 제공한다. 대부분의 동적 언어들이 동적 형 언어이긴 하지만, 모두 그런 것은 아니다.


한글로 써놔도 무슨 말인지 알아먹기가 힘들다. 요약하자면 동적 프로그래밍 언어는 프로그램 실행 도중에 코드를 추가하거나 수정할 수 있다는 말인데, 이게 장점일까? 잘 모르겠다. C++, C#, Java 같은 언어에서는 형을 엄격하게 관리하는 것이 장점이었다.
 
예를 들어 C++에서는 정의되어 있지 않은 멤버 함수를 객체로부터 호출하려 하면 컴파일 에러를 낸다. 컴파일러가 알려주는 에러를 보고 프로그래머는 자신이 멤버 함수의 구현을 빠뜨렸음을 깨닫고 소스 코드를 수정할 수 있다. 이렇게 함으로써 프로그램이 엉뚱한 짓을 수행하는 것을 막을 수 있다는 게 정적 언어(Static Language)의 장점이 아니던가.

동적 언어의 정의는 알겠다. 파이썬이 동적 객체 지향 언어라는 것은 프로그램을 실행하고 이는 중에 객체를 확장하거나 변경할 수 있고, 심지어 추가할 수도 있다는 뜻이다.

하지만 이것이 장점인지는 파이썬을 직접 만져봐야 알 수 있을 것 같다.

저작자 표시 비영리 변경 금지