BASIC

SHOW ME THE MONEY 4 우승자에 대해서는 베이식 문서를 참조하십시오.

10 PRINT "Hello, World!"
20 END

1 개요

Beginner's All-purpose Symbolic Instruction Code
(초보자용 다목적 기호명령 코드)

프로그래밍 언어 중 하나로 간단하고 배우기 쉽기로 유명하다. 한국에서는 보통 베이'직'으로 읽는다. DOS와 함께 컴퓨터 한번 만져본 1970~80년대생이라면 추억할 수 있는 프로그래밍 언어.

1963년 다트머스 대학교의 존 케메니(John Kemeny)와 토머스 커츠(Thomas Kurtz)가 개발하였다. 본래는 대화형 메인프레임 시분할 언어로 설계되었으며, 퍼스널 컴퓨터에 채용됨으로써 유명해졌다. 간단한 영어의 어구를 기반으로 한 명령이 쓰이므로[1] 쉽게 배울 수 있다는 장점이 있으며, 이 때문에 요즘에는 대부분 처음부터 C언어Java로 시작해서 의미가 퇴색했지만 교육용으로 널리 사용된다. 아는 사람이 드물지만 마이크로소프트에서는 윈도우 XP까지도 베이식을 기본으로 포함해서 번들 제공하고 있었다(QBASIC).

처음 베이식이 등장하였을 당시 빠르게 배울 수 있으며, 기존의 베이식 프로그램 문장들을 다른 프로그래머들도 쉽게 이해할 수 있고, 대부분의 운영체계에서 지원이 가능하다는 장점으로 인해 널리 퍼져나갔다.

8비트 시절 대부분의 PC에 롬내장 방식으로 들어가 있었다. 애플2의 경우 나중에 롬에 포함시켰다.[2] IBM의 퍼스널 컴퓨터인 PC 주니어에 베이식 언어를 추가하기 위한 카트리지는 1980년대 당시에 꽤나 인기있는 품목이었다고 한다. 마찬가지로 후에는 번들로 롬에 포함되었다. 간단한 시스템 제어 명령어도 있어서 나름대로 OS로 쓰이기도 했다. 당시만 해도 OS=파일 읽을 수 있고 파일 쓸 수 있고 프로그램 실행할 수 있으면 충분 이라는 개념이었기 때문. 사실 그 이상의 기능이 필요하지도 않았다.

〈울티마1〉[3]이나 MSX의 〈삼국지 1〉, 〈대전략〉[4] 등은 베이식으로 코딩한 게임들. 어떤 의미로는 오히려 고수일 수도...

