파이썬 언어

요즘 개인적으로 파이썬을 틈틈이 공부하고 있는데, 나름 재미있다. 대략 20세기 말쯤에 우리나라에 파이썬이 얼리어답터 선구자들에 의해 처음으로 대대적으로 소개됐을 때는, Python의 한글 표기조차도 통일이 안 돼 있었다고 하니 참으로 격세지감이다. 본인은 처음부터 일관되게 파이썬이라고만 들었다.

파이썬이라는 언어가 있다는 걸 본인이 안 건 굉장히 오래 됐다. 거의 2001~2002년 사이인데, 당시 세벌식 사랑 모임에서 '컴바치'라는 필명을 쓰던 송 시중 님과 얘기를 나누다가 파이썬에 대해 처음으로 들었다. 이분, 연락이 끊어진 지는 굉장히 오래 됐는데, 지금은 뭘 하고 계시는지 모르겠다.

그 후 본인은 학교 후배로부터도 파이썬을 좀 공부하는 게 어떻냐는 권유를 몇 차례 받았다. 하지만 오로지 C++ 만능주의에 <날개셋> 한글 입력기 개발에만 정신이 팔려 있던 본인은, “난 비주얼 C++만 있으면 컴퓨터를 내가 원하는 대로 얼마든지 부려 쓸 수 있는데, 그거 또 배워서 뭐 함?” 식으로 별 흥미를 느끼지 못했다. 난 전산학 전공자치고는 컴퓨터 다루는 형태가 아주 기괴하다. -_-;;

그로부터도 또 수 년이 지나고, 무려 대학원에 가서야 본인은 드디어 파이썬을 다시 대면하게 됐다. 파이썬이 말뭉치 같은 대용량 텍스트 데이터를 다루는 도구로서, 전산 비전공자도 쉽게 배울 수 있는 언어로 즐겨 쓰이고 있었던 것이다.

나는 문과 기반이 부족하니 그런 걸 주변 선배들로부터 보충받고, 반대로 전산학 기반이 아주 탄탄하기 때문에 그런 걸 전수해 주는 쪽으로 협업 구도가 자연스럽게 형성되었다. 파이썬 좀 가르쳐 달라는 요청이 있기도 했으니, 본인은 남을 가르치기 위해서 내 자신부터 파이썬을 공부하게 됐다.

한동안 공부해 본 소감은... 파이썬은 꽤 재미있는 언어이다!
type이 runtime 때 동적으로 결정되고 무척 유동적이라는 것은 C++ 특유의 그 경직된 사고방식으로부터 해방감을 느끼게 해 줬다.

{ } 일색인 C/C++, 자바, C# 같은 언어하고만 놀다가...
들여쓰기가 필수 조건이고 for/while/def :로 끝난다는 언어를 접하니 느낌이 새롭다. 좀 베이직과 비슷하다는 생각도 든다. 물론 그렇다고 행번호+GOTO 스파게티 같은 건 전혀 없지만.

다중 대입 기능이라든가 리스트의 slicing 연산은 무척 편리하고 좋았다.
여타 언어였다면 또 임시 변수를 동원한다거나, 번거로운 개체 생성과 반복문이 필요했을 것이다.
C/C++, 자바, C#의 for문은 while문을 형태만 바꾼 것과 완전히 동치이지만, 파이썬의 for 문은 철저하게 복합 자료형의 각 원소를 순회하는 기능에 맞춰져 있다. for문의 설계 철학은 C스타일 언어와 베이직/파스칼 스타일 언어, 그리고 파이썬도 살짝 차이가 있는 것 같다.

언어와 내 사고방식이 완전히 일심동체가 되기 위해서는,
- 리스트 같은 복합 자료형이 내부적으로 구현되는 실제 자료 구조는 무엇이며 시간 복잡도가 얼마나 되는가? 메모리 재할당 비용이 얼마나 되는가?
- 대용량의 복합 자료형을 만들어서 복제하거나 함수 인자로 전달했을 때 shallow copy가 일어나는가, deep copy가 일어나는가?

