다른 뜻에 대한 내용은 베이식 문서 참고하십시오.
#!syntax basic
PRINT "Hello, World!"
1. 개요
Beginner's All-purpose Symbolic Instruction Code(초보자용 다목적 기호명령 코드)[1]
프로그래밍 언어 중 하나로 간단하고 배우기 쉬운 언어로 잘 알려져 있다. 소싯적에 컴퓨터 좀 만져본 1970~80년대생이라면 추억하는 이가 많은 프로그래밍 언어.
한국에서는 많은 이들이 명칭을 “베이직”으로 잘못 알고 있기도 하다(올바른 발음은 [ˈbeɪsɪk](베이식)). 외래어 표기법에 따른 표기법도 베이식이며 영어권 국가들 중 어느 나라에서도 basic을 베이직으로 발음하지 않는다. 일본인들조차 ベーシック(베이식쿠)라고 발음한다. 그러나 이 프로그래밍 언어는 1980년대에 국내에 처음 소개될 때부터 잘못된 발음(베이직)으로 불렸으며 아예 교본 등 출판물에까지 베이직으로 표기되어 있었다. 수많은 한국인들이 basic이란 단어를 베이직으로 잘못 발음하게 만든 주범이 바로 BASIC이다.[2]
1963년 다트머스 대학교의 존 케메니(John Kemeny)와 토머스 커츠(Thomas Kurtz)가 개발한 꽤 유서깊은 언어이다. 본래는 대화형 메인프레임을 위한 시분할 언어로 설계되었으며, 이후 퍼스널 컴퓨터에 채용됨으로써 널리 사용되는 언어가 되었다. 간단한 영어의 어구를 기반으로 한 명령이 쓰이므로[3] 쉽게 배울 수 있다는 장점이 있으며, 이 때문에
일반적으로 사용하는 쉬운 영어 단어들을 주요 문법으로 사용하고 있어서 배우기 쉽고 직관적이다. 따라서 프로그램 제작이 아주 쉽다는 장점이 있다. 상용 소프트웨어 시장이 너무나 작았던 퍼스널 컴퓨터 초창기(1970~1980년대), 많은 사용자들이 스스로 필요한 프로그램을 만들어 쓸 수 있게 해 주는 유용한 도구였다. 게다가 의외로 심오한 면이 있어, 프로그램을 만들며 배우다보면 제법 강력한 기능을 가진 프로그램도 만들 수 있었다.[4] 오늘날에도 BASIC 계열의 언어인 VBA를 통해 MS 오피스용 매크로 및 프로시저를 작성하여 오피스 사용자를 돕고 있다.
마이크로소프트가 사랑하는 언어로도 유명하다. 마이크로소프트에서는 MS-DOS 시절부터[5] 아는 사람이 드물지만 윈도우 XP까지도 베이식 인터프리터(QBASIC)를 번들로 제공하고 있었으며 오늘날에도 베이식이 생명력을 유지하는 것도 다 MS의 힘이라고 해도 과언이 아닐 정도. 뒤집어말하면 MS가 없으면 주류 프로그래밍 시장에서의 BASIC은 완전히 망한다.
공학용 계산기는 보통 프로그래머블 언어로 베이식을 지원하는 경우가 많아 그 쪽에서 목숨을 이어나가고 있다. 특히 텍사스 인스트루먼트. 이 회사는 TI-BASIC이라고 하는 BASIC 기반의 공학용 계산기용 프로그래밍 언어를 만들어서 사용하고 있다. 휴렛팩커드의 공학용 계산기도 BASIC을 쓸 수는 있는데, 따로 HP에서 지정한 데이터 집합이 없어서 TI용 BASIC 코드를 Ctrl CV 해서 쓴다.
주류 프로그래밍 시장에서 베이식이 몰락한 결정적인 원인은 '교육용으로는 뛰어나지만, 실무 사용률이 낮고, 생산성도 떨어진다'는 점이 가장 크다. 공부하기는 좋은데 공부해서 써먹을 곳이 없다는 소리.
BASIC의 "써먹을 곳" 부분은 절대 단순히 넘어갈 얘기가 아니다. MS는 1990년대 후반까지도 인기있고 활용도도 높았던 마이크로소프트의 Visual Basic을 2000년대 초반 .NET Framework 기반으로 전환하였다. 문제는 이전 버전과 호환성이 없는 Visual Basic .NET으로 넘어가면서 기존 사용자들의 큰 반발을 불러 일으켰다는 점이다. 당장 2020년 지금까지도 신규 VB.NET과 기존 VB 6.0을 사용하는 진영이 나눠져 있으며 서로 매우 적대적이다. 마이크로소프트 본사조차 VB 6.0 진영의 반발 여론에 밀려서 2020년 지금까지도 VB.NET 기반 언어로 모두 전환하지 못하고 VB 6.0 기반의 VBA를 유지하고 있는 실정이다. VB.NET으로의 전환 과정이 매우 부실했고, MS가 강압적으로 전환하는 과정에서 수반된 VB 6.0 진영의 반발을 무마하는 데에 실패한 것이다. MS에서 적절한 명분을 내세워서 교체해야 했는데 유저들이 납득할 만한 명분을 내세우지 못한 것. VB 6.0에 뚜렷한 결함이 있는 것도 아니었고.
2. 활용 분야
오늘날 베이식은 과거에 비해 사용범위가 많이 축소되었지만 8비트 PC가 시장의 주류였던 1970년대 후반 및 1980년대에는 대부분의 PC에 기본적으로 베이식 인터프리터가 ROM에 수록되어 내장되어 있는 기본 언어였다. 개인용 컴퓨터라는 개념이 막 정착되었던 시기였기 때문에 산업용으로는 상대적으로 적합하지 않아도 교육용으로 가치가 높은 베이식을 내장한다는 것은 합리적인 정책이었다. 비싼 비용으로 인해 플로피 디스크 드라이브 같은 보조기억장치가 별매품인 게 당연했던 시절이니만큼 '컴퓨터 본체만 가지고 뭔가를 할 수 있는 것'은 베이식으로 코딩을 해보는 것이 전부였을 정도로 내장 베이식은 비중이 컸다. 일종의 간이 OS 역할을 했다고 보아도 좋을 것이다. 실제로 당시의 내장 베이식은 메모리 참조 등 간단한 시스템 제어 명령어도 있어서 나름대로 OS의 역할을 하기도 했다. BASIC만으로도 시스템 점검이 가능했다는 이야기다. 예를 들어 오늘날 마이크로소프트 윈도우의 탐색기나 애플 매킨토시의 Finder에 해당하는 기능을 수행하는 CATALOG(디스크 드라이브의 내용물을 표시), BLOAD(바이너리 파일을 로드) 등의 명령어들이 애플 BASIC에 포함되어 있었다. 당시만 해도 "OS=파일 읽을 수 있고 파일 쓸 수 있고 프로그램 실행할 수 있으면 충분하다“는 것이 일반적인 인식이었으며, 사실 당시 컴퓨터 OS에는 그 이상의 기능이 필요하지도 않았다. BASIC이 일종의 유저 인터페이스로 존재했기 때문에 만약 BASIC이 없었다면 컴퓨터 사용자는 일일이 CPU에 기계어 코드를 전달하는 수고를 들여야 했을 것이다. 개인용 컴퓨터 대중화의 시작점에 있던 알테어 8800 같은 경우에는 실제로 전면 패널에 여러 스위치가 달려 있어 CPU에 직접 기계어 코드를 입력할 수 있었다.지금은 퍼스널 컴퓨터=인터넷 하는 기계라는 것이 일반인의 인식이고 1990년대 중반까지는 PC(퍼스널 컴퓨터)=게임기, 아래아한글 워드프로세서 또는 PC 통신용 터미널이라는 인식이 강했지만 80년대에는 퍼스컴(퍼스널 컴퓨터)=베이식으로 프로그램 짜는 기계라 인식될 정도로 베이식의 입지는 강력했다.[6] 1980년대 당시 국내에서 판매되던 SPC-1000, SPC-1500, 금성 패미콤 시리즈, MSX, 애플 II 등의 8비트 컴퓨터 중 롬에 베이식이 기본 탑재되지 않은 기계는 없었다.[7] 컴퓨터 키보드의 문자 키마다 BASIC 명령어가 단축키로 배정되어 있는 컴퓨터들이 있었을 정도다.
IBM PC 역시 초기였던 1980년대에는 롬에 베이식을 내장하고 부팅시 MS-DOS 디스크를 삽입하지 않으면 롬 베이식 인터프리터가 부팅되는 구조였다. IBM PCjr에 베이식 언어를 추가하기 위한 카트리지는 1980년대 당시에 꽤나 인기있는 품목이었다고 하며 이것도 마찬가지로 나중에는 롬에 내장되었다. 재미있는 사실로 1990년대 이후로 넘어와 386/486급의 비교적 고사양의 IBM PC 호환기종에서도 부팅 시 플로피디스크와 하드디스크 그 어느쪽도 부트 영역이 없어 MS-DOS를 부팅할 수 없는 경우 NO ROM BASIC SYSTEM HALTED라는 에러 메시지가 떴었는데, 당시에는 왜 부팅 에러 메시지에 뜬금없이 BASIC이 나오나 하는 의문을 가진 유저들도 있었겠으나 진실은 앞서 말했듯 오리지널 IBM PC(일부 호환기종 포함)는 롬 베이식을 내장하고 있었고 외부 기억장치(플로피나 하드)로 부트에 실패할 경우 베이식 인터프리터 모드로 들어가게 되어 있었지만 대부분의 호환기종에는 라이선스 문제로 롬 베이식이 내장되어있지 않았다. 따라서 이런 기종은 부트 과정에서 DOS 부팅에 실패한 뒤 롬 베이식을 호출하기 위해 체크했더니 이마저 없기 때문에 시스템을 정지한다는 메시지가 나왔던 것. 나중에 베이식을 내장하지 않는 것이 일반적이 되고나서는 메시지가 바뀌어서 그냥 운영체제가 없다는 메시지만 나온다. 덤으로 롬에 저장된 베이식 인터프리터를 호출하는 BASIC.COM과 BASICA.COM[8]을 써 본 적이 있다면 올드 프로그래머.
배우기 쉽고 대화형 언어라 프로그램의 수정이 간단하고 시스템 롬 내장이라는 특성상 외부기억장치를 필수적으로 요구하지 않는 고로 작은 시스템으로도 이용할 수 있다는 특징은 분명히 장점이지만 단점으로는 한줄한줄씩 번역하는 인터프리터 방식이 가지는 한계, 즉 처리속도가 느리다는 점을 들 수 있다. 오늘날에는 절대적인 컴퓨팅 파워가 월등하게 강력해졌고 인터프리터에도 다양한 기법들이 수용되면서 컴파일러 방식에 비해 크게 느리지 않은 경우도 적지 않게 볼 수 있게 되었지만 겨우 몇 MHz 수준의 CPU와 64K 바이트 남짓한 메모리를 지녔던 1980년대 당시에는 베이식의 느린 속도는 베이식을 전문적인 개발 언어로 사용하기 어렵게 만드는 걸림돌이었다. 그러나 1980년대 후반에 접어들며 터보 베이식, 퀵 베이식 같은 컴파일러 방식의 베이식도 나오기 시작했고 오늘날에는 컴파일러 기반의 베이식 언어가 대다수. (이게 무슨 소리인지 모르겠다면 소스 코드 문서를 참조하자.)
사실 초기에는 베이식을 사용한 게임들도 꽤 많이 있었다. 각종 공모전이나 컴퓨터 잡지에 투고된 게임 소스 코드들은 전부 베이식으로 되어있거나 일부 속도를 요구하는 부분에만 어셈블리어, 혹은 기계어 코드를 조합한 것이 대부분이었다. 상용 게임들에도 베이식을 사용한 게임이 꽤 많았는데 애플 II의 울티마 1[9]이 대표적. PC-8801판 삼국지 1, 노부나가의 야망, 현대대전략[10] 등에도 베이식 코드가 들어있었다고 한다. 물론 점점 게임이 복잡해지고 속도를 요구하게 되면서 베이식 코드는 게임에서 제거되기 시작했다.
Microsoft의 빌 게이츠가 본격적으로 유명해진 계기도 당시 PC 중 하나인 알테어용 베이식 인터프리터를 만들면서였다. 알테어 광고를 보고 친구인 폴 앨런과 함께 무작정 베이식을 팔겠다고 만들기 시작하지도 않은 상태에서(...) 납품제의를 했다. 승낙 후 광속의 개발을 거쳐 완성품 천공 카드 묶음을 들고 본사로 가는 비행기에 탔는데 그제서야 아직 코딩하지 않은 부분이 있다는 사실을 알아채고[11] 비행기 안에서 손수 천공 카드에 구멍을 뚫어가며[12] 코딩하여 도착하기 전에 완성했다고 한다. 천공 카드라 가능했던 일화. 이후 본사에서 성공적인 데모 시연을 해보였고 이 프로그램을 계기로 빌 게이츠가 소프트웨어 장사를 해야겠다고 마음먹게 되었다 한다. 당시 소프트웨어 저작권의 개념 자체가 없던 시절이라 매장에서 천공 카드를 복사기로 무한정 복사해가는 일이 흔했는데, '이런 행동은 절도나 다름없다'고 정면으로 광고를 처음 실었던[13] 빌 게이츠는 당시 상당한 이야깃거리가 되었다. 하지만 당시만 해도 소프트웨어는 기업체에 납품하는 것이 기본이라 복제 배포라는 개념 자체가 거의 없었고 따라서 빌 게이츠의 이런 주장은 거의 무시되었다. PC가 등장하기 전인 1970년대 중반까지만 해도 컴퓨터는 매우 비싼 기계였고, 소프트웨어는 '기계 사면 당연히 딸려서 오는 그 무엇'이란 개념이었다.[14] 공장에서 쓰는 공작기계를 구매하면 이를 실행하기 위한 프로그램이 당연히 기계 내장 ROM에 탑재되어 있는 것을 생각하면 된다.
본격 사업가의 길을 걸은 한참 후에도 당시 만들었던 베이식 인터프리터의 소스를 거의 그대로 기억하고 있었다고. 애플의 번들 소프트였던 애플소프트 베이식도 빌 게이츠의 작품이며, MSX의 베이식도 직접 개발했다. 실제로 마이크로소프트는 베이식 언어에 대해 상당한 애정과 집착(?)을 가지고 있다. 사멸할 것이 뻔하던 베이식 언어를 비주얼 베이식이라는 걸출한 물건으로 부활시킨 뒤, 이 비주얼 베이식을 엑셀에 맞게 포팅하여 Visual Basic for Application이라는 이름으로 집어넣어놨다. 이 비주얼 베이식의 문법을 활용한 윈도우용 스크립트인 VBScript를 개발, 윈도우 뿐만 아니라 웹의 클라이언트 사이드 스크립트와 서버 사이드 스크립트로도 활용을 시도했다. 클라이언트 사이드 스크립트는 JavaScript와의 경쟁에서 패배, 거의 사용되지 않지만[15], ASP 등 서버 사이드 스크립트로는 여전히 잘 사용되고 있다.
요즘에는 smallBasic이라는 교육용 베이식 언어(그러나 닷넷의 스멜이 짙어서 별로 베이식 언어답지는 않다)까지 내놓은 상태. Visual Basic.NET은 클래스, 인터페이스 등 표준에는 없는 걸 대량으로 추가한 탓에 '베이식'이라 부르기도 애매해졌다.
마이크로소프트 외에도 다수의 소규모 개발사에서 개량형 버전을 내놓아 초보자들을 위한 개발 언어 및 교육용 언어로 나름대로 각광받고 있다. <pureBasic>, <PowerBasic>, <DarkBasic>, <BlitzBasic> 등 다양한 개량형 Basic 방언들이 있고, 옛날 Basic을 재현하는 FreeBasic, QB64 등의 오픈 소스 프로젝트까지 하면 종류가 엄청 많다. 게임 개발에 도전해보고 싶다면 입문 언어로 익히는 것도 좋을 듯. 다만 각자의 방식대로 OOP개념 등을 추가한 탓에 문법이 각자 다르다. 게다가 언어 자체에 버그가 상당히 창궐해서 어느 이상 복잡한 프로그램을 만들려고 들면 꼭 골치아픈 상황을 맞닥뜨리게 된다.
8~16비트 시대에도 애플 정수 베이식, 애플 소프트 베이식, Hu-BASIC, MSX 베이식, GW 베이식, 퀵 베이식 등등의 다양한 종류가 존재했는데 마이크로소프트 계열의 경우 애플 소프트 베이식 같은 예외를 제외하면 문법상 공통성이 있었지만 소스 호환성은 없었다. 코드와 하드웨어의 차이점을 수동(...)으로 메꿔가며 포팅하는 게 고작. 개발사가 다르면 문법의 차이는 더더욱 헬이었다. 오늘날의 문법 난립이 어제오늘새 있었던 일은 아니라는 얘기.
3. 방식
방식은 시대에 따라 3가지로 나뉘었다.3.1. 순차적 프로그래밍 방식
초기 8비트 PC에 내장된 롬 베이식들 거의 전부와 IBM PC 롬 베이식, GW 베이식 등이 해당된다. 내장된 코드 편집 환경이 스크린 에디터가 아니라 라인 에디터였기 때문에 오늘날의 기준으로는 이해할 수 없는 몇 가지 특이한 개념들이 있다.- 초기에는 실행하자마자 아무것도 없는 화면에 몇 줄 소개만 달랑 보여주고 맨 아랫줄에는 Fn 키에 따른 명령어(해당 키를 누르면 명령어가 자동입력된다)가 있다. 이 기능이 없는 기종도 있으며, Fn 키에 할당하는 명령어를 바꿀 수 있는 기종도 있었다.
- '행 번호' 혹은 '줄 번호'라는 개념이 있었다. 코드를 짜기 위해서는 앞에 줄 번호를 지정하고 코드를 입력해야 했다. 코드는 이 줄 번호 순서대로 정렬되어 들어간다. 줄 번호는 분기나 반복을 위해서도(GOTO 줄 번호) 쓰인다. 줄 번호 지정은 간격을 두고(대개는 10 단위) 하는 게 일반적이다. 그 이유는 나중에 코드를 추가하기 용이하도록 하기 위한 것이라고 한다.
- 줄 번호 없이 코드를 입력하면 엔터키를 치는 순간 해당 코드를 직접 바로 실행해버린다. 일명 '다이렉트 모드'라고 부른다.
- 다이렉트 모드로 LIST 명령을 내리면 전체의 코드가 출력되었다.
- 줄 번호를 매번 타이핑하는 것이 번거로운데, 다이렉트 모드에서 AUTO 라고 명령을 내려주면 자동으로 줄번호를 붙여준다. 별도로 지정하지 않으면 10번부터 시작하며 10씩 증가한다. 단, 모든 인터프리터에 있는 것은 아니었다. 대표적으로 애플 소프트 베이식에는 AUTO 명령이 없다.
- 특정 줄을 바꾸려면 바꾸려는 줄 번호를 쓰고 그 줄의 코드를 새로 작성한다. 친절하게도, 대부분은 커서를 위아래로 올리는 것이 가능해 실수로 엔터를 쳐 버렸다 할 지라도 즉시 커서를 위로 올려서 올바른 코드로 교정한 후 다시 엔터를 치면 고쳐진다. 그 줄에 원래 MS 저작권 문구가 적혀있었든 에러 메시지가 적혀있었든 상관없다. 엔터 치는 순간 그 줄의 내용물이 코드이기만 하면 된다.
- 다이렉트 모드로 LIST 줄 번호 라고 명령을 내리면 해당 줄 번호의 코드가 표시된다. 시작 줄번호-끝 줄번호 같은 식으로 여러 줄을 지정할 수도 있다. 이를 이용하면 아예 새로 작성하지 않아도 용이하게 수정이 가능하다.
- 줄을 추가하려면 추가될 줄에 맞는 번호를 쓰고(예를 들어 40번 줄과 50번 줄 사이에 추가하려면 41번~49번 사이에서 임의로 입력한다.) 코드를 작성하면 된다.
- 줄을 삭제하려면 다이렉트 모드로 DELETE 문에 삭제할 줄의 범위를 지정한다. 그냥 한 줄만 삭제하려면 코드 기술 없이 지울 줄 번호만 쓰고 바로 엔터를 쳐도 된다.
-
이런 식으로 수정과 삽입 계속 하다 보면 줄 번호가 어수선해지는 것은 당연지사. 이럴 땐 RENUM 명령을 다이렉트 모드에서 내려주면 자동으로 코드 전체의 줄번호를 정렬해준다. 하지만
애플 II의 애플소프트 베이식에는
또이 기능이 없어서 별도의 소프트웨어로 구현해야 했다. - 이 줄 번호는 무한정 쓸 수 있는 것이 아니고 제한이 있었다. 베이식 버전마다 조금씩 달랐지만, GW-BASIC 기준으로 0부터 65535까지 쓸 수 있었다. 즉 65536줄을 넘는 프로그램은 불가능하다는 이야기다.[16] 8비트 컴퓨터의 경우는 어차피 베이식 코드에 할당된 메모리가 크지 않았기 때문에 그나마도 다 쓸 수 없었던 경우가 다반사.
- 코드 입력이 모두 끝났다면 다이렉트 모드에서 RUN이라고 명령을 내려주면 코드가 실행된다.
3.2. 구조적 프로그래밍 방식
퀵 베이식, 터보 베이식, 큐 베이식 등이 여기에 해당한다. 본격적으로 스크린 에디터 기능을 내장한 통합개발환경(IDE)을 제공하게 되면서 줄 번호를 써가며 코딩하던 방식은 사라졌다. 기존의 베이식과 호환을 위해서 초기의 방식대로 줄 번호를 매긴 코드라 할 지라도 잘 돌아가기는 하지만 학습 등의 목적이 아니면 일부러 줄 번호를 일일이 매기지는 않고카세트테이프에 대한 지원도 이 때쯤부터 중단되었다. 이미 플로피 디스크나 하드 디스크는 일반화되다 못해 없는 게 이상한 시대가 된지 오래되었고 데이터 레코더는 이 시점에서도 구경도 못해본 사용자들이 대다수였다. 8비트의 시대는 국내외를 막론하고 저물어가고 있었으며 IBM PC 및 호환기종이 대세를 이루면서 C, 파스칼 같은 다양한 언어들이 일반화되며 베이식의 시대도 따라서 저물고 있었다. 퀵 베이식, 터보 베이식은 그러한 시대적 변화에 발맞추고자 만들어진 컴파일러 방식의 베이식 언어였지만 결국 패러다임의 변화 그 자체를 거부할 수는 없어서
3.3. 객체 지향 방식
기본적으로 퀵 베이식의 구조적 프로그래밍 방식에 객체 지향 개념을 가미한 것으로 비주얼 베이식에서 사용하고 있다. 이 때부터 마이크로소프트 베이식이 고수해온 기존 문법 틀이 붕괴되기 시작하였고, 특히 Visual Basic.NET은 그 정점을 찍고 있다.4. 소프트웨어 목록
4.1. Microsoft
- Microsoft BASIC : 1975년 알테어용으로 등장한 베이식 인터프리터이자 마이크로소프트의 업계 입봉작.
- Microsoft Commodore BASIC : 코모도어 64용으로 나온 베이식 인터프리터.
- Applesoft BASIC : 초기의 정수 베이식을 대체하여 애플 II 컴퓨터에 내장된 베이식 인터프리터.
-
(Microsoft )MSX BASIC :
MSX용 베이식 인터프리터. Z80 CPU용인 데다 MS가 손댄 것들이라 MSX용 DOS, 시스템 콜, BASIC, 어셈블리어와 기계어를 배운 사람은 8086 머신의 대응하는 내용을 배울 때 비교적 쉽게 적응할 수 있었다. GW 베이식과도 꽤 문법의 일치도가 높은 편.
그런데 왠지 LOCATE 문의 X,Y 축이 반대다. LOCATE Y,X로 지정하는 GW가 이상한거지만 - (Microsoft )##-BASIC : 70~80년대 한국 및 일본에서 만들어진 거의 대부분의 PC에 기본적으로 탑재된 베이식 인터프리터. ## 부분에 자사 기종의 이니셜이 들어간다. 보통은 Goldstar GS-BASIC 같이 제조사명과 베이식 명칭으로만 표시하나 그 다음줄에 (c) Microsoft라는 문구가 있어서 마이크로소프트의 제품임을 알 수 있다. 실은 이것도 일본 컴퓨터 제조사(산요 PHC-25 등)에 납품되었던 것을 거의 그대로 가져온 것.
- GW-BASIC : 마이크로소프트에서 롬 베이식이 내장되지 않은 컴팩의 호환기에 사용할 목적으로 납품한 인터프리터. 그러나 컴팩 아니라도 대부분의 호환기는 롬 베이식이 없었고 이에 따라 나중에는 MS-DOS[17]에 기본으로 포함되면서 지명도를 높였다. 80년대 말~90년대 초 당시 베이식하면 대부분 GW-BASIC을 가리키는것이었다. 베이식 소프트웨어중 제일 인지도가 높았다고 보아도 된다. 당시 국민학교 실과 과목에서 컴퓨터 단원에 GW-BASIC이 나왔고 옛날 컴퓨터 학원[18]도 사실상 GW-BASIC을 배우러 가는게 목적인데다 학원 강사들조차 딱 프로그래밍 언어 구사 수준이 여기가 한계인 경우가 많았다.
- QuickBASIC(퀵베이식) : 컴파일러와 통합개발환경(IDE)를 내장한 베이식. *.EXE 실행파일로 배포할수 있는 컴파일러가 포함되어 있으며 구조적 프로그래밍 패러다임을 도입했다. 흔히 줄여서 QB, 혹은 큐베이식이라고 하지만 밑의 큐베이식과는 차이가 있다.
- QBasic(큐베이식) : MS-DOS 5.0 이후 버전부터 번들로 제공된 베이식 소프트웨어. 퀵 베이식과는 이름이 비슷해서 헷갈리기 쉽지만 다른 물건이다.[19] 특이하게도 MS-DOS가 더 이상 개발되지 않은 이후에도 Windows에 꼬박꼬박 포함되어 있었다(...) Windows XP까지는 실행창에 Qbasic.exe를 치면 큐베이식을 실행할 수 있다. 큐베이식으로 만들어진 대표적인 게임으로 Gorillas와 Nibbles가 있다.
- Microsoft Visual Basic : 마이크로소프트의 Visual Studio 제품군 중 하나. 사건 기반 프로그래밍 툴로, 윈도우즈 환경에 최적화된 소프트웨어를 만드는 통합 개발 환경 소프트웨어이다. 현재까지도 널리 쓰이는 제품으로 자세한 설명은 항목 참조. 비주얼 베이식도 VB 6.0과 VB.NET 으로 나뉘어지는데 일반적으로 VB라고 하면 VB 6.0을 말하나 MS사에서는 VB 6.0과 그 후에 나온 VB.NET 을 구분하지 않고 그냥 VB(Visual Basic)으로 부른다.
- Visual Basic .NET(비주얼 베이식 닷넷) : 비주얼 베이식에서 한단계 앞서간 객체 지향 프로그래밍 툴.
4.2. 기타
- Apple Integer BASIC : 애플 1에부터 내장되었던 베이식 인터프리터. 스티브 워즈니악이 직접 만들었다. 나중에 마이크로소프트가 납품하는 애플 소프트 베이식으로 대체되었다.
- 볼랜드 터보 베이식(Borland Turbo-BASIC)[20]
- 리얼 소프트웨어사의 리얼베이식(REALBasic)
- 다크 베이식
- 퓨처 베이식
- 프리 베이식
- True BASIC : 오리지널 BASIC 언어의 직계 후손. Dartmouth BASIC 7를 이식하여 상용화한 것이다.
- 한베 : 삼선소프트의 한글 베이식. 최초로 한글화 시킨 프로그래밍 언어. 도스 환경에서 실행되고, 조합형 한글을 지원한다. K-DOS에도 번들되어, MS-DOS의 GW-BASIC에 대당하였다.
- QB64 : QBasic의 64비트 호환 제품. 오픈소스 대체품이며 MS가 제작한 물건이 아니다.
- 허드슨 Hu-Basic : 주로 샤프 계열의 8비트 PC에 내장되거나 별도의 테이프로 제공되었다. SPC-1000에 탑재되었던 베이식이라 초창기 컴퓨터 키드들은 이걸로 프로그래밍에 입문한 경우가 많았는데 이는 SPC-1000이 학교 납품률이 높았기 때문. Hu는 물론 허드슨을 뜻하는데, 당시 '휴먼테크'를 표방하던 삼성의 어떤 양반들은 농담 반 진담 반으로 이걸 Human이라고 주장하기도 했다.[21]
- 베이식 군(べーしっ君) : 아스키가 개발한 MSX용 베이식 컴파일러. 기존의 MSX-BASIC으로 개발된 코드를 컴파일해서 10배 이상 빠른 속도를 내주었다.
- 패밀리 베이식(ファミリーベーシック, Family BASIC) : 닌텐도(!!!), 샤프, 허드슨 합작. 그 이름대로 패밀리컴퓨터 전용의 베이식 소프트웨어. 주변기기로 패미컴 전용의 키보드와 전용 카트리지가 있었다. 패미컴이 가진 컴퓨터 라는 이름이 단순한 폼은 아니라는 것을 증명하는 소프트웨어다.
- SICKBAY: 베이식을 비틀은 이름에서 알수 있듯, 베이식 기반이지만 베이식보다 난해하게 코딩하도록 만들었다.
- SmileBasic : 일본의 SmilBoom이라는 회사에서 제작한 게임 콘솔 전용 베이식(게임 콘솔에서 베이식 개발 환경을 동작시키고 코딩을 할 수 있다). 원래는 푸치콘(쁘띠 컴퓨터)이라는 이름으로 2011년에 닌텐도 DS용으로 처음 발매되었으며, 그 이후 푸치콘 Mk-II(NDS), 푸치콘 3호 SmileBasic(3DS), 푸치콘 BIG(Wii U) 등의 후속작을 거쳐 2020년에는 푸치콘 4가 닌텐도 스위치 용으로 발매되어 있다.
- TI-BASIC: 텍사스 인스트루먼트 TI-83, TI-84, TI-89, TI-92(Voyage 200 포함), TI-73과 TI-Nspire 시리즈에서 사용. 다만 TI-Nspire에서는 Lua가 주언어로 사용된다.
5. 코드 예제
자세한 내용은 프로그래밍 언어/예제 문서 참고하십시오.6. 기타
- 미디어아트 지향 언어인 Processing에 영향을 준 언어라고 한다. 다만 Processing의 문법은 베이식과는 하나도 공통점이 없고 기본적으로 Java의 문법을 간략화한 것이다. 문법보다는 간단하게 코딩이 가능한 학습용 언어라는 컨셉트와 쉽게 그래픽 표현이 가능하다는 특징이 베이식에서 착안한 것이라고 한다.
- 유명한 컴퓨터 과학자 에츠허르 다익스트라는 '베이식에 노출된 적 있는 학생에게 제대로 된 프로그래밍을 가르친다는 건 실질적으로 불가능하다; 그 잠재적 프로그래머들은 회복의 희망이 없는 정신적 불구가 된 것이다.' 라는 말을 남겼다. 사실 BASIC만 깐 건 아니고 COBOL이나 FORTRAN 같이 당시 구조 개념이 없던 언어들까지 전부 깠다. How do we tell truths that might hurt?
[1]
두문자를 모으면 BASIC이 되는데 '기초'라는 의미의 영단어와 표기가 일치한다. 물론
노리고 지은 것이다.
[2]
허나 한국인은 영단어 s를 무조건 z로 발음하는 성향이 강하므로(예: loose(루스)를 ‘루즈’로 발음함) BASIC 교본에 베이식이라 써 있었더라도 베이직으로 발음했을 가능성이 있다.
[3]
이 점은
코볼도 비슷하지만, 프로그램이 복잡해질수록 코드 길이가 상당히 길어지는 코볼과는 달리 이쪽은 C언어와 거의 비슷한 수준.
[4]
8비트 시절에 나왔던 MSX 베이직도 peek나 poke 문을 이용해 메모리에 직접 액세스가 가능했고 코드에 인라인 어셈블리 구문을 넣어 좀더 빠른 처리를 할 수 있었다.
[5]
4.x까지는 GW-BASIC이, 5.x 이후부터는 QBASIC으로 변경되었다.
[6]
대략 80년대 컴퓨터 사용자 하면, 컴퓨터 사용자=베이식 사용자, 컴퓨터 프로그래머=어셈블러 사용자 라는 공식이 통용될 정도였다고 보면 된다. 80년대 베이식 사용가능이란 현재의 오피스 사용가능과 비슷한 인식.
1980년대
대한민국의 중고등학교 정보화 과목 수업에서 BASIC 교육이 기본으로 시행될 정도였다. 다만 당시 대한민국은 가난해서 학교에 BASIC 강의를 할만한 학교가 많지 않아 정보화 과목이 선택과목이었다는 게 문제. 대한민국 전국 모든 학교에 학생들이 전원 이용할만한 컴퓨터 개수가 깔리게 된 것은
2015년까지 와야 한다.
[7]
단,
금성 패미콤 시리즈 중 FC-150은 내부에 내장하지는 않고 BASIC-I(정수 베이식)를 별도의
롬팩으로 번들 제공했다. 원본인 Sord M5가 그런 구조였기 때문에 그대로 따른 것. 일본의 경우에는 M5 외에도 샤프 MZ 시리즈가 베이식 인터프리터를 내장하지 않았다. 부팅 시점에 아무것도 메모리에 적재하지 않는다는 '클린 컴퓨터'라는 컨셉트를 내세우고 내장되어있는
데이터 레코더를 통해
카세트테이프에 담긴
허드슨의 Hu-BASIC 인터프리터를 롬에 적재하는 방식을 취했는데 정작 MZ-80 시리즈를 베이스로 만든 삼성
SPC-1000는 이 Hu-BASIC을 롬에다 때려박았다. 그래서인지 인터프리터를 롬에서 바로 참조하는
애플 II나
MSX와 달리 SPC-1000은 부팅시 롬 영역에 있는 인터프리터를 램으로 복사한 다음 램 영역을 참조하는 특이한 방식을 취했다.
[8]
롬에서 불러오는게 아닌 자체 독립실행 프로그램인 GWBASIC.EXE와는 다르다!
[9]
그래픽 타일은 어셈블리어로 작성. 나중에 리메이크판인 뉴 울티마 1이 나오면서 베이식 코드를 빼고 기계어 코드로 싹 갈아엎었다.
[10]
그래픽 처리 등 속도를 필요로 하는 부분에는 기계어 코드를 조합했다.
[11]
테이프의 프로그램을
램에 입력해서 실행시켜주는
부트스트랩 프로그램
[12]
1970년대에 배터리로 돌아가는 노트북 같은게 있을리 없다(...)
[13]
'취미가들에게 보내는 공개 편지'라는 이름으로 발표하였다.
[14]
쉽게 말하자면 모든 소프트웨어가 지금의 컴퓨터 사면 같이 따라오는 CD 같은 입장이였다고 보면 된다.
[15]
표준으로 지정된 ECMAScript는 JavaScript의 문법이 기본 베이스이다.
[16]
보다 정확히 말하자면 65,535가 아닌 65,529번 행까지 가능하다. 오버플로우 여부를 판단하기 위해 앞의 네 자리의 6553보다 작은지를 검사하는 것이 더 간편하고 안전하기 때문이다. 자세한 내용은
링크 참조
[17]
4.x까지 제공, 그 이후 버전은 QBASIC으로 대체
[18]
대략 늦게 잡아도
Windows 95 대중화 이전
[19]
별도의 독립 패키지로 발매된 퀵베이식의 간이 버전으로, 문법은 퀵 베이식에 준하며 IDE도 퀵 베이식과 거의 동일하나 컴파일러가 없고 인터프리터 방식을 사용했다.
[20]
볼랜드가 판매를 중단한 뒤 이름이 파워 베이직으로 변경되었다.
[21]
그런데 이게 아주 말도 안되는 개드립은 아니다. 똑같이 허드슨이 개발한
X68000의 운영체제인 Human-68k라는 놈이 있기 때문. 삼성이 Hu-BASIC을 탑재하기 위해서는 당연히 허드슨 측과 접촉이 있었을 것이기 때문에 나름대로 무슨 근거가 있었던 발언일지도 모른다.