블로그 이미지
자유로운설탕

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2017. 1. 30. 19:06 프로그래밍

  파이썬이라는 언어에 대해 공부해야지 하면서 차일 피일 미루던 중, 우연한 기회에 파이썬을 공부하고 싶어하는 지인에게 주기적으로 정리해서 알려주게 되었다. 해당 공부를 진행을 하면서, 정리한 내용들을 블로그에 올리려고 한다. 물론 인터넷에 잘 정리되 있는 좋은 강의는 많지만, 대부분이 이미 글 쓴 분의 잘 정리된 지식을 따라가는 것이기 때문에, 과거 경험에 따르면 시간이 지나면 유효하지 않아서 따라하기 힘든 경우도 있고, 강의를 따라하거나, 확장된 시도를 해보다가 이해되지 않는 에러를 만나서 '망연자실' 상태에서, 공부를 포기하는 경우도 많을 듯하다.

 

  프로그래밍 공부에서 꼭 필요한 건 막다른 상황을 만나 이곳 저곳을 헤메면서 문제를 해결하면서 배우는 시행착오 과정이라고 본다. 그 과정에서 겪게된 문제 해결을 위한 여러가지의 시행착오는 나중에 비슷한 문제를 만났을 때, 부드럽게 문제를 해결하게 해주는 내적인 패턴이 된다.

 

  그래서 많은 파이썬 관련 강의가 있겠지만, 체계적인 문법이나, 좋은 유지보수를 위한 구조같은 측면은 제외하고, 처음 시작부터 구글을 찾아 헤메며 시행 착오를 거치며 원하는 기능을 만들게 되는 과정을 보여주려고 한다. 스스로가 프로그래밍를 잘 한다고 하긴 힘든 실력이라고 생각하지만, 오히려 전문 프로그래머 보다는 필요에 의해 기능의 구현에만 포커스를 두고 언어들을 사용하는 입장이기 때문에 좀 더 초보자 입장에서 설명하기 쉽지 않을까 생각해 본다. 얘기를 해나가면서 가능한 해당 방식이나 코드를 선택하게된 연유를 설명하면서 진행하려 한다.

 

 

0. 왜 파이썬 공부에 구글을 이용하는게 좋은가?

1. 언어를 바라보는 방법. 파이썬을 어떻게 바라봐야 할까?

2. 파이썬 설치와 환경, 버전 선택 하기의 이유.

3. 만들고자 하는 기능을 모르는 조각으로 나눠 조사해 보기

4. 데이터 베이스에서 내용 가져와 출력하기

5. 암호화 모듈을 이용해 암복호화 해보기

6. 퍼즐 조각들을 합쳐보기

7. 엑셀 파일 사용해 보기 -> 부록 : fuction 을 이용해서, 코드 정리해 보기

8. 정규표현식을 왜 사용해야 할까? 언어속의 미니 언어 정규표현식 살펴보기

9. 입력과 결과를 GUI 화면과 연결해 보기

10. Whois API 이용해 보기

11. 웹페이지 호출해 내용 파싱 하기(BeautifulSoup 그리고 한계)

12. 자동화 - 웹 자동화(with Selenium)

13. 자동화 - 윈도우즈 GUI 자동화(with pywinauto)

14. 자동화 - 작업 자동화

15. 수학 라이브러리 살펴보기

16. 그래픽 라이브러리 살펴보기

17. 머신러닝에서의 파이썬의 역활

18. 웹 프로그래밍 - Legacy Web

19. 웹 프로그래밍 - Flask 살펴보기(feat. d3.js)

20. 웹 프로그래밍 - Django 살펴보기

21. 정리 - 이런저런 이야기

 

 

 

 

0. 왜 파이썬 공부에 구글을 이용하는게 좋은가?

 

  일단 구글에서 파이썬에 대해서 검색했을때, 한국 자료와 영문 자료의 비율을 한번 봐보도록 해보자.

1) http://www.google.co.kr/ 로 이동해서 검색어에 '파이썬' 이라고 치고 검색 버튼을 누른다.

--> 약 92만건 정도가 나온다.

 

2) 한국에서 누군가 영문으로 누군가 적을 수도 있다고 가정하고, python 으로 검색하고 오른쪽의 '도구'을 눌러서, 한국어 페이지만 선택해 본다.

--> 47만건 정도가 나온다. 두개를 합치면, 140만 건 정도가 나온다고 보면 된다.

 

3) 그럼 최종으로 영문 페이지에서 검색하게 되면 어떨까. 영문 페이지만 검색하는 방법은 아래 블로그에 있듯이 주소창에서, &lr=lang_en 인자를 추가해 검색하면 된다. (검색인자 조작은 여기선 주제와 별 상관 있는 부분이 아니니 궁금하면 아래 페이지를 보심 된다) 

http://channelofchaos.tistory.com/60

--> 1억 1천만건 정도가 나온다. (러프하게 보면 한글 페이지의 99배 정도이며 하나의 페이지에 파이썬, python 두 가지가 모두 있을 수도 있으니 1.2% 라고 해도 100배 정도라고 가정할 수 있을 듯 하다.) --> 아 근데 이러고 보니 python 이 비단뱀이라는 뜻도 가지고 있다. python program 이라고 찾으면 3천 1백만건 정도 나온다. python snake 는 1천 3백만건 된다. 비단뱀도 무시할 수 없으니 대충 비율대로 8천 만건 정도라고 하자 --;

 

  물론 페이지의 양이 컨텐츠의 질을 보장한다고 할순 없겠지만, 파이썬에 대해 한글로 정리된 페이지만을 찾아보는 것은 수많은 자료 중 약 1~5%만을 살펴보는 것이다. 또 대부분의 기술적 지식은 외국에서 시작되서 국내의 엔지니어 들이 한글로 풀어 소개하기 전까지는 어느정도 텀이 있는 부분도 고려해야 한다. 그래서 찾으려는 검색 결과가 제대로 안나온다면 반드시 적절한 영문으로 변환하여 검색하여 내용을 찾아봐야 한다. 그래서 프로그래밍을 하고 싶어하는 사람은 영어는 열심히 해서 원하는 내용은 훝어서 읽어 볼 수 있는 정도가 되는게 좋다. 그리고 요즘은 유튜브 같은 동영상으로 기술적인 부분을 안내하는 사람도 많기 때문에 듣기도 포함해서 기술적인 부분을 익힐 때 필요한 언어가 되는거 같다. 저도 듣는건 잘 못해서 매번 아쉽다.

 

  또 구글의 장점 중 하나는 사람들이 가장 많이 링크한 자료가 맨 첫 페이지에 나올 가능성이 높다는 거다. 그래서 적절한 검색어로 찾는다면 특히 파이썬 같이 유명한 프로그래밍 분야에서는 1, 2 페이지에서 원하는 힌트를 찾아낼 수 있다. 해당 부분은 추후 실제 예제를 진행 해가면서 느껴 보기로 하자.

 

 

 

1. 언어를 바라보는 방법. 파이썬을 어떻게 바라봐야 할까?

 

  프로그래밍 언어라는 것은 복잡하게 보면 한 없이 복잡하지만, 복잡하지 않게 보면 한없이 단순한 구조이기도 하다.

 

 

  위의 그림을 보자. (각 영역에 보면 사이사이에 확장자가 .py 라는 파이썬 샘플로 만든 파일이 표시되어 있는데, 해당 부분은 2교시 때 실제로 파이썬을 설치해 본다음에 하나씩 실제로 실행해 보도록 하는 시간을 가지려고 한다.)

 

  먼저 입력을 나타내는 1)번 영역을 보자 . GUI, DOS, FILE, Packet... 이 보인다. 프로그램에서 입력이라는 것은 다양한 형태로 이루어진다. 우리가 지금 블로그를 보고 있는 브라우저도 하나의 프로그램이고, 구글의 창에 'python' 이라는 검색어를 넣고, '검색' 버튼을 누른 것도 구글이라는 프로그램에 python 이라는 인자를(물론 다른 여러가지 인자들도 있겠지만) 전달한 것이다. 이렇게 입력이라는 것은 우리가 쓰는 윈도우즈 응용 프로그램 처럼 비주얼한 인터페이스를 제공할 수도 있고(GUI - Graphic User Interface), 도스 화면에서 수행하는 프로그램에 인자를 전달해 줄수도 있고, 새로운 워드 문서를 열듯 워드 문서 파일을 선택할 수도 있고, 카카오톡 같은 프로그램 들도 결국은 우리가 입력한 문장이나, 사진 등이, 통신 패킷에 들어가 프로그램 사이를 돌아다니는 입력으로 된다고 볼수도 있다.

 

 

  2)번 영역은 변수이다. 예를 들어 우리가 머리속에서 덧셈을 하는 과정을 생각해보자. 2+3 을 더한다고 하자. 물론 과정이 너무 빠르게 지나갈 수 있으므로, 우리가 좀더 덧셈을 못하는 다섯살 짜리 아이라고 상상해 보자. 먼저 2라는 글자가 머리에 떠오른다 + 기호가 생각나고 3 이라는 숫자가 생각난다. '두개를 더함 5네' 라고 생각 한다. 우리가 숫자를 생각한 순간에 뭐라고 설명할 순 없지만 머리속의 칠판에 2라는 숫자가 형상화 된다. 컴퓨터는 그런 형상화를 메모리(램, 하드디스크, 레지스터)라는 기억 공간안에 한다. 자 그럼 프로그램 언어에서도 2+3= 이라고 적을 수도 있다. 자 그런데 단순한 숫자의 연산보다는 친구가 빵을 2개 가지고 있고, 내가 3개 가지고 있는 부분을 프로그램에 표시하고 싶다. 어 근데 친구와 내 빵이란 것을 구분하고 싶은데 어떻게 해야 할까. bread_friend 를 친구가 가진빵이라고 하고, bread_me 를 내가 가진 빵이라고 표시하고 거기에다 수량을 넣는 방법이 있다. 그게 프로그램에서 얘기하는 변수라는 개념이다. 친구가 빵을 2개 가지고 있을땐 bread_friend 에 2를 넣음 되고, 3개 가지고 있으면, bread_friend 에 3개를 넣음 된다. 프로그램 언어로 형상화 하면 아래와 같다.