이런 식의 디테일을 알 필요가 있다.
이것도 몇 번 튜토리얼을 읽고 예제 코드를 짜면서 시행 착오를 겪어 보니 그리 어렵지 않게 이해가 됐다.
문자열과 튜플은 새로운 값의 생성과 대입/재대입만 가능하지, 이미 만들어진 값의 변경은 허용되지 않는다는 대목에서 '아하~!' 소리가 절로 나왔다.
뭐, 문자열도 필요한 경우엔 mutable array 형태로 내부 조작을 할 수도 있다.

파이썬으로 윈도우 API도 호출하고 온갖 희한한 라이브러리를 동원해서 각종 컴퓨터 자동화 작업을 수행하고 별 걸 다 하는 친구도 있는데, 본인은 그 정도 수준은 안 된다. 그래도 이 정도만으로도 좋은 경험이다.

내게 파이썬을 권하던 후배 녀석이 이제는 HTML 공부도 좀 하라고 권한다. 이제는 플래시나 ActiveX 없이도 웹 표준 자체만으로도 별 걸 다 만드니, 훅킹을 한다거나 컴퓨터의 임의의 파일이나 레지스트리를 건드려야 하지 않는 이상 ActiveX의 필요성은 갈수록 없어지고 있다. 웹이 처음에는 그림+글+하이퍼텍스트로 된 문서일 뿐이었는데 지금은 그 자체가 거의 플랫폼처럼 됐다.

Posted by 사무엘

2011/05/25 08:18 2011/05/25 08:18
,
Response
No Trackback , 9 Comments
RSS :
http://moogi.new21.org/tc/rss/response/516

Trackback URL : http://moogi.new21.org/tc/trackback/516

