[연재] 프로그래밍 언어 이야기 1 - 베이직
"프로그래밍 언어 이야기" 연재
- 프로그래밍 언어 이야기, 연재를 시작하며
- 프로그래밍 언어 이야기 1 - 베이직
- 프로그래밍 언어 이야기 2 - 파스칼
- 프로그래밍 언어 이야기 3 - C 언어
-----
1989년, 그러니까 지금으로부터 정확히 20년 전이다. 동네에 컴퓨터 학원이 처음으로 문을 열었고, 나는 그곳에서 베이직(BASIC)을 처음 접했다. 개인용 컴퓨터는 아직 8비트 컴퓨터가 주류였고, 최소한의 컴퓨팅 자원을 필요로하는 베이직이 널리 사용되던 시기였다. 당시의 내 컴퓨터는 애플 IIe였는데, 메모리 용량이 아마 64KB였을 것이다.
베이직의 가장 큰 특징은 행번호였다. 프로그래머가 소스코드를 작성하면서 행마다 직접 번호를 매겨줘야 했다. 행번호가 필요했던 이유 중 하나는 텍스트 편집기가 없어서 코드를 수정할 일이 생기면 특정 행을 새로 입력해야 했기 때문이다.
] 10 PRINT "HELLO, WORLD" ] 20 END ] LIST 10 PRINT "HELLO, WORLD" 20 END ] 10 PRINT "HELLO, DAESAN" ] LIST 10 PRINT "HELLO, DAESAN" 20 END ] RUN HELLO, DAESAN
당시 학원에서는 순서도(Flow Chart) 그리는걸 가르쳤는데, 소스코드 수정이 쉽지 않으니까 처음부터 설계를 잘하라는 의미였던 듯 하다. ㅎ
행번호로는 아무 숫자(정수)나 사용할 수 있는데, 보통 10 단위로 사용하는게 관례였다. 만약 나중에 새로운 코드를 추가하려면 여유치가 필요했기 때문이다. 행번호가 필요한 또다른 이유는 GOTO 문 때문이었다.
10 INPUT "ENTER A NUMBER", N 20 IF N = 1 THEN GOTO 40 30 IF N = 2 THEN GOTO 60 40 PRINT "YOU HAVE ENTERED ONE" 50 GOTO 70 60 PRINT "YOU HAVE ENTERED TWO" 70 END
위와 같이 GOTO 문에 의존해서 프로그램의 실행 플로우를 제어하는 프로그래밍 패러다임을 "비구조적 프로그래밍"이라 부른다. 프로그래밍의 초창기에는 프로그래밍 언어가 GOTO 문을 지원하는 것이 옳으냐 그르냐를 가지고 적지 않은 논쟁이 있었다고 한다. 이 논쟁에 종지부를 찍은 것이 그 유명한 에츠허르 데이크스트라의 "위험한 GOTO 문(Go To Statement Considered Harmful)" 에세이이다.
베이직은 GOTO 문과 같이 거의 어셈블리어 수준의 로우레벨적인 특성과 초보자도 익힐 수 있는 하이레벨 언어의 모습을 동시에 가진 프로그래밍 언어였다. 어찌됐든 잘 설계된 언어는 아니었고 베이직에 노출된 프로그래머는 뇌가 영영 망가진다는 악담도 있었다. 다행히 이름이 "초보"를 연상시키는 베이직(BASIC)라서 마초 성향이 강한 프로그래머들로서는 처음 프로그래밍을 배울때 한 번 거쳐가는 언어인 경우가 많았다.
베이직은 이후에 텍스트 편집기 기능을 지원하는 GW 베이직, 객체지향 프로그래밍을 지원하는 리얼 베이직, GUI 프로그래밍을 지원하는 비주얼 베이직 등으로 발전하게 된다.

goto 40 --> 이거 보다보니 생각남 :-0
저는 QuickBasic이 생각나네요...
@LiFiDeA: 그러게 베이직도 참 종류가 많아. 고등학교때 학교 컴퓨터에 QBasic이 깔려있었는데, 원래 베이직과는 신택스 차이가 많이 나더라구.
피부미인님 반갑습니다.