2012년 6월 23일 답변
#################
프로그래밍을 처음시작한 것은 33년 정도 되었습니다.
여러가지 복잡한 일을 겪은 후 처음 잠시 근무한 곳이 kist(한국과학기술원) 전산개발팀 중의 한 팀이었습니다.
그곳에서 업무를 시작하면서, fortran 언어로 프로그래밍을 처음 배우게 되었습니다.
그때 나이가 29세 였으니까 결코 일찍 시작한 것은 아니었습니다.
3개월 정도 kist에서 근무를 하다가 문제가 생겨서 그만 두고는 업자 생활을 3,4개월 한 것 같습니다.
그 때가 2차 오일쇼크 때라서, 지금의 IMF 비슷한 시기 였습니다. 직장을 구하기가 어려웠지요.
그러다가 금융결제원에서 다시 근무를 시작했습니다.
그냥 cobol을 배워서 쉬운 업무부터 프로그램을 짜기 시작했습니다.
그 때만 하더라도 천공카드로 프로그램을 짜던 시절이 었습니다.
몇 개월후에는 연구소 전산실로 옮겨서, 업무에 필요한 PL/I 을 배워서 사용하게 되었습니다.
저로서는 프로그래밍을 배우는데 어려움을 느낀적이 별로 없었던 것 같습니다.
가진 실력보다 넘치는 의욕때문에 스스로 어려움을 자초한 경험은 많이 있습니다.
연구소에서 여러가지 의미있는 업무를 하는동안 별로 재미있는 프로젝트를 한 기억은 없는 것 같습니다.
참 그 시기에 애플2 호환 컴퓨터가 나왔습니다. 삼보컴퓨터에서도 애플2호환 컴퓨터로 사업을
시작했던 시기였습니다. 애플 컴퓨터를 구입하여, 게임도 하고 BASIC이나, LISP등도 돌려보고
했던 기억이 나는 군요.
Knuth 책에 나오는 MIX언어(일종의 어셈블리어)가 있습니다. 이 언어의 어셈블러와 에뮬레이터를
PL/I으로 만들어 본 경험이 이 시기에 있었던 것 같습니다.
연구소에서 근무를 하던 중 공부를 해야할 필요성을 느끼고, 늦은 나이에 유학을 떠나게 되었습니다.
한국에서는 컴퓨터를 학교에서 정식으로 공부하지는 않았기 때문에 많은 걱정을 하고 유학생활을
시작했습니다.
유학시절에는 한번 프로그래밍 언어 때문에 고생을 한 것 같습니다. ml 이라는 언어였는데
거의 이해를 하지 못했던 것 같습니다. 좋은 학점을 받지도 못했고요.
학위과정자체에서는 주로 이론적인 분야를 했기 때문에 프로젝트를 수행한 경험이 없습니다.
그냥 과목에서 요구하는 작은 프로젝트를 몇개 해본 경험이 있습니다.
학위를 마치고 귀국해서 대학에서 자리를 잡고는 학생들을 가르치기 위해서 c언어를 시작했습니다.
그 전에는 pascal/lisp 등으로 프로그래밍을 했던 것 같습니다.
그리고 윈도우용 디스어셈블러를 개발한 경험이 있습니다. 1997년경에 발표를 해서 지금까지도
조금씩 쓰이고 있다고 생각하고 있습니다. 이때의 성공한 경험을 너무 과신해서 그 다음에는
simpc라는 프로젝트를 몇년동안 추진하였습니다. cpu에뮬레이터, pc에뮬레이터, 디버거, 를
통합한 툴을 만드는 프로젝트 였습니다.
지금도 오픈소스로 bochs라는 cpu에뮬레이터가 있는데 그 때 그 에뮬레이터를 알게 되었읍니다.
이 에뮬레이터를 이용해서 제대로된 디버깅 환경을 만들어 보려는 목표를 가지게 되었지요.
혼자서 역량을 과신하고 시작해서 몇년을 허송세월로 보내게 된 프로젝트였습니다.
결국은 끝까지 뚫어내지 못하고 중간에 접어야 했으니까요.
그즈음에 파이썬을 알게 되었습니다. 파이썬으로 프로그래밍을 해보니 파이썬의 장점을 느낄수
있었습니다. 특히 교육용으로 충분히 도움이 되는 언어라는 확신이 들었읍니다.
지금까지도 몇몇의 수업에서 파이썬을 사용하고 있습니다.
그 무렵에 simple byte machine이라는 작은 cpu와 어셈블러가 포함된 교육용 툴을 만들었습니다.
만드는 것은 좋아 하지만, 파는데는 소질이 없는 사업가 처럼 널리 알려지지는 않았습니다.
그리고 MIT에서 만든 스크래치를 알게 되었습니다.
스크래치를 본 순간 아. 바로 이것이다. 이 스크래치를 이용해서 c언어 대신 학생들의 첫번째 언어로
쓰면 좋겠구나, 하고 생각했습니다. 하지만 스크래치 그대로 사용하는 것은 문제가 있었읍니다.
그래서 simple visual language를 만들게 되었습니다.
처음에는 파이썬으로 스트래치의 기능만을 흉내내어서 만들었읍니다.
돌아가기는 하였지만, 안정성이라는 문제가 발목을 잡았습니다.
결국은 스트래치 자체를 수정하는 쪽으로 방향을 바꾸고는 2년 이상을 투입해서
simple visual language를 만들게 되었습니다.
처음에는 이 svl이 빠르게 확산되고 널리 쓰일 것으로 기대 하였습니다.
물론 완성된 후 시간이 충분히 흐르지는 않았지만, 알려지는 것이 너무 느리다는 것을
알게 되었습니다.
세상사람들이 가지고 있는 잘못된 지식과 소문때문에 아무리 더 나은 효과적인 공부 방법이라
할지라도 쉽게 확산이 되기 어렵다는 것을 느끼게 된 것입니다.
그래서 제가 주장하는 공부방법을 전파하기 위해서 네이버 c/c++언어 질문에 답변을 시작한 것입니다.
제가 평소에 주장하는 것을 거슬리면서 까지 과제에 답을 달아 주는 것을 하는 데는
저 나름대로 이유가 있습니다.
우선 과제를 내어주는 교수는 학생들이 이 과제를 할 능력이 되는지 안되는지를 알고 있어야 된다고 생각합니다.
학생들이 지금은 이 과제를 할 능력이 되지 않는다면, 이 과제를 내 주면 안된다고 생각합니다.
또 언어를 수업시간에 가르치고는 아직 프로그래밍 능력이 생기지도 았았는데 지나치게 어려운 과제를
내주는 학교가 많이 있습니다. 아마도 50명의 학생들 중에서 5명 정도는 그 과제를 해낼수 있을 지
모르겠습니다. 하지만 과제를 할 능력이 아직 생기지 않은 45명의 학생들은 어떻게 해야 합니까.
그저 친구들에게 부탁하던지 아니면 타인에게라도 답을 구해달라고 부탁을 할수 밖에 없는 것입니다.
물론 저 자신을 네이버 지식인 세계에 충분히 알려서, 제가 추구하는 공부법이 널리 퍼지기를
기대하는 마음 때문에 그런 무리를 하고 있는 것입니다.
아마도 제가 네이버 지식인 c/c++분야 1위를 할때 까지는 이런 무리를 더 해야 할지도 모르겠습니다.
이번 방학 때 부터는 svl과 같은 기능를 가지는 c언어 학습 시스템을 만들어 보려고 합니다.
c언어를 블럭 짜맞추기로 해서 바로 프로그래밍을 할수 있는 학습시스템입니다.
아마도 c언어를 공부하는 많은 학생들에게 훨씬 더 쉽게 받아 들여질 수 있을 것이라고 생각합니다.
또 변수나, 배열의 내용을 확인할 수 있고, 배열의 인덱스오류도 바로 알려주는 등의 기능을
가지게 되면 초보자들에게 훨씬 친절한 학습시스템이 될 것이라고 생각합니다.
이렇게 저자신에 대한 이야기를 길게 한 것은 넷상에서는 처음인것 같습니다.
'기타 > 컴퓨터공학' 카테고리의 다른 글
Paul Hsieh의 프로그래머란 무엇인가? (0) | 2020.02.10 |
---|---|
실력향상의 길 (0) | 2020.02.10 |
우리는 왜 프로그래밍을 못하나? (0) | 2020.02.10 |
초보자들과 프로그래밍을 가르치는 분들께 드리는 말씀 (0) | 2020.02.10 |
2의 보수, 1의 보수 (0) | 2015.02.21 |