1
2
3
4
5
6
7
bread_friend = 2  (친구가 가진 빵 2개)
 
bread_me = 3  (내가 가진 빵 3개)
 
bread_we = bread_friend + bread_me (우리 빵 = 친구가 가진빵 + 내가 가진 빵)
 
화면에 출력 => bread_we 
cs

 

  약간 억지 상상이 끼었지만 별로 틀리진 않다. 프로그래밍 언어는 항상 사람의 생각을 자연스럽게 기술해 표현하고(다만 영문권에서 주로 만드니 영어 기준으로), 그 표현을 좀더 효율적인 구조로 나타내기 위해서 계속 노력하며 변하고 있기 때문이다. 자 그럼 3)번 데이터 영역도 자연스럽게 설명된다. 프로그램의 어느 공간안에 변수라는 개념을 형상화 시킨 방을 만들고, 그 안에  데이터(숫자, 글자 등등 우리가 프로그램에 넣어 이용하고 싶어하는 값들..)를 넣게 된다. 그리고 그 값들을 '+' 같은 도구 장치(사실 + 기호는 '연산자'라고 공식적인 용어로 얘기하긴 한다) 들을 이용하여, 이리저리 굴려 가공한다.

 

 

  4) 자료구조는 이렇게 생각해 보자, 단순하게 하나의 값을 넣는 변수들을 이리저리 정교하게 조합하다 보면 꽤 귀찮은 상황도 생길수 있다. 예를 들어 아래의 더하기 상황에서 친구가 10명이라고 가정하자. 그럼 변수를 bread_friend1, bread_friend2,... bread_friend10로 10개를 만들어야 할까? 좀더 편하게 많은 친구들을 표시할수 있는 방법이 있음 어떨까? '배열(array)이라는 자료구조가 그런걸 해결하기 위해 옛날에 만들어 졌다(정확하게 여기에서는 리스트-list 이다). bread_friend 라는 공통 인자를 가지고 그 뒤에 (괄호로 쌓여진)숫자로 구분할 수 있게 되었다.

1
2
3
4
bread_friend[1= 2
bread_friend[2= 3
...
bread_friend[10= 4
cs

 

  근데  이것도 10줄이 되어 귀찮으니 조금 더 간단한게 값을 넣을 수 있을까?

1
bread_friend = [23, ....., 4
cs

  위와 같이 하면 알아서 프로그램이 bread_friend[1], bread_friend[2], ... 순으로 알아서 넣어주기도 한다.

 

  그럼 조금 더 나아가 리스트를 더 할때도 bread_friend1 + bread_friend2 +... 하지말고,

'빵 값을 더해라 (친구 빵 리스트)' 이런 식으로 명령을 보낼 수도 있을까? ㅇㅇ 당연히 가능하다. 아래 그러한 예제를 설명한 글에서 실제 구현 예를 참조하자.

http://mwultong.blogspot.com/2007/02/python-list-array-sum-average-mean.html

 

  자 그럼 여짓것 설명한 내용을 총괄해서 5명의 친구의 빵을 더해 화면에 출력하는 프로그램은 아래와 같다. (2교시 때 파이썬 설치하고 실행하는 법을 알게 되면, 예제 내용을 bread.py 파일로 만들어 실행해 5개의 값을 더한 결과인 20이 출력되는 것을 보려한다)

1
2
3
4
5
breadfriend = [23456]
 
breadfriend_sum = sum(breadfriend, 0.0)
 
print(breadfriend_sum);
cs

 

  어 근데 가운데 줄의 코드가 왠지 받아들이기 어색하다. 굳이 sum 이라는 기능안에 넣는 식으로 하지 말고, breadfriend.sum() 이렇게 하면 계산해 주면 좀 더 직관적이지 않을까? 라고 생각이 든다. 구글을 찾아보니, 파이썬 자체는 그런 문법 방식을 지원하지 않는거 같지만, 나중에 아마 머신러닝쪽 얘기할때 살짝 언급하게될 numpy 라는 수학 모듈(모듈은 나중에 10번 영역 에서 설명한다)을 사용하면 그렇게  호출할 수도 있는거 같다. 밑의 블로그를 참고하자~

http://yceffort.com/archives/298

 

  자 그럼 단순한 변수에서 자료구조가 필요한 이유를 대충은 정당화 한 것 같으니, 아래 링크의 글을 한번 훝어 읽으라고 소개하는 것으로 자료구조 파트 설명은 마친다. 파이썬의 자료구조는 어떤 것이 있는지만 알고 필요할때 가져다 써야 머리가 덜 아플듯 하다. (단 문법은 대충 넘어가도 어떤 경우 사용하는게 좋은지에 대한 개념은 확실히 짚는게 구조적인 기억력에 도움이 된다,)

http://felixblog.tistory.com/54

 

 

  5) 프로그래밍 언어책을 보다보면 뭔가 약간 확 와닿지 않는 복잡함을 주는 요소들이 있다.  클래스, 인터페이스, 델리게이트(위임)... 이런걸 막 섞어서 효율적인 구조라고 소개하는 디자인 패턴이라고 하는 주제를 설명하는 책도 있고 말이다. 그 중의 가장 주범인 5) 클래스 - 객체 지향 언어라는 말을 만들어 내게 된 가장 중심적인 개념이다. 유투브의 디자인 패턴 설명하던 분은 설계도라고 설명 했는데, 약간 설계도보단 좀더 덜 적합한거 같지만, DNA 구조 라고 보면 어떨까 싶다. 사람이나 생물들이 해당 모양으로 성장하는데에 대한 정보는 DNA 구조에 담겨있고, 그 정보들이 구현되고 나면 사람(뭐 프로그램에서 말하는 인스턴스나, 객체)이 된다고 봐도 될듯하다. RPG 게임을 하면서 마법사를 선택한 순간, 내가 선택한 "설탕" 캐릭은 마법사 클래스의 DNA를 물려받아, 체력이 약하고, 마나 재생속도는 빵빵하고, 스킬 트리는 전격 스킬 쪽을 밟게되는 특성을 지닌 객체(캐릭터)로 만들어 지는 거라고 생각해보자. 이런 부분을 상상하게 되면 6)번 객체(Object) 까지 슬쩍 끼워 설명하게 된 듯하고, 유투브에서 아래의 강의나 '클래스 객체 인스턴스' 라고 검색해서 열심히 설명해 놓은 동영상 강의들을 보자. 고백하지만 명확히 잘 모르기도 하고 요 부분은 이번 강의에서는 곁가지 요소들이다. 

https://www.youtube.com/watch?v=8B2Wxks5Sig

 

  9)번 메쏘드는 마법사로 얘기하면 버프를 걸거나, 파이어볼 스킬을 쏘거나 하는 액션이 구현된 부분이고, 나중에 설명한 7) 함수(function) 가 객체 내부에 구현된 버전이라고 봐도 될듯 하다. 이 부분은 별로 자신없는 부분이니 언젠가 객체 지향과 패턴 개념에 대해 쉽게 정리해 전달 할수 있는 수준이 되길 기대하며 요 정도로 얼버무리려 한다.

 

 

  7) 번은 함수(fuction) 또는 서브루틴(sub-routine)이라고 하는 부분이다(언어마다 표현하는 말이 좀 다르다) 한글로 해석하면 각각 '기능', '루틴의 밑(또는 부수적으로)에 있는 로직' 이정도 이다. '루틴'이라는 것은 route 에서 나온 말로  '특정한 길을 따라 가는 행위' 같은 것이라고 볼수 있을 거다. 이 두 가지의 용어가 비슷한 개념을 설명하기 위해서 만들어 낸 말이라는 것을 이해해보자. (뭐 서브루틴은 인자가 없고, 함수는 인자가 있다고 구분 될 수도 있지만 그것은 무시하자). 함수를 얘기할때 붙어다니는 용어들은 '재사용', '중복코드 제거' 라는 말이다. 

 

  아까 여러명의 친구를 간단히 표시하기 위해 배열을 사용했 듯이, 코드 중에 자꾸 반복되어 나오는 부분을 묶어서 다른 구역 에다 격리해 옮겨놓고, 메인 코드에서 반복하여 호출해서 사용하는 개념이다. 회사로 얘기하면 각 팀에 복사기를 하나씩 놓았던 회사가 하나의 복사기만 OA 공간에 놓고 사람들이 같이 사용하게 하는 것도 일종의 함수개념 일 수 있다. 게임회사에서 개발자 풀을 만들어 놓고 각 게임별 그룹이 그때 그때 요청해서 원하는 리소스를 얻을 수 있게 하는 것도 개발자 풀이라는 함수를 재사용 하는 거라고 볼수 있다. 복사기 문제로 돌아가서 그렇게 되면 각 팀별 복사기 수십개를 신경 쓰지 않아도 되고, 최신형 복사기로 변경하고 싶을 때에도 공용인 1개의 복사기만 변경시키면 되기 때문에 유지보수가 쉬워진다. 대신 많이 써서 고장이 자주 나지 않겠냐고 할수도 있겠지만, 그건 현실의 사물 얘기고 코드상의 로직은 일반적으로 많이 호출해 쓴다고 고장이 나진 않을테니 괜찮다. 그래서 이런 공용 기능인 함수는 요청하는 쪽에서 요청을 하면서 (복사하길 원하는 자료 등)원하는 부분들을 얘기해야 하고(요것이 함수의 입력 인자이다), 자료가 복사되면 나온 결과물을 찾아가야 한다. 물론 복합기에서 팩스 보내기 같은걸 하는 경우는 실제 찾아갈 결과물은 없을 수 있다. 요게 함수의 리턴값으로 마찬가지로 값이 있을 수도 없을 수도 있다).

 

 

  8) 제어 로직은 변수나 자료구조, 함수등에 모두 적용할 수 있는 요소다. 영어의 단어 뜻과 사용법이 거의 일치 한다.

