한국어 vs 영어

제 소개를 드리자면 저는 주말반에 강의를 듣고 있고 가족의 영어공부에 관심이 많은 프로그래머입니다.

제가 제목에 한국어 vs 영어란 이름을 붙인것은 영어와 한국어를 비교함으로써 우리가 좀 더 언어를 통해
세상을 보는 시야를 넓히기를 바라기 때문입니다.

제가 직업이 프로그래머이다 보니 본의 아니게 원서도 보게되고 사람이 사용하는 언어는 아니지만 프로그래밍언어도
다양하게 배우게되면서 저 나름의 견해가 생겨서 이를 여러분과 공유하고자 글을 써봅니다. 동의하실 분도
있겠지만 그렇지 않을 분도 계실 수있으나 저의 사견일뿐이므로 너그러히 보아주시기 바랍니다.

최근의 프로그래밍의 세계에선 서구식 언어체계가 흔들리는 경향을 보이고 있습니다. 프로그래밍의 역사는
길게는 50여년의 시간을 거슬러 올라갑니다만 복잡한 논리적 세계를 추가하기 시작한 것은 그리 역사가
오래되지 않았습니다. 한 30여년 정도될까요? 그것이 중요한건 아니구요..

이 분야가 서구인들의 의식세계를 이해하는데 도움이 되는 것은 프로그래밍 언어란 것이 그들의 사고체계를
매우 논리적이고 문법적으로 완벽하게 설계한 것이란 점입니다. 프로그래밍 언어의 역사에서 초기는
그들의 사고체계를 그대로 모델로 한 언어들이 등장하였습니다. 이른바 절차적 언어라 (procedural language)
하는 것들입니다. 이 언어들의 특징은 개발자의 입장(주어)에서 행위(동사)들을 나열하는 것입니다.
그리고 그 대상(목적어)들을 그 행위에 전달합니다. 100% 영어의 전개방식과 일치합니다.

그러나 이런 언어들의 문제점들이 속속 등장하기 시작합니다. 그 문제점이란 것이 관점이 나(개발자)를 중심으로
하다 보니 어떤 거대한 것을 분석하여 구성하는데 한계가 있다는 것입니다. 프로그래밍의 세계에서
흔히들 또는 당연시 받아들이는 것이 Top-Down Analysis before Bottom-Up Construction입니다. 이 말의 의미가
뭔가하면 시스템 구축을 위해 현상을 분석하는 단계에서는 TD를 사용하고 이를 실제 구축할때는 BU를
사용하라는 것입니다.

그렇다보니 그들은 시스템을 구축하기 전 어떤 현상이나 문제를 Divide 해서 이해(Conquer) 하는 방식으로
접근한 후 분해된 최소단위부터 구축(절차적으로)해가는 방식을 사용합니다. 이러한 방식을 맹목적으로 받아들인
저와 같은 개발자들은 역시나 이유도 모르고 그냥 그렇게 해왔습니다.

그러나 최근 20여년 동안에 객체지향이란 개념이 이 분야에 접목되어 등장하기 시작합니다. 이제는 이 개념이 프로그래밍
언어에선 빠질 수 없는 개념이 되었는데 이 언어적 개념이 마치 한국어와 유사하다는 것입니다. 이 개념에는
주어(개발자, 나)는 별 의미가 없습니다. 그것보다는 객체란 단위(목적어, Object)가 주요요소(Oriented)로 등장하며
그 객체의 행위(동사)나 상태(형용사)는 객체에 종속적(후반 출현)인 형태로 나타납니다.

예를 들자면 이렇습니다. Circle.X = 10, Circle.Y = 10, Circle.Display(), 이렇게 표현하면 Circle이란 객체는
X=10, Y=10이란 좌표상태들을 갖고 있고 이를 나타내라란 뜻이됩니다. 이를 과거의 절차적 언어로 바꾸면 (나, 개발자)
Display(10, 10, Circle) 이렇게 표현됩니다. 절차적 언어란 것이 수학적 표현을 따온것이긴 합니다만 그 수학적
표현이란 것이 서구인들의 언어적 개념을 반영한 것이기 때문에 비슷할 수밖에 없습니다.

