현재 게시판의 제목과는 조금 상관없는 주제의 글인데 GTK+ 공부하다 생각이 나서 한번 적어봅니다.
Object Oriented Programming
번역 => 객체(개체) 지향(위주) 프로그래밍
영어의 통사론(syntax) 입장에서 보자면,
Programming object oriented
(Verb) (noun) (adj)
| | |
| +---+---+
| |
+------------+
이 문장의 주요소는 programming 인데 이를 도치시킨 문장이 OOP입니다.
Object oriented programming
즉, object라는 단어를 문장의 주요소로 만들기 위해 도치 시켰습니다.
왜 도치 시켰을까요?
Object라는 단어를 강조시키기 위함인 것은 자명한데 여기서 OOP를 구현한 프로그램 소스를 보면 재미있는 걸 발견할수 있습니다.
다음은 Qt에서 발췌한 문장인데 다음과 같습니다.
window->setWindowTitle("Hello, World");
우리가 알고 있는 token 또는 identifier 라는 것으로 분류하자면 다음 처럼 될겁니다.
window -> setWindowTitle ("Hello, World") ;
| | |
| | |
| | +---- verb
| |
| +--- adj(oriented)
|
+-- noun
Object oriented programming
(none) (adj) (verb)
와 문장의 순서가 동일!
-> 연산자를 adjective로 분류한것은 조금 억지스러운 맛이 없지는 않지만 oriented란 단어의 뜻과 -> 의 기호적인 의미를 생각한다면 어느정도 저의 의견에 수긍할 것으로 보입니다.
한가지 더 제시하자면 setWindowTitle ("Hello, World") ; 의 문장 구성 요소인데 이는 자연언어로 조금 바꾼다면 아마 다음과 같을 것입니다.
setWindowTitle ("Hello, World") ;
| | +------+
| +---------+ |
| | |
/ / /
set window title that is 'Hello, World'.
^^^^^^^
알다시피 두 문장을 연결할때 관계대명사 that과 동사 is 를 보통 생략합니다. 위에서와 마찬가지로 컴퓨터 언어로 써내려간 소스에서도 이와 같은 문법이 동일하게 적용됩니다. 하지만 C에서는 관계대명사를 명시적으로 지정을 해주어야 합니다.
gtk_window_set_title(GTK_WINDOW(window), "Hello, World");
조금 억지스럽게 짜맞추자면 C로 구현한 OOP는 OOP가 아니라 POO에 가깝습니다. 즉, 동사역할을 하는 function name이 항상 먼저 오게 되어있습니다. 따라서 C++와는 다르게(C++에서는 Object 가 보통 문장 제일 앞에 옵니다.) Object가 없기 때문에 관계대명사 역할을 하는 요소를 반드시 function의 argument로 전달해 주어야 합니다. 이경우에는 관계대명사 와 목적어 역할을 둘 다 하는 what 정도가 되겠네요.
이상 영어의 syntax(통사론)을 가지고 OOP를 조금 다르게 해석해 봤습니다.
Q. Why not Subject oriented programming?
클래스의 인스턴스라는 의미로 쓰이는 Object라는 단어 대신 Subject라는 단어를 쓰지 않은 이유는 뭘까?
댓글 없음:
댓글 쓰기