E D R , A S I H C RSS

프로그래밍언어와학습

DeleteMe) 제목짓는 센스가 없는 관계로;; 원글의 뜻에 맞게 제목을 고쳐주시기를; Rename & Refactor This Page; --석천



토크백까지 같이 읽어야 할 것 같고. -_-; (물론 쓸데없이 화내는 사람들이 많아보여서, 쩝..) 그 글에 대해서 약간 한계를 생각한다면.. (뭐. 그 글 쓴 분의 의도는 대강 알겠지만.)

  • 학교에서 C++ 배운다고 하드웨어 건드리나. -_-; (전전공이라면 몰라도..) 컴퓨터공학과의 경우 학교에서 C++ 배워도 어셈블러 레벨까지 다루는 사람이 별로 없다고 할때, C++ 을 배웠다고 시스템레벨 까지의 깊은 이해가 필요없었다는 점인데.. 글을 읽으면, 마치 '교육용 언어로 C, C++ 을 배웠다면 시스템 레벨까지 이해할 것' 처럼 쓴 것 같다고 생각. (C, C++ 포인터를 레퍼런스 이상의 개념으로 쓴적이 있었나.. --a) 차라리 '우리는 전전공 출신에 하드웨어제어 해본 사람 뽑습니다' 라고 할것이지..쩝. Domain-Specific 한 부분을 생각치 않고서는 시스템 프로그래머에게서는 늘 자바와 Script Language 는 '군인을 나약하게 만드는 무기' 일 수밖에 없으니까.
  • Language != Domain. 물론, Domain 에 적합한 Language 는 있더라도. 이 글이건 Talkback 이건.. 두개를 동일시 본다는 느낌이 들어서 좀 그렇군. (나도 가끔은 Java Language 와 Java Platform 을 똑같은 놈으로 보는 우를 범하긴 하군. -_-;)
  • 사족1) 간혹 C++ 로 OS레벨을 건드리긴 하지; (잘못된 연산 오류, 파란화면, 시스템레벨로 건드린다면 이x직군 처럼 빨간화면도 가능하겠구나;)
  • 사족2) 예전 마소의 김재우씨가 '프로그래밍의 숨겨진 진실과 거짓' 관련 기사 나왔을때 강규영씨의 반박문을 읽을때도 약간 핀트가 안맞는다란 느낌이 들었는데.. 뒤의 토크백들을 보면.. 또 한번 한숨. --석천


언어로서 C나 C++의 (수학적, 논리적) 규칙을 정리하면 A4용지 몇장이면 충분합니다. 흥미로운 것은 그런 규칙과 요소들이 서로 조합될 때(그리고 조합된 것을 다시 조합할 때 -- 라이브러리, 프레임웍)의 변용입니다.
~cpp 
> 교육기관에서는 문법적 특성과 알고리즘 이외에도
> 컴퓨터 시스템을 어떻게 제어하고 어떤 식으로 영
> 향을 미치는지를 가르쳐야 한다. 그렇게 하기에 자
동의합니다.

하지만 이제는 컴퓨터 시스템에 대한 저차원적인 이해 없이도 얼마든지 뛰어난 프로그램을 만들 수 있는 영역이 늘어나고 있습니다. 언제든지 저차원에 대한 이해는 도움을 주지만 이제는 저차원의 정의가 조금 더 상향 조정된 문제 영역이 훨씬 많습니다. (컴퓨터 발전 초기에는 적용도메인이 협소했습니다)

하드웨어를 "뼈 속 깊이 꿰뚫고 있는 사람"과 그런 거라곤 하나도 모르는 사람이 동일한 문제에 접근했을 때 후자의 경우가 더 훌륭한 프로그램을 더 빨리 산출해낼 가능성은 얼마든지 있습니다.
~cpp 
> 바라는 언어는 분명 한계가 있다. 자바는 컴퓨터 시
> 스템을 이해하지 못하게 하고, 시스템 자체에 대한 
목적에 따라, 이해/구축이 필요한 시스템의 추상 레벨 수준이 다릅니다.
~cpp 
> 접근을 허용하지 않기 때문이다. JNI(java native i
> nterface)로 할 수 없는 것을 말하는 것이다.
>
> 필자는 자바 가상기계를 만들었을 정도로 자바 자체
> 에 대해서 관심도 높고 좋은 언어라고 생각한다. 하
> 지만 IT 업계의 프로그래머라면 자바만 해서는 차별
> 화될 수 없다. 자바라는 언어는 마치 패스트푸드와 같
> 아서 쉽고 편하게 접근할 수 있지만, 더 깊이 공부할
> 수 있도록하는 깊은 맛은 없는 것 같다.
어찌 하나 더 배워서 나쁜 것이 있겠습니까. 자바만 해서는 차별화될 수 없습니다. C만 해서도 똑같습니다.