Comments List

  1. 김재주 2011/05/25 15:00 # M/D Reply Permalink

    파이썬뿐 아니라 루비(Ruby), 자바스크립트 같은 언어들도 참 재밌습니다. 함수형 언어들은 프로그래밍에 대해서 한번 더 생각해보는 기회가 됩니다.

    1. 사무엘 2011/05/25 23:23 # M/D Permalink

      재주 님, 오랜만에 뵙네요!
      그렇잖아도 저도 파이썬을 계기로 주변의 루아, 펄, 루비 같은 비슷한 위상의 다른 언어들에도 관심이 생기더군요. 아직까지는 관심“만”. ㄲㄲ
      도스 시절에는 유포리아라는 언어를 접했던 기억도 납니다.
      그 후 C/C++ 앞에서 여타 언어들은 모두 저의 프로그래밍 역사에서 닥버하게 됐습니다만, 요즘은 트렌드가 C/C++보다 가벼운 언어로 ‘회귀’ 중입니다.

  2. 주의사신 2011/05/25 17:03 # M/D Reply Permalink

    1. Python 참 재미있는 언어입니다. 5월 30일로 마감되는 졸업 작품의 Build Script로 Python을 사용해 보았는데, 참 괜찮더라고요.

    2. batch를 배우지 않았습니다만, python 있으면 batch 없이 살 수 있겠습니다.

    3. 이름이 뱀이라는 것이 조금 마음에 안 들기는 합니다. DevIL(Developer's Image Library)에 비하면 낫다고 해야 할까나요?

    1. 사무엘 2011/05/25 23:23 # M/D Permalink

      이미 파이썬을 써 보셨군요.
      저는 개인적으로, 컴퓨터 관련 작명들 중에 성경적인 의미에서 무척 의아하게 생각하는 것 중 하나는 daemon (background process-_-)입니다.

      이 주제로 말이 나왔으니 좀 더 첨언을 하겠습니다.
      앞으로 미국에 대해서 글을 하나 쓸 거지만, 저는 미국에서 태동한 인터넷 기술과 오픈소스 진영(및 이념)은 정말 인류를 이롭게 하고 세계에 큰 유익을 끼쳤다고 생각합니다.
      미국 같은 인프라와 국민성이니까 그런 대인배 커뮤니티가 나올 수 있었겠죠.

      그리고 미국의 여러 대학들 중 UC 버클리가 옛날에 그런 분야에서 컴퓨터 기술의 발전에 큰 공헌을 했습니다.
      허나, 그런 진영에 있는 사람들이 바이블 빌리버...??는 아닌 경우가 많습니다.
      UC 버클리는 오히려 성향면에서 굉장히 liberal한 걸로 유명하죠. (굉장히 반성경적인 방향으로까지)
      그것 때문에 서부에 사는 크리스천 중에는 UC 버클리에 갈 성적이 되는데도 일부러 UCLA에 가기도 한답니다. (뭐, UCLA에도 어차피 만만찮은 명문입니다만)

      하지만 그런 liberal들이, 잘못된 권위주의를 타파하고, 그 비싼 컴퓨터와 인터넷이 최소한 기득권자들의 독점물이 되는 걸 막았다는 점에서는 큰 공을 세웠다고 생각합니다.
      컴퓨터는 (1) 정부, 대학, 연구소, 군대 -> (2) 해커 -> 를 거쳐 (3) 일반 사용자로까지 대중화가 된 거겠죠? 물론 (3) 단계에서는 빌 아저씨 같은 장사꾼이 기여한 것도 많지만. ^^

      .
      .
      그나저나, 파이썬 IDE인 PyScripter 프로그램의 비단뱀 아이콘은 굉장히 귀엽지 않나요? ㅎㅎ

  3. 착이 2011/05/26 18:13 # M/D Reply Permalink

    저도 파이썬 열심히 쓰다가.. 2.6이랑 3.0 호환 신경쓰는게 골치아파서 루비로 넘어왔어요! 좋아요 ㅋ

    1. 사무엘 2011/05/26 23:18 # M/D Permalink

      오랜만입니다! ^^
      그러게요. 2.x와 3.0 사이에 breaking change가 적지 않다고 해서..
      이미 2.x 기반으로 구축된 수많은 라이브러리 패키지들 때문에,
      3.0이 나온 지 꽤 긴 시간이 흘렀음에도 불구하고 여전히 2.x가 많이 쓰인다고 하더군요.
      그렇다면 호환성 문제가 골치아플 것 같습니다.
      뭐, 아무리 변화가 많기로서니 설마 VB6과 VB .NET의 차이 정도겠습니까? =_=

  4. 소범준 2011/09/22 15:58 # M/D Reply Permalink

    1. 프로그래밍 언어들 중에 C 군과 베이직 같은 것만 있는 줄 알았는데 글 초입부터 파이썬이 뭔가(?) 했죠.(삽질... 윽... 흠좀무) 안그래도 저는 비록 프로그래밍도 처음이라서 좀 그렇지만, 사실 C언어는 체계부터가 굉장히 복잡한 느낌이 드는군요. 프로그래밍 언어치곤 가장 쉬운 언어이기도 하지만, 까딱하면 그 체계의 떡밥 나부랭이한테 참 꼴좋게(!!) 놀아나고... 이거 가히 욕나올 법한 언어이지 싶네요. -_-;

    2. 그렇다면 초보자도 더 쉽게 다룰 수 있는 언어도 소개가 되어야 하는데, 어찌 우리나라는 그런 데 투자를 안하니... 원... -_- 대략 난감하군요... 안습..

    3. 아무쪼록 학계에서도 그런 것들이 많이 소개되어서 정착되었으면 좋겠습니다.

    1. 주의사신 2011/09/23 19:34 # M/D Permalink

      제가 할 줄 아는 언어 나열만 해도 이렇게 됩니다.
      C/C++, Java, C#, lua, HTML/CSS/JavaScript, Python, PHP...

      들어 본 언어도 많고요.

      언어는 참 많이 있습니다. 우선 처음에 C를 잡으셨다면 C/C++로 거의 모든 것을 다 할 수 있을 때까지 해 보시길 권합니다. Windows API랑 MFC까지 달리게 되겠지요.

      그리고 나서 다른 것을 보면 '사람들 생각하는 것이 많이 비슷하구나'라는 것을 알게 되실 것입니다.

    2. 소범준 2011/09/23 19:52 # M/D Permalink

      답변 주셔서 감사합니다. 언어는 일단 다 섭렵해 보는 것이 좋겠는데, 저는 프로그래밍/전산 전문이 아니라 통신 전공이라서 조금은 어렵겠습니다. 그래도 C언어는 어려운 게 많아도 계속 해 보겠습니다.

Leave a comment
« Previous : 1 : ... 1761 : 1762 : 1763 : 1764 : 1765 : 1766 : 1767 : 1768 : 1769 : ... 2204 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/12   »
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        

Site Stats

Total hits:
3042843
Today:
35
Yesterday:
2435