for (리스트의 첫번째~마지막 까지 인자를 찾는 동안),

while(리스트의 마지막 인자가 될때 까지),

case(리스트의 인자가 내가 지정한 조건들에 맞을 경우),

if(리스트의 세번째 인자가 10일 경우)와 같이 적용되거나,

또는 함수에 적용되어 if(함수의 리턴값이 1일 경우) 같이 원하는 조건을 넣는 것이라고 보면 될 듯 하다.

 

 

  10) 라이브러리, 모듈은 남이 미리 만들어 놓은 기능을 사용하는 것이라고 본다. 일반적인 사람들이 만드는 프로그래밍 이라는 것은 어찌보면 결국은 남이 만들어 놓은 기능 등을 추상적으로 꾸미는 일이라고 볼수도 있을 것 같다. 파이썬에도 GUI, 엑셀, web, 통계, 머신러닝, 이미지. text 처리 등등 세계의 수많은 프로그래머 들이 만들어 놓은 모듈이 있다.

 

  예를 들어 엑셀을 다루는 기능을 만든다고 하자. 만약 우리가 엑셀 파일의 구조까지 분석하여, 하나하나 다 약속된 구조대로 값을 불러오거나 저장하는 로직을 만든다고 하면 아마 시간도 오래 걸리겠지만, 엑셀 구조를 분석할 능력이 없어 구현 자체를 못할 수도 있다. 그런데 공개된 엑셀 모듈을 사용하면 아래와 같이 간단하게 엑셀파일을 만들수 있다.

1
2
3
4
5
6
7
엑셀 모듈을 가져온다.
 
엑셀 모듈안에 있는 클래스를 이용해서 엑셀 객체를 하나 만든다.  
 
엑셀 객체 안에 시트를 만들고, A1 열에 'hello' 라고 넣는다.
 
메모리의 엑셀 객체를 test.xls 라는 문서로 디스크에 저장한다.
cs

(해당 코드의 대한 시연은 7교시때 진행 예정이다.)

 

  근데 왜 굳이 라이브러리나 모듈을 굳이 프로그램에 import(가져오기) 시켜야 할까? 모든 기능을 다 한꺼번에 가져오면 프로그래밍 편집 및 실행 환경이 아주 무거워 지기 때문에, 필요한 순간에만 명시적으로 포함 시켜 만들면 선택한 라이브러리들만 내가 만든 프로그램과 같이 메모리로 올라가 실행되어 효율적으로 메모리 공간들을 사용할 수 있기 때문이다(뭔가 다른 숨은 설계적 이유도 많을 듯해서 별로 설명에 자신은 없긴하다^^).

 

  여튼 특히 파이썬 같은 사람들이 많이 사용하는 프로그램 언어를 사용할때 필요한 기능이 있다면, 구글을 잘 찾아보자. 사람들이 많이 사용하는 기능이라면, 이미 모듈로 존재하고 있을 것이다.(게다가 소스까지 공개해서 무료로...) 물론 해당 모듈을 그대로 사용하거나, 소스를 수정해서 좀더 좋게 개선해 사용하거나, 내 프로그램에는 적합하지 않아 새로 만들어 사용하는 것은 개발하는 사람 맘이긴 하지만, 일반적으로 유지보수가 계속 되고, 검증된 모듈이 있다면 그 것을 사용하는 것이 현명한 듯 싶다.

 

  요즘은 프로그래밍 환경도 SNS 처럼 연결 지향적인 환경이 되어가고 있는 듯하다. 좋은 연결고리를 많이 찾는 센스를 가진 사람이 쉽게 문제의 해결방법을 찾을 수 있는 것 같다. 또 다른 측면으로 얘기하면 결국 자신의 똑똑해 보이는 결과물들의 많은 부분이 수많은 사람들이 만든 기존 코드들의 도움으로 지지된 다는 것을 인지함으로서, 거인의 어깨위에 편하게 서 있는 자신을 느끼게 되어, 스스로에 대해 겸손해지고, 현재의 자신에 멈추지 않고 계속 노력할 수 있게 될 것 같다.

http://legacy.www.hani.co.kr/section-009100003/2004/11/009100003200411261636092.html

 

 

  11) 출력. 출력은 입력과 같은 형태의 윈도우 프로그램 화면, 도스화면, 파일, 이미지, 패킷등으로 자유롭게 표현될 수 있다. 이는 이러한 출력이 다른 프로그램의 입력이 될수도 있다는 것을 의미하기도 한다. 리눅스의 명령어 들이 파이프로 연결되어 출력을 다른 명령어의 입력으로 전해 주듯, 요즘의 많은 프로그램들은 자신의 출력을 다른 프로그램에서 사용하는 것을 염두해 두고 만들어 지는 것 같기도 하다.

 

  마지막으로 아주 초보 분은 할수 없지만 어느정도 코드에 익숙한 사람들도 다른 사람이 만든 소스들을 보다보면 이해가 안되게 복잡한 코드를 만나서 자신의 지적 능력에 좌절을 가질 수도 있을듯 싶다. 그런데 개인적으로 생각하기에 어려워 보이는 코드를 만나는 것은(물론 내부에 담겨 있는 도메인 지식이 부족한 경우나, 패턴을 이해못해 그런건 예외지만) 그 코드를 만든 사람이 문제를 명확히 이해하지 못하거나 타인을 생각하는 객관적인 코딩을 하지 못한 결과물이라고 생각한다.. 해답을 찾아 구글을 돌아다니다가 이해 못할 어려운 코드와 설명을 만나면 자격지심을 가지지 말고 살포시 무시하는 것도 정신건강에 좋다. 

 

  그럼 파이썬이라는 언어를 어떻게 바라보는냐 하는 부분에 대한 설명을 마치고, 다음 시간에는 강의를 위해 파이썬의 특정 버전과 sql 등을 선택하게된 사유를 설명하고, 실제 파이썬을 설치하고 위의 각 언어 구조들의 샘플 파일들을 실제 시연 하는 시간을 가지려고 한다.

 

 

 