이러한 객체지향 개념이 좋은 이유는 위에서 언급한 Top-Down 방식으로 이해와 개발을 동시에 진행할 수 있다는 점입니다.
즉, 현상이나 문제를 이해하면서 바로 이를 실체화(구현)할 수 있다는 점입니다. 이러한 특징들이 한국어의
특징과 매우 잘 맞아떨어집니다.

한국어에서 주어가 자주 생략되는 것은 한국어 자체가 객체지향적 언어이기 때문입니다. 객체(목적어)를 어떻게 한다.
어떤 특성을 갖는다와 같이 목적어 중심적 언어란 것입니다. 따라서 한국어를 잘 구사한다는 것은 이미 그 사고체계가
매우 분석적이란 것입니다. 따라서 한국어를 잘 활용하게 되면 어떤 현상이나 문제를 이해하는데 매우 큰 도움을 받을
수 있습니다.

특히 추상적인 개념을 이해하는데 매우 도움이 됩니다. 어쩌면 그것이 한국에서 사상이나 종교가 세밀한 부분까지
민감하게 받아들여져 발전하는 이유일 수도 있습니다. 단지 문제가 있다면 자기가 이해한 방식을 표현하는데는 매우
어려우며 훈련받지 않은 상태에서는 뒤로 갈 수록 논리가 뒤엉키는 현상이 발생할 여지가 매우 많다는 점입니다.
남이 잘 이해하고 활용할 수 있는 글을 쓰기가 매우 어렵다는 점입니다. 다 쓴 후에라도 교정을 많이 봐야 합니다.

남에게 설명할 필요가 없다면 개인이 어떤 현상이나 문제를 보고 이를 이해하는데 한국어(한국어식 논리전개)를
적용하면 매우 효과적입니다. 그러나 이를 글로 또는 말로 설명하는데는 매우 부정확한 정보나 잡음이 개입될
여지가 많습니다. 아마도 제 생각에 우리의 선조들이 한글을 만들어 놓고서도 표기문자로 한자를 고수한 것이
이러한 원인 때문이 아닐까 생각해 보았습니다. 한자도 영어처럼 쐬기를 박고 전개하는 방식이죠..뒤에서 딴말 할 수 없는...

그래서 한국인들은 어떤 것을 직관적으로 이해하는 능력이 매우 뛰어납니다. 그러나 이를 설명해라 하면 매우
어려워합니다. 우리가 수학을 배울 때 머리론 이해가 되어도 이를 설명해 보라면 어려워 하는 이유이기도 합니다.
수학이나 과학의 이론들의 논리전개 표현방식이 우리의 언어습관과 다르기 때문입니다. 왜냐하면 머리론 한국어식으로
이해했는데 표현은 영어식(서구인 식)으로 해야하기 때문에 어려운 것입니다.

그러면 영어식 사고는 어떤 분야에 도움이 될까요? 영어는 나를 중심으로 또는 어떤 대상을 중심으로 거리상의
근접도를 기준으로 확장, 누적시켜 나가는 언어이므로 기록에 매우 도움이 됩니다. 매우 상세하게 그림을 그리듯이
전개해 나갈 수 있기 때문에 읽는 이로 하여금 현장에 있는듯한 느낌을 전달하거나 화자가 문제를 해결(이해가 아니라)
해가는 과정을 따라가는 것같은 느낌을 전달할 수 있습니다. 따라서 현장보고나, 학술기록 등과 같이 화자가 어떤
느낌으로 또는 어떤 상황에서 말을 하고 글을 쓰는지가 잘 표현이 됩니다. 또한 논리의 전개방식이 가까이에서 멀리로
작은것에서 큰것으로 확장하는 개념이이기 때문에 남의 정보을 끝까지 가보지 않더라도 중간에라도 내것을 삽입하기가 매우 좋습니다.

