"베이직"의 두 판 사이의 차이
잔글 |
|||
(사용자 7명의 중간 판 74개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | [[파일:베이직 로고.png|썸네일|200픽셀|'''베이직'''(BASIC)]] | ||
+ | [[파일:베이직 글자.png|썸네일|300픽셀|'''베이직'''(BASIC)]] | ||
+ | |||
'''베이직'''(BASIC)은 Beginner's All Purpose Symbolic Instruction Code의 약자로서, 교육용으로 만든 [[프로그래밍 언어]]이다. 1964년 미국 [[다트머스 대학교]]의 [[존 케메니]](John Kemeny)와 [[토머스 커츠]](Thomas Kurtz)가 개발했다. 다트머스의 최초 제품 이후로 인터프리터 방식이 많았으나 최근에는 컴파일러 방식도 많아졌다. 현재는 다양한 종류의 베이직이 존재하며 서로 문법도 차이가 많이 난다. 서로 다른 종류 사이의 소스 코드는 호환이 되지 않는다. | '''베이직'''(BASIC)은 Beginner's All Purpose Symbolic Instruction Code의 약자로서, 교육용으로 만든 [[프로그래밍 언어]]이다. 1964년 미국 [[다트머스 대학교]]의 [[존 케메니]](John Kemeny)와 [[토머스 커츠]](Thomas Kurtz)가 개발했다. 다트머스의 최초 제품 이후로 인터프리터 방식이 많았으나 최근에는 컴파일러 방식도 많아졌다. 현재는 다양한 종류의 베이직이 존재하며 서로 문법도 차이가 많이 난다. 서로 다른 종류 사이의 소스 코드는 호환이 되지 않는다. | ||
+ | |||
+ | ==등장배경== | ||
+ | [[파일:Basic.jpg|썸네일|300픽셀|'''존 케메니 교수와 토마스 쿠르츠 교수'''(basic) 사진]] | ||
+ | 올해로 탄생 50주년을 맞은 [[베이직]](BASIC) 프로그래밍 언어는 1964년 5월 1일은 세계 최초로 명령어 실행에 성공했다. 베이직은 [[INPUT]]이나 [[PRINT]] 등 자연어에 가까운 표현을 이용해 컴퓨터 프로그래밍의 문턱을 낮추는 데 일조했다. 원래 컴퓨터 교육을 위해 개발한 언어인 베이직의 탄생 배경은 아래와 같다. | ||
+ | |||
+ | 베이직의 개념을 만들어낸 창조자는 다트머스대학 수학자인 존 케메니(John Kemeny) 교수와 토마스 쿠르츠(Thomas Kurtz) 교수다. 이들은 다잇 대학이 처음 도입한 [[제너럴일렉트릭 컴퓨터]]를 위해 프로그램을 개발했다. 이들은 컴퓨터 사용 능력의 중요성을 인식하고 학생들에게 컴퓨터 교육을 하기 위해 개발을 시작했다. 초보적인 일반 기호 명령 코드(Beginner’S A LL-Purpose Symbolic Instruction CODE)의 머리글자를 따서 베이직(BASIC)라는 이름을 붙였다. 다트머스대학에서 좋은 평가를 이끌어낸 베이직 시스템은 다른 대학에도 보급되기 시작했다. 당시만 해도 컴퓨터 작동 속도는 너무 느린 탓에 결과를 뽑아내려면 상당 시간과 노력을 기울여야 했지만 베이직은 빠르게 결과를 표시해 높은 효용성을 보여줬다. 물론 베이직을 모두 호의적으로 받아들였던 건 아니다. 컴퓨터 분야에선 비판도 많았다고 한다.<ref name="테크홀릭">테크홀릭, 〈[http://dpg.danawa.com/mobile/news/view?boardSeq=64&listSeq=2629435 50주년 맞은 베이직 ‘역사의 시작은…']〉, 《DPG》, 2014-05-07</ref> | ||
+ | |||
+ | ==역사== | ||
+ | *1926년 헝가리 부다페스트에서 태어난 유대계 존 케메니 교수는 나치의 박해를 피하기 위해 1940년 미국으로 이민한 뒤 프린스턴대학에 입학한 그는 재학 시절 1년 휴학하면서 맨해튼계획에 참여하기도 했다. 수학자이자 물리학자인 [[폰노이만]]에게 컴퓨터 관련 내용을 배우는 등 영향을 받았다고 한다. | ||
+ | |||
+ | *1956년부터 다트머스대학에 합류한 토마스 쿠르츠 교수는 [[CPU]] 처리 시간을 분할에 한 번에 여러 작업을 동시에 할 수 있는 시분할 시스템 개념을 발표해 더 많은 사용자에게 컴퓨팅 환경을 제공하는 데 성공했다. | ||
+ | |||
+ | *1964년 5월 1일 베이직 언어의 기본 골격이 된 다트머스 베이직을 처음 실행하는 데 성공했다. 그 해 6월에는 다트머스대학 학생에게도 공개되어 타자기 [[터미널]] 11대로 활용할 수 있게 됐다. | ||
+ | |||
+ | *1966년 학내에서 문을 연 컴퓨터 센터에선 누구나 자유롭게 시설을 이용할 수 있고 용도를 묻지 않는다는 것, 중요한 연구 분석에 이용하거나 수업 과제를 해결하는 데 쓰거나 축구 게임, 여자 친구에게 편지를 쓰는 것도 자유라는 점을 브로셔를 통해 강조했다. | ||
+ | |||
+ | *1975년 [[MITS]]가 발표한 세계 첫 개인용 컴퓨터인 [[알테어8800]](Altair 8800)을 계기로 개인용 컴퓨터라는 개념이 세상에 퍼지기 시작했다. 알테어8800은 [[인텔 8080]]을 탑재한 제품으로 가격은 400∼500달러 수준이었다. | ||
+ | |||
+ | *1984년 애플이 매킨토시를 발표하면서 그래픽 유저 인터페이스[[(GUI)]]가 일반화되면서 지금까지 베이직을 이용한 캐릭터 유저 인터페이스[[(CUI)]]는 점점 세력이 약화되어 갔다. | ||
+ | |||
+ | *[[마이크로소프트]] 역시 초기 베이직 위주에서 워드나 엑셀 같은 응용 프로그램 개발로 무게 중심을 이동하는 한편 GUI도 1990년 윈도 3.0, 1995년에는 윈도95를 내놓는 등 변화해갔다. | ||
+ | <ref name="테크홀릭"></ref> | ||
+ | |||
+ | ==특징== | ||
+ | 프로그래밍 언어 베이직과 마찬가지로, 비주얼 베이직은 쉽게 배우고 쉽게 사용할 수 있도록 설계되었다. 비주얼 베이직은 간단한 [[GUI]]기반의 응용 프로그램의 개발 뿐만 아니라, 복잡한 프로그램의 개발까지도 가능하게 한다. 비주얼 베이직에서의 프로그래밍은 [[폼(Form)]]위에 놓인, 시적으로 정렬된 [[GUI 위젯]](비주얼 베이직에서는 컨트롤이라고 한다)들의 조합이다. 이 컨트롤들은 특별한 속성과 역할을 담당하고 있으며, 기능의 확장을 위해 추가적인 코드의 입력이 가능하다. | ||
+ | |||
+ | 기본적인 속성과 역할이 이들 컨트롤에 기본값으로 설정되어 있기 때문에, 간단한 프로그램의 경우 프로그래머는 그다지 많은 코딩 없이 만들 수 있다. | ||
+ | 성능상의 문제가 이전 버전에서 많이 보고되었지만, 기술의 발전에 따른 컴퓨터 성능 향상과 [[원시 코드(Native Code)]] [[컴파일]]을 통해 이 문제는 많이 사라졌다. | ||
+ | 비주얼 베이직 5.0부터 원시 코드로 컴파일된 실행 파일 작성이 가능해 졌지만, 비주얼 베이직으로 작성된 실행 파일은 여전히 1메가바이트 정도 크기의 라이브러리 파일을 필요로 한다. 이 파일은 [[윈도 2000]]과 이후 윈도 버전에서 기본적으로 설치되었지만, 그 이전의 [[윈도 95]], [[윈도 98]], [[윈도 NT]]에는 포함되어 있지 않았다. 때문에 비주얼 베이직으로 만든 실행 파일을 실행하기 위해서는 이 라이브러리 파일 또한 함께 배포하여야 했다. | ||
+ | |||
+ | 폼은 끌어다 놓기 방식으로 만들어진다. 커서를 통해 [[텍스트 상자]], 단추 등과 같은 컨트롤들을 폼 위에 놓는다. 컨트롤들은 [[속성]]을 가지며, [[이벤트 처리자]]를 통해 서로 연결된다. 기본값들은 컨트롤이 만들어질 때 함께 제공된 것이지만, 프로그래머에 의해 변경될 수 있다. 많은 속성값들은 프로그램이 실행 중일 때, 응용 프로그램의 사용자의 조작이나 외부 환경의 변화에 의해 변경될 수 있으며, 이것은 동적인 응용 프로그램을 가능하게 해 준다. 예를 들면, 창의 'Resize(크기 변경)' 이벤트 처리자에 컨트롤들의 위치를 재조정하는 코드를 삽입할 수 있다. 이러한 방법을 통해서, 특정 컨트롤이 계속해서 창의 중앙에 위치하게 하거나, 창 전체를 다 채우는 등의 제어를 할 수 있게 된다. 텍스트 상자의 'KeyPress(키 눌림)' 이벤트 처리자에 코드를 삽입함으로써, 해당 응용 프로그램은 자동적으로 입력된 문자의 대소문자를 변환하거나, 특정 문자의 삽입을 막을 수도 있다. | ||
+ | |||
+ | 비주얼 베이직은 실행 파일, [[ActiveX 컨트롤]], [[DLL 파일]]을 만들 수 있다. 하지만 비주얼 베이직의 가장 기본적인 사용 용도는 마이크로소프트 윈도용 응용 프로그램과 데이터베이스 조작 프로그램의 개발에 있다. 덜 기능적인 대화 상자들은 팝업 능력에 사용된다. 프로그래머가 추가적인 코드를 적당한 이벤트 처리자에 삽입해야 하긴 하지만, 컨트롤들은 응용 프로그램에 기본적인 기능성을 제공한다. 예를 들면, 문자열의 입력이 가능한 [[드롭 다운 리스트 컨트롤]]은 자동적으로 자신이 가진 목록을 보여주며, 사용자가 항목을 선택할 수 있게 한다. 사용자에 의해 항목이 선택될 때, 이벤트 처리자가 호출되며, 이 이벤트 처리자는 프로그래머가 추가적으로 코딩한 코드를 처리하는데, 이때 사용자가 선택한 항목의 관련 항목의 출력과 같은, 사용자의 컨트롤에 대한 구체적인 동작에 따른 처리를 할 수 있다. | ||
+ | |||
+ | 한편, 비주얼 베이직으로 사용자 [[인터페이스]]가 존재하지 않는 프로그램이나 추가적으로 제공되는 [[컴포넌트 오브젝트 모델]]을 통한 [[Active X]] 개체를 구성할 수도 있다. 이것은 서버 측면에서의 처리나 추가 모듈을 가능하게 해 준다. | ||
+ | 비주얼 베이직은 [[레퍼런스 카운팅]]을 통한 쓰레기 수집을 수행하며, 방대한 규모의 추가적인 라이브러리들과, 기본적인 객체 지향 프로그래밍을 지원한다. 대다수의 일반적인 [[위젯]]들이 초기 프로젝트 구성에 포함되어 있기 때문에, 비주얼 베이직 프로그래머가 추가적인 라이브러리를 사용하는 경우는 드물다. 다른 대다수의 프로그래밍 언어와는 달리, 비주얼 베이직은 일반적으로 대소문자 구분을 하지 않으며, 대신에 키워드를 표준 대소문자 설정으로 변환한 뒤, 강제로 변수명의 대소문자를 기호 테이블의 내용으로 변환시킨다. 문자열 비교에 관해서는 대소문자 구분을 하지만, 프로그래머가 원한다면 대소문자 구분을 하지 않을 수도 있다. | ||
+ | 비주얼 베이직의 컴파일러는 다른 [[비주얼 스튜디오]] 제품군([[C 언어|C]], [[C++]])과 호환성이 있지만, [[IDE]]상의 제한으로 인해 윈도 모델 [[DLL]]이나 [[스레드]]의 사용 등은 불가능하다. <ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ===다른 언어와의 비교=== | ||
+ | # C 언어에서 가능한 [[다중 할당]]은 불가능하다. 비주얼 베이직에서 코드 A = B = C 는 변수 A, B, C의 값을 같게 하지 않는다. "Is B = C?" 불린 결과값이 A에 들어간다.[3] 결국 A에 들어가는 결과치는 거짓(0) 또는 참(-1)이 될 것이다. | ||
+ | # [[불린]] [[상수]] True는 숫자값 -1을 갖는다. 이렇게 처리하는 이유는, 비주얼 베이직에서 불린 자료형은 16비트 부호 있는 정수 형태로 저장되기 때문이다. 이 구조에서 -1은 16진수 1로 계산되고(불린 값은 True이다), 0은 16진수 0으로 계산된다.(불린 값은 [[False]]이다.) 이것은 16비트 부호 있는 정수값 0인 Not 연산을 할 때 정수값 -1을 반환하는 것을 통해 명백하게 설명되는데, 다시 말해 True = Not False이다. 이러한 비주얼 베이직의 고유한 처리 방식은[[ And]], [[Or]], [[Xor]], [[Not]]과 같은 정수 비트의 논리 연산에 유용하다. 이러한 True의 정의는 1970년대 마이크로소프트가 만들었던 베이직 제품에서의 처리와 일치하며, 이것은 당시의 [[CPU]] 명령어의 특성과 관련이 있다. | ||
+ | # [[논리]] 및 [[비트 연산자]]가 통합되어 있다. 이것은 논리 연산자와 비트 연산자가 구분되어 있는 [[펄]]과 같은 C 언어 계열의 언어와는 다르다. 이 요소는 베이직언어의 전통적인 특징이기도 하다. | ||
+ | # [[가변 배열]] 기반이다. 배열의 정의는 [[파스칼]]이나 [[포트란]]과 같이, 유사한 [[최대 인덱스(Upper Bound)]]와 [[최소 인덱스(Lower Bound)]]의 지정을 통해 이루어진다. 또한 [[Option Base]] 구문을 통해 최소 인덱스의 지정을 할 수 있다. Option Base 문의 사용은 비주얼 베이직 코드를 볼 때 혼란을 야기할 수 있는데, 이것을 피하는 최선의 방법은 언제나 명시적으로 배열의 최소 인덱스를 지정하는 것이다. 이 최소 인덱스는 0 또는 1뿐만 아니라, 선언에 따라서는 다른 값이 될 수도 있기 때문이다. 이러한 방법으로, 최소 인덱스와 최대 인덱스 모두 프로그래머의 제어가 가능하다. 대조적으로, [[서브스크립트 제한적 언어(Subscript-Limited Language)]]들에서, 배열의 최소 인덱스는 가변적이지 않다. 이러한 독특한 특성은 비주얼 베이직 닷넷에서도 나타나지만, 비주얼 베이직 스크립트에는 없다. [[OPTION BASE]] 는 1970년대 후반 [[ANSI Minimal BASIC]]을 통해 표준으로 지정되었다. | ||
+ | # 상대적으로 [[마이크로소프트 윈도]] 및 [[컴포넌트 오브젝트 모델]]과 강력하게 통합되어 있다. | ||
+ | #[[실수]]를 [[정수]]로 바꿀 때, 기본적으로 [[Round함수]]를 통해 반올림을 한다. 반올림 방법으로는 [[Round-to-even]] 을 사용한다. | ||
+ | # 일반적인 나누기 연산자인 /를 통해 자동적으로 정수가 실수로 변환되므로, 짝수 정수부에 의한 홀수 정수부는 직관적으로 올바른 연산 결과를 보여준다. 한편, 자동으로 반올림을 하는 정수 나누기 연산자인 \도 있다. | ||
+ | # 기본값으로, 만약 변수가 선언되지 않았거나 자료형이 선언되지 않을 경우, 변수는 [[Variant]]형으로 선언 된다. 그러나 이것은 [[DefInt, DefBool]], [[DefVar, DefObj]], [[DefStr]]와 같은 [[DefType]] 구문을 통해 바꿀 수 있다. 비주얼 베이직은 6.0의 경우 12개의 DefType 구문이 지원된다. 기본 형은 특별한 접두어인 #를 통한 선언을 통해 [[Double]]형으로, !를 통해 [[Single]]형으로, &를 통해 Long 형으로, %형으로 Integer형으로, $를 통해 [[String]]형으로, @를 통해 [[Currency]] 형으로 오버라이드되거나, 예약어 As (type)를 통해 오버라이드 될 수 있다. 또한 무조건 명시적인 변수 선언만 허용하도록 할 수도 있는데, 이 때는 [[Option Explicit]] 명령을 사용한다.<ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ===발전=== | ||
+ | 비주얼 베이직 1.0은 1991년 5월 발표되었다. 사용자 인터페이스 개발에 있어서의 끌어다 놓기 방법은 [[앨런 쿠퍼]]가 개발한 프로토타입 [[폼]] 제작기에서 온 것이며, 쿠퍼가 재직했던 회사에서는 이 프로그램을 [[트라이포드]]라고 불렀다. [[마이크로소프트는 윈도 3.0]]용 프로그래밍 가능 폼 제작 시스템의 개발을 위해 쿠퍼의 개발팀과 계약 한 후, 프로젝트의 코드네임을 [[루비]]라고 명명하였다. (루비 프로그래밍 언어와는 관계 없다.) | ||
+ | [[트라이포드]]는 프로그래밍 언어를 포함하고 있지는 않았다. 마이크로소프트는 비주얼 베이직을 만들기 위해 루비와 베이직 언어를 합치기로 결정했다. | ||
+ | 루비 인터페이스 개발기는 비주얼 베이직의 "시각적인" 부분이 되었으며, 이것은 다시 마이크로소프트의 취소된 데이터베이스 시스템인 "오메가"용으로 설계된 "EB"(임베디드 베이직 엔진)와 합쳐졌다. 루비는 또한 훗날 [[비주얼 베이직 확장(VBX)]]이라고 명명될 추가적인 컨트롤들을 포함하기 위한 [[DLL 로드]] 기능을 지원하였다. | ||
+ | 버전 5.0에서 [[Win16 코드]]와의 호환성을 버리고 전반적인 기능을 강화했다. 버전 6.0에서는 인터넷 관련 기능이 대폭 강화되었다. | ||
+ | [[비주얼 베이직 닷넷]]은 기존 버전과 다르게, 닷넷의 일부분으로 동작하고 객체지향 프로그래밍이 강화되었다. 또한 기존 버전과의 호환성이 없기 때문에 기존 비주얼 베이직 코드를 비주얼 베이직 닷넷 코드로 옮겨 주는 마법사가 있다. | ||
+ | 그러나 [[네이티브 비주얼 베이직]]은 버전 6.0 이후로 마이크로소프트가 완전히 포기하여 사라진 언어가 되고 말았다. 하지만 2011년 현재, 프로그래밍 입문 언어로서 시스템에 관한 구체적인 지식(변수, 메모리 등)이 없이도 프로그래밍의 시작이 가능하다는 점에서 또, 액셀 등 오피스에서 사용되는 VBA 의 문법이 비주얼 베이직 6.0 버전과 호환됨에 따라 아직도 많은 사람들이 입문용으로도 또 실무용으로도 사용하고 있다. | ||
+ | <ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ===개발 및 발전 과정=== | ||
+ | * [['선더(Thunder)']] 프로젝트가 시작되었다. | ||
+ | |||
+ | * 1991년 5월, 미국 조지아주 애틀랜타에서 열린 컴덱스에서 [[윈도용 비주얼 베이직 1.0]]이 발매되었다. | ||
+ | |||
+ | * 1992년 3월, [[도스용 비주얼 베이직 1.0]]이 발표되었다. 마이크로소프트의 [[도스]] 기반 베이직 컴파일러인 [[퀵베이직]]과 베이직 전문 개발 체계(BASIC Professional Development System)의 차기 버전으로 개발된 것이기 때문에, 언어적인 특성 자체는 윈도용 비주얼 베이직과 전혀 호환되지 않았다. 도스용 비주얼 베이직은 [[문자 기반 윈도(Character Oriented Windows)]]를 사용했으며, 확장 [[아스키문자]]를 통해 [[GUI]]를 구현해 내었다. | ||
+ | |||
+ | *1992년 11월, 비주얼 베이직 2.0이 발매되었다. 프로그래밍 환경이 더욱 쉽게 개선되었으며, 속도 또한 향상되었다. 특히, 폼이 [[인스턴스]]적인 개체가되었으며, 이러한 기본적인 클래스 모듈의 개념은 후에 비주얼 베이직 4.0에서 적용된다. | ||
+ | |||
+ | *1993년 7월, 비주얼 베이직 3.0이 발매되었다. 이 때는 [[스탠다드 에디션]]과 [[프로페셔널 에디션]]으로 구분되어 발매되었다. 이 비주얼 베이직 3.0은 제트(또는 액세스)1.x 데이터베이스를 읽을 수 있는 마이크로소프트 [[제트 데이터베이스 엔진 1.1]]을 포함하고 있었다. | ||
+ | |||
+ | *1995년 8월, 비주얼 베이직 4.0이 발매되었다. 비주얼 베이직 4.0은 32비트와 16비트 윈도 프로그램 둘 다 개발할 수 있는 첫 번째 버전의 비주얼 베이직이었다. 또한 [[GUI]]가 없는 클래스를 비주얼 베이직에서 개발할 수 있는 기능이 추가되었다. 비주얼 베이직 4.0 제품들간의 비호환성은 설치와 운영상의 문제를 낳았다. 이전 버전의 비주얼 베이직은 [[VBX 컨트롤]]을 써 왔었지만, 비주얼 베이직 4.0은 [[OLE 컨트롤]](확장자가 .OCX인 파일)을 썼다. 이 OLE 컨트롤은 훗날 [[ActiveX]] 컨트롤이라고 이름지어진다. | ||
+ | |||
+ | *1997년 2월 발매된 비주얼 베이직 5.0은 32비트 버전으로만 발매되었다. 16비트 프로그램의 개발을 계속 했던 프로그래머는 비주얼 베이직 4.0의 소스 코드를 비주얼 베이직 5.0으로 옮길 수 있었으며, 비주얼 베이직 5.0 프로그램이 비주얼 베이직 4.0으로 옮겨 가기도 쉬웠다. 비주얼 베이직 5.0은 또한 사용자 정의 컨트롤을 만들 수 있는 기능, 또한 원시 코드로 윈도용 실행 파일을 컴파일 할 수 있는 기능, 대량의 계산에서의 속도 향상 등의 기능이 추가되었다. [[Active X]] 컨트롤의 개발을 위해 다운로드 받을 수 있는 무료 버전 또한 배포되었는데, 이 버전은 일종의 시험판으로, 일반적인 .[[exe]] 프로젝트가 [[IDE]]에서는 실행되었지만 컴파일되지는 않았다. | ||
+ | |||
+ | *1998년 6월, 많은 영역에서 개선을 이룬 비주얼 베이직 6.0이 발매되었다. 특히 비주얼 베이직 6.0은 웹 기반 응용 프로그램의 개발 기능이 추가되었다. 비주얼 베이직 6.0은 2008년 3월 마이크로소프트의 "지원 안함" 단계에 해당 됨으로써 종료되었다. 이처럼 비주얼 베이직 6.0의 개발 환경은 더 이상 지원되지 않기는 하지만, 실행에 필요한 라이브러리는 윈도 비스타, 윈도 서버 2008, 그리고 윈도 7에 계속 지원되고 있다. | ||
+ | |||
+ | *2005년 3월 31일, 마이크로소프트 비주얼 베이직 6.0의 주요 지원이 종료되었다. 확장 지원은 2008년 3월 종료되었다. 이에 대하여, 비주얼 베이직 유저 커뮤니티는 우려를 표현하고 제품의 계속적인 지원을 청원하였다. 하지만 마이크로소프트는 기존 입장을 바꾸지 않았다. (하지만 다른 흐름도 있다. 아이러니컬하게도, 이 시기(2005년)에 발표된 마이크로소프트의 새로운 바이러스 검사 소프트웨어인 [[마이크로소프트 앤티스파이웨어]]는 비주얼 베이직 6.0으로 개발된 프로그램이었다. 이 프로그램의 대체품인 윈도 디펜더는 C++ 코드로 재작성되어 개발되었다.<ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ===다른 언어들과의 관계=== | ||
+ | 마이크로소프트의 여러 스크립트 언어들은 비주얼 베이직으로부터 파생한 것이다. 비주얼 베이직 자체는 베이직과 강력한 연관성을 가지며, 결과적으로 [[닷넷 프레임워크]] 플랫폼 버전으로 대체되었다. | ||
+ | |||
+ | 다음 언어들은 비주얼 베이직에서 파생한 것이다: | ||
+ | |||
+ | •[[비주얼 베이직 포 애플리케이션(VBA)]]는 많은 마이크로소프트의 응용 프로그램들(특히 [[마이크로소프트 오피스]]) 및 [[솔리드웍스]], [[오토캐드]],[[워드퍼펙트 오피스]], [[아크GIS]], 그리고 [[ACCPAC]]와 같은 [[서드 파티]] 제품들에 포함되어 있다. 서로 다른 응용 프로그램들간에 약간의 불일치는 존재하지만, 이것들은 전체적으로 비주얼 베이직 6.0과 같은 언어이며, 같은 런타임 라이브러리를 사용한다. | ||
+ | |||
+ | •비주얼 베이직 스크립트는 [[액티브 서버 페이지]]의 기본 언어이다. 비주얼 베이직 스크립트는 또한 마이크로소프트 [[윈도 스크립팅]]과 [[클라이언트측 웹 페이지]] 스크립팅에도 사용된다. 비주얼 베이직과 문법적으로 닮아 있지만, 이 언어는 비주얼 베이직 런타임 라이브러리와 대립되는 vbscript.dll을 통해 실행된다는 점에서 두 언어는 구분 된다. ASP와 비주얼 베이직 스크립트는 컴파일된 웹 페이지용 [[닷넷 프레임워크]]를 사용하는 액티브 서버 페이지 닷넷과 혼동하지 말것. | ||
+ | |||
+ | •[[비주얼 베이직 닷넷]]은 마이크로소프트의 비주얼 베이직 6.0의 후속작으로 설계된 제품이며, 마이크로소프트의 [[닷넷 프레임워크]] 플랫폼의 일부분이다. 비주얼 베이직 닷넷은 닷넷 프레임워크를 통해 실행되며, 실행 파일을 컴파일한다. 비주얼 베이직 닷넷은 비주얼 베이직 6.0과 하위 호환성이 없다. 마이크로소프트에서 제공하는 Visual Basic 6.0 to Visual Basic .NET Upgrade Assessment Tool 를 이용하여 변환시 생길 수 있는 문제점들을 확인할 수 있다. | ||
+ | |||
+ | •[[스타 베이직]]은 [[선 마이크로시스템즈]]가 개발한 [[스타 오피스]] 제품군에 포함되어 있는 인터프리터 언어이며, 비주얼 베이직과 호환성이 있다. | ||
+ | |||
+ | •[[감바스]]는 비주얼 베이직의 영향을 받은 [[GNU/리눅스용 자유 소프트웨어]] 프로그래밍 언어이다. 감바스는 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 감바스로 변환하는 기능이 있다. | ||
+ | |||
+ | •[[K베이직]]은 비주얼 베이직의 영향을 받은 리눅스, 매킨토시, 윈도용 [[자유 소프트웨어]] 프로그래밍 언어이다. K베이직은 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 K베이직으로 변환하는 기능이 있다.<ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ===지원 중단=== | ||
+ | [[MS]]는 무료 지원과 중요 업데이트 제공을 끝으로 2005년 3월 말 VB6에 대한 표준 지원을 중단할 것이라고 밝혔다. 하지만 두 서비스 모두 앞으로 3년 동안은 유료 서비스로 남아있게 된다. MS는 2000년 VB.NET을 내놓았으며 그 후 VB6 이하 버전을 사용하는 개발자들은 끊임없이 감소해왔다. 비주얼 베이직을 등지고 떠난 많은 개발자들은 [[VB.NET]]으로 옮겨가지 않고, MS의 언어가 아닌 [[자바]]로 옮겨갔다는 설문 조사 결과가 있다. 2005년 현재, 북미 전체 개발자 중 비주얼 [[베이직 닷넷]] 개발자가 34%인데 비해 비주얼 베이직 개발자들은 45%다. 기존 [[VB6]] 응용 프로그램을 [[비주얼베이직닷넷]](VB.NET)으로 옮기는 게 어려운 점이 문제점으로 지적되고 있다. 다만 2008년 [[VB6 SP6]]에 대한 일부 취약한 보안 문제와 관련된 패치가 있었다. 그리고 [[마이크로소프트]]가 추후 공개할 [[윈도 8]]부터 비주얼 베이직 및 기반 프로그램들을 더 이상 지원하지 않는다.<ref name = "위키백과 공식 홈페이지"></ref> | ||
+ | |||
+ | ==활용== | ||
+ | ===비주얼 베이직=== | ||
+ | [[비주얼 베이직]]은 [[마이크로소프트]]에서 만든 베이직 [[프로그래밍 언어]]의 일종으로, [[마이크로소프트 비주얼 스튜디오]] 제품군의 하나이다. 비주얼 베이직은 [[사건 기반 프로그래밍]]의 [[3세대 프로그래밍 언어]]이면서, 또한 마이크로소프트의 [[컴포넌트 오브젝트 모델]]에 따른 풍부한 구성 요소를 가진 [[통합 개발 환경]] 및 [[RAD]]을 가리키기도 한다. 비주얼 베이직은 초보자가 접근하기 쉬운 장점을 가지고 있는데, 그 이유는 시각적인 개발 환경과 더불어 베이직 언어의 연장선상에 있기 때문으로 간주된다. | ||
+ | 비주얼 베이직은 [[베이직]]의 영향을 받았으며, [[GUI 응용 프로그램]]의 RAD개발을 가능하게 해 주며, [[데이터베이스]]에 대한 접근을 [[데이터 액세스 오브젝트]], [[원격 데이터 오브젝트]], 또는 [[ActiveX 데이터 오브젝트]]들, 그리고 [[Active X컨트롤]]과 개체의 생성을 통해 가능하게 한다. [[비주얼 베이직 포 애플리케이션]]이나 [[비주얼 베이직 스크립트]]와 같은 [[스크립트 언어]]들은 문법적으로 비주얼 베이직과 유사하지만, 그 기능은 다르다. | ||
+ | 프로그래머는 비주얼 베이직에서 제공하는 구성 요소를 [[응용 프로그램]]에 삽입할 수 있다. 또한 비주얼 베이직으로 만든 프로그램은 [[윈도 API]]를 사용할 수 있으나, 추가적인 외부 함수 선언이 필요하다. | ||
+ | 비주얼 베이직의 마지막 버전은 1998년에 출시된 [[비주얼 베이직 6.0]]이다. 마이크로소프트의 연장 지원 기간은 2008년 3월에 끝났으며, 공식적인 후계 제품은 [[비주얼 베이직 닷넷]]이다. <ref name = "위키백과 공식 홈페이지">〈[http://a.to/19gk7MG 비주얼 베이직]〉, 《위키백과》</ref> | ||
== 소프트웨어 목록 == | == 소프트웨어 목록 == | ||
− | :{| | + | :{|class=wikitable width=1100 style="background-color:#ffffee" |
− | |+<big></big> | + | |+<big>베이직(BASIC)</big> |
− | !align=center|제작사 | + | !align=center style="background-color:#ffeecc"|제작사 |
− | !align=center|제품명 | + | !align=center style="background-color:#ffeecc"|제품명 |
− | !align=center|해석 방식 | + | !align=center style="background-color:#ffeecc"|해석 방식 |
− | !align=center|플랫폼 | + | !align=center style="background-color:#ffeecc"|플랫폼 |
− | !align=center|설명 | + | !align=center style="background-color:#ffeecc"|설명 |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|마이크로소프트 베이직 | |align=center|마이크로소프트 베이직 | ||
|align=center|인터프리터 | |align=center|인터프리터 | ||
− | + | |align=center|윈도 | |
− | + | |align=center|마이크로 소프트사의 창림 과 함께 출시 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|코모도어 베이직(Commodore BASIC) | |align=center|코모도어 베이직(Commodore BASIC) | ||
|align=center|인터프리터 | |align=center|인터프리터 | ||
− | + | |align=center|PET | |
− | + | |align=center|애플소프트 베이직 처럼 다른 6502 BASIC의 특성을 공유 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|애플소프트 베이직 | |align=center|애플소프트 베이직 | ||
|align=center|인터프리터 | |align=center|인터프리터 | ||
− | + | |align=center|MOS | |
− | + | |align=center|[[애플2]]에 내장된 베이직 프로그래밍 언어 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|MSX 베이직(MSX BASIC) | |align=center|MSX 베이직(MSX BASIC) | ||
|align=center|인터프리터 | |align=center|인터프리터 | ||
− | + | |align=center|MSX-DOS | |
− | + | |align=center|[[톰 카트리지]]를 주요 매체로 사용 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|GW-BASIC | |align=center|GW-BASIC | ||
|align=center|인터프리터 | |align=center|인터프리터 | ||
− | + | |align=center|dos MS-DOS의 번들 | |
− | + | |align=center|MS-DOS의 번들 | |
|- | |- | ||
44번째 줄: | 149번째 줄: | ||
|align=center|퀵베이직(Quick BASIC) | |align=center|퀵베이직(Quick BASIC) | ||
|align=center|인터프리터, 컴파일러 | |align=center|인터프리터, 컴파일러 | ||
− | + | |align=center|DOS | |
− | + | |align=center|컴파일러 방식 제공 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|큐베이직(QBasic) | |align=center|큐베이직(QBasic) | ||
− | |align=center|인터프리터 | + | |align=center|인터프리터 |
− | + | |align=center|DOS | |
− | + | |align=center|MS-DOS의 번들 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|비주얼 베이직(Visual BASIC) | |align=center|비주얼 베이직(Visual BASIC) | ||
|align=center|인터프리터, 컴파일러 | |align=center|인터프리터, 컴파일러 | ||
− | + | |align=center|Win3.1, Win98, WinXP | |
− | + | |align=center|자체버전 6.9까지 지원하고 중단됨 닷넷으로 출시됨 | |
|- | |- | ||
|align=center|마이크로소프트 | |align=center|마이크로소프트 | ||
|align=center|비주얼 베이직 닷넷(Visual BASIC .NET) | |align=center|비주얼 베이직 닷넷(Visual BASIC .NET) | ||
|align=center|인터프리터, 컴파일러 | |align=center|인터프리터, 컴파일러 | ||
− | + | |align=center|WinXP, Win Vista, Win7 | |
− | + | |align=center|비주얼스튜디오닷넷에 포함되어 출시됨 | |
|- | |- | ||
|align=center|볼랜드 | |align=center|볼랜드 | ||
|align=center|터보 베이직(Turbo-BASIC) | |align=center|터보 베이직(Turbo-BASIC) | ||
|align=center|인터프리터, 컴파일러 | |align=center|인터프리터, 컴파일러 | ||
− | + | |align=center|DOS | |
− | + | |align=center|볼랜드의 고급 프로그래밍 언어와 함께 사용가능 | |
|- | |- | ||
|align=center|리얼 소프트웨어 | |align=center|리얼 소프트웨어 | ||
|align=center|리얼 베이직(REALBasic) | |align=center|리얼 베이직(REALBasic) | ||
|align=center|인터프리터,컴파일러 | |align=center|인터프리터,컴파일러 | ||
− | + | |align=center|WinXP, MacOS | |
− | + | |align=center|최초 베이직 개발자인 존 케머니와 토마스 커츠 교수 개발 | |
|- | |- | ||
|align=center|트루베이직 | |align=center|트루베이직 | ||
|align=center|트루 베이직 | |align=center|트루 베이직 | ||
|align=center|인터프리터, 컴파일러 | |align=center|인터프리터, 컴파일러 | ||
− | + | |align=center|MS-DOS, 마이크로 소프트 윈도, Classic Mac OS | |
− | + | |align=center|최초 베이직 개발자인 존 케머니와 토마스 커츠 교수 개발 | |
|- | |- | ||
− | |align=center| | + | |align=center|Macclesfield(게임 제작사) |
|align=center|다크 베이직(DarkBASIC) | |align=center|다크 베이직(DarkBASIC) | ||
− | |align=center| | + | |align=center|컴파일러 |
− | + | |align=center|IDE, 디버거, 인터프리터, DirectX7 | |
− | + | |align=center|주로 게임 제작에 쓰는 프로그래밍 언어 | |
|- | |- | ||
− | |align=center| | + | |align=center|Staz소프트웨어 |
|align=center|퓨처 베이직(FutureBASIC) | |align=center|퓨처 베이직(FutureBASIC) | ||
− | |align=center| | + | |align=center|컴파일러 |
− | + | |align=center|MacOS | |
− | + | |align=center|AppleInc. 의 Macintosh용 BAXIC컴파일러 | |
|- | |- | ||
− | |align=center| | + | |align=center|마이크로 소프트 |
|align=center|프리 베이직(FreeBASIC) | |align=center|프리 베이직(FreeBASIC) | ||
− | |align=center| | + | |align=center|컴파일러 |
− | + | |align=center|MS-DOS, Linux, FreeBSD, Xbox | |
− | + | |align=center|IDE ASIC에는 FBide및 FBI/Edit가 포함 | |
|- | |- | ||
|align=center|삼성소프트 | |align=center|삼성소프트 | ||
|align=center|한글 베이직 | |align=center|한글 베이직 | ||
− | |align=center| | + | |align=center|인터프리터, IDE |
− | + | |align=center|DOS | |
− | + | |align=center|퀵베이직 기반의 베이직 프로그래밍 언어 | |
|- | |- | ||
− | |align=center| | + | |align=center|Galleon |
|align=center|qb64 | |align=center|qb64 | ||
− | |align=center| | + | |align=center|DOS |
− | + | |align=center|Windows7, Linux, Mac OSX | |
− | + | |align=center|QB4.5와 100% 호환 | |
|} | |} | ||
+ | |||
+ | == 문법 == | ||
+ | === 일반적인 베이직 키워드 === | ||
+ | {{다단5| | ||
+ | 프로그램 제어 흐름 | ||
+ | * IF ... THEN ...{ELSE} | ||
+ | * FOR ... TO ... {STEP} ... NEXT | ||
+ | * WHILE ... WEND 및 REPEAT ... UNTIL | ||
+ | * DO ... LOOP {WHILE} 또는 {UNTIL} | ||
+ | * GOTO | ||
+ | * GOSUB | ||
+ | * ON ... GOTO/GOSUB | ||
+ | * DEF FN | ||
+ | | | ||
+ | 데이터 조작 | ||
+ | * LET | ||
+ | * DATA | ||
+ | | | ||
+ | 입출력 | ||
+ | * LIST | ||
+ | * PRINT | ||
+ | * INPUT | ||
+ | * TAB 또는 AT | ||
+ | | | ||
+ | 함수목록 | ||
+ | * ABS | ||
+ | * ATN | ||
+ | * COS | ||
+ | * EXP | ||
+ | * INT | ||
+ | * LOG | ||
+ | * RND | ||
+ | * SIN | ||
+ | * SQR | ||
+ | * TAN | ||
+ | | | ||
+ | 기타 | ||
+ | * REM | ||
+ | * USR | ||
+ | * TRON | ||
+ | * TROFF | ||
+ | * ASM | ||
+ | }} | ||
+ | |||
+ | {{각주}} | ||
+ | |||
+ | ==참고자료== | ||
+ | *〈[http://a.to/19gk7MG 비주얼 베이직]〉, 《위키백과》 | ||
+ | * 테크홀릭, 〈[http://dpg.danawa.com/mobile/news/view?boardSeq=64&listSeq=2629435 50주년 맞은 베이직 ‘역사의 시작은…']〉, 《DPG》, 2014-05-07 | ||
== 같이 보기 == | == 같이 보기 == | ||
121번째 줄: | 275번째 줄: | ||
* [[토머스 커츠]] | * [[토머스 커츠]] | ||
− | {{프로그래밍| | + | {{프로그래밍 언어|검토 필요}} |
− | |||
− |
2021년 1월 25일 (월) 15:54 기준 최신판
베이직(BASIC)은 Beginner's All Purpose Symbolic Instruction Code의 약자로서, 교육용으로 만든 프로그래밍 언어이다. 1964년 미국 다트머스 대학교의 존 케메니(John Kemeny)와 토머스 커츠(Thomas Kurtz)가 개발했다. 다트머스의 최초 제품 이후로 인터프리터 방식이 많았으나 최근에는 컴파일러 방식도 많아졌다. 현재는 다양한 종류의 베이직이 존재하며 서로 문법도 차이가 많이 난다. 서로 다른 종류 사이의 소스 코드는 호환이 되지 않는다.
목차
등장배경[편집]
올해로 탄생 50주년을 맞은 베이직(BASIC) 프로그래밍 언어는 1964년 5월 1일은 세계 최초로 명령어 실행에 성공했다. 베이직은 INPUT이나 PRINT 등 자연어에 가까운 표현을 이용해 컴퓨터 프로그래밍의 문턱을 낮추는 데 일조했다. 원래 컴퓨터 교육을 위해 개발한 언어인 베이직의 탄생 배경은 아래와 같다.
베이직의 개념을 만들어낸 창조자는 다트머스대학 수학자인 존 케메니(John Kemeny) 교수와 토마스 쿠르츠(Thomas Kurtz) 교수다. 이들은 다잇 대학이 처음 도입한 제너럴일렉트릭 컴퓨터를 위해 프로그램을 개발했다. 이들은 컴퓨터 사용 능력의 중요성을 인식하고 학생들에게 컴퓨터 교육을 하기 위해 개발을 시작했다. 초보적인 일반 기호 명령 코드(Beginner’S A LL-Purpose Symbolic Instruction CODE)의 머리글자를 따서 베이직(BASIC)라는 이름을 붙였다. 다트머스대학에서 좋은 평가를 이끌어낸 베이직 시스템은 다른 대학에도 보급되기 시작했다. 당시만 해도 컴퓨터 작동 속도는 너무 느린 탓에 결과를 뽑아내려면 상당 시간과 노력을 기울여야 했지만 베이직은 빠르게 결과를 표시해 높은 효용성을 보여줬다. 물론 베이직을 모두 호의적으로 받아들였던 건 아니다. 컴퓨터 분야에선 비판도 많았다고 한다.[1]
역사[편집]
- 1926년 헝가리 부다페스트에서 태어난 유대계 존 케메니 교수는 나치의 박해를 피하기 위해 1940년 미국으로 이민한 뒤 프린스턴대학에 입학한 그는 재학 시절 1년 휴학하면서 맨해튼계획에 참여하기도 했다. 수학자이자 물리학자인 폰노이만에게 컴퓨터 관련 내용을 배우는 등 영향을 받았다고 한다.
- 1956년부터 다트머스대학에 합류한 토마스 쿠르츠 교수는 CPU 처리 시간을 분할에 한 번에 여러 작업을 동시에 할 수 있는 시분할 시스템 개념을 발표해 더 많은 사용자에게 컴퓨팅 환경을 제공하는 데 성공했다.
- 1964년 5월 1일 베이직 언어의 기본 골격이 된 다트머스 베이직을 처음 실행하는 데 성공했다. 그 해 6월에는 다트머스대학 학생에게도 공개되어 타자기 터미널 11대로 활용할 수 있게 됐다.
- 1966년 학내에서 문을 연 컴퓨터 센터에선 누구나 자유롭게 시설을 이용할 수 있고 용도를 묻지 않는다는 것, 중요한 연구 분석에 이용하거나 수업 과제를 해결하는 데 쓰거나 축구 게임, 여자 친구에게 편지를 쓰는 것도 자유라는 점을 브로셔를 통해 강조했다.
- 1975년 MITS가 발표한 세계 첫 개인용 컴퓨터인 알테어8800(Altair 8800)을 계기로 개인용 컴퓨터라는 개념이 세상에 퍼지기 시작했다. 알테어8800은 인텔 8080을 탑재한 제품으로 가격은 400∼500달러 수준이었다.
- 마이크로소프트 역시 초기 베이직 위주에서 워드나 엑셀 같은 응용 프로그램 개발로 무게 중심을 이동하는 한편 GUI도 1990년 윈도 3.0, 1995년에는 윈도95를 내놓는 등 변화해갔다.
특징[편집]
프로그래밍 언어 베이직과 마찬가지로, 비주얼 베이직은 쉽게 배우고 쉽게 사용할 수 있도록 설계되었다. 비주얼 베이직은 간단한 GUI기반의 응용 프로그램의 개발 뿐만 아니라, 복잡한 프로그램의 개발까지도 가능하게 한다. 비주얼 베이직에서의 프로그래밍은 폼(Form)위에 놓인, 시적으로 정렬된 GUI 위젯(비주얼 베이직에서는 컨트롤이라고 한다)들의 조합이다. 이 컨트롤들은 특별한 속성과 역할을 담당하고 있으며, 기능의 확장을 위해 추가적인 코드의 입력이 가능하다.
기본적인 속성과 역할이 이들 컨트롤에 기본값으로 설정되어 있기 때문에, 간단한 프로그램의 경우 프로그래머는 그다지 많은 코딩 없이 만들 수 있다. 성능상의 문제가 이전 버전에서 많이 보고되었지만, 기술의 발전에 따른 컴퓨터 성능 향상과 원시 코드(Native Code) 컴파일을 통해 이 문제는 많이 사라졌다. 비주얼 베이직 5.0부터 원시 코드로 컴파일된 실행 파일 작성이 가능해 졌지만, 비주얼 베이직으로 작성된 실행 파일은 여전히 1메가바이트 정도 크기의 라이브러리 파일을 필요로 한다. 이 파일은 윈도 2000과 이후 윈도 버전에서 기본적으로 설치되었지만, 그 이전의 윈도 95, 윈도 98, 윈도 NT에는 포함되어 있지 않았다. 때문에 비주얼 베이직으로 만든 실행 파일을 실행하기 위해서는 이 라이브러리 파일 또한 함께 배포하여야 했다.
폼은 끌어다 놓기 방식으로 만들어진다. 커서를 통해 텍스트 상자, 단추 등과 같은 컨트롤들을 폼 위에 놓는다. 컨트롤들은 속성을 가지며, 이벤트 처리자를 통해 서로 연결된다. 기본값들은 컨트롤이 만들어질 때 함께 제공된 것이지만, 프로그래머에 의해 변경될 수 있다. 많은 속성값들은 프로그램이 실행 중일 때, 응용 프로그램의 사용자의 조작이나 외부 환경의 변화에 의해 변경될 수 있으며, 이것은 동적인 응용 프로그램을 가능하게 해 준다. 예를 들면, 창의 'Resize(크기 변경)' 이벤트 처리자에 컨트롤들의 위치를 재조정하는 코드를 삽입할 수 있다. 이러한 방법을 통해서, 특정 컨트롤이 계속해서 창의 중앙에 위치하게 하거나, 창 전체를 다 채우는 등의 제어를 할 수 있게 된다. 텍스트 상자의 'KeyPress(키 눌림)' 이벤트 처리자에 코드를 삽입함으로써, 해당 응용 프로그램은 자동적으로 입력된 문자의 대소문자를 변환하거나, 특정 문자의 삽입을 막을 수도 있다.
비주얼 베이직은 실행 파일, ActiveX 컨트롤, DLL 파일을 만들 수 있다. 하지만 비주얼 베이직의 가장 기본적인 사용 용도는 마이크로소프트 윈도용 응용 프로그램과 데이터베이스 조작 프로그램의 개발에 있다. 덜 기능적인 대화 상자들은 팝업 능력에 사용된다. 프로그래머가 추가적인 코드를 적당한 이벤트 처리자에 삽입해야 하긴 하지만, 컨트롤들은 응용 프로그램에 기본적인 기능성을 제공한다. 예를 들면, 문자열의 입력이 가능한 드롭 다운 리스트 컨트롤은 자동적으로 자신이 가진 목록을 보여주며, 사용자가 항목을 선택할 수 있게 한다. 사용자에 의해 항목이 선택될 때, 이벤트 처리자가 호출되며, 이 이벤트 처리자는 프로그래머가 추가적으로 코딩한 코드를 처리하는데, 이때 사용자가 선택한 항목의 관련 항목의 출력과 같은, 사용자의 컨트롤에 대한 구체적인 동작에 따른 처리를 할 수 있다.
한편, 비주얼 베이직으로 사용자 인터페이스가 존재하지 않는 프로그램이나 추가적으로 제공되는 컴포넌트 오브젝트 모델을 통한 Active X 개체를 구성할 수도 있다. 이것은 서버 측면에서의 처리나 추가 모듈을 가능하게 해 준다. 비주얼 베이직은 레퍼런스 카운팅을 통한 쓰레기 수집을 수행하며, 방대한 규모의 추가적인 라이브러리들과, 기본적인 객체 지향 프로그래밍을 지원한다. 대다수의 일반적인 위젯들이 초기 프로젝트 구성에 포함되어 있기 때문에, 비주얼 베이직 프로그래머가 추가적인 라이브러리를 사용하는 경우는 드물다. 다른 대다수의 프로그래밍 언어와는 달리, 비주얼 베이직은 일반적으로 대소문자 구분을 하지 않으며, 대신에 키워드를 표준 대소문자 설정으로 변환한 뒤, 강제로 변수명의 대소문자를 기호 테이블의 내용으로 변환시킨다. 문자열 비교에 관해서는 대소문자 구분을 하지만, 프로그래머가 원한다면 대소문자 구분을 하지 않을 수도 있다. 비주얼 베이직의 컴파일러는 다른 비주얼 스튜디오 제품군(C, C++)과 호환성이 있지만, IDE상의 제한으로 인해 윈도 모델 DLL이나 스레드의 사용 등은 불가능하다. [2]
다른 언어와의 비교[편집]
- C 언어에서 가능한 다중 할당은 불가능하다. 비주얼 베이직에서 코드 A = B = C 는 변수 A, B, C의 값을 같게 하지 않는다. "Is B = C?" 불린 결과값이 A에 들어간다.[3] 결국 A에 들어가는 결과치는 거짓(0) 또는 참(-1)이 될 것이다.
- 불린 상수 True는 숫자값 -1을 갖는다. 이렇게 처리하는 이유는, 비주얼 베이직에서 불린 자료형은 16비트 부호 있는 정수 형태로 저장되기 때문이다. 이 구조에서 -1은 16진수 1로 계산되고(불린 값은 True이다), 0은 16진수 0으로 계산된다.(불린 값은 False이다.) 이것은 16비트 부호 있는 정수값 0인 Not 연산을 할 때 정수값 -1을 반환하는 것을 통해 명백하게 설명되는데, 다시 말해 True = Not False이다. 이러한 비주얼 베이직의 고유한 처리 방식은And, Or, Xor, Not과 같은 정수 비트의 논리 연산에 유용하다. 이러한 True의 정의는 1970년대 마이크로소프트가 만들었던 베이직 제품에서의 처리와 일치하며, 이것은 당시의 CPU 명령어의 특성과 관련이 있다.
- 논리 및 비트 연산자가 통합되어 있다. 이것은 논리 연산자와 비트 연산자가 구분되어 있는 펄과 같은 C 언어 계열의 언어와는 다르다. 이 요소는 베이직언어의 전통적인 특징이기도 하다.
- 가변 배열 기반이다. 배열의 정의는 파스칼이나 포트란과 같이, 유사한 최대 인덱스(Upper Bound)와 최소 인덱스(Lower Bound)의 지정을 통해 이루어진다. 또한 Option Base 구문을 통해 최소 인덱스의 지정을 할 수 있다. Option Base 문의 사용은 비주얼 베이직 코드를 볼 때 혼란을 야기할 수 있는데, 이것을 피하는 최선의 방법은 언제나 명시적으로 배열의 최소 인덱스를 지정하는 것이다. 이 최소 인덱스는 0 또는 1뿐만 아니라, 선언에 따라서는 다른 값이 될 수도 있기 때문이다. 이러한 방법으로, 최소 인덱스와 최대 인덱스 모두 프로그래머의 제어가 가능하다. 대조적으로, 서브스크립트 제한적 언어(Subscript-Limited Language)들에서, 배열의 최소 인덱스는 가변적이지 않다. 이러한 독특한 특성은 비주얼 베이직 닷넷에서도 나타나지만, 비주얼 베이직 스크립트에는 없다. OPTION BASE 는 1970년대 후반 ANSI Minimal BASIC을 통해 표준으로 지정되었다.
- 상대적으로 마이크로소프트 윈도 및 컴포넌트 오브젝트 모델과 강력하게 통합되어 있다.
- 실수를 정수로 바꿀 때, 기본적으로 Round함수를 통해 반올림을 한다. 반올림 방법으로는 Round-to-even 을 사용한다.
- 일반적인 나누기 연산자인 /를 통해 자동적으로 정수가 실수로 변환되므로, 짝수 정수부에 의한 홀수 정수부는 직관적으로 올바른 연산 결과를 보여준다. 한편, 자동으로 반올림을 하는 정수 나누기 연산자인 \도 있다.
- 기본값으로, 만약 변수가 선언되지 않았거나 자료형이 선언되지 않을 경우, 변수는 Variant형으로 선언 된다. 그러나 이것은 DefInt, DefBool, DefVar, DefObj, DefStr와 같은 DefType 구문을 통해 바꿀 수 있다. 비주얼 베이직은 6.0의 경우 12개의 DefType 구문이 지원된다. 기본 형은 특별한 접두어인 #를 통한 선언을 통해 Double형으로, !를 통해 Single형으로, &를 통해 Long 형으로, %형으로 Integer형으로, $를 통해 String형으로, @를 통해 Currency 형으로 오버라이드되거나, 예약어 As (type)를 통해 오버라이드 될 수 있다. 또한 무조건 명시적인 변수 선언만 허용하도록 할 수도 있는데, 이 때는 Option Explicit 명령을 사용한다.[2]
발전[편집]
비주얼 베이직 1.0은 1991년 5월 발표되었다. 사용자 인터페이스 개발에 있어서의 끌어다 놓기 방법은 앨런 쿠퍼가 개발한 프로토타입 폼 제작기에서 온 것이며, 쿠퍼가 재직했던 회사에서는 이 프로그램을 트라이포드라고 불렀다. 마이크로소프트는 윈도 3.0용 프로그래밍 가능 폼 제작 시스템의 개발을 위해 쿠퍼의 개발팀과 계약 한 후, 프로젝트의 코드네임을 루비라고 명명하였다. (루비 프로그래밍 언어와는 관계 없다.) 트라이포드는 프로그래밍 언어를 포함하고 있지는 않았다. 마이크로소프트는 비주얼 베이직을 만들기 위해 루비와 베이직 언어를 합치기로 결정했다. 루비 인터페이스 개발기는 비주얼 베이직의 "시각적인" 부분이 되었으며, 이것은 다시 마이크로소프트의 취소된 데이터베이스 시스템인 "오메가"용으로 설계된 "EB"(임베디드 베이직 엔진)와 합쳐졌다. 루비는 또한 훗날 비주얼 베이직 확장(VBX)이라고 명명될 추가적인 컨트롤들을 포함하기 위한 DLL 로드 기능을 지원하였다. 버전 5.0에서 Win16 코드와의 호환성을 버리고 전반적인 기능을 강화했다. 버전 6.0에서는 인터넷 관련 기능이 대폭 강화되었다. 비주얼 베이직 닷넷은 기존 버전과 다르게, 닷넷의 일부분으로 동작하고 객체지향 프로그래밍이 강화되었다. 또한 기존 버전과의 호환성이 없기 때문에 기존 비주얼 베이직 코드를 비주얼 베이직 닷넷 코드로 옮겨 주는 마법사가 있다. 그러나 네이티브 비주얼 베이직은 버전 6.0 이후로 마이크로소프트가 완전히 포기하여 사라진 언어가 되고 말았다. 하지만 2011년 현재, 프로그래밍 입문 언어로서 시스템에 관한 구체적인 지식(변수, 메모리 등)이 없이도 프로그래밍의 시작이 가능하다는 점에서 또, 액셀 등 오피스에서 사용되는 VBA 의 문법이 비주얼 베이직 6.0 버전과 호환됨에 따라 아직도 많은 사람들이 입문용으로도 또 실무용으로도 사용하고 있다. [2]
개발 및 발전 과정[편집]
- '선더(Thunder)' 프로젝트가 시작되었다.
- 1991년 5월, 미국 조지아주 애틀랜타에서 열린 컴덱스에서 윈도용 비주얼 베이직 1.0이 발매되었다.
- 1992년 3월, 도스용 비주얼 베이직 1.0이 발표되었다. 마이크로소프트의 도스 기반 베이직 컴파일러인 퀵베이직과 베이직 전문 개발 체계(BASIC Professional Development System)의 차기 버전으로 개발된 것이기 때문에, 언어적인 특성 자체는 윈도용 비주얼 베이직과 전혀 호환되지 않았다. 도스용 비주얼 베이직은 문자 기반 윈도(Character Oriented Windows)를 사용했으며, 확장 아스키문자를 통해 GUI를 구현해 내었다.
- 1992년 11월, 비주얼 베이직 2.0이 발매되었다. 프로그래밍 환경이 더욱 쉽게 개선되었으며, 속도 또한 향상되었다. 특히, 폼이 인스턴스적인 개체가되었으며, 이러한 기본적인 클래스 모듈의 개념은 후에 비주얼 베이직 4.0에서 적용된다.
- 1993년 7월, 비주얼 베이직 3.0이 발매되었다. 이 때는 스탠다드 에디션과 프로페셔널 에디션으로 구분되어 발매되었다. 이 비주얼 베이직 3.0은 제트(또는 액세스)1.x 데이터베이스를 읽을 수 있는 마이크로소프트 제트 데이터베이스 엔진 1.1을 포함하고 있었다.
- 1995년 8월, 비주얼 베이직 4.0이 발매되었다. 비주얼 베이직 4.0은 32비트와 16비트 윈도 프로그램 둘 다 개발할 수 있는 첫 번째 버전의 비주얼 베이직이었다. 또한 GUI가 없는 클래스를 비주얼 베이직에서 개발할 수 있는 기능이 추가되었다. 비주얼 베이직 4.0 제품들간의 비호환성은 설치와 운영상의 문제를 낳았다. 이전 버전의 비주얼 베이직은 VBX 컨트롤을 써 왔었지만, 비주얼 베이직 4.0은 OLE 컨트롤(확장자가 .OCX인 파일)을 썼다. 이 OLE 컨트롤은 훗날 ActiveX 컨트롤이라고 이름지어진다.
- 1997년 2월 발매된 비주얼 베이직 5.0은 32비트 버전으로만 발매되었다. 16비트 프로그램의 개발을 계속 했던 프로그래머는 비주얼 베이직 4.0의 소스 코드를 비주얼 베이직 5.0으로 옮길 수 있었으며, 비주얼 베이직 5.0 프로그램이 비주얼 베이직 4.0으로 옮겨 가기도 쉬웠다. 비주얼 베이직 5.0은 또한 사용자 정의 컨트롤을 만들 수 있는 기능, 또한 원시 코드로 윈도용 실행 파일을 컴파일 할 수 있는 기능, 대량의 계산에서의 속도 향상 등의 기능이 추가되었다. Active X 컨트롤의 개발을 위해 다운로드 받을 수 있는 무료 버전 또한 배포되었는데, 이 버전은 일종의 시험판으로, 일반적인 .exe 프로젝트가 IDE에서는 실행되었지만 컴파일되지는 않았다.
- 1998년 6월, 많은 영역에서 개선을 이룬 비주얼 베이직 6.0이 발매되었다. 특히 비주얼 베이직 6.0은 웹 기반 응용 프로그램의 개발 기능이 추가되었다. 비주얼 베이직 6.0은 2008년 3월 마이크로소프트의 "지원 안함" 단계에 해당 됨으로써 종료되었다. 이처럼 비주얼 베이직 6.0의 개발 환경은 더 이상 지원되지 않기는 하지만, 실행에 필요한 라이브러리는 윈도 비스타, 윈도 서버 2008, 그리고 윈도 7에 계속 지원되고 있다.
- 2005년 3월 31일, 마이크로소프트 비주얼 베이직 6.0의 주요 지원이 종료되었다. 확장 지원은 2008년 3월 종료되었다. 이에 대하여, 비주얼 베이직 유저 커뮤니티는 우려를 표현하고 제품의 계속적인 지원을 청원하였다. 하지만 마이크로소프트는 기존 입장을 바꾸지 않았다. (하지만 다른 흐름도 있다. 아이러니컬하게도, 이 시기(2005년)에 발표된 마이크로소프트의 새로운 바이러스 검사 소프트웨어인 마이크로소프트 앤티스파이웨어는 비주얼 베이직 6.0으로 개발된 프로그램이었다. 이 프로그램의 대체품인 윈도 디펜더는 C++ 코드로 재작성되어 개발되었다.[2]
다른 언어들과의 관계[편집]
마이크로소프트의 여러 스크립트 언어들은 비주얼 베이직으로부터 파생한 것이다. 비주얼 베이직 자체는 베이직과 강력한 연관성을 가지며, 결과적으로 닷넷 프레임워크 플랫폼 버전으로 대체되었다.
다음 언어들은 비주얼 베이직에서 파생한 것이다:
•비주얼 베이직 포 애플리케이션(VBA)는 많은 마이크로소프트의 응용 프로그램들(특히 마이크로소프트 오피스) 및 솔리드웍스, 오토캐드,워드퍼펙트 오피스, 아크GIS, 그리고 ACCPAC와 같은 서드 파티 제품들에 포함되어 있다. 서로 다른 응용 프로그램들간에 약간의 불일치는 존재하지만, 이것들은 전체적으로 비주얼 베이직 6.0과 같은 언어이며, 같은 런타임 라이브러리를 사용한다.
•비주얼 베이직 스크립트는 액티브 서버 페이지의 기본 언어이다. 비주얼 베이직 스크립트는 또한 마이크로소프트 윈도 스크립팅과 클라이언트측 웹 페이지 스크립팅에도 사용된다. 비주얼 베이직과 문법적으로 닮아 있지만, 이 언어는 비주얼 베이직 런타임 라이브러리와 대립되는 vbscript.dll을 통해 실행된다는 점에서 두 언어는 구분 된다. ASP와 비주얼 베이직 스크립트는 컴파일된 웹 페이지용 닷넷 프레임워크를 사용하는 액티브 서버 페이지 닷넷과 혼동하지 말것.
•비주얼 베이직 닷넷은 마이크로소프트의 비주얼 베이직 6.0의 후속작으로 설계된 제품이며, 마이크로소프트의 닷넷 프레임워크 플랫폼의 일부분이다. 비주얼 베이직 닷넷은 닷넷 프레임워크를 통해 실행되며, 실행 파일을 컴파일한다. 비주얼 베이직 닷넷은 비주얼 베이직 6.0과 하위 호환성이 없다. 마이크로소프트에서 제공하는 Visual Basic 6.0 to Visual Basic .NET Upgrade Assessment Tool 를 이용하여 변환시 생길 수 있는 문제점들을 확인할 수 있다.
•스타 베이직은 선 마이크로시스템즈가 개발한 스타 오피스 제품군에 포함되어 있는 인터프리터 언어이며, 비주얼 베이직과 호환성이 있다.
•감바스는 비주얼 베이직의 영향을 받은 GNU/리눅스용 자유 소프트웨어 프로그래밍 언어이다. 감바스는 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 감바스로 변환하는 기능이 있다.
•K베이직은 비주얼 베이직의 영향을 받은 리눅스, 매킨토시, 윈도용 자유 소프트웨어 프로그래밍 언어이다. K베이직은 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 K베이직으로 변환하는 기능이 있다.[2]
지원 중단[편집]
MS는 무료 지원과 중요 업데이트 제공을 끝으로 2005년 3월 말 VB6에 대한 표준 지원을 중단할 것이라고 밝혔다. 하지만 두 서비스 모두 앞으로 3년 동안은 유료 서비스로 남아있게 된다. MS는 2000년 VB.NET을 내놓았으며 그 후 VB6 이하 버전을 사용하는 개발자들은 끊임없이 감소해왔다. 비주얼 베이직을 등지고 떠난 많은 개발자들은 VB.NET으로 옮겨가지 않고, MS의 언어가 아닌 자바로 옮겨갔다는 설문 조사 결과가 있다. 2005년 현재, 북미 전체 개발자 중 비주얼 베이직 닷넷 개발자가 34%인데 비해 비주얼 베이직 개발자들은 45%다. 기존 VB6 응용 프로그램을 비주얼베이직닷넷(VB.NET)으로 옮기는 게 어려운 점이 문제점으로 지적되고 있다. 다만 2008년 VB6 SP6에 대한 일부 취약한 보안 문제와 관련된 패치가 있었다. 그리고 마이크로소프트가 추후 공개할 윈도 8부터 비주얼 베이직 및 기반 프로그램들을 더 이상 지원하지 않는다.[2]
활용[편집]
비주얼 베이직[편집]
비주얼 베이직은 마이크로소프트에서 만든 베이직 프로그래밍 언어의 일종으로, 마이크로소프트 비주얼 스튜디오 제품군의 하나이다. 비주얼 베이직은 사건 기반 프로그래밍의 3세대 프로그래밍 언어이면서, 또한 마이크로소프트의 컴포넌트 오브젝트 모델에 따른 풍부한 구성 요소를 가진 통합 개발 환경 및 RAD을 가리키기도 한다. 비주얼 베이직은 초보자가 접근하기 쉬운 장점을 가지고 있는데, 그 이유는 시각적인 개발 환경과 더불어 베이직 언어의 연장선상에 있기 때문으로 간주된다. 비주얼 베이직은 베이직의 영향을 받았으며, GUI 응용 프로그램의 RAD개발을 가능하게 해 주며, 데이터베이스에 대한 접근을 데이터 액세스 오브젝트, 원격 데이터 오브젝트, 또는 ActiveX 데이터 오브젝트들, 그리고 Active X컨트롤과 개체의 생성을 통해 가능하게 한다. 비주얼 베이직 포 애플리케이션이나 비주얼 베이직 스크립트와 같은 스크립트 언어들은 문법적으로 비주얼 베이직과 유사하지만, 그 기능은 다르다. 프로그래머는 비주얼 베이직에서 제공하는 구성 요소를 응용 프로그램에 삽입할 수 있다. 또한 비주얼 베이직으로 만든 프로그램은 윈도 API를 사용할 수 있으나, 추가적인 외부 함수 선언이 필요하다. 비주얼 베이직의 마지막 버전은 1998년에 출시된 비주얼 베이직 6.0이다. 마이크로소프트의 연장 지원 기간은 2008년 3월에 끝났으며, 공식적인 후계 제품은 비주얼 베이직 닷넷이다. [2]
소프트웨어 목록[편집]
베이직(BASIC) 제작사 제품명 해석 방식 플랫폼 설명 마이크로소프트 마이크로소프트 베이직 인터프리터 윈도 마이크로 소프트사의 창림 과 함께 출시 마이크로소프트 코모도어 베이직(Commodore BASIC) 인터프리터 PET 애플소프트 베이직 처럼 다른 6502 BASIC의 특성을 공유 마이크로소프트 애플소프트 베이직 인터프리터 MOS 애플2에 내장된 베이직 프로그래밍 언어 마이크로소프트 MSX 베이직(MSX BASIC) 인터프리터 MSX-DOS 톰 카트리지를 주요 매체로 사용 마이크로소프트 GW-BASIC 인터프리터 dos MS-DOS의 번들 MS-DOS의 번들 마이크로소프트 퀵베이직(Quick BASIC) 인터프리터, 컴파일러 DOS 컴파일러 방식 제공 마이크로소프트 큐베이직(QBasic) 인터프리터 DOS MS-DOS의 번들 마이크로소프트 비주얼 베이직(Visual BASIC) 인터프리터, 컴파일러 Win3.1, Win98, WinXP 자체버전 6.9까지 지원하고 중단됨 닷넷으로 출시됨 마이크로소프트 비주얼 베이직 닷넷(Visual BASIC .NET) 인터프리터, 컴파일러 WinXP, Win Vista, Win7 비주얼스튜디오닷넷에 포함되어 출시됨 볼랜드 터보 베이직(Turbo-BASIC) 인터프리터, 컴파일러 DOS 볼랜드의 고급 프로그래밍 언어와 함께 사용가능 리얼 소프트웨어 리얼 베이직(REALBasic) 인터프리터,컴파일러 WinXP, MacOS 최초 베이직 개발자인 존 케머니와 토마스 커츠 교수 개발 트루베이직 트루 베이직 인터프리터, 컴파일러 MS-DOS, 마이크로 소프트 윈도, Classic Mac OS 최초 베이직 개발자인 존 케머니와 토마스 커츠 교수 개발 Macclesfield(게임 제작사) 다크 베이직(DarkBASIC) 컴파일러 IDE, 디버거, 인터프리터, DirectX7 주로 게임 제작에 쓰는 프로그래밍 언어 Staz소프트웨어 퓨처 베이직(FutureBASIC) 컴파일러 MacOS AppleInc. 의 Macintosh용 BAXIC컴파일러 마이크로 소프트 프리 베이직(FreeBASIC) 컴파일러 MS-DOS, Linux, FreeBSD, Xbox IDE ASIC에는 FBide및 FBI/Edit가 포함 삼성소프트 한글 베이직 인터프리터, IDE DOS 퀵베이직 기반의 베이직 프로그래밍 언어 Galleon qb64 DOS Windows7, Linux, Mac OSX QB4.5와 100% 호환
문법[편집]
일반적인 베이직 키워드[편집]
프로그램 제어 흐름
|
데이터 조작
|
입출력
|
함수목록
|
기타
|
각주[편집]
참고자료[편집]
- 〈비주얼 베이직〉, 《위키백과》
- 테크홀릭, 〈50주년 맞은 베이직 ‘역사의 시작은…'〉, 《DPG》, 2014-05-07
같이 보기[편집]