영어로 된 개념을 고스란히 우리말 어휘로 대치하는 것은 무척 힘든 일입니다. 어떤 경우는 아예 불가능에 가깝지 않나 생각되기도 합니다.
오랫동안 한글화된 용어를 비난 내지는 평가절하해온 터라 가능한 한글 용어를 쓰려고 하는데 자유롭지 못합니다. 과거에 저와 같이 굳이 억지스럽게 한글화 된 용어를 시도하느냐는 의문을 가진 분들에게 제 생각이 담긴 글(엠파스에서 2004/11/09 (화) 23:08 에 작성)로 답변을 대신합니다. '자바' 대신에 '새로운 기술'으로 받아들이시면 될 것 같습니다.
프로그래밍은 고도로 창의적인 활동이다.
기본적으로 자동화를 지향하는 것이기 때문에 대개 일상 업무보다는 추상적이다.
과거의 프로그래밍 학습의 어려움은 시스템의 작동 방식을 이해하는 것이었으리라 짐작된다.
객체지향 프로그래밍 언어인 자바의 어려움은
문법이나 시스템의 작동 방식의 이해에 있지 않다.
어떤 프로그래밍 언어도 문법이야 어느 정도 장벽이 되긴 하지만 큰 어려움은 아니다.
글쎄 자전거 타기를 배우는 것 정도에 비교할 수 있으려나
시스템 작동 방식에 대한 이해도 어느 정도 필요하다.
그렇지만, 과거의 프로그래밍에 비해선 덜한 것이다.
과거의 프로그래밍보다 어려워진 것을 없을까?
자바는 객체지향 프로그래밍 언어를 표방한다.
물론, 프로그래머가 어떻게 짜느냐에 따라 객체지향 프로그래밍이 되기도 하지만 아닐 수도 있다.
책은 읽는데 쓰이기도 하지만, 베고 자는데 쓸 수도 있는 것과 비슷하다.
자바 관련 서적을 보면 다들 Inheritance니 Polymorphism이니 Encapsulation이니 하는 개념을 늘어놓는 이유가 무엇일까? 그것은 자바가 객체 지향 언어이기 때문에 적정한 용도로 쓰이게 하기 위한 것이다. 물론, 그러한 이유가 설명되어 있는 책을 드물지만, 이런 개념들은 자바의 요체이기 때문에 어디에나 포함되기 마련이다.
이야기를 빙빙 돌렸는데 자바를 배우는데 있어 가장 큰 어려움은
아마도 객체 지향 개념을 익히는 것이라고 생각됩니다.
쉽지가 않고, 어떻게 보면 자바 문법도 잘 모를 때는 무익하다고 말할 수도 있을 정도죠.
그 점에 대해선... 학문하는 사람들의 말버릇이란 윤구병님의 말이 떠오르네요.
그리고, 또 하나는 바로 번역에서 오는 혼란스러움입니다. 제가 자바를 배우는 초창기, 그리고 자바를 배우는 이들에게 가능하면 원서를 보라했던 이유기도 하죠. 자바는 기본적으로 Made in USA입니다. 모든 개념과 용어가 당연히 영어죠. 영어를 우리 말로 그대로 번역할 수는 없습니다. 게다가 더 문제는 우리 말로는 비슷한 개념인데 영어로는 전혀 다른 단어로 쓰이는 것들의 미묘한 차이를 우리말 대치어가 전혀 대변해주지 못하는 경우가 있습니다.
딱히 좋은 예는 안 떠오르는데, Object와 entity. 대개 우리말로는 객체와 개체라고 하는데. 참 애매하죠. 반대로 우리말로는 참조와 참고가 매우 유사한 의미지만, 자바에서 refer 혹은 reference 의 의미는 참고와는 전혀 다릅니다. 즉흥적으로 쓴 글이라 적절한 예는 잘 떠오르지 않네요.ㅡㅡ;
오늘 지식거래소에서 아래와 같은 질문을 봤습니다.
그리고 정적메쏘드가 왜 실체변수를 참조하지 못하는지두요.
그리고 다형 참조가 어떻게 배정과 관련한 타입 호환성 규칙을 완화하는 듯이 보이는지 설명 좀 해주세요. 또 확장이 왜 가능한지두요.
이해가 어려운 표현도 있고, 이해할 수 있다고 해도 어색하기 짝이 없었습니다. 학교 수업에서 혹은 그 교재에서 사용되는 표현을 쓴 것인데, 번역서이기 때문이죠.
실체변수... 아마 인스턴스 변수(instance variable)을 말하는 것이겠죠. instance variable에 대한 대역러로써는 실체 변수라는 말이 적절하기는 한데, 막상 그 의미는 참..ㅡㅡ; 이 질문도 사실 instance의 의미를 안다면, 시실 질문꺼리라고 보기도 어렵습니다. instance는 instantiation의 산물이기 때문에, instance라고 하는 것이죠. instantiation이 일어나기 전에 존재하는 것이 static 이구요. 너무 어려운 설명이라 공감 못하겠다는 분도 많겠지만, 하여간.. 영어를 번역하는 과정에서 의미의 누락이나 왜곡이 일어날 수밖에 없다는 것이죠. 최소화 하는 것이야 가능하겠지만, 오히려 한글로 용어를 새로 만드는 것이 이해하는데는 더 도움을 줄 수도 있을런지 모릅니다.
다형 참조도 무척 어색하지만, "배정과 관련한 타입 호환성 규칙을 완화"라는 표현은 아래와 같이 해야 할 것 같습니다.
JavaTerms.decode("배정과 관련한 타입 호환성 규칙을 완화");
자꾸만 제대로 된 자바 교재의 필요성을 실감하게 됩니다. ^^;
------------------------------------------------------------------------------------------
학문하는 사람들의 말버릇에 대해서 몇 마디 할까 합니다. 여러 학생들은 그 동안 학문 동네의 사투리가 귀에 익어 내가 일상 용어로 지껄이는 말을 주의 깊에 귀담아듣지 않으려고 할지 모릅니다. 이제까지 한 이야기도 학문 사투리를 섞어 '오류 판단의 존재론적 그건'가 어쩌고 '실천상 오류의 존재론적 분석'이 저쩌고 하고 떠들어 댔다면 여러분 중에는 '와, 굉장하다. 이런 존재론 강의는 전무후무한 명강의라 할 만하다.'고 감탄할 사람이 있을 줄 압니다. 그러나 마을 공동체의 자연스러운 삶 속에서 빚어진 사투리와 학문 사투리는 다릅니다. 그냥 사투리는 진솔하지만 학문 사투리에는 뻐김과 잘난 체함이 깃들어 있지요. 머리만 굴려서 먹고 사는 사람, 이른바 정신 노동자가 손반을 부지런히 놀려서 먹고 사는 사람, 이른바 육체 노동자를 속이고 겁주어서 그 사람들의 몫을 가로채려고 해 온 '정보 소통의 인위적 난관 조성'(어때요? 그럴듯해 보이지요?)의 음모가 학문 사투리에서는 물씬 풍깁니다. 그러니까 정신 노동자라는 특권 계급이 자기들끼리 정보를 독점하려고 일부러 어려운 말을 써서 보통 사람들을 따돌리는 야바위 노름의 속임수가 학문 용어에는 많이 섞여 있다는 뜻입니다. 학문하는 사람들이 이 버릇을 고치지 못하면 끝내는 보통 사람들로부터 따돌림을 당하고 우스갯거리가 될 날이 멀지 않다고 나는 굳게 믿습니다.
윤구병님의 '있음과 없음' 중에서
섣불리 비난을 서슴지 않았던 스스로를 용서하면서... ㅡㅡ;