2017.2.5 by 자유로운설탕
cs

 

 

 

 

 

posted by 자유로운설탕
2017. 1. 14. 22:58 일본어와 중국어

 

  두 개의 언어를 깊게 안다고 하진 못 하지만, 취미로 어느 시간정도 공부한 결과 조금쯤은 두 언어의 느낌에 대해 얘기하여도 될 거 같아 조심히 글을 올리려고 한다. 여기서 얘기 하는 우리나라 한자와의 비교는 두 언어의 한자에 대한 개인적인 느낌을 바탕으로 유추한 부분이기 때문에 틀려도 적당히 글쓴 사람의 상상력으로 받아 들여주면 좋겠다.

 

 

  먼저 일반적으로 사람들이 두 언어에 대해서 많이 하는 말은 상반된 충돌이 있다. 한쪽은 일본어는 한국어와 어순과 발음이 비슷해 익히기 쉽고, 중국어는 어순, 발음, 성조 등이 상이해 익히기 어렵다고 얘기하는듯 하다. 또 반대 의견으로는 일본어는 첨엔 쉽지만 고급으로 갈수록(고급의 의미에 대해서는 사람마다 틀리겠지만...) 어렵고, 중국어는 첨에는 어렵지만 배워보면 언어구조가 단순해서 나중엔 쉬워진다고 얘기한다. 두 언어를 다 배운 사람들 사이에도 의견 충돌이 생기니 어느 쪽이 맞는지 아리송 해지기도 한다.

  

  아래와 같이 인터넷에 여러 관점의 논쟁이 있다. (google: '일본어 중국어 배우기 난이도' 검색)

  http://mlbpark.donga.com/mlbpark/b.php?&b=bullpen&id=2247840

 

  개인적인 생각으로는 현재 사람들이 많이 사용하는 어느 언어든 결국 사람의 생각을 가능한 완전하게 표현하기 위해 만들어 졌기 때문에, 비슷한 표현 범위를 지니고 있다고 생각한다. 만약 어휘 등이 그러한 범위를 커버 못할 경우는 외래어 같은 수단을 이용해 간격을 채워주는거 같다. 그래서 결국 자연스러운 표현 상태까지의 난이도는 비슷비슷 해지는게 아닌가 싶다.

 

  어떤 언어는 미묘한 뉘양스를 섬세한 표현 등에 담고, 어떤 언어는 단어나 구조에 함축적인 의미에 담기 때문에 일본어의 경우 깊게 들어 갈수록 여러 섬세한 표현을 위한 어휘를 익히기 힘들고, 중국어는 문장 구조와, 조사등의 한자에 숨어있는 미묘한 뉘양스를 이해하기 힘든게 아닌가 싶다. 결국 점점 어떤 언어에 대해서 많은 부분을 알고 싶을 수록, 그 언어를 쓰는 사람들의 경험의 깊이 만큼 다양한 측면에서 해당 언어를 경험해야 하는데, 그 부분이 쉬운 일도 아니니 결국 난이도는 비슷하지 않을까 싶다. 뭐 그리고 같은 나라 사람끼리도 같은 언어로 스타일이나 깊이가 다르게 표현하는데 난이도 라는게 굳이 의미있을 까도 싶다.

 

 

  원래 하려던 한자 얘기로 가서, 처음에 공부를 시작하게 되면 일본 한자는 모양이나 발음이 한국어랑 비슷하게 느껴지는데, 중국 한자는 모양만 같지(물론 홍콩, 대만어가 아닌 우리가 배우는 북경어는 간체라서 첨엔 많이 틀려 보이긴 하지만) 발음과 성조는 아주 동떨어진 듯한 느낌이 든다.

 

  그래서 일본어의 한자는 어느 정도 공부하게 되면 기존에 한자를 좀 안다는 가정에서 모르는 발음을 대충 유추할 수 있게 되는 반면, 중국 한자는 새로운 한자, 간체 모양, 성조 외우기 등(거기다 한자의 양도..)에 신경을 온통 빼았겨서 완전히 상이한 규칙의 발음을 가진 한자로 생각하는 면이 있는 듯 하다. 하지만 중국 한자 또한 일본 한자와 마찬 가지로 기존 한자만 안다면 발음이 우리나라와도 일관적으로 유사한 듯도 싶다. (물론 불행하게도 성조는 추측 가능한 부분이 아니라서 헷깔리긴 마찬가지지만...)

 

 

  상상을 해보면 옛날 중국의 어떤 시대에서 부터 한자는 조금씩 우리나라로 넘어왔을 것이고, 아마 우리나라나 중국을 통해 일본이라는 나라로 넘어갔을 것 같다. 일본에는 한자가 넘어가기도 전에 우리나라 말도 같이 넘어갔을 수도 있고 말이다. 유사함으로 유추해 보면 아마 넘어간 한자도 어느정도 우리나라에 영향을 받은 한자였을 것도 같다.

 

  우리나라의 옛날 문자를 보면 지금 글자와 모양이나 쓰임이 많이 바뀌었듯이, 중국에서 넘어오게 된 한자는 우리의 고유어와 어울리게 되면서 다양한 변화를 가져왔을 테고, 일본 또한 일본 자체의 고유어들과 섞이면서 나름의 특성을 가지게 됬을 것이다. 중국 또한 세월의 흐름에 따라서 언어의 운명이 그렇듯 한자들의 뉘앙스나 발음에 여러 변경을 가지게 됬을 거라고 생각한다.

 

  그래서 그런 여러가지 각 국의 변화의 영향을 받아 세 나라의 한자는 지금같이 비슷하지만 뭔가 이질적인 그런 특성을 지니게 되지 않았을까 싶다.

 

 

 

 

[일본 한자의 특징]

 

  먼저 일본의 한자의 특징은 우리나라 한자 처럼 뜻이 중의적인 부분이 거의 없고, 공식적이거나 무거운(관념적) 의미들을 주로 한자 단어로 사용하며, 음독(한자어)과 훈독(고유어)이 공존하며, 가끔 중국이나 우리나라에 없는 고유의 한자가 있다는 것이다. 또 한자에 국한된 얘기는 아니지만, 가독성을 돕기 위해 문장안에 일부러 한자를 사용하며, 우리나라와 어순이 비슷한 편이다. 외국어나 강조어를 가타카나라는 히라가나와 같은 발음, 문자 범위를 가지지만 모양이 다른 글자 셋으로 표기하는게 조금 특이하긴 하다.

 

 

1) 공식적이거나 무거운 의미, 음독과 훈독의 공존

 

  우리나라의 단어인 '언어' 라는 단어도 고유어인 '말'라는 의미로 대체 할수 있을 것이다. 물론 '언어'가 가진 의미는 '말' 이라는 의미보다 좀 더 무겁고 추상적인 느낌이 든다. 일본어도 언어라는 의미를 言語(げん ご - 겐 고)라는 한자어로 표현한다. 하지만 동시에 비슷한 말 또는 언어라는 의미로 言葉(ごと ば - 고토 바)라는 고유어로도 표현한다. 또 '말', '이야기' 라는 의미로 話(はなし - 하나시) 라고도 쓰고도 읽는다.

 

  위 부분이 우리나라 한자와 좀 달라서 힘들게 생각하게 되는 부분 같다. 우리나라의 한자는 딱히 고유말을 대체하지 않는다. 고유말은 분명한 한글로 표시하고, 한자는 한자 또는 한글로 표시할 수 있고, 한자의 발음이 바뀌거나 하지 않는다.

 

  우리나라의 '솔직(率直)'하다는 의미의 일본 한자 '素直' 같은 경우 아예 음독과 훈독이 섞여 있다 (す なお - 스(음독), 나오(훈독)). 솔직히 언어는 사람들의 경험의 결정체 같은 측면이 있으므로 완전히 이가 맞는 규칙은 없는 듯하다. 배우는 사람이 예외적인 부분은 적응해야 하는듯 싶다. (그러고 보니 위의 言葉도 음독과 훈독이 섞인 단어 같다)

 

참고) 率直 우리나라는 거느릴 솔로 '바름을 거느리다'의 의미 같고, 일본은 素直 본디 소로 '본디 바르다'의 의미로 의미상으로는 비슷하다고 본다. 요런게 미묘한 차이다.

 

  글을 정리하다 보니 훈민정음 이전엔 한글 표기를 어찌했을까가 궁금해서 구글을 찾아봤다. 한자를 가차해 표기했다는데 아래를 참조함 될 것 같다. 참고로 아이러니 하게도 중국어는 영어를 가차해 발음을 표기한다...

 

  훈민정음 창제 이전의 문자 생활

  http://www.typographyseoul.com/news/detail/502 

  한국 한자음에 대한 위키

  https://namu.wiki/w/%ED%95%9C%EA%B5%AD%20%ED%95%9C%EC%9E%90%EC%9D%8C

 

 

 