지금은 퍼스널 컴퓨터="인터넷 기계"라는 것이 일반인의 인식이고 1990년대 중반까지는 PC(퍼스널 컴퓨터)=게임기, 아래아한글 워드프로세서 또는 PC 통신용 터미널이라는 느낌이었지만, 80년대 초반에는 퍼스컴(퍼스널 컴퓨터)=베이식으로 프로그램 짜는 기계라 인식될 정도로 베이식의 입지는 강력했다. 당시 국내에서 판매되던 SPC-1000, FC-100(금성 패미컴, MSX, 애플 II 등의 컴퓨터 중 롬에 베이식이 기본 탑재되지 않은 기계는 없을 정도였다.

재미있는 사실은 초기 IBM PC(호환기종 포함)에서 NO ROM BASIC SYSTEM HALTED이라는 에러 메세지가 존재 했었는데, 원인은 하드 내 파티션에 부트 영역이 존재하지 않거나 해서 도스를 부팅할 수 없을 때 나타나는 것이었다. 원래 오리지널 IBM PC와 XT(일부 호환기종 포함)는 ROM-BASIC이라고 베이식 프로그램을 내장하고 있었고, 만약 외부 기억장치(플로피나 하드)로 부트에 실패할 경우 베이식 인터프리터 모드로 들어가게 되어 있었다.[5] 하지만 시간이 갈수록 별 필요 없는 ROM-BASIC을 뺀 경우가 많아졌기 때문에, 이 메세지를 토해내게 된 것이다. 별 거 아니니 그냥 fdisk로 부트 영역을 재조정 해주거나 도스 디스켓을 넣으면 해결되었던 문제. 나중 시스템은 베이식을 추가할 수 없기 때문에(할 일도 없지만) 그냥 운영체제가 없다는 메시지만 나온다. 덤으로 롬에 저장된 베이식 인터프리터를 호출하는 BASIC.COM과 BASICA.COM(GWBASIC.EXE는 해당 안 된다!)을 써 본 적이 있다면 올드 프로그래머.

단점으로는 인터프리터 방식이 가지는 한계, 즉 처리속도가 느리다는 점을 들 수 있지만 대신 프로그램의 수정이 간단하고 외부기억장치를 필요로 하지 않는 고로 작은 시스템으로도 이용할 수 있다는 특징을 지닌다. 전용 컴파일러도 있기에 프로그램을 다 만들었다면 그냥 컴파일해서 써도 되며, 실제로도 베이식 컴파일러가 많이 나와 있다.

MSX 베이식, GW 베이식, 퀵 베이식, 큐베이식, 비주얼 베이식 등의 다양한 종류가 존재하며 서로 문법도 많이 차이가 난다. 서로 다른 종류 사이의 소스 코드는 거의 호환되지 않는다.

마이크로소프트빌 게이츠가 본격적으로 유명해진 계기도 당시 PC 중 하나인 알테어용 베이식 인터프리터를 만들면서였다. 알테어 광고를 보고 친구인 폴 앨런과 함께 무작정 베이식을 팔겠다고(만들기 시작하지도 않은 상태에서) 납품제의를 했다. 승낙 후 광속의 개발을 거쳐 완성품 천공카드 묶음을 들고 본사로 가는 비행기에 탄 뒤에야 언어는 만들었는데 자신들이 만든 언어 매뉴얼을 작성해놓지 않았다는 것을 기억하고 비행기 내에서 부랴부라 매뉴얼을 작성한 마감지옥 이야기는 꽤 유명하다. 덤으로 약간의 디버깅도 했다고... 천공카드라 가능했던 일화. 빌 게이츠가 소프트웨어 장사를 해야겠다고 마음먹게 된 본격적인 시작도 이것. 당시 소프트웨어 저작권의 개념 자체가 없던 시절이라 매장에서 천공카드를 복사기로 무한정 복사해가는 일이 흔했는데, '이런 행동은 절도나 다름없다'고 정면으로 광고를 처음 실었던[6] 빌 게이츠는 당시 상당한 이야깃거리가 되었다. 하지만 당시만 해도 소프트웨어는 기업체에 납품하는 것이 기본이라 복제 배포라는 개념 자체가 거의 없었고 거의 씹혔다.[7]

본격 사업가의 길을 걸은 한참 후에도 당시 만들었던 베이식 인터프리터의 소스를 거의 그대로 기억하고 있었다고. 애플의 번들 소프트였던 애플소프트 베이식도 빌 게이츠의 작품이며, MSX의 베이식도 직접 개발했다. 실제로 마이크로소프트는 베이식 언어에 대해 상당한 애정과 집착(?)을 가지고 있다. 사멸할 것이 뻔하던 베이식 언어를 비주얼 베이식이라는 걸출한 물건으로 부활시킨 뒤, 이 비주얼 베이식을 엑셀에 맞게 포팅하여 Visual Basic for Application이라는 이름으로 집어넣어놨다. 이 비주얼 베이식의 문법을 활용한 윈도우용 스크립트인 VBScript를 개발, 윈도우 뿐만 아니라 웹의 클라이언트 사이드 스크립트와 서버 사이드 스크립트로도 활용을 시도했다. 클라이언트 사이드 스크립트는 JavaScript와의 경쟁에서 패배, 거의 사용되지 않지만[8], ASP 등 서버 사이드 스크립트는 잘 사용되고 있다.

요즘에는 smallBasic이라는 교육용 베이식 언어(그러나 닷넷의 스멜이 짙어서 별로 베이식 언어답지는 않다)까지 내놓은 상태. Visual Basic.NET은 클래스, 인터페이스 등 표준에는 없는 걸 대량으로 추가한 탓에 '베이식'이라 부르기도 애매해졌다.

현재는 다수의 소규모 개발사에서 개량형 버전을 내놓아 초보자들을 위한 개발 언어 및 교육용 언어로 나름대로 각광받고 있다. <pureBasic>, <PowerBasic>, <DarkBasic>, <BlitzBasic> 등 오픈 소스 프로젝트까지 하면 종류가 엄청 많다. 게임 개발에 도전해보고 싶다면 입문 언어로 익히는 것도 좋을 듯. 다만 각자의 방식대로 OOP개념 등을 추가한 탓에 문법이 각자 다르다. 게다가 언어 자체에 버그가 상당히 창궐해서 어느 이상 복잡한 프로그램을 만들려고 들면 꼭 골치아픈 상황을 맞닥뜨리게 된다.

여담으로, 베이'직'이라고 읽는 경우가 많은데 실제 영어발음으로도, 외래어 표기법으로도 베이식이 올바른 표현이다. 하지만 베이식이라고 읽는 사람은 아무도 없다(...).

2 방식

방식은 시대에 따라 3가지로 나뉘었다.

2.1 초기 방식

초기에는 실행하자마자 아무 것도 없는 화면에 몇 줄 소개만 달랑 보여주고 맨 아랫줄에는 Fn 키에 따른 명령어(해당 키를 누르면 자동입력)가 있다. 이 기능이 없는 기종도 있으며, Fn 키에 할당하는 명령어를 바꿀 수 있는 기종도 있었다. 텅 빈 화면에 한 줄 코드를 입력하고 엔터를 누르면 그 코드에 따른 프로그램이 실행된다. 여러 줄로 된 프로그램을 만드려면 앞에 줄 번호 쓰고 코드를 쓴 뒤에 RUN 치면 줄 번호 순으로 코드가 실행된다. 그리고 그 줄 번호는 분기나 반복을 위해서도(GOTO 줄 번호) 쓰인다. 줄 번호 지정은 간격을 두고(대개는 10 단위) 하는 게 일반적이다. 그 이유는 나중에 코드를 추가하기 용이하도록 하기 위한 것이라고 한다. 이미 만들어진 프로그램의 코드도 수정 가능한데, 아래와 같다.

  • 특정 줄을 바꾸려면: 바꾸려는 줄 번호를 쓰고 그 줄의 코드를 새로 작성한다. 친절하게도, 대부분은 커서를 위아래로 올리는 것이 가능해 실수로 엔터를 쳐 버렸다 할 지라도 즉시 커서를 위로 올려서 올바른 코드로 교정한 후 다시 엔터를 치면 고쳐진다.
  • 줄을 추가하려면: 추가될 줄에 맞는 번호를 쓰고(예를 들어 40번 줄과 50번 줄 사이에 추가하려면 41번~49번 중 아무거나 고르면 됨) 코드를 작성하면 된다.
  • 줄을 삭제하려면: DELETE 문에 삭제할 줄의 범위를 지정한다. 그냥 한 줄만 삭제하려면 그 줄의 번호만 쓰고 바로 엔터를 쳐도 된다.
  • 이런 식으로 수정을 계속 하다 보면 줄 번호가 어수선해지는 것은 당연지사. 이럴 땐 RENUM만 때려 주면 자동으로 해결된다. 하지만 애플 II의 애플소프트 베이식에는 이 기능이 없었다. 빌 게이츠가 짜준건데도? 별도의 소프트웨어로 구현해야 했다.
사실상 이 시대가 PC에서 베이식 언어가 폭넓게 사용되던 시기여서 올드 8비트 팬들은 베이식 하면 이것만을 생각하기도 한다.
  • 이 줄 번호는 무한정 쓸 수 있는 것이 아니고 제한이 있었다. 베이식 버전마다 조금씩 달랐지만, GW-BASIC 기준으로 0부터 65535까지 쓸 수 있었다. 즉 65536줄을 넘는 프로그램은 불가능하다는 이야기다.

2.2 구조적 프로그래밍 방식

퀵 베이식이 여기에 해당한다. 시종일관 코드로 모든 작업을 해야 했던 방식에서 벗어나 메모장처럼 코드를 작성하는 자체 인터페이스를 제공하였다. 이로써 줄 번호를 써가며 코딩하던 방식은 사라졌다. 그래도 초기의 방식대로 줄 번호를 매긴 코드라 할 지라도 잘 돌아간다. 다만, 학습 등의 목적이 아니면 일부러 줄 번호를 일일이 매기지는 않는다. 그리고 번호 다시 매기기도 귀찮다. 따라서 RENUM 명령은 사라졌다. 이에 따라 LOAD, SAVE, LIST 등의 명령어도 사라지게 되었다. (기존의 줄번호 없이 바로 실행되던 한줄코딩은 실행창을 따로 두어서 지원하게 되었다.) 뿐만 아니라, 이때부터 베이식 언어도 발전을 하며 더 많은 명령어를 지원하는 등 많이 진보된 모습을 보여서 더 고급스러운(?) 프로그래밍이 가능해졌다. 다만 초보자 입장에서는 들여쓰기 문제때문에 골치아플수도 있겠다.
카세트 테이프에 대한 지원도 이 때쯤부터 중단되었다. 이미 훨씬 진보된 저장매체들로 대체된 지 오래고, 음원 저장용 카세트도 이미 사양길에 접어들고 있는 마당에 필요없다. 그런데 이 시대쯤 되면 8비트의 시대는 가고 IBM PC 및 호환기종이 대세를 이루며 PC에서도 다양한 언어[9]를 사용하던 때라서 베이식의 시대는 저물고 있었다. 베이식으로 출발한 마이크로소프트라서 끝까지 베이식을 민다?[10]

2.3 객체 지향 방식

기본적으로 퀵 베이식의 구조적 프로그래밍 방식에 객체 지향 개념을 가미한 것으로 비주얼 베이식에서 사용하고 있다. 이 때부터 베이식의 예전 문법이 퇴색되기 시작하였고, 특히 Visual Basic.NET은 퇴색에 정점을 찍고 있다. 그러나 비주얼 베이식 6.0에서 가지쳐서 나온 비주얼 베이식 포 어플리케이션(Visual Basic for Application, 일명 VBA)은 상당히 많이 쓰인다. MS 오피스와 결합된 VBA는 대단히 활용도가 높다.

3 소프트웨어 목록

3.1 마이크로소프트

  • Microsoft BASIC : 1975년 알테어용으로 등장한 베이식 인터프리터이자 마이크로소프트의 첫 창립제품.
  • Microsoft Commodore BASIC : 코모도어 64용으로 나온 베이식 인터프리터.
  • Microsoft Applesoft BASIC : 애플 II 컴퓨터에 내장된 베이식 인터프리터.
  • Microsft MSX BASIC : MSX용.[11]
  • Microsoft ##-BASIC : 70~80년대 한국 및 일본에서 만들어진 거의 대부분의 PC에 기본적으로 탑재된 베이식 인터프리터. ## 부분에 자사 기종의 이니셜이 들어간다.[12] 보통은 Goldstar GS-BASIC 같이 제조사명과 베이식 명칭으로만 표시하나 그 다음줄에 (c) Microsoft라는 문구가 있어서 마이크로소프트의 제품임을 알 수 있다.
  • Microsoft GW-BASIC : 마이크로소프트에서 컴팩용으로 발매한 베이식이었으나 IBM PC와 호환성이 있어 나중에 MS-DOS에 기본으로 포함되었던 인터프리터. 80년대 말~90년대 초 당시 베이식하면 대부분 GW-BASIC을 가리키는것이었다. 베이식 소프트웨어중 제일 인지도가 높았었다.
  • Microsoft Quick BASIC(퀵베이식) : MS-DOS 환경에 최적화된 베이식 소프트웨어. .EXE 실행파일로 배포할수 있는 컴파일러가 포함되어 있다. 흔히 줄여서 QB, 혹은 큐베이식이라고 하지만 밑의 큐베이식과는 차이가 있다.
  • Microsoft QBasic(큐베이식) : MS-DOS 버전 5.0 이후부터 GW-BASIC을 대신하게된 베이식 소프트웨어. 기존 GW-BASIC과는 다르게 구조적 프로그래밍 언어이고, 퀵베이식과는 다르게 컴파일러가 없었다. 특이하게도 MS-DOS가 더 이상 개발되지 않은 이후에도 윈도우즈에 꼬박꼬박 포함되어 있었다(...) 윈도우 XP까지는 실행창에 Qbasic.exe를 치면 큐베이식을 실행할 수 있다. 큐베이식으로 만들어진 대표적인 게임으로 고릴라와 Nibbles가 있다. 1987-1993 이라고 실행시 뜬다.
  • Microsoft Visual Basic(비주얼 베이직) : 마이크로소프트의 비주얼 스튜디오 제품군 중 하나. 사건 기반 프로그래밍 툴로, 윈도우즈 환경에 최적화된 소프트웨어를 만드는 통합 개발 환경 소프트웨어이다. 자세한 설명은 항목 참조. 비주얼 베이직도 VB 6.0과 VB.NET 으로 나뉘어지는데 일반적으로 VB라고 하면 VB 6.0을 말하나 MS사에서는 VB 6.0과 그 후에 나온 VB.NET 을 구분하지 않고 그냥 VB(Visual Basic)으로 부른다.
  • Microsoft Visual Basic .NET(비주얼 베이식 닷넷) : 비주얼 베이식에서 한단계 앞서간 객체 지향 프로그래밍 툴.

3.2 기타

  • 볼랜드 터보 베이식(Borland Turbo-BASIC)
  • 리얼 소프트웨어사의 리얼베이식(REALBasic)
  • 트루베이식사의 트루 베이식, 다크 베이식, 퓨처 베이식, 프리 베이식
  • 삼선소프트의 한글 베이식, qb64 : 최초로 한글화 시킨 프로그래밍 언어. 도스 환경에서 실행되고, 조합형 한글을 지원한다.
  • 허드슨의 Hu-Basic. SPC-1000에 탑재되었던 베이식이라 초창기 컴퓨터 키드들은 이걸로 프로그래밍에 입문한 경우가 많았다(SPC-1000이 학교 납품률이 높았으므로). Hu는 물론 허드슨을 뜻하는데 당시 삼성의 어떤 양반들은 농담으로 이걸 human이라고 주장하기도 했다.
  • 닌텐도(!!!), 샤프, 허드슨 합작의 패밀리 베이직(ファミリーベーシック, Family BASIC). 패미컴의 주변기기로, 키보드와 전용 카트리지가 있었다.

4 코드 예제

프로그래밍 언어/코드 예제에서 볼 수 있다.
  1. 이 점은 코볼 도 비슷하지만, 프로그램이 복잡해질수록 코드 길이가 상당히 길어지는 코볼과는 달리 이쪽은 C언어 와 거의 비슷한 수준.
  2. 빌게이츠가 만든 걸로도 유명한 애플소프트 베이식.
  3. 그래픽 타일은 어셈블리어로 작성.
  4. 그래픽 처리는 기계어
  5. MS가 만든 MSX BASIC 도 같은 방식으로 부팅한다.
  6. '취미가들에게 보내는 공개 편지'라는 이름으로 발표하였다.
  7. PC가 등장하기 전인 1970년대 중반까지만 해도 컴퓨터는 매우 비싼 기계였고 소프트웨어는 기계 사면 딸려서 오는 것과 같은 개념이였다. 쉽게 말하자면 모든 소프트웨어가 지금의 컴퓨터 사면 같이 따라오는 CD 같은 입장이였다고 보면 된다.
  8. 표준으로 지정된 ECMAScript는 JavaScript가 기본 베이스이다.
  9. C 언어 등
  10. 퀵 베이식 시절부터 마이크로소프트사를 제외하고는 베이식을 지원하는 경우가 줄어들었다. 아래 객체 지향 방식 또한 베이식이라는 것을 살리면서 Java에 대항하기 위해 마이크로소프트사에서 만들었다.
  11. Z80 CPU용인 데다 MS가 손댄 것들이라 MSX용 DOS, 시스템 콜, BASIC, 어셈블리어와 기계어를 배운 사람은 8086 머신의 대응하는 내용을 배울 때 비교적 쉽게 적응할 수 있었다.
  12. 단, 삼성 SPC-1000의 경우는 Hu-BASIC이라고 하는데 일본의 허드슨사에서 손을 본 물건이기 때문. 물론 원 저작자는 MS다.