해커의 자세는 매우 중요하다. 그러나 그 기술은 절대적으로 필요한 것이다. 자세만으로 무능을 보상할 수 없다. 그리고 자신이 해커로 불려지기를 꿈꾸기 전에 갖추어야 할 어떤 기본적인 기술 이라는 도구(toolkit)가 필요하다. 이러한 수단은 테크놀로지가 새로운 기술을 창출하고 옛 것을 쓸모없는 것으로 만들면서 서서히 변하고 있다. 기계어 프로그래밍과 최근의 HTML을 놓고 볼 대 격세지감을 느끼지 않을 수 없다. 현시점에서는 다음에 기술하는 내용을 분명히 포함할 것이다.
★ 프로그래밍하는 방법을 배워라. #
물론 이것은 가장 기본이 되는 해킹 기술이다. 1997년까지 여러분이 반드시 배워야 할 프로그래밍 언어는 C이였다. 어떤 컴퓨터 프로그래밍 언어도 모른다면, 나는 Python 을 추천한다. 이 언어는 산뜻하게 설계되었으며, 문서화 또한 잘되어 있고, 비교적 초보자들이 접근 하기 쉬운 프로그래밍 언어이다. 비록 처음 접근하는 언어이기는 하지만, 장난감 같은 언어는 아 니다. 이 언어는 매우 강력하고 유연하며, 대형 프로젝트에도 적합하다. 나는 python에 대한 구체 적인 평가서를 작성했다. 그리고 학습서는 파이션 웹사이트에서 구할 수 있다.
java도 프로그래밍에 입문하기좋은 언어다. python에 비해 어렵지만 생성된코드의 실행속도는 많이 빠르다. 또 java는 프로그래밍에 입문하기만을 위한것이 아닌 아주 훌륭한 언어이다.
여러분은 단 한두가지의 컴퓨터 언어만 알고 있다면 해커가 아니다. 심지어는 프로그래머의수준도 않된다. 여러분은 어떤 한가지 언어에 편향되지 않는 보편적 방식으로 프로그래밍 문제에 관해 사고하는 방법을 배울 필요가 있다. 진정한 해커가 되려면, 매뉴얼에 기술된 내용과 당신이 알고 있는 것을 연관시켜, 며칠 이내에 새 로운 언어를 배울 수 있는 수준까지 오를 필요가 있다. 이는 여러분이 최소한 매우 다른 몇 가지 언어를 익혀야 됨을 뜻하는 말이다.
진지한 프로그래밍을 하고 싶으면, C 언어를 익혀야 할 것이다. C 언어는 유닉스에서 핵심이 되는 언어이다. C와C++ 는 아주 흡사하다, 만약 둘중에 하나를 익혔다면 다른하나를 배우는거도 쉬울것이다. 그러나 이 두언어 모두 초보자가 프로그래밍을 시작하기에는 적합하지않다.. 실제로 C언어를 적게쓰면 쓸수록 당신의 작업효율은 높아질것이다.
C는 아주 효율적이고 자원을 절약한다. C언어의 고효율은 당신이 컴퓨터최하층(예: 메모리)에대한 직접적인관리를 토대로 하는것이다. 이러한코드는 아주쉽게 버그를 만들어낼수있고 많은 시간을 디버깅에 투자하여야한다. 요즘 컴퓨터는 점점 빨라지고있다. 이는 얻는것보다 잃는것이 더많을 것이다. 비교적 총명한선택은 실행속도가늦고 효율이낮은 하지만 대폭적으로 당신의 시간을 절약할수있는 언어를 선택하는것이다. 그러기에 python 을 선택한다.
해커에게 있어 특히 중요한 여타 언어들은 LISP 과 Perl 이다. Perl은 역동적인 웹 페이지를 작성하고 시스템을 관리하는 데 폭넓게 쓰 이는 언어라는 매우 실질적인 이유에서 배울 가치가 있다. Perl로 작성하지는 못한다 할지라도 이를 읽고 이해할 수는 있어야 한다. 많은사람들이 perl를 사용하는 이유는 내가 여러분들에게 python을 추천하는 이유와같다. 모두 C가하지않아도될 고효율적인 작업을 하기위해서다. 당신은 그 코드들의 내용을 이해하는것을 필요할것이다.
리스프(LISP)는 마침내 도달하게 될 심오한 계발 경험을 위해 배울 가치가 있다. 그 경험은 여러분의 앞으로의 프로그래머로서의 기간동안 더욱 훌륭한 프로그래머가 되게 해주는 경험일 것이다. 비록 여러분이 리스프 자체를 실제로 그다지 많이 사용하지 않는다 할지라도 말이다.
5가지 언어(Python, JAVA, C/C++, Perl, 그리고 LISP) 모두를 배운다면 더할 나위 없겠다. 이 언어들은 가장 중 요한 해킹 언어가 될 뿐더러, 이것들 각각은 프로그래밍에 대한 접근 방법은 서로 다르며, 여러분 에게 매우 소중한 접근법으로 가르침을 줄 것이다.
여기서 어떻게 프로그래밍 언어를 익혀야 하는가를 구체적으로 기술할 수는 없다. 매우 복잡한 기술(skill)이기 때문이다. 그렇지만 시중의 서적이나 강좌들은 그렇지 못하다는 것을 밝히지 않을 수 없다(거의 대다수의 해커들이 독학한다). 굳지 말하라면, ⑴ 코드를 읽고 ⑵ 코드를 작성하는 것이다.
프로그램을 배운다는 것은 일상의 언어로 매우 좋은 글을 쓰는 것과 같다. 이렇게 하기 위한 최 선의 방법은 명인(名人)들이 작성한 자료를 읽고 스스로 습작을 해보고, 많은 글을 읽고 작성해보 고, 더욱 많은 글을 읽고 좀더 많은 글을 작성하고.... 한마디로 당신이 작성한 글들이 여러분들 만의 틀로 일종의 힘과 경제성을 개발하기 시작할 때까지 반복에 반복을 거듭하는 길뿐이다. 읽기 좋은 코드를 찾기란 매우 어렵다. 그 이유는 소스 상태로 애송이 해커들이 알고 어설프게 다룰 수 있는 대형 프로그램을 구할 수가 없기 때문이다. 이러한 상황은 극적으로 변화를 보고 있다. 지금은 소스 공개(open-source) 소프트웨어, 프로그래밍 툴(tool), 운영 체제(이 모든 것들은 해커들이 만든 것이다)들을 어디서든 구할 수 있다.
★ 소스 공개 유닉스들 중 하나를 구해서 사용법과 운용법을 배워라. #
여러분이 개인용 컴퓨터를 갖고 있거나 이에 접근할 수 있다라는 전제 하에 이 글을 쓴다. 어떤 신참(newbie) 해커들이 해커 기술들을 습득할 수 있는 가장 중요한 그 첫 단계는 리눅스 배포본이 나 BSD 유닉스 계열의 운영체제를 구하여, 여러분의 컴퓨터에 설치하고 이를 돌리는 일이다. 이 세상에는 유닉스 이외의 무수히 많은 운영체제들이 있다. 그러나 이것들은 바이너리(binary) 형 태로 배포되기 때문에 소스 코드를 읽고 분석하여, 이를 수정할 수 없다. 도스나 윈도우, 또는 맥 킨토시 운영체제에서 해킹하는 법을 배우려는 것은 몸 전체에 기부스를 하고 춤추는 법을 배우는 것과 같다. 게다가 유닉스는 인터넷의 운영체제이다. 유닉스를 모르고 인터넷을 배울 수 있지만, 인터넷을 이 해하지 못하고 인터넷 해커가 될 수는 없다. 이러한 연유로 오늘날의 해커 문화는 매우 강한 유 닉스 중심적인 문화이다.(이 얘기는 언제나 진실이지는 않다. 그리고 일부 원로 해커들은 이러한 얘기에 불편한 심기를 노정한다. 그러나 유닉스와 인터넷과의 공생(共生) 관계는 마이크로소프트 의 힘으로도 심대한 타격을 줄 수 없을 만큼 매우 강력한 것이 되었다.
유닉스를 양육하시오-내 자신은 리눅스를 좋아 하지만, 다른 방법도 있다. 유닉스를 공부하고 사용하고,셋팅해라. 유닉스를 통해서 인터넷과 대화하라. 코드를 읽어라. 코드를 수정하라. 여러분 은 마이크로소프트의 운영 체계가 꿈도 꿀 수 없는 것 이상의 더 말할 나위없는 프로그래밍 툴들 을 얻게 될 것이다(C를 포함하여, Lisp과 Python 및 Perl도). 그리고 즐거움을 누릴 것이며, 거장 해 커가 되어 회고하면서 끝없이 배워야 한다는 사실을 깨닫는 것보다도 더욱 풍부한 지식에 흠뻑 빠지게 될 것이다.
유닉스 학습에 대해서 좀더 많은 것을 알려면, The Loginataka 를 참조하시오.
리눅스를 연습하여 익숙해지려면, 리눅스를 입수할 수 있는 곳 을 참조하시오.
BSD 유닉스 도움말 및 자원을 구하고자 한다면, http://www.bsd.org/를 참조하시오.
나는 "Unix와Internet기초" 라는 문장을 쓴적이있다.
(주: 나는 여러분이 이제 갓 시작한 초보(newbie)라면 단일 프로젝트로써 리눅스나 BSD를 설 치하기를 권하지 않는다. 리눅스의 경우라면 각 지역별 리눅스 사용자 모임에 도움을 청하거나, LISC(Linux Internet Support Co-Operative)와 접촉하라. LISC는 여러분이 도움을 얻을 수 있는 IRC채널을 운영하고 있다.)
★ 월드 와이드 웹(WWW)의 사용법과 HTML 작성법을 배워라. #
해커 문화가 건설한 대부분의 것들은 정말로 훌륭한 업적으로 가득 차 있다. 非해커들이 삶의 방 식에 어떤 현시적인 충격을 주지 않고 공장, 사무실, 그리고 대학이 돌아갈 수 있게 하였다. 웹은 유일한 예외이다. 정치인들마저도 인정했던 거대한 해커 장난감이 이제는 세상을 변화시키고 있 다. 이러한 이유 하나만으로도 여러분은 웹이 어떻게 작동하는지를 배워야 한다.
이 말은 단지 누구나 할 수 있는 브라우저 사용법을 익히는 것뿐만 아니라, HTML를 작성하는 법 도 배우라는 말이다. 만약 여러분이 프로그램하는 법을 모른다면, HTML 작성은 프로그램 작성에 도움이는 되는 정신적인 기질(habits)을 여러분에게 가르쳐 줄 것이다. 자! 우리 모두 홈페이지를 구축합시다.(인터넷에는 좋은자료들이많다 이것이 그중에하나)
그러나 홈페이지를 구축하는 것이 여러분을 해커로 만들어 줄 수 있는 충분 조건은 아니다. 웹에 는 홈페이지로 가득 차 있다. 이들 대부분은 핵심과 중심 과제가 없는 진흙창과 같은 것이다. 그 것도 여러분의 마음을 빼앗을 수 있는 매우 호화로운 진창들이다. 그렇다고 파리똥이 똥이 아니 라고 말할 수 있겠는가.(좀더 자세한 것을 알고 싶으면 The HTML Hell Page 를 참조하라)
여러분의 웹페이지가 가치있는 것이 되려면 알찬 내용으로 가득 차야 한다. 재미있을 뿐더러 다 른 사람(해커)들에게도 유용한 것이 되야 한다.
첫댓글 흐아~ 잘보고갑니다^^ 근데 두환선생님이 쓰신건가요?ㅎㅎ
잘 보고 가염^^
잘 읽어봤어요~~
잘보고 갑니다!
네엡 ^^
할게 산더미네여.. 더더욱 열심히 해야겠어요^^
화이팅!!