2) 일본 고유의 한자

 

  가끔 일본어 공부하다보면 온라인 한자 사전에서 못찾는 한자가 있었는데, 막상 예를 들려니 잘 보이지 않는다. 구글을 검색하니 일본에서만 쓰는 한자라는 위키가 나온다. 다음 한자 사전에는 안 나오는거 보니 맞는거 같은데, 네이버 한자 사전에는 나오긴 한다(요즘 네이버 사전쪽은 일본 한자를 업데이트 한듯 하다). 여튼 아래의 위키나 문의글 예를 참조해 보면 될것 같고, 대표적으로 일하다의 의미인 働く(はたらく - 하타라쿠) 같은 한자가 있다. 아래 위키를 보면 우리나라는 사람 인(人) 자가 빠진 글자, 勤(부지런할 근 - 근무 등에서 쓰인다)자를 쓴다고 한다. 근데 어째든 저 고유 한자를 가진 단어들은 은근 좀 어려운 단어들이 많으며, 위키에서도 얘기했듯이, 아예 표기도 읽기도 히라가나로만 하는 경우가 많은 듯하다. 그리 많지는 않은듯 해서 그런 한자를 만나면 그러려니 하면서 접근하면 될 듯 하다. 

 

  일본 고유한자

  https://ko.wikipedia.org/wiki/%EC%9D%BC%EB%B3%B8%EC%A0%9C_%ED%95%9C%EC%9E%90

  누군가가 게시판에 일본한자 노래 제목 문의한 글

  http://jieumai.com/xe/?mid=bbs&page=18&document_srl=1579960&sort_index=title&order_type=asc

 

 

 

3) 가독성을 위한 한자 사용.

 

  아래의 페이지의 제목 문장을 보자.

  http://www.kenbolife.com/entry/utukushiikao-100

 

1
2016年世界で最も美しい顔100人をもしも、すっぴんで選んだらこうなる! 
cs

(모바일은 드래그 하면 뒷 문장이 보입니다)

 

  많이 듣는 얘기지만 한자를 많이 아는 사람들은 일본어 문장을 읽게되면 대충 의미를 유추할 수 있다고 한다. 개인적인 생각으로는 반 정도는 맞고, 반 정도는 틀리다. 문장의 의미는 어느정도 이해하겠지만 조사나 일본의 고유어 등을 몰라 중요한 뉘앙스를 놓칠 가능성이 높다고 본다. 경제, 과학 같은 한자가 많은 분야는 확실히 뜻의 유추에 도움이 되겠지만, 미묘함이 중요한 서정적인 표현 분야(블로그, 소설, 시)나 가타카나가 많이 쓰이는 게임, 잡지 등의 경우는 힘들듯 싶다.(사실 그런건 일본어를 어느 정도 배워도 힘들긴 하지만 말이다.) 위의 문장은 전자에 가까운 문장이다. 

 

  위의 문장에 포함되어 있는 아래와 같은 한자들의 의미를 안다면

1
2
年(년) 世界(세계) 最(가장 최) 美(아름답다) 顔(낯 안-얼굴) 
人(사람) 選(가릴 선 - 선택하다)
cs

'2016도에 세계에서 가장 아름다운 얼굴사람선택하는 구나' 하고 유추가 가능하다.

 

히라가나를 포함한 정확한 해석은 "2016년 세계에서 가장 아름다운 얼굴의 100인을 만약(もしも) 화장을 안한(すっぴん) 얼굴로 선택한 다면 이와 같이 된다(こうなる)" 정도의 의미이다.

 

그럼 원래 하려던 얘기인 가독성으로 돌아가면, 일본어 문장의 특징이 우리나라와 다르게 띄어쓰기가 거의 없다는 거다. 띄어쓰기가 없는 예를 우리나라 말로 똑같이 표현하면 아래와 같다.

1
2016년세계에서가장아름다운얼굴의100인을만약, 화장을안한얼굴로선택한다면이와같다
cs

요즘은 문자, 메신저 등에서 빨리 치기위해서 띄어쓰기를 생략하긴 하지만, 위의 문장을 보면 가독성이 떨어지는 느낌은 확실히 든다. 한글을 배우는 외국인은 더 심할테고 말이다. 

 

그럼 마지막으로 위의 한자가 섞인 일본어를 히라가나로만 써보면 어떻게 되는지 보자

1
2016ねんせかいでもっともうつくしいかお100ひとをもしも、すっぴんでえらんだらこうなる!
cs

 

  확실히 한자가 있는 것보다 한눈에 읽기 힘들어 지지 않게되나 싶다. 아직 쪼랩이라서 고민해 보진 않았지만, 일본어는 글을 쓸때 얼마나 적절히 한자를 섞어 가독성이 있게 쓰느냐도 글을 잘 쓰는 기준의 하나라고 한다. 너무 과하게도 너무 적지도 않게 말이다. 물론 해당 언어에 조금은 익숙해진 입장이라 처음 접하는 사람 입장으로 100% 확신있게 말을 못하지만, 이렇게 보면 띄어쓰기를 안하는 일본어 특성상 가독성을 위해 적당한 한자의 차용은 필수 인 듯도 싶다. 반대로 생각해보면 그래서 우리나라는 띄어쓰기를 사용하나도 싶다.

 

 

4) 가타카나

 

  가타카나는 한자의 범위를 벗어나긴 하지만 이왕 얘기를 시작하거 부록으로 적기로 한다. 가타카나는 보통 3가지 정도의 방식으로 쓰이는 듯하다. 1번째로 완전한 외래어

 

 

  가타카나에 대해서는 여기를 참고로..

  https://namu.wiki/w/%EA%B0%80%ED%83%80%EC%B9%B4%EB%82%98

 

  일본사람이 설명하는 가타카나를 쓰는 이유 - 요게 정확하지 않을까 싶다.

  http://m.blog.naver.com/ryonryonryon/220529239288

 

  요것도 가타카나 쓰는 이유로 일리있는 듯하다. 100%의 룰은 없긴 하다.

  http://m.blog.daum.net/global-mina/40

 

 

5) 비슷한 어순과 한자 단어의 뉘앙스, 하지만 그것 땜에 어려워 지는 언어

 

뭐 한자 얘기 하다 가타카나 까지 얘기한 이상 마지막 외도를 하려한다. 어순이나 한자 단어 쓰임이 분명 많이 비슷해서 좋긴한데, 그래서 표현할때 자연스럽고 자신있게 한국어 처럼 표현하게 되어 어색한 표현이 되는 경우도 많은 것 같다. 일종의 콩글리쉬 처럼 말이다. 이 부분은 아는게 부족하여 아래 블로그의 예제로 대체 하며 마무리를 한다. 

 

  전혀 다른 일본어와 한국어의 표현

  http://m.blog.naver.com/ryonryonryon/220134114099#

 

 

 

 

[중국 한자의 특징(북경어 기준)]

 

  중국 한자의 특징은 중의적인 뜻을 가진 단어(정확히 얘기하면 단어보다는 한자 자체들)가 많은 듯 하다. 마치 영어의 동사 같은 느낌 이라고 할까(예를 들면 susceptible 이 쉽게 병에 영향받을 만큼 면역에 약하다는 뜻도 있으면서, 다른 사람이나 사물에 쉽게 영향을 받을 만큼 민감하다는 다는 뜻도 동시에 있는 것처럼 말이다). 물론 여러 뜻을 가진 부분이 결국은 하나의 뉘앙스에서 파생되 나오는 거긴 하지만, 좀 헷깔리긴 하는 것 같다.

 

  발음은 보통 하나의 단어는 하나의 발음만 가지고 있긴 하지만, 두 개의 다른 한자가 간체로 바뀌면서 같은 모양이 되어 서로 발음이나 성조가 다르거나, 특히 문법에 쓰이는 한자일 경우 같은 한자라도 단어, 역활에 따라 성조가 달라지는 경우가 있다. 이 부분이 한자의 중의적인 부분과 혼합되어 혼란을 가중 시킨다. 우리나라에서는 고어로만 쓰이거나, 문어체에 쓰이는 무거운 느낌의 단어가 일상어로도 종종 쓰이고(이건 당연한듯 하다, 중국의 고유어는 한자니까), 한자를 풀어보면 의미는 맞지만 우리나라에선 볼 수 없는 조합의 단어 들이 많고, 비슷한 사자성어도 뭔가 조금씩은 다를때가 많다.

 

  일본어와 마찬가지로 띄어 쓰기가 없어 문장에 모르는 한자가 많을 경우 문장구조가 파악이 안되 의미를 알기 힘든 경우가 많은거 같고, 아직 잘 몰라 그렇겠지만 문장구조가 과감히 생략되거나 도치된 것 같은 표현이 많아 적응이 힘든 경우가 있다. 간체차는 첨에는 많이 헷깔리지만, 자꾸 보다보면 정이 든다고 할까, 나름 규칙들이 있어 익숙해지면 쓰기는 확실히 편한편이다.(요즘은 스마트폰으로 한자를 쓰는 경우가 더 많아 상황이 좀 변하긴 했지만...). 어순도 기본 구조는 영어와 비슷하지만 미묘하게 다를때가 많다. 외래어는 발음을 가차하거나 발음에 의미까지 가차해서 사용해서 첨엔 무척 어색하다. 뭐 우리나라의 외래어들도 외국사람 입장에서 보면 마찬가지겠지만 말이다.

 

 