그러나 한국어는 큰 것에서 작으로 것으로 먼 것에서 가까운 것으로 대상에서 행동으로 전개하기 때문에 남의 것을 받아들여
확장하는데 어려움이 있습니다. 따라서 한국인들은 남의 개념을 확장하기 위해서는 전체 문장을 다 이해한 다음에 자신만의
이해체계를 다시 구축한 후 인용해야 하는 어려움이 있습니다.

영어는 전체 문장을 다 읽지 않더라도 중간에 자신의 생각을 삽입할 수 있습니다. 관계사절이나 분사구문 등이 이러한
역할을 수행하는데 도움이 됩니다. 따라서 책을 쓰더라도 협업이 매우 쉽습니다. 방대한 량의 저술이 가능합니다.
여러가지 버전이 등장할 수 있습니다. 가지치기가 쉽기 때문입니다.

그러나 한국어로 된 글은 다 읽어봐야 이 사람이 무슨 의미로 글을 썼는지 완벽히 이해 할 수 있습니다. 그래서 영어논문은
매우 큰 힘을 받습니다. 영어논문은 다 읽어보지 않아도 인용이 가능합니다. 그러나 한글 논문은 다 읽어봐야 합니다.

전체적으로는 기.승.전.결로 동일하게 논리구사가 되었다 할지라도 한국어를 사용하면서 굳어진 뇌는 의식적으로 끝까지
글을 읽을 것을 요구합니다. 그래야 안심이 되기 때문입니다. 그리고 글을 쓴 사람도 한국어식으로 논리를 전개할 확률이
높기 때문에 끝을 확인해야 할 필요가 발생하게 됩니다. 영어책에서 (요즘은 한국책도 그렇지만) 서문이 등장하고 소개글이
등장하는 이유가 결론을 먼저 도출하는 그들의 사고체계 때문일 것입니다.

결론적으로 말하자면 한국어를 잘 사용한다는 것은 내 개인적으로 세상을 이해하는데 도움이 될 수 있습니다.
모르는 것에서 아는 것으로 대상에서 행동으로 그리고 동작이 뒤에 나오기 때문에 실시간적으로 바뀌는 현상에 대응하기 좋습니다.
트랜드에 민감하게 되고 쉽게 받아들입니다. 사건의 진행중에라도 어느 순간 변화가 발생하면 대응하기 쉽습니다.
그렇기 때문에 시스템 구축과 같은 가변상황이 많은 현장에서는 한국어를 사용하는 우리가 더욱 잘 적응할 수 있습니다.
임기응변에 강한 특성을 보여줍니다.

반면에 서구인들은 진행상황에 따라 변화를 줄 수 없기 때문에 (언어에 따라 사고도그렇게 굳어진다.) 먼저 문서화해서
못을 박아야 안심이 되며 사소한 토론을 위해서라도 사전에 매우 많은 준비를 요구합니다. 그러나 그들이 남긴 문서는
이해하거나 활용하는데는 매우 좋습니다.

그래서 저는 만약에 한국어와 영어를 둘 다 사용할 줄 안다면 어떤 문제나 현상을 이해하는데는 한국어(한국어 구사 방식)를
사용하고 이를 기록으로 남길 때는 영어를 사용한다면 가장 완벽한 것이 되지 않을까 생각해 봅니다. 그리고 만약에
한국어 사용자와 영어 사용자가 서로 자국어로 말싸움을 벌인다면 한국어를 사용하는 사람이 승리할 것입니다. 그것은
이미 한국어를 사용하는 사람은 애매한 것에서부터 출발해서 상세화하는데 훈련이 되어 있기 때문에 말을 해나가면서
계속 논리를 보강할 수 있지만 영어식 사고에선 이것이 매우 힘들기 때문입니다. 화투로 치자면 내 패를 먼저 보여주고
치는 것과 같다고나 할 까요? ^^;;

