새로운 말을 배운다는 것은 어려운 일. 그러나 컴퓨터사회에 잘 적응하려면 그들의 언어를 배우는 것이 현명한 방법이다.
컴퓨터가 우리의 주변에 점점 더 가까이 다가오고 있다. 90년도부터는 실업 고등학교에 정보산업과목을 선택과목으로 신설하여, 실업계 고등학생들에게 컴퓨터 교육을 집중적으로 지도할 것이라고 한다. 최근에는 기독교에 관련된 정보를 컴퓨터에 축적시켜 필요한 내용을 검색할 수 있는 서비스를 제공하는 회사도 생기고 있고, 동사무소에까지 개인용 컴퓨터가 보급되어 시험적으로 운용되고 있다.
그러나 대부분의 사람들은 아직까지 컴퓨터란 어떤 것인지 잘 모르고 있다. 그나마 약간 컴퓨터에 대한 지식이 있는 사람이라 하더라도 '개인용 컴퓨터로 무엇을 할 수 있을 것인가?'와 같은 좀더 현실적인 질문에는 별다른 답변을 하지 못한다. 그래서 현재 널리 보급되고 있는 16비트 개인용 컴퓨터인 IBM PC의 소프트웨어들의 종류와 그 특성을 살펴보면서 이 질문에 대한 답을 구하는 것이 이 연재의 목적이라 하겠다.
지난호에서는 개인용 컴퓨터와 소프트웨어에 대하여 소개하고, IBM PC의 시스팀 소프트웨어인 MS―DOS를 살펴보았다. 이번호에서는 지난호에서의 약속대로 프로그램 언어 소프트웨어에 대하여 알아보기로 하자.
목적에 따른 선택
컴퓨터는 원래 인간을 대신할 수 있는 기계를 목표로 만들어진 것이다. 그런데 사람이 만든 컴퓨터는 아직 스스로 생각 할 수 있는 능력이 없기 때문에, 무엇을 해야 하는지 또는 어떻게 해야 하는지에 대해서 사람으로부터 확실하고 분명한 명령을 받아야 한다. 이렇게 컴퓨터에게 명령을 내리는 단위를 프로그램(program)이라고 하고, 프로그램을 작성하는 행위를 프로그래밍(programming)이라고 한다. 그리고 프로그램을 작성하도록 도와주는 소프트웨어를 프로그램언어(program language) 소프트웨어라고 한다. 우리가 일반적으로 이야기하는 소프트웨어란 바로 프로그램 언어로 작성한 일련의 명령어 덩어리이다.
'언어'라는 단어가 암시하듯이 프로그램 언어란 사람과 컴퓨터 사이의 의사소통을 위한 도구이다. 사람이 사용하는 언어와 컴퓨터가 사용하는 언어가 다르기 때문에 프로그램 언어라는 통역사가 필요한 것이다. 사람이 사용하는 언어가 지역에 따라 다른 것처럼 컴퓨터와 사람을 이어주는 프로그램 언어도 짧은 역사에 비해서 매우 다양한 종류로 발달했다. 컴퓨터 사용자는 그의 국적에 의해서 프로그램 언어를 선택하는 것이 아니라 프로그램을 작성하는 목적에 따라 알맞는 프로그램 언어를 고르게 된다.
컴퓨터에서 사용할 수 있는 프로그램 언어의 종류나 그 발전사에 대해서는 뒤에서 간단하게 언급할 것이다. 프로그램언어의 다양한 종류와 의미를 알 수 없는 용도에 대해서 겁먹을 필요는 없다. 대부분의 컴퓨터 사용자들은 그중에서 자신에게 필요한 하나 혹은 둘 정도의 프로그램 언어만 알면 되기 때문이다.
꼭 배워야 하나?
지난호에서도 간단히 살펴 보았듯이 개인용 컴퓨터인 IBM PC의 소프트웨어 목록은 다양하다. 사무실에서 매우 필요한 각종 문서를 작성하는데 사용되는 워드프로세서(wordprocessor), 대량의 데이타를 사용자의 요구에 맞게 처리해주는 데이타베이스(database), 반복적인 계산을 간편하게 처리해주는 스프레드시트(spreadsheet)등과 같은 대표적인 업무용 소프트웨어 이외에도 기상천외한 종류의 소프트웨어들이 새롭게 등장하고 있다. 이러한 소프트웨어들은 개인용컴퓨터가 어떤 사람들의 책상위에서도 그 가치를 충분히 발휘할 수 있도록 하는데 결정적인 역할을 한다.
사실 개인용 컴퓨터가 일반 사람들에게 인기를 얻고 있는 것은 그들이 '프로그램'이라는 골치아픈 일을 생각하지 않아도 되기 때문이다. 미국의 이야기지만 역사적으로 보아도 상업적으로 성공한 개인용 컴퓨터의 뒤에는 항상 내조자 격인 소프트웨어가 존재했었다. 초창기의 개인용 컴퓨터(오퍼레이팅 시스팀으로 CP/M을 사용했다)들에게는 워드스타(wordstar)라는 유명한 워드프로세서 소프트웨어가 있었고, 애플Ⅱ는 비지칼크(Visicalc)라는 스프레드시트 소프트웨어와 디베이스(dBASEⅡ)라는 데이타베이스 소프트웨어가 받쳐주었다. 그리고 IBM PC에게도 로터스(Lotus 1-2-3)라는 스프레드시트 소프트웨어와 역시 디베이스(dBASEⅢ)라는 데이타베이스 소프트웨어의 도움이 컸다고 할 수 있다.
그렇다면 무엇때문에 프로그램 언어를 배워야 한단 말인가? 그것은 간단하다. 워드프로세서나 데이타베이스 소프트웨어와 같이 특정 용도에 맞추어 제작된 패키지(package) 소프트웨어들은 컴퓨터 사용자들의 요구를 완전하게 만족시킬 수 없기 때문이다. 아마도 사용자의 요구를 가장 잘 아는 것은 그 자신일 것이다. 그러므로 그 요구에 맞는 프로그램을 작성할 수 있는 사람도 그 자신인 셈이다.
물론 컴퓨터를 처음 사용하는 사람이나, 프로그램 언어를 배울만한 시간이 없는 사람은 프로그램 언어를 사용하여 자신이 필요로 하는 프로그램을 만드는것이 불가능하거나 가능하더라도 비능률적인 일이다. 이런 사용자들은 상업적으로 판매되는 패키지 소프트웨어를 사용하는 것으로 참는 것이 현명하다.
그러나 곧 프로그램 언어의 필요성을 느끼게 된다. 컴퓨터에 부착된 프린터를 원하는 상태로 세트하는 등의 자질구레한 일을 하는 것도 간단한 베이직 명령어 몇개를 모르면 불가능하기 때문이다. 더구나 최근에는 워드프로세서나 데이타베이스 등의 패키지 소프트웨어들도 프로그램 언어의 기능을 갖고 있는 것이 보통이다. 패키지 소프트웨어가 제공하는 프로그램 언어를 이해하고 사용하려면 프로그램 언어에 대한 기본적인 지식이 필요하다.
대표주자들의 모습
요즈음 개인용 컴퓨터의 소프트웨어가 놀랍게 발전하고 있다고는 하나, 그 근본은 대부분 대형 컴퓨터에서 먼저 사용되었거나 시도되었던 소프트웨어이다. 프로그램 언어에서도 이것은 마찬가지. 개인용 컴퓨터만을 위한 프로그램 언어 소프트웨어의 출현은 극히 최근의 일이다. 따라서' 정통적인 프로그램 언어들로 어떤 것들이 있는가?' 그리고 '어떤 용도로 사용되는가?'하는 정도는 개인용 컴퓨터 사용자들도 상식으로 알아두는 것이 바람직하다.
포트란(FORTRAN)
포트란은 상업적으로 성공한 최초의 프로그램 언어이다. 그 이름은 FORmulaTRANslation(수식변환)이란 영어단어에서 유래된 것이다. 이름이 의미하는 바와 같이 주목적인 계산인, 수학과 공학분야에 사용하기 위하여 개발된 포트란은 프로그램 언어의 대명사로서 대학 컴퓨터 강좌의 단골 손님이다. 포트란은 산술계산에서 강점을 갖고 있지만 대량의 데이타 처리를 필요로 하는 경우에는 적합하지 않은 언어이다. 요즘에는 개인용 컴퓨터에서도 사용할 수 있지만 개인용 컴퓨터에서 포트란 프로그램 언어를 사용하는 사람은 많지 않다.
코볼(COBOL)
포트란 프로그램 언어가 프로그램 언어가 과학계산용으로 성공을 거두자, 사무처리용프로그램 언어로 만들어진 것이 코볼이다. 코볼이란 이름은 Common Business Oriented Language에서 따온 것이다. 코볼은 사무처리에 강점을 갖고 있고 기존의 많은 프로그램들이 이미 코볼로 작성돼 있기 때문에 대형 컴퓨터에서는 지금까지도 그 위세를 떨치고 있다. 그러나 개인용 컴퓨터에서는 '장황한 문법구조와 느린속도'라는 코볼의 단점때문에 별로 인기가 없다.
알골(ALGOL)
알골은 포트란과 코볼과는 달리 유럽의 컴퓨터 과학자들이 주창하여 개발된 프로그램 언어이다. 그 이름이 유래된 단어 ALGOrithmic Language가 의미하는 바와 같이 실용적인 목적에 의해서 만들어진 것이 아니라 학문적인 이론을 적용시켜 설계된 것이다. 포트란이 IBM에 의해 채택되고, 코볼이 미국 국방부에 의해 지원을 받아 성공한 것과는 달리 알골은 널리 보급되지 못했다. 그러나 알골은 파스칼과 C언어에 큰 영향을 끼쳤다.
리스프(LISP)
리스프는 리스트 처리(LISt Processing)란 말에서 이름을 따온 프로그램 언어로서 포트란, 코볼, 알골 등의 프로그램 언어와는 전혀 다른 종류이다. 리스트란 데이타를 표현하는 일종의 구조인데 수학의 증명, 지식과 정보의 표현 등과 같은 일에 적당한 것이다. 특히 리스트 구조는 인공지능 분야에서 필수적인 데이타 구조이므로 리스프 프로그램 언어는 인공지능 분야에 널리 사용된다. 현재 IBM PC에서 가장 많이 사용되고 있는 리스프 프로그램 언어 소프트웨어는 Golden Common LISP이다.
PL/Ⅰ
PL/I을 피엘아이로 잘못 읽거나, PL/1으로 잘못쓰는 사람이 있지만 PL/I은 Programming Language number one의 약자이므로 반드시 PL/I으로 쓰고 피엘원으로 발음해야 한다. PL/I은 포트란, 코볼, 알골의 장점만을 취하여 과학적 응용과 사무처리에 모두 능한 프로그램 언어를 목표로 만들어진 것이다. 그 결과 프로그램 언어의 구조가 너무 복잡하게 되어 IBM 대형 기종에서나 완전한 PL/I 프로그램 언어 소프트웨어를 볼 수 있고, 배우기가 어렵다는 단점을 가지게 되었다.
베이직(BASIC)
베이직도 PL/I과 같이 포트란과 알골의 장점을 모아 만든 것이지만, 개인용 컴퓨터에서도 쉽게 구현될 수 있고 초보자도 쉽게 사용할 수 있도록 설계되었다는 점에서 관점이 다르다. 그 이름도 Beginner's All purpose Symbolic Instruction Code라는 뜻으로서 컴퓨터를 잘 모르는 인문과학의 학생들을 위해 만들어 진 것이다. 오늘날 베이직 프로그램 언어는 개인용 컴퓨터에서 가장 널리 사용되는 프로그램 언어이다. IBM PC에서 사용할 수 있는 베이직 프로그램 언어 소프트웨어도 MS BASIC, TRUE BASIC, BETTER BASIC, TURBO BASIC, QUICK BASIC 등 수없이 많다.
APL
APL은 기존의 프로그램 언어와는 크게 다른 언어로서, 수학적 연산 특히 벡터나 행렬 연산을 쉽게 처리하기 위해서 개발된 것이다. 따라서 일반 프로그램 언어들보다 훨씬 다양한 연산자와 암시적인 제어구조를 제공한다. APL은 이러한 특성을 가지고 있기 때문에 빠른 속도와 행렬 처리가 필수적인 통계학자들에게 인기가 있다. 그러나 APL프로그램 언어로 작성된 프로그램은 이해하기 어렵고, 에러가 발생한 경우 디버깅하기도 어렵다. APL이란 이름은 A Progrmming Language에서 유래되었다.
파스칼(PASCAL)
파스칼은 구조적 프로그램 언어의 대명사이다. 이 언어는 알골과 동일한 형태의 문법구조를 제공하되, PL/I과 같이 지나치게 다양한 기능은 제공하지 않는다. 이제 파스칼 프로그램 언어 소프트웨어가 존재하지 않는 컴퓨터란 있을 수 없으며, 대부분의 프로그램 방법을 설명하는 서적들이 파스칼을 이용하여 예를 들고 있다. IBM PC용 파스칼 프로그램 언어 소프트웨어로는 여러가지가 있지만, 파스칼을 일반 사용자들도 쉽게 사용할 수 있도록 공헌한 터보 파스칼(TURBO PASCAL)이 가장 많이 사용된다.
스몰토크(Smalltalk)
스몰토크는 미래의 고성능 소형 컴퓨터를 위해 개발된프로그램 언어인 Smalltalk-80을 모체로 하는 프로그램 언어이다. 이 프로그램 언어는 애플사의 매킨토시(Macintosh)와 고성능 워크스테이션(Workstation)과 같은 컴퓨터에 큰 영향을 끼쳤다. 스몰토크와 같은 프로그램 언어를 객체 지향적(object oriented)언어라고 하는데, 객체 지향적 언어는 프로그램 언어를 구조적으로 사용하는 개념을 도입하여 만들어진 것이다. IBM PC에도 Smalltalk V라는 프로그램 언어 소프트웨어가 있어 스몰토크를 사용할수 있다.
C
C 프로그램 언어는 유닉스(UNIX)운영체계와 밀접한 관련이 있는 언어로서 운영체계를 개발하기 위해 설계된 것이다. C 언어의 특징은 간결하면서도 효율이 좋다는 것과 이식성이 좋다는 것이다. 특히 이식성이 좋다는 점은 C 프로그램 언어의 큰 장점이다. C 언어로 작성한 프로그램은 유닉스 운영체계만 존재하는 곳이라면 어떤 컴퓨터에서라도 실행할 수 있기 때문이다. C 프로그램 언어의 뛰어난 이식성 때문에 개인용 컴퓨터에서도 C 언어는 각광받고 있는 언어이다. 최근에는 IBM PC에서 사용할 수 있는 C 프로그램 언어 소프트웨어도 폭발적으로 늘어나고 있다. 대표적인 것으로는 Lattice C, MS C, Quick C, Turbo C, Run―C 등이 있다.
포쓰(Forth)
포쓰도 C 프로그램 언어와 같이 고급언어이면서도 컴퓨터의 하드웨어를 조정할 수 있는 특성을 제공하는 프로그램 언어이다. 포쓰 프로그램 언어의 가장 큰 특징은 작성하고자 하는 프로그램에 맞게 포쓰를 재구성할 수 있다는 점이다. 즉 새로운 기능의 명령어들을 정의하여 라이브러리(library)라고 하는 형태로 저장하면 되므로 특수한 용도에 맞는 프로그램 언어를 구성할 수 있다. 거의 모든기종의 개인용 컴퓨터에서 포쓰 프로그램 언어를 사용할 수 있다.
(표1)은 지금까지 살펴본 대표적인 프로그램 언어의 출현 연대를 표시한 것이다. 이 표에서 언어의 출현 연대를 표시한 것이다. 이 표에서 볼 수 있듯이 프로그램언어는 포트란에서 출발하여 변혁을 거듭하며 발전해왔다. 컴퓨터 초보자의 입장에서 보면 이렇게 다양한 프로그램 언어의 존재는 혼란스럽게 느껴질지도 모른다. 30년전의 구식 프로그램 언어인 포트란과 코볼이 아직도 컴퓨터 프로그램 언어의 대명사로 인정되고 있고, 각종 컴퓨터 서적은 구조적 프로그램 언어라는 이유로 파스칼을 선호하며, 대부분의 개인용 컴퓨터 사용자들은 베이직을 널리 사용한다.
또한 전문 프로그래머들은 빠른 속도를 얻기 위해서 어셈블리 프로그램 언어를 사용하거나, 프로그램의 이식성을 높이기 위하여 C 언어를 선호한다. 그리고 간혹 들을 수 있는 인공지능 언어나 객체지향적 언어에 이르면 머리가 어지러울 지경이다. 과연 어떤 프로그램 언어를 선택해야 할 것인가?
오늘날 개인용 컴퓨터 사용자들은 행복한 고민을 해야 한다. 그들이 선택할수 있는 프로그램 언어가 수십종이 되기 때문이다. 그러나 조금만 생각해보면 선택의 범위를 몇개의 프로그램 언어로 줄일 수 있다. 여기에서는 프로그램 언어를 선택하는 사람의 입장을 몇가지로 나누어 생각해 보기로 하자.
프로그램 초보자
이들에게는 프로그램 언어의 개념을 쉽게 배우고 실행해볼 수 있는 프로그램 언어가 좋다. 그리고 쉽게 설명되어 있는 매뉴얼이나 관련서적이 많이 나와 있으며, 컴퓨터 관련 잡지에 프로그래밍 테크닉이나 프로그램이 소개되는 프로그램 언어를 선택하는 것이 최상이다.
개인용 컴퓨터에서 이런 프로그램 언어를 고른다면 베이직이 될 것이다. 요즘에는 베이직 프로그램 언어 소프트웨어도 여러가지 종류가 준비되어 있지만, 초보자들에게 가장 적당한 것은 프로그램을 작성하여 바로 실행시켜 볼 수 있는 인터프리터형 베이직이다. IBM CP에서는 도스 디스켓에 BASIC나 GWBASIC이라는 이름의 베이직 프로그램 언어 소프트웨어가 준비되어 있다.
업무용 프로그램 개발자
업무용 프로그램의 대부분은 대량의 데이타를 관리해야 한다. 오늘날의 프로그램 언어들은 파일을 처리하는 막강한 기능들을 제공하지만 데이타베이스를 운용하는 기능들은 프로그래머에게 일임하고 있다. 업무용 프로그램 개발자가 데이타베이스를 관리하는 부분까지 프로그래밍 한다는 것은 무리이기 때문에, 요즘에는 프로그램 언어의 기능을 제공하는 데이타베이스 패키지로 업무용 프로그램을 작성하는 경우가 많다.
IBM PC에서는 dBASEⅢ 혹은 dBASEⅢ+(디베이스 쓰리 혹은 디베이스쓰리플러스라고 부른다)라고 하는 데이타베이스가 이런 용도로 사용된다. 디베이스가 제공하는 프로그램 언어는 파스칼과 베이직을 합친 것과 비슷한데, 파일에 저장한 데이타를 소트(sort)하거나 검색하는 등의 데이타베이스 기능을 제공하다.
프로그램 개발 사용자
프로그램 언어를 배우는 학생이나, 패키지가 제공하는 기능에 만족하지 못하고 자신이 직접 필요한 프로그램을 개발하여 사용하려는 사람들도 있다. 학생들의 경우에는 구조적 프로그래밍의 개념을 확실하게 잡을 수 있는 파스칼이 적당하지 않을까 싶다. 프로그래밍의 원리나 테크닉을 설명하는 서적들이 파스칼을 예제 프로그램의 프로그램 언어로 사용하기 때문이다. IBM PC에서는 터보 파스칼이 최근에 버전 4.0까지 개발되어 매우 편리하게 파스칼을 사용할 수 있다.
자신이 필요한 프로그램을 작성하는 경우에는 필요에 따라 적합한 프로그램 언어를 선택하는데, 개인용 컴퓨터에서는 이때에도 베이직 프로그램 언어를 추천할만 하다. 최근의 개인용 컴퓨터용 베이직 프로그램 언어 소프트웨어의 발전은 눈부시기 때문이다. IBM PC에서 TURBO BASIC 1.0이나 QUICK BASIC 4.0이 최신 베이직인데, 이것들은 이미 과거의 베이직이 아니라 거의 파스칼에 가깝다.
프로그램 개발 전문가
시스팀 프로그램을 전문적으로 개발하거나 상업적으로 판매할 소프웨어를 개발하는 프로그래머는 그 목적에 따라 다양한 프로그램 언어를 사용한다. 보통 하드웨어를 조정하는 작업이 필수적이므로 어셈블리 언어는 기본적으로 알아야 하며, C언어를 주로 사용한다. 경우에 따라서는 몇가지 다른 프로그램 언어를 사용하여 프로그램을 작성한 다음 연결시키기도 한다.
아마도 이 글을 읽는 독자는 외국어를 배워본 경험이 있을 것이다. 그리고 그것이 그렇게 쉽지 않다는 것도 잘 알고 있으리라 생각한다. 컴퓨터의 프로그램 언어를 배운다는 것도 외국어를 배우는것만큼이나 쉬운 일이 아니다. 새로운 개념을 이해해야 하고, 또 많이 사용해보아야 한다. 그러기 위해서는 많은 시간과 노력을 바쳐야 한다.
그럴만한 시간이 없거나 필요가 없는 사람은 프로그램 언어를 배우려고 애를 쓰지 말고 다른 해결책을 찾는 것이 좋다. 예를들면 상업적으로 판매되는 패키지 소프트웨어을 이용하여 문제를 해결하거나, 다른 사람에게 일임하는 것이다. 앞에서도 이야기했듯이 업무용 프로그램을 작성하는 경우, 프로그램 언어기능이 제공되는 패키지 소프트웨어를 이용하는 경향이 늘고 있는 것도 이러한 판단에 의해서이다.
프로그램 언어를 꼭 배워야 한다면 어떻게 해야 할 것인가? 우선 작성하려고 하는 프로그램을 파악하여 어떤 프로그램 언어를 사용할 것인가를 결정해야 한다. 일단 하나의 언어를 배우면 외국어를 배우기 어려운 것과 같이 프로그램 언어도 한번 배워 익숙해지면 다른 프로그램 언어를 배운다는 것이 쉽지 않다. 따라서 이미 프로그램 언어를 알고 있다면 가능한 그 프로그램 언어를 사용하여 원하는 프로그램을 작성할 수 있는 것이 효율적이다. 처리하고자 하는 작업이 특정 프로그램 언어를 꼭 필요로 하는 경우에는 부득이 새로이 외국어를 배우는 결심을 해야 하겠지만.
프로그램 언어를 결정한 경우에도 어떤 소프트웨어를 선택하느냐는 문제가 남아있다. 초보자들은 이 점에 혼동이 없기 바란다. 예를 들어 같은 베이직 언어라고 하더라도 사용하는 컴퓨터에 따라 또는 어떤 베이직 프로그램 소프트웨어를 사용하는 가에 따라 다른 선택을 할 수 있다. IBM PC의 경우를 예를 들면 베이직 언어를 배울 결심을 한 사용자는 BASICA, GWBASIC, TURBO BA-SIC, QUICK BASIC 등과 같은 여러가지 프로그램 언어 소프트웨어중 하나를 골라야 한다. 이들은 베이직 언어라는 점에서는 같다. 즉 베이직 언어의 기본적인 문법구조에 있어서는 거의 비슷한 형태를 가진다. 그러나 프로그램을 작성하고 실행하는 환경이나, 프로그램 언어가 제공하는 부가적인 기능들에 있어서는 큰 차이를 보인다.
그렇다면 어떤 기준으로 여러가지 프로그램 언어 소프트웨어중 하나를 고를것인가?
특별한 비결이 있는 것은 아니다. 잘 알만한 사람에게 물어보거나 컴퓨터 잡지 등과 같은 정보원을 이용하면 된다. 아무리 기능이 좋다고 하더라도 참고서적도 별로 없고, 그 프로그램 언어로 작성한 프로그램 리스트를 구해 볼 수 없는 프로그램 언어 소프트웨어는 선택하지 않는 것이 바람직하다.
새로운 언어를 배우려면
만약 여러분이 새로운 프로그램 언어를 배워야 한다면 국민학교때의 국어 교과서를 생각해보라. 언어는 문법을 배운다고 터득되는 것이 아니다. 프로그램 언어에서도 이 원칙은 같다. 프로그램 언어의 참고 매뉴얼을 읽는다고 그 프로그램 언어로 프로그램을 작성할 수 있는 것은 아니다. 우선 그 프로그램 언어를 사용하여 작성한 프로그램의 리스트를 많이 보아야 한다. '모방은 창조의 어머니'라는 격언은 이제 막 프로그래머로서의 긴 여정에 오른 사람을 위한 금과 옥조이다.
프로그램 언어의 문법을 약간 공부하고, 다른 사람이 여러가지 고생을 한 끝에 작성한 프로그램 리스트를 보면서 프로그래밍의 감각을 익힌 다음, 작지만 필요한 프로그램을 스스로의 힘으로 작성하는 경험이 필요하다. 처음부터 큰 프로그램을 작성하려고 하면 좌절감만 얻기 십상이다. 이러한 과정에서 같은 프로그램 언어를 사용하는 사람과 정보를 교환할 수 있다면 매우 큰 도움이 된다.
처음에 프로그램을 작성하여 실행시켜보면 분명히 실행되지 않고 에러 메시지만을 볼 수 있을 것이다. 이 단계에서는 '모든 프로그램에는 반드시 에러가 있다' 혹은 '프로그래밍은 에러를 제거하는 작업이다'라는 선배 프로그래머들의 이야기가 도움이 된다. 에러를 찾아내고 고치는 과정을 통해서 책에는 나와있지 않은 많은 것을 배우게 되고, 어느정도 큰 프로그램을 완성하게 될 때 비로소 '프로그램을 작성한다는 것은 이런것이구나'하는 성취감을 맛볼 수 있다.