1) 중의적 의미들

 

우리나라의 한자 단어는 한글과 강하게 결합되어 있어 뜻이 딱 고정된 경우가 그대로 인데, 중국어 단어는 고정적 뜻도 많지만, 가끔 단어가 중의적인 의미를 가지고, 문법으로 쓰이는 한자어는 특히 이런저런 의미의 변화가 많은 듯하다. 약간 극단적인 예지만 문법요소로 많이 쓰이는了 (le, liǎo) 는

1
2
3
a) 没完没了 (méiwánméiliǎo - 끝이 나지 않는다. 종결 이라는 의미), 
b) 吃不了 (chībuliǎo - 먹을 수 없다. 가능의 의미)
c) 他拿去了我的雨伞 (tānáqùlewǒdeyǔsǎn - 그는 내 우산을 가져갔다. 
   과거의 사건의 완료를 의미) 

d) 下雨了 (비가 (안오다가) 오다 - 변화의 의미) 

cs

  또는 우리말의 요긴하다 할때 쓰는 要紧 (yàojǐn) 은 '중요하다'와 '심각하다'는 두 가지의 뜻으로 함께 쓰인다. 花 huā 의 경우도 '꽃' 이라는 우리가 아는 명사 의미도 있지만 '쓰다'라는 의미의 동사로 사용되서, 花钱 (huāqián - 돈을 쓰다)라는 의미로도 사용된다. 개인적으론 꽃잎이 날리는 모양을 보며 쓴다 라는 의미로 확장된게 아닌가도 싶다.

 

 

2) 단어들의 차이

 

<뜻은 비슷하 지만 일부 한자가 미묘하게 다른 단어>

1
2
a) 우리나라의 機能 기능 vs 중국은 功能 (gōngnéng - 핸드폰 '기능' 등을 표현)
b) 獲得 획득 vs 중국은 获取 (huòqǔ - 아이템 등의 '획득'.)  취할 취를 쓴다
cs

 

<뜻을 풀어보면 의미는 타당하지만 우리나라에선 볼 수 없는 한자 조합의 단어들>

1
2
3
a) 耳环 (ěrhuán - 귀에 거는 고리: 귀걸이)
b) 开心 (kāixīn - 마음이 열리다: 즐겁다)
c) 冰箱 (bīngxiāng - 얼음 빙,상자 상: 냉장고) 
cs

 

<한자 단어는 동일하지만 우리나라와는 사용하는 뜻이 다른 단어>

1
2
a) 爱人 (àiren - 애인이 아니라 부인을 칭함)
b) 登录 (dēnglù - 우리나라 한자로는 登錄 등록

   중국 앱 게임할때 처음 보고 '회원가입' 이라고 생각해 한참 누르며 
   혼란에 빠졌던 기억이 난다. '로그인'의 의미임.) 

cs

 

<한자와 뜻이 동일한 단어>

1
2
a) 结婚 (jiéhūn - 결혼)
b) 亲切 (qīnqiè - 친절: 간체(우리나라는 親切)인거만 틀림
cs

 

<우리나라에선 거의 못보는 한자이며, 뜻도 좀 낯설은 단어>

1
2
3
1) 淋湿 (línshī - 물뿌릴 림, 축축할 습: 비 같은거에 흠뻑 젖는거
2) 丢 (diū -잃을 주: 물건들을 잃어 버리는 것)
3) 麻烦 (máfan - 삼 마, 번거로울 번: 귀찮다는 의미
cs

 

<단어가 실제 다르거나 위치에 따라 성조나 뜻이 달라지는 단어>

1
2
3
4
a) 差 (chà - 차이날 차: 시력이나 성적등이 나쁘다는 의미)
   出差 (chūchāi - 보낼 차: 회사에서 출장 보내는 거) 
b) 教 jiāo (가르칠 교)
   教室 jiàoshì (같은 한자인데 성조가 달라진다)
cs

 

<우리나라는 엄중한 단어의 성격이지만 그쪽에선 평상어>

1
2
3
4
5
a) 우리나라에서의 고소(告訴) 법적인 용어지만 
   중국어로는 告诉 gàosu(소식을 알리다) 라는 평상어 이다 
b) 우리나라의 유언(遺言 - 남길 유) 과 한자어는 틀리지만
   留言 (liúyán - 머무를 류: 전화를 걸거나 할때 메시지를 남기는 것을 얘기한다) 
    비교해 받아들이다 보면 이상하게 느껴진다
cs

 

 

3) 4자성어 차이

 

  잘나가는 모습에 대해서 우리나라는 前途洋洋 (전도양양 - 나아가는 길이 바다처럼 넓고 넓다) 반면에 중국은 前途无量 qiántúwúliàng (나아가는 길에 다함이 없다) 이라고 표기한다.

또 어순 차이라 그렇겠지만 우리나라는 보통 '안전주의' 하고 하는데, 중국은  注意安全 (zhùyì'ānquán - 주의안전: 안전에 주의해라) 여서 어색하다. 

1
2
a) 한국은 中途而廢 (사실은 이것보다 중도포기란 말이 생각났지만),  
b) 중국은 半途而废 bàntú'érfèi (반쯤 가서 버림)

c) 賢母良妻 현모양처 -> 贤妻良母 xiánqīliángmǔ 

   한국은 어머니가 현명한게 이상형이고, 중국은 아내가 현명한게 이상형인가 봄. 

cs

 

 

4) 외래어의 표기

 

  발음을 나타내는 한자로 가능한 이미지와 비슷한 뉘양스를 만들려고 하는 거 같다.

1
2
a) 芭蕾 bāléi(발레 - 파초 파, 꽃봉오리 뢰: 발레의 우아함?)
b) 咖啡 kāfēi (커피 - 커피 가, 커피 비)
cs

 

 

5) 어순

 

  중국사람이 아시아 권에서 영어를 제일 공부하기 유리하다는 얘기도 듣는데, 어순이 비슷하긴 하다(발음이 동일한진 자신 없지만, r vs l, f vs p 발음도 구분한다). 예로서 '그는 중국어를 할 수 있습니다' 를 표현하면(영어가 들어가니 떨리긴 한다)

1
2
he can speak chinese.
他(he) 会(can) 说(speak) 汉语(chinese). tā huì shuō hàn yǔ 
cs

위와 같이 문장 구조가 일치 한다.

 

  하지만 아래와 같이 의문문이나 도치문 등 복잡한 문장으로 들어가면 달라지긴 한다.

'너 오늘 어떻게 왔니?' 를 표현 하면

1
2
How did you come today?
你(you) 今天(today) 怎么(how) 来的(come did) nǐ jīntiān zěnme láide
cs

  그럼에도 불구하고 화자 중심적인 언어(주어 + 주어의 행동, 감정 + 기타..)를 쓴다는 부분에서는 아무래도 유사한 듯 싶다. 

 

 

6) 중국어의 한자 발음.

 

  원래는 일본어와 비슷하게 중국도 우리 한자와 중국한자 발음 사이가 일정한 규칙을 가지고 비슷하다는 얘기를 하려고 했는데, 예제를 수집하다보니, 조금 애매하게 얘기를 해야할 것 같다. 기본적으로 특정 발음은 비슷하지만, 몇 개의 서로 다른 발음으로 갈라지는 경우도 있다.

 

아래의 예제를 보자

1
2
3
4
5
6
7
8
9
10
11
12
[우리나라의 '고']
a) 高兴 (gāoxìng - '까오' 싱): 고흥(기쁘다)
   告诉 (gàosu - '까오' 수): 고소(알리다)
b) 孤独 (gūdú - '꾸' 두): 고독
   故事 gùshi - '꾸' 스): 고사(이야기)
 