어쩌면 서구인들이 말을 하면서 손동작이나 표정을 많이 사용하는 이유도 자신의 말을 이미지화해서 오래 기억해두어야
뒷부분에서 실수하지 않을 수 있기 때문일 수 있습니다. 그러나 한국어는 그럴 필요가 없지요... 쭉 진행하다 상세하고
미세한 부분에서 바꾸어도 되기 때문에 굳이 앞의 말을 꼼꼼하게 기억할 필요가 없기 때문입니다. 이미 큰 이미지를 머리에 넣고
그 세부사항를 꾸며나가는 것이기 때문에 이미 내뱉어진 말이 큰 줄기에 영향을 안주기 때문이 아닌가 생각합니다.
그러나 듣는 상대방은 매우 짜증날 수 있겠지요? 뒤에서 현란하게 바꾸어버리면 말입니다.

아무튼 직업적 관계로 인해 내 몸에 맞지 않는 영어를 수단으로 일을 하지만 간혹 한국어(한국어식 논리전개)를 적용한
프로그래밍 언어가 만들어진다면 프로그래밍의 세계가 매우 혁신적으로 달라질 수 있겠다는 생각을 하곤합니다.
즉, 생각과 동시에 프로그래밍을 할 수 있는 언어가 만들어질 수 있게구나 하는 것입니다. 끝으로 예를 들어보겠습니다.

참고로 아래 예에서 ()로 끝나는 것은 기능(동작)이고 아닌것은 속성(특성)입니다.

--- 한국어식 프로그래밍(객체지향) ---
일제 이런 언어는 없습니다. 그러나 논리 전개가 매우 자연스럽습니다. 객체지향적 특성이
강해서 최근의 트랜드에도 어울립니다.

커피자판기.커피.출력한다();
커피자판기.설탕.가진다.
커피자밮기.커피.가진다.
커피자판기.물.가진다.
커피자판기.선택.가진다.
커피자판기.동전.받는다().
커피자판기.커피 and 설탕 and 물.섞는다().
커피자판기.동전.확인한다().선택.기다린다(). ==> 매우 강력한 기능일 수 있습니다.
진행이 시간의 흐름(왼쪽-->오른쪽)을 반영하기 때문에...

--- 영어식 프로그래밍(절차적) ---
실제 이와 비슷한 언어가 있습니다. Lisp이라고 한국인들은 매우 배우기 어려워 합니다.

출력해라(커피자판기, 커피)
가져라(커피자판기, 설탕)
가져라(커피자판기, 커피)
가져라(커피자판기, 물)
가져라(커피자판기, 선택)
받아라(커피자판기, 동전)
섞어라(커피자판기, 커피, 설탕, 물)
확인한다(커피자판기, 동전)
기다린다(커피자판기, 선택) ==> 위에서 한문장으로 끝날 것을 두 문장으로 분리해야 하거나
확인한다()를 기다린다() 속에 집어 넣어야 합니다. 이해의 순서가 복잡해 집니다.

제가 언어학자나 이 분야에 전문가가 아니라 그냥 경헙을 토대로 생각해온 것이라 부족한 부분이 있을 것입니다.
그러나 이러한 시도가 영어를 배워야 하는 올바른 태도가 되기를 희망합니다. 영어가 그냥 맹목적으로 배워야 하는 것,
트랜드이기 때문에 해야 하는 것이 되기 보다는 영어를 배움으로써 우리가 한국어란 무기와 영어란 무기를 양손에 든
강력한 경쟁력의 소유자가 되어야 할 것입니다. 어쩌면 비슷한 언어체계를 가진 유럽인들보다 우리가 영어를 배움으로써
그것으로부터 이중 논리체계를 활용할 수만 있다면 그 어떤 나라보다도 더욱 강력한 경쟁력을 가질 수 있게 되지 않을까
기대해 봅니다.

댓글

동식님의 메시지…
좋은 글 감사합니다. 한국어와 영어의 차이를 잘 알 수 있었습니다.
Unknown님의 메시지…
영어 이해할 수 있는 핵심을 알려주셔서
감사합니다

프로그래밍과 인간의 언어가
유사하다는걸 이제야 알게되었네요

너무 좋은 정보 감사합니다

이 블로그의 인기 게시물

Publish to my blog (weekly)

Publish to my blog (weekly)