맥락을 제거한 언어의 우열 논의는 비생산적입니다. 또, 우리는 언어 자체말고도 (그 언어에 잠재해있는) 광막한 세계를 접합니다. C언어가 깊이가 있니 Java언어가 깊이가 있니 하는 것은 난센스입니다. 언어는 모두 깊이가 같습니다. see also 치튜링논제

문화인류학이 융성하던 초기, 언어학자들은 어느 언어가 더 우월한가, 또 거기서 언어 사용자의 정신능력에 차이가 생기는가 등을 따지는 연구에 심혈을 쏟았습니다. 그들이 얻은 결론은 인류에게 있어
A라는 언어로 표현가능하다면 그것은 B라는 언어로도 표현할 수 있다는 것이었습니다. 다만 여기서 문화권에 따라 어떤 효율성의 차이가 있을 수는 있었습니다.

C가 하드웨어를 조작하게 해주고, 따라서 컴퓨터 시스템을 제대로 이해하게 해준다는 것은 좀 과장된 주장으로 생각됩니다. "C 언어"가 보여주는 컴퓨터 시스템은 이미 몇계단 왜곡되어 있습니다.

자바라는 언어 자체는 그다지 중요하지 않습니다. 중요한 것은 자바로 무엇을 얼마나 효과적으로 할 수 있느냐는것입니다.

언어의 차원이 1차원이면, 그 위에는 (저차원에 기반한) 2차원, 3차원,... 무한히 펼쳐져 있습니다.
세상은 다층적입니다. 또, 차원이 높아지기 시작하면 저차원이 무엇이었느냐는 것은 크게 영향을 주지 않습니다.

아프리카 말로도, 중국어로도, 영어로도 "심오하고 사람을 감동시키는 효과적인 말"은 얼마든지 할 수 있습니다. 그것은 말을 어떻게 그 언어 규칙에 맞게 잘 조합하느냐의 문제입니다. 이 변용의 능력은 "언어"만 후벼파서는 절대 얻지 못합니다. "언어"가 구성해주는 2차원의 메타적인 세계를, 혹은 그 메타 세계의 메타 메타 세계를 후벼파야 합니다.

영작을 수십년간 공부한 사람을 알고 있습니다. 맨날 관용구를 외우고, 문법을 익히고, 날마다 영작을 한 편 씩 해서 미국의 교수에게 그 글을 보내고 검사를 받아온 사람입니다. 그 사람이 몇 년 전 제게 고백을 했습니다. 자기 영작 공부는 후회스러운 것이라고. 그 사람은, 훌륭한 글을 쓰는 것은 단순히 언어적, 문법적인 요소를 떠나서 얼마나 훌륭한 아이디어를 갖고 있느냐에 일차적으로 좌우되는 것이라고 깨닫고, 후학들에게 다양한 주제의 책을 접하라는 충고의 글을 썼습니다. 명료한 글을 쓰려면 언어가 명료하기 이전에 사고가 명료해야 하며, 풍부한 글을 쓰려면 언어가 풍부하기 이전에 사고가 풍부해야 합니다.

한국에서 일찍부터 컴퓨터를 접했던 소수의 "특권" 계층은 자신이 익숙하게 사용해온 것들이 인기를 잃는 것에 대해 개탄하고, 신세대들은 공부가 부족하다며 비판하길 좋아합니다. 그들의 진정한 문제는 겸손하지 못하다는 것입니다. 자신이 하고 있는 것이, 자신이 있는 영역이 더 본질적이고 더 어려우며, 더 고수준의 것이라고 생각하기 쉽습니다.

이 문제는 어디를 가도 비슷합니다. 학교시절에 어렵게 공부를 한 기득권층은 최근의 "열린교육"이나 "대안교육"에 대해 상당한 불만을 갖고 과거회귀를 주장하기 마련입니다. "너희는 몰라."

p.s. 토크백에서 여러분은 일반 게시판 모델의 폐악을 여실히 보고 있습니다. 거기는 사람이 축이 되어 있습니다. 위키에서는 논점이 축이 됩니다. 논점을 축으로 그 글들을 재정리 하면 양이 1/10로 줄고 질은 10배 높아질 것이라고 생각합니다.

p.s.2 토크백에 자바를 대학에서 가르칠 것을 주장하며 "파스칼 따위는 이제는 버려야죠"라는 말이 있는데, 버리려면 먼저 가지고 있어야 할 뿐 아니라, 파스칼을 갖거나 버리거나 하는 것은 이제 큰 의미가 없습니다. 구조적 프로그래밍 같은 파스칼을 주축으로 한 패러다임을 배우는 것이 중요합니다. OOP는 구조적 프로그래밍을 감싸안고 더 자라난 것이지 뒤에 남겨두고 진보한 것이 아닙니다.

The fatal metaphor of progress, which means leaving things behind us, has utterly obscured the real idea of growth, which means leaving things inside us.

--G. K. Chesterton (1874-1936), British author. Fancies Versus Fads, "The Romance of Rhyme" (1923).

-- JuNe

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.1014 sec