[우리나라의 우]
a) 优点 (yōudiǎn - '요우' 디엔): 우점(장점)
   右 (yòu - '요우'): 우
b) 雨伞 (yǔsǎn - '위' 산): 우산
   遇见 (yùjiàn - '위' 지엔): 우견(우연히 만나다)
c) 牛奶 (niúnǎi - - '니우' 나이): 우내(젓 '내'로 소젖 -> 우유)
cs

  뭐 예제를 보다 보면 한자를 좀 많이 알다 보면 일본어 같이 발음 유추가 가능할 것 같은 느낌이 들지 않는가 싶다. 깊이 파면 또 예외들이 나올듯도 해서, 요 정도로 이야기는 마무리를...

 

 

7) 마지막 - 간체와 한자 단어의 구조

 

  한문을 쓰기는 영어나 일본어에 비해서 무척 귀찮고 힘든 일이다. 간체의 유래는 본격적으로 1950년대 부터 중국에서 시작되었다고 한다. 간체를 구성하는 간략화된 문자는 우리가 한문 흘려쓰기로 알고 있는 초서나, 비슷한 뜻을 가진 간략한 문자, 비슷한 소리를 가진 간략한 문자 등을 이용하여 기존 문자의 일부를 대체하거나 생략하는 등 간체를 추구한 사람들의 노력이 담겨져 있다고 한다.

 

  간체자에 대해서 중국, 홍콩, 대만에서는 문화 유산인 한자의 아름다움을 새 세대들이 잃어버리게 된다며 싫어하는 사람들도 많다고 들었다. 뉴스를 보면 중국 사람들이 간체만 알고 번체를 몰라서 홍콩 관광시 메뉴를 못 읽어 고생한다고 하던데, 강사분께 물어보니, 어느 정도 교육 받은 사람들은 번체의 경우 쓸 줄은 몰라도 읽을 정도는 된다고 하니, 케바케 인거 같다. 간체에 대한 전문적인 얘기는 아래의 두 블로그를 참조한다. 개인적으로 두번째 링크에 있는 원리한자 책은 중국어 공부하기 초반에 재밌게 보고 도움이 많이 되었었다.

 

  간체자의 유래 위키

  https://ko.wikipedia.org/wiki/%EA%B0%84%EC%B2%B4%EC%9E%90

  간체자의 원리

  http://hkpark.netholdings.co.kr/web/manual/default/manual_view.asp?menu_id=83346&id=297

 

  그럼 위의 간체의 얘기를 왜 한참 했냐 하면, 간체의 원리에 복잡해 보이는 한자를 간단하게 생각할 수 있는 힌트가 담겨 있다고 생각하기 때문이다. 영어가 간단하게 보이는 이유는 단순한 모양의 26개의 알파벳(기본문자)가 1차원으로 나열되어 있기 때문이다. 단어가 길어지면 인식 난이도는 늘어나겠지만, 긴 단어의 경우는 보통 그리스나, 라틴어의 어원에서 파생되어 나왔기 때문에(예를 들어 pentagon의 'penta' 는 그리스어로 '다섯'을 의미) 어원을 안다면 유추하기 편하게 되어 인식 난이도를 낮춰 준다. 밑의 1차원적인 영어 구성의 예제를 보자

1
color = 'c' + 'o' + 'l' + 'o' + 'r'
cs

 

  한자는 개인적인 느낌으로 얘기해 본 다면, 복잡한 몇 백개의 알파벳(우리가 부수라고 하는)으로 만들어진 1~9개 미만의 2차원적인 배치의 글자이다. 그림으로 설명하자면 아래와 같다.

(아무것도 아닌 걸 그림까지 그려가며 심각하게 설명하니 좀 민망하긴 하다;;)

 

  위의 이슬 로(露)는 쓰기엔 상당히 복잡해 보이는 획수가 엄청 많은 한자다. 하지만 이젠 예전 같이 옥편이나 전자사전을 뒤지는게 아니라서(그때는 중국어나 일본어는 공부보다 사전에서 단어 찾다가 실제 시간을 다 보냈었다...), 요즘처럼 휴대폰으로 발음만 알면 편하게 입력이 가능한 상황에선 한자의 복잡도 기준이 많이 달라진듯 하다.

 

※ 예전 종이 사전은 부수와 획수를 모르면 거의 못 찾는다고 봐야되지만, 요즘 중국 포탈에서 제공하는 키보드 설치시 우리나라 천지인, 또는 이지한글 같은 편한 인터페이스를 제공하고, 발음을 모를 경우 사용할 수 있는 인식도가 아주 높은 필기 방식(우리나라 전자사전의 몇배)도 선택적으로 제공해서 PC보다는 휴대폰 입력이 조금 더 편한듯 싶. 물론 PC 에도 다음, 네이버 사전이 좋긴 하지만 글자 입력 면에서는 웹이라는 특성상 로딩땜에 좀 귀찮다. 참고로 스마트 폰에서는 개인적으로 바이두(baidu) 키보드(百度手机输入法)를 쓴다. 구글 같은데를 보면 소우구 搜狗(Sougou) 키보드가 더 유명한거 같은데 몇년전 부터 써서 익숙해서 인가보다. 모양을 살짝 보면 아래와 같다.

(번호에 적힌 순서로 발음이 있는 칸을 차례로 클릭하면(xuexiao) 위에 해당되는 한자 후보가 나온다)

 

 

  다시 이슬 '로' 얘기로 돌아가서, 많이 줄였다 해도 아직도 244개나 되는 많은 알파벳(부수)이 있긴 하지만 하지만, 비 우를 a, 발 족을 b, 각각 각을 c 라고 단순화 하면, 아래와 같이 3개의 기본 문자로 이루어진 삼각형 모양으로 배치된 글자이다. 이런 알파벳 같은 단순화를 추구해서 간체를 만든 걸지도 모르겠다.

1
2
 a
b c
cs

 

  부수가 244개나 되는게 쉬운거냐고 물으면 딱히 할 말음 없지만, 개인적으로 이렇게 한자를 바라본 이후부터, 한자를 몇 개의 조금 복잡한 알파벳으로 이루어진 2차원 문자로 보게 되어 마음이 좀 편해졌다. 한자를 잘 이해하기 위해 부수를 이해하려 하는 것을, 영어를 잘 이해하기 위해 그리스, 라틴어 어원책을 보는 것과 같은 맥락으로 생각해도 될 듯하다.(부수를 이해할때는 한자 어원책이 도움이 된다). 간체를 외울 때 우리나라 한자의 종류인 번체도 같이 익히려고 하면 간략화 되기전의 부수 모양이나 기존 번체에서 과감히 생략된 부분들을 유추해야 해서, 노력은 더 많이 들게 되긴 하지만, 개인적으로 간체를 외울때 우리나라 한자인 번체도 읽기는 가능해 보려고 노력하고 있다. 그럼 한자의 부수 수에 대한 링크를 마지막으로 예상보다 장황하고 많이 길어진 글을 마무리 하려 한다.

 

  한자의 부수 수

  http://mocco.tistory.com/entry/%ED%95%9C%EC%9E%90%EB%B6%80%EC%88%98214%EC%9E%90

 

 

 

혹시 정리한 부분에 잘못된 부분이 있으면 편하게 말씀해 주세요~

 

2017.1.30 by 자유로운설탕
cs

 

 

 

 

 

posted by 자유로운설탕
2013. 12. 28. 23:38 China Pop

 

 

莫文蔚 - 他不

mò wén wèi - tā bù ài wǒ

 

他不

tā bù ài wǒ

그는 사랑하지 않아

手的候太冷

qiānshǒu de shíhou tài lěngqīng

손을 잡을 때도 너무 냉정해

抱的候不靠近

yōngbào de shíhou bù gòu kàojìn

포옹할 때도 충분히 가깝지 않아

 

哦他不

ò tā bù ài wǒ

그는 사랑하지 않아

说话候不认真

shuōhuà de shíhou bù rènzhēn

말을 때도 무성의해

沉默的候又太用心

chénmò de shíhou yòu tài yòngxīn

침묵할 정말 열심히지

 

我知道他不

wǒ zhīdào tā bù ài wǒ

사람이 사랑하지 않는다는 알고 있어

他的眼神出他的心

tā de yǎnshén shuōchū tā de xīn

사람의 눈이 그의 마음을 얘기해주거든

 

我看透了他的心

wǒ kàntòu le tā de xīn

나도 사람의 마음을 알아

人逗留的背影

háiyǒu biéren dòuliú de bèiyǐng

다른 사람이 남기고 그림자도 알아

他的回忆清除得不

tāde huíyì qīngchú de bù gòu gānjìng

그의 추억은 깨끗이 지워지질 못했어

 

我看到了他的心

wǒ kàndào le tā de xīn

사람의 마음을 봤어

演的全是他和

yǎn de quán shì tā hé tā de diànyǐng

그와 그녀의 영화에 출연하고 있는 거야

他不

tā bù ài wǒ

그는 사랑하지 않아

管如此

jǐnguǎnrúcǐ

그렇지만

走了我的心

tā háishi yíng zǒu le wǒ de xīn

그는 여전히 마음을 빼앗아갔어

 

[해석]

http://m.blog.naver.com/PostView.nhn?blogId=destiny20318&logNo=120133464287

 

 

posted by 자유로운설탕
2013. 12. 22. 20:42 China Pop

 

 

 

 

 

 

小情歌 - 苏打绿

xiǎo qínggē - sū dǎ lǜ

 

是一首简单的小情歌

zhè shì yī shǒu jiǎndān de xiǎo qínggē

이건 그저 작은 사랑의 노래

 

唱著人的曲折

chàng zhù rénmen xīncháng de qūzhé

우리의 복잡한 마음을 노래하고 있지

 

我想我很快乐当温热

wǒ xiǎng wǒ hěn kuàilè dāng yǒu nǐ de wēnrè

너의 따스함이 있다면 즐거울거야

 

的空气转

jiǎo biān de kōngqì zhuǎn le

밑을 맴도는 공기가 돌고 도는 것처럼

 

是一首简单的小情歌

zhè shì yī shǒu jiǎndān de xiǎo qínggē

이건 그저 작은 사랑의 노래

 

唱著我的白

chàng zhù wǒmen xīntóu de bái gē

우리 마음 속의 하얀 비둘기를 노래하고 있지

 

我想我很适合

wǒ xiǎng wǒ hěn shìhé dāng yī gè gēsòngzhě

누군가를 바라보는 일에 익숙한 같아

 

春在

qīngchūn zài fēng zhōng piāo zhù

청춘은 바람 속에 흩날리고 있네

 

知道就算大雨让这座城市

nǐ zhīdào jiùsuàn dàyǔ ràng zhè zuò chéngshì diāndǎo

알고 있니? 폭우가 도시를 집어 삼킨다해도

 

会给你怀

wǒ huì gěi nǐ huáibào

안아줄거야

 

受不了看见你背影

shòubùle kànjiàn nǐ bèiyǐng láidào

너의 모습을 견딜 수가 없는

 

下我度秒如年捱的离

xiě xià wǒ dù miǎo rú nián nán ái de lí sāo

이겨내기 어려울만큼 힘든 나의 서정시를 써내려가네 (*: 굴원이 서정시)

 

就算整世界被寂寞

jiù suàn zhěng gè shì jiè bèi jì mò bǎng piào

외로움이 세상을 집어 삼킨다해도

 

我也不

wǒ yě bù huì bēn pǎo

도망치지 않을거야

 

逃不了最后也都

táo bù le zuì hòu shéi yě dōu cāng lǎo

나이가 들어감은 누구도 피할 없는 일인

 

下我时间和琴的城堡

xiě xià wǒ shí jiān hé qín shēng jiāo cuò de chéng bǎo

나의 시간과 음악이 스쳐가는 작은 성을 써내려가네

 

[번역 출처]

http://m.blog.naver.com/PostView.nhn?blogId=twinksoe&logNo=70162674818

 

다른 버전 해석

http://m.blog.naver.com/PostView.nhn?blogId=zhiyun00&logNo=150139355208




 

 

 

posted by 자유로운설탕
2013. 10. 13. 20:01 China Pop

 

 

童话 - 光良
tónghuà - guāng liáng

 


忘了有多久
wàng le yǒu duōjiǔ
오랫동안 잊고 있었어

再没听到你
zài méi tīng dào nǐ
다신 듣지 못했던

对我说你最爱的故事
duì wǒ shuō nǐ zuì ài de gùshi
제일 좋아한다며 내게 들려주던 그 이야기


我想了很久
wǒ xiǎng le hěn jiǔ
오랫동안 생각하다

我开始慌了
wǒ kāishǐ huāng le
갑자기 불안해졌지

是不是我又做错了什么
shì bu shì wǒ yòu zuò cuò le shénme
혹시 내가 또 무슨 실수를 한건 아닐까


**
你哭着对我说
nǐ kū zhe duì wǒ shuō
넌 울면서 말했었지

童话里都是骗人的
tónghuà li dōu shì piànrénde
동화속엔 모두 거짓말뿐이라고

我不可能是你的王子
wǒ bù kě néng shì nǐ de wángzǐ
난 절대 네 동화속 왕자님은 될 수 없다고


也许你不会懂
yěxǔ nǐ bù huì dǒng
하지만 넌 모르겠지

从你说爱我以后
cóng nǐ shuō ài wǒ yǐhòu
네가 날 사랑한다고 말했던 그이후부터


我的天空星星都亮了
wǒ de tiānkōng xīngxīng dōu liàng le
내 하늘은 온통 별들로 반짝였단걸



我愿变成童话里
wǒ yuàn biànchéng tónghuà li
난 동화속 네가 좋아하는


你爱的那个天使
nǐ ài de nà ge tiānshǐ
그 천사가 되고 싶어


张开双手变成翅膀守护你
zhāng kāi shuāngshǒu biànchéng chìbǎng shǒuhù nǐ
두팔을 쫙 벌리면 내 두팔이 날개가 되어 널 지켜줄테니


你要相信
nǐ yāo xiāngxìn
넌 믿어야돼


相信我们会像童话故事里
xiāngxìn wǒmen huì xiàng tónghuà gùshi li
우리 둘이 동화속 이야기처럼


幸福和快乐是结局
xìngfú he kuàilè shì jiéjú
행복하고 아름다운 해피엔딩을 맞을꺼란걸

 

** 반복
我愿(要,会)变成童话里
你爱的那个天使
(천사가 되길 원해, 천사가 될거야, 천사가 될 수 있어) 

 

**
一起写我们的结局
yīqǐ xiě wǒmen de jiéjú
우리 함께 우리만의 해피엔딩을 만들자


[병음은 아래, 해석은 강사분]
http://m.cafe.daum.net/huckfinn/EIX1/15?q=동화%20광량%20노래방&docid=D_lZmDgpvDsMg0&#attach

posted by 자유로운설탕
2013. 10. 13. 19:43 China Pop

 

 

新不了情 - 万芳
xīn bù le qíng - wànfāng


心若倦了 泪也干了
xīn ruò juàn le lèi yě gān le
마음도 지치고 눈물도 말라버렸어요

这份深情难舍难了
zhè fèn shēn qíng nán shě nán le
난 이 깊은 사랑을 정말 놓치기 싫어요
 
曾经拥有 天荒地老
céngjīng yōngyǒu tiānhuāngdìlǎo
여전히 당신은 내 맘속에 있어요. 세월이 흘러가도

已不见你 暮暮与朝朝
yǐ bù jiàn nǐ mùmù yǔ zhāozhāo
이젠 당신을 항상 볼 수는 없지만


这一份情 永远难了
zhè yī fèn qíng yǒng yuǎn nán le
우리의 사랑은 영원히 끝나지 않을거에요

愿来生还能再度拥抱
yuànlái shēng hái néng zàidù yōngbào
다음 세상에서도 당신을 사랑하고 싶어요

 

爱一个人 如何厮守到老
ài yī gè rén rúhé sīshǒu dào lǎo
한 사람에 대한 사랑을 어찌 죽을때까지 지킬 수 있을지

怎样面对一切我不知道
zěn yàng miànduì yī qiē wǒ bù zhīdào
모든 걸 어떻게 대해야 할지 난 모르겠어요

 

回忆过去痛苦的相思忘不了
huí yì guò qù tòng kǔ de xiāng sī wàng bù le
과거의 고통과 슬픔이 아직 기억속에 남아있는데

为何你还来拨动我心跳
wéi hé nǐ hái lái bō dòng wǒ xīn tiào
왜 그대는 다시 찾아와 내 마음을 흔들어 놓는건지

 

爱你怎么能了今夜的你应该明了
ài nǐ zěn me néng le  jīn yè de nǐ yīng gāi míng le
당신을 얼마나 사랑하는지 오늘밤 알 수 있을거에요

缘难了 情难了
yuán nán le qíng nán le
어렵게 맺은 인연, 힘겨운 사랑

 

** 같은 부분 반복


[번역 출처]
http://blog.naver.com/PostView.nhn?blogId=coeorms1&logNo=110170317148

posted by 자유로운설탕
prev 1 ··· 5 6 7 8 9 next