비주얼베이직
비주얼베이직(Visual BASIC)은 미국 마이크로소프트가 윈도 시스템에서 작동하는 소프트웨어를 쉽고 간편하게 개발하기 위해 만든 프로그래밍 언어이다. 간략히 VB(브이비)라고 쓴다. 비주얼베이직은 데이터베이스 프로그래밍이 가능하고, 그래픽 사용자 인터페이스(GUI)를 사용하는 프로그램을 매우 쉽게 개발할 수 있다.
목차
개요
비주얼 베이직은 컴퓨터 프로그래밍 언어의 한 종류다. 프로그래밍 언어는 사람이 이해할 수 있는 영문과 비슷한 코드로 되어 있어 컴퓨터에 이해시키기 위해서는 반드시 컴파일(compile) 과정을 거쳐야 한다. 고전적인 베이직언어는 인터프리터 기법의 언어나 그래픽 사용자 인터페이스(GUI) 프로그래밍인 비주얼베이직은 컴파일러 기법과 인터프리터 기법이 모두 사용된다고 할 수 있다. 마우스를 클릭하거나 움직이는 등의 행동을 이벤트라고 하는데 비주얼 베이직은 이러한 이벤트가 발생함에 따라 처리하도록 하는 이벤트 지향 프로그램(Event Driven Programming)이다. 특히 비주얼 베이직은 폼(Form)이라는 객체를 위주로 이에 여러 가지 컨트롤을 배치해 동작하는 이벤트 지향 프로그램을 작성할 수 있다. 또한 비주얼 베이직은 마이크로소프트사에서 개발한 윈도용 그래픽 사용자 인터페이스 프로그래밍 언어로 Visual Studio라고 불리는 프로그램 통합 개발환경 내에 존재하는 언어다.[1]
역사
일반적인 베이직(Basic) 언어는 1963년 미국의 다트머스 대학에서 John G. Kemeny와 Thomas E. Kurtz에 의해 TSS(Time Sharing System)용으로 개발된 초보자를 대상으로 한 프로그래밍 언어다. 이러한 베이직 언어가 그래픽 사용자 인터페이스 윈도용으로 개발된 것이 비주얼 베이직으로서 1991년 비주얼 베이직 1.0이 처음 등장했다 이후 계속 버전(version)업이 되었다. 1992년에는 비주얼 베이직 2.0, 1998년 비주얼 베이직 6.0, 2002년 비주얼스튜디오.net, 2005년 비주얼 스튜디오 2005, 2013년 비주얼 스튜디오 2013, 2015년 비주얼 스튜디오 2015 등등 등장했다.[1]
특징
비주얼 베이직은 인터프리터 언어인 베이직 언어를 기초로 해서 만들어졌기 때문에 인터프리터 언어로 분류할 수 있다. 한 줄씩 번역되는 인터프리터 언어의 특징을 가지고 있어서 오류를 곧바로 알 수 있다는 장점이 있지만, 컴파일 언어보다 실행 속도가 느리다는 단점이 있다. 이처럼 비주얼 베이직은베이직 언어를 모태로 하여 인터프리터 언어의 특징을 가지면서도 컴파일 방식으로 실행 파일을 만드는 컴파일 언어의 특징을 가지고 있다. 비주얼 베이직은 비주얼한 도구를 이용할 수 있기 때문에 프로그래밍 입문자가 가장 쉽게 배울 수 있을 뿐만 아니라 윈도 환경에 맞는 프로그램을 단시간에 효과적으로 작성할 수 있는 언어다. 이러한 특징은 베이직이라는 언어 자체가 쉬운 이유도 있지만, 비주얼 베이직을 만든 마이크로소프트에서 사용자의 편의를 위한 각종 기능을 추가하여 마치 레고 블록을 맞추듯이 프로그램을 만들 수 있는 개발 환경을 제공하고 있기 때문이다. 비주얼 베이직 6.0부터는 개체와 속성, 메소드, 이벤트 등의 특성을 가지는 객체 지향(Object Oriented) 개발 방식을 지원한다. 이러한 객체 지향 방식은 비주얼 베이직 6.0의 다음 버전인 비주얼 베이직 닷넷(Visual Basic.NET)에서 완벽하게 지원하게 된다. 객체 지향 언어는 프로그램을 쉽게 개발할 수 있고, 유지 보수가 쉬우며, 개체를 다시 사용할 수 있다는 장점이 있다. 비주얼 베이직 6.0에는 5.0에 없던 많은 기능이 추가됐다. 특히 [데이터베이스]]와 관련된 기능이 좀 더 보완되었다. 비주얼 베이직 6.0에서는 기존의 5.0에서 사용하던 데이터베이스 액세스 방식인 ODBC나 DAO 보다 훨씬 강력하고 빠른 속도를 제공하는 OLE DB, 그리고 마이크로소프트 ADO 개체를 제공한다. 이 개체는 SQL 서버나 오라클과 같은 관계형 데이터베이스뿐만 아니라 텍스트 파일과 전자우편과 같은 데이터도 마치 데이터베이스를 사용하듯 처리해서 더 높은 신뢰성과 빠른 속도를 제공한다. 특히 ADO 개체를 이용하면, 대규모 업무나 인트라넷 등을 좀 더 효율적으로 관리할 수 있다.[2]
장단점
비주얼 베이직의 장점으로는 베이직은 기본 언어로 채택해서 쉽고 빠르게 배울 수 있다. 거의 모든 응용 프로그램을 작성할 수 있다. Third Part 컴포넌트가 풍부해서 프로그램 개발 생산성이 좋다. ODBC, ADO 등을 이용해 다양한 데이터베이스 관련 프로그램 작성이 가능하다. VBA, ASP 등의 다양한 파생언어와 뛰어난 호환성을 갖고 있다. ActiveX, COM 등의 최신기술을 지원한다는 것들이 있다. 단점으로는 실행속도가 델파이나 VC++등에 비해 느리다. 프로그램 배포가 상대적으로 어렵다.(배포에 관련된 파일이 많다) 애플리케이션이 복잡해질수록 생산성이 급격하게 떨어진다. 모든 기술이 윈도 운영체제에 종속되어 있어서 크로스 플랫폼을 지원하지 못한다는 점들이 있다.[3]
문법
자료형
자료형 구 분 자료형 의 미 정수 Byte 1바이트 Integer 2바이트 Long 4바이트 실수 Single 4바이트 Double 8바이트 Decimal 14바이트 참/거짓 Bollean 2바이트 문자열 String 10바이트+문자열 길이 시간 단위 Date 8바이트 객체 단위 Object 4바이트 통화 단위 Currency 8바이트 기타 Variant(숫자) 16바이트 Variant(문자) 22바이트+문자열 길이
변수
' 구 분 내 용 사용 키워드 전역 변수 모듈, 클래스 모듈에 선언하여 프로그램 내부에서 어디에서나 사용 할수 있는 변수, 생명주기는 프로그램 중에는 사용 할수 있다. Public 지역 변수 폼, 프로시저에서 선언 하여 사용 하는 변수, 생명주기는 폼, 해당 프로시저 사용 상태 까지는 사용 할수 있다. Dim, Private, Static
상수
상수는 한 번 선언해 놓으면 변하지 않고 고정 되는 값을 말한다. 종류는 일반 상수, 열거형 이 있다. 일반상수는 Const 키워드 사용, 열거형은 Enum 키워드를 사용한다.
' 예제 코드 설명 Const MyVar = 459 상수는 기본값으로 Private을 갖는다. Public Const MyString = "HELP" Public 상수를 선언한다. Private Const MyInt As Integer = 5 Private Integer 상수를 선언한다. Const MyStr = "Hello", MyDouble As Double = 3.4567 같은 줄에 다중 상수를 선언한다.
연산자
비주얼베이직 6.0에서는 산술 연산자, 관계 연산자, 논리 연산자 3가지가 있다.
' 구 분 연산자 의미 산술 연산자 +,-,*,/ 사칙 연산을 하는 연산자 ^ 승수에 사용 하는 연산자 Mod` 나눈 나머지를 구하는 연산자 관계 연산자 =,>,< 같다, 보다 크다, 보다 작다 연산자 <> ~와 같지 않다 연산자 논리 연산자 Not 부정 하는 연산자 And 논리곱 연산자 Or 논리합 연산자 Xor 배타적 논리합 연산자 Eqv 논리적으로 동등한지를 구하기 연산자 Imp 논리적 함축성 연산자
다른 언어와 관계
마이크로소프트의 여러 스크립트 언어들은 비주얼 베이직으로부터 파생한 것이다. 비주얼 베이직 자체는 베이직과 강한 연관성을 가지며, 결과적으로 닷넷 프레임워크 플랫폼 버전으로 대체됬다. 밑에 언어들은 비주얼 베이직에서 파생한 것이다.[5]
- 비주얼 베이직 스크립트는 액티브 서버 페이지의 기본 언어다. 비주얼 베이직 스크립트는 또한 마이크로소프트 윈도 스크립팅과 클라이언트측 웹 페이지 스크립팅에도 사용된다. 비주얼 베이직과 문법적으로 닮아 있지만, 이 언어는 비주얼 베이직 런타임 라이브러리와 대립되는 vbscript.dll을 통해 실행된다는 점에서 두 언어는 구분 된다.[5]
- 비주얼 베이직 포 애플리케이션(VBA)는 많은 마이크로소프트의 응용 프로그램들 및 솔리드웍스, 오토캐드, ACCPAC와 같은 서드 파티 제품들에 포함되어 있다. 서로 다른 응용 프로그램들간에 약간의 불일치는 존재하지만, 이것들은 전체적으로 비주얼 베이직 6.0과 같은 언어이며, 같은 런타임 라이브러리를 사용한다.[5]
- 비주얼 베이직 닷넷은 마이크로소프트의 비주얼 베이직 6.0의 후속작으로 설계된 제품이며, 마이크로소프트의 닷넷 프레임워크 플랫폼의 일부분이다. 비주얼 베이직 닷넷은 닷넷 프레임워크를 통해 실행되며, 실행 파일을 컴파일한다. 비주얼 베이직 닷넷은 비주얼 베이직 6.0과 하위 호환성이 없다. 마이크로소프트에서 제공하는 Visual Basic 6.0 to Visual Basic .NET Upgrade Assessment Tool 를 이용하여 변환시 생길 수 있는 문제점들을 확인할 수 있다.[5]
- 스타 베이직은 선 마이크로시스템즈가 개발한 스타 오피스 제품군에 포함되어 있는 인터프리터 언어이며, 비주얼 베이직과 호환성이 있다.[5]
- 감바스는 비주얼 베이직의 영향을 받은 GNU/리눅스용 자유 소프트웨어 프로그래밍 언어다. 감바스는 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 감바스로 변환하는 기능이 있다.[5]
- K베이직은 비주얼 베이직의 영향을 받은 리눅스, 매킨토시, 윈도용 자유 소프트웨어 프로그래밍 언어이다. K베이직은 비주얼 베이직의 클론은 아니지만, 비주얼 베이직 프로그램을 K베이직으로 변환하는 기능이 있다.[5]
응용프로그램 개발
비주얼베이직에서 응용프로그램을 작성하기 위해서는 3가지 주요단계가 필요하다. 1단계는 인터페이스 만들기로 사용자와 컴퓨터간에 상호정보를 주고받기위한 기초작업을 하는 단계다. 인터페이스는 응용프로그램 개발의 첫 단계로, 폼은 인터페이스의 기초가 된다. 집짓는 것에 비유하자면 폼은 집터가 될 것이고, 도구상자에 있는 컨트롤들은 각종 건축자재에 해당할 것이다. 컨트롤을 폼에 추가시키는 것은 프레임같은 개체를 컨테이너안에 그룹화시킬 필요가 있을 때 사용한다. 2단계로는 속성설정이다. 각 개체에 대해 이름을 지정해 주거나 색깔, 모양, 개체위치, 개체크기등의 속성을 설정해주는 단계다. 두번째 단계로 개체에 속성을 부여한다. 이것도 인간이 집을 만들때, 용도에 맞게 방의 크기도 정하고, 또한 방의 위치도 생각할 것이다. 그리고 난 다음 집을 짓고, 명패를 달고, 색깔도 칠하는 등 여러가지 부속작업을 하는 것에 비유할 수 있다. 이러한 속성을 설정하기 위해 비주얼베이직은 속성창이라는 것을 제공하고 있다. 속성창은 폼뿐만 아니라 폼 내에 있는 모든 컨트롤의 속성을 설정할 수 있도록 속성목록을 제공하고 있다. 폼뿐만 아니라 모든 컨트롤에 이름을 굳이 다시 부여하지 않아도 되지만, 이렇게하면 혼동되기 쉽다. 예를 들어, 하나의 프로젝트에 10개의 폼이 존재한다고 가정하면 비주얼베이직은 폼 추가 순서대로 폼의 이름을 폼1, 폼2, 폼3 이런식으로 부여하게 된다. 이중 폼3이 하는 일이 네트워크의 로그인 폼이라면 비주얼베이직의 특징중 하나가 개체의 재활용이다. 즉 기존에 있던 프로젝트뿐만 아니라 폼 등은 언제든지 필요하다면 다시 불러 쓸 수 있다는 것이다. 이러한 특징을 이용해 다른 프로젝트에서 네트워크 로그인 역할을 하는 기존의 폼을 쓰기 위해 하드디스크에서 찾을 것이다. 그러한 폼의 이름이 폼1, 폼2 식으로 되어있다면 찾기 힘들 것이다. 3단계로는 코드쓰기다. 개체에 이벤트가 발생하면 수행해야 할 일을 적어두는 단계다. 속성설정만으로 완전히 어플리케이션이 될 수는 없다. 모든 어플리케이션의 생명은 바로 코드작성에 있다. 코드창은 비주얼베이직 코드를 작성할 수 있는 곳으로 코드는 언어문장, 상수, 선언문으로 구성되어 있다. 비주얼베이직에있는 모든 코드는 프로시저(Procedure)라고 하는 작은 단위로 이루어진다. 하나의 이벤트 프로시저에는 어떤 사건 발생시 수행하는 코드를 포함하게 된다.[6]
버전 분류
비주얼베이직 1.0
비주얼베이직 1.0은 윈도우즈 3.0 기반에서 실행된 프로그램 제작 툴이다. 후속작으로 도스기반에서 실행되는 프로그램이 나오기도 했다. 비주얼베이직 1.0은 1991년 5월에 발표되었다. 지금도 네이버에 검색하면 윈도우즈용 파일을 구할 수 있긴 하다. 하지만 윈도우 10에서 실행이 안되는 듯 한다. 더 하위 버전으로 다운그레이드를 하면 아마 실행이 될 것이다. 도스용 비주얼베이직을 구해서 도스박스로 구동시키면 도스용 비주얼베이직 1.0이라도 체험해 볼 수 있다.[7]
비주얼베이직 6.0
비주얼베이직 6.0은 1998년에 등장했다. 이 버전은 아직도 많은 사람들이 이용하고 있으며, 아직도 인터넷에 쳐보면 파일들이 많이 나온다. 이렇게 아직도 비주얼베이직 6.0 사용자가 많은건 7.0부터는 비주얼베이직이 비주얼베이직.Net으로 바뀌어 버렸기 때문이다. 둘은 아예 호환이 안 되기 때문에 사실상 완벽히 다른 언어다. 비주얼베이직.Net은 객체 지향 언어이고 비주얼베이직은 절차 지향이므로 서로 당연히 코딩 패러다임에 어마어마한 차이를 가져왔다. 즉 6.0버전이 다른 버전보다 좋아서 사용한 게 아니라 애당초 6.0이 비주얼베이직 버전의 끝이기 때문에 다른 선택지 자체가 없다. 그 이후의 버전은 비주얼베이직이아니라 비주얼베이직.Net이라 불러야 한다. 애당초 비주얼베이직 언어 자체가 마이크로소프트, 윈도우 플랫폼에 종속된 언어이기 때문에 혼자서 마음대로 바꿀 수 있었다. 마이크로소프트는 시대의 흐름에 맞춰서 비주얼베이직을 객체지향으로 바꾸었고 그 결과물이 비주얼베이직.Net이다. 비주얼베이직 개발 환경의 지원은 공식적으로 2005년에 종료되었고 유료 서비스는 그 후 3년동안인 2008년까지 지원되고 종료되었다. 그 이후 마이크로소프트는 비주얼베이직6.0을 쓰지말고 비주얼베이직.Net을 써 달라고 부탁했지만 현실적으로 힘든 면이 있었던 게 이미 비주얼베이직의 압도적인 장점인 쉬운 그래픽 사용자 인터페이스구축과 6.0버전의 장점인 가벼움이라는 무기로 수많은 프로그램들이 만들어졌기 때문에 유지 보수에 비주얼베이직.Net을 사용할 수 없었다. 비주얼베이직 6.0이 워낙 걸작이었기 때문에 비주얼베이직을 아직도 사용하는 사람이 많다. 이는 언어 점유율에서도 확인할 수 있다. 지원이 빵빵한 다른 언어들과도 크게 꿀리지 않는데 매년 비주얼베이직을 지원해 달라고 마이크로소프트에게 진정서를 넣지만 마이크로소프트에서도 비주얼베이직.Net을 사용하라고 한다.[7]
비주얼베이직 닷넷과 차이
비주얼베이직이 1991년 비주얼베이직 1.0으로 발표되던 시점으로 돌아가 보면 한창 인기 운영체제로 사용하던 엠에스도스 체계에서 1990년 윈도 3.0과 후속으로 윈도 3.1이 발표되고 인기를 얻으면서 그래픽 사용자 인터페이스 기반의 응용프로그램을 복잡하고 힘들게 만들었다면 비주얼베이직 1.0은 프로그래머에게 윈도우 프로그램을 쉽게 제작할 수 있는 기회를 제공했다. 비주얼베이직 닷넷은 기존의 비주얼베이직의 기본적인 문법은 가져왔지만 +=, -=연산자와 같은 C문법이 들어오기도 했고 무엇보다 기본적인 닷넷 타입을 적용시키면서 이전 비주얼베이직 버전에서 작성된 코드는 하위 호환이 되지 않아 비주얼베이직 닷넷에 맞도록 재작성해야만 실행할 수 있게 되었다. 이전의 비주얼베이직과 비주얼베이직 닷넷을 구분 짓는 기반에는 닷넷 프레임워크가 있다. 프로그램이 만들어져서 실행되는 과정을 살펴보면 비주얼베이직 코드는 컴파일과 링크 과정을 거쳐 대상 운영체제나 프로세서(Processor)에 맞는 기계어(Machine language)로 만들어지고 사용자의 수행 요청에 따라 운영체계의 통제아래 프로그램이 실행되는 방식이 이전 모델이라면 닷넷 프레임워크 체계에서는 대상 운영체제나 프로세서의 종류에 관계없이 닷넷의 규격에 맞는 프로그램을 생성하면 닷넷 프레임워크의 CLR(Common Language Runtime)을 통해서 다양한 운영체제와 프로세서에서의 동일한 기능을 발휘하는 응용 프로그램을 동작시킬 수 있는 것이다. 요즘 만들어지고 있는 비주얼스튜디오는 자체를 닷넷으로 제작하고 있다. 닷넷으로 제작한 응용은 웹 환경에서도 사용될 수 있을 뿐만 아니라 닷넷을 채용한 모바일(Mobile) 기기에서도 활용할 수 있는 등 그 확장성은 무한하다.[8]
현황 및 전망
마이크로소프트의 닷넷 팀 블로그에 비주얼베이직 닷넷의 닷넷 5.0 버전 지원과 관련된 글이 올라왔다. 이 글에서 닷넷 팀은 비주얼베이직을 더이상 발전시킬 계획은 없다. 앞으로는 안정성이나 호환성 관련 패치만 할 것이다. 닷넷에 차후 버전에서 제공하는 신기능은 아마 비주얼베이직에서 지원되지 않을 것이다 라고 밝혔다. 원래 마이크로소프트는 베이직(BASIC) 언어 개발로 시작한 소프트웨어 회사였다. 1975년에 빌 게이츠와 폴 앨런이 알테어 8800이라는 개인용 컴퓨터를 위한 알테어 베이직(Altair BASIC)을 개발하여 판매하기 시작한것이 마이크로소프트의 시작이었다. 닷넷 버전의 비주얼베이직은 별로 인기가 없었다. 가장 큰 원인은 기존 비주얼베이직과의 호환성이 전혀 없었기 때문이다. 언어가 지향하는 패러다임 자체가 절차지향에서 객체지향으로 바뀌었기 때문에, 비주얼 베이직 닷넷은 기존의 비주얼 베이직보다는 차라리 새로 나온 C#에 더 가까운 존재가 되었다. 실제로 비주얼베이직 닷넷과 C#은 자동으로 상호 코드 변환이 가능할 정도다. 이 때문에 수많은 개발자가 닷넷 버전의 비주얼베이직으로 넘어가는 것을 거부하고 VB 6.0에 머무르게 되었다. 이후 비주얼베이직은 점차 사용자가 줄어들었다. 앞으로 닷넷 기반으로 개발을 하려면 C#을 택하는 것이 가장 좋을것이다. 물론 마이크로소프트에서는 F#같은 다른 언어도 제공하고 있긴 하지만, 함수형 프로그래밍 패러다임은 아직까지도 널리 보편화되었다고 말하기는 힘들다. 닷넷을 위한 제1언어는 앞으로도 C#일 것으로 보인다.[9]
각주
- ↑ 1.0 1.1 땜쓰, 〈땜쓰〉, 《네이버 블로그》, 2016-09-21
- ↑ siren911, 〈비주얼베이직 6.0의 역사와 특징〉, 《티스토리》, 2016-09-11
- ↑ sssoh, 〈프로그래밍 언어의 종류와 특징〉, 《티스토리》, 2012-01-17
- ↑ 4.0 4.1 4.2 4.3 Sherlock Vinci, 〈Visual Basic 6.0 문법(자료형, 변수, 상수, 배열, 구조체, 연산자, 제어문)〉, 《티스토리》, 2019-09-22
- ↑ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 비주얼 베이직 위키백과 - https://ko.wikipedia.org/wiki/%EB%B9%84%EC%A3%BC%EC%96%BC_%EB%B2%A0%EC%9D%B4%EC%A7%81#%EB%8B%A4%EB%A5%B8_%EC%96%B8%EC%96%B4%EB%93%A4%EA%B3%BC%EC%9D%98_%EA%B4%80%EA%B3%84
- ↑ 나비, 〈비주얼베이직이란?〉, 《티스토리》, 2008-01-16
- ↑ 7.0 7.1 비주얼 베이직 우만위키 - https://tcatmon.com/wiki/%EB%B9%84%EC%A3%BC%EC%96%BC_%EB%B2%A0%EC%9D%B4%EC%A7%81
- ↑ 야라바, 〈Visual Basic과 Visual Basic.Net은 다른 것일까?〉, 《티스토리》, 2014-12-03
- ↑ 쮸쀼쮸쀼, 〈비주얼 베이직은 이제 끝났습니다〉, 《기글하드웨어》, 2020-03-15
참고자료
- 땜쓰, 〈땜쓰〉, 《네이버 블로그》, 2016-09-21
- siren911, 〈비주얼베이직 6.0의 역사와 특징〉, 《티스토리》, 2016-09-11
- sssoh, 〈프로그래밍 언어의 종류와 특징〉, 《티스토리》, 2012-01-17
- Sherlock Vinci, 〈Visual Basic 6.0 문법(자료형, 변수, 상수, 배열, 구조체, 연산자, 제어문)〉, 《티스토리》, 2019-09-22
- 비주얼 베이직 위키백과 - https://ko.wikipedia.org/wiki/%EB%B9%84%EC%A3%BC%EC%96%BC_%EB%B2%A0%EC%9D%B4%EC%A7%81#%EB%8B%A4%EB%A5%B8_%EC%96%B8%EC%96%B4%EB%93%A4%EA%B3%BC%EC%9D%98_%EA%B4%80%EA%B3%84
- 나비, 〈비주얼베이직이란?〉, 《티스토리》, 2008-01-16
- 비주얼 베이직 우만위키 - https://tcatmon.com/wiki/%EB%B9%84%EC%A3%BC%EC%96%BC_%EB%B2%A0%EC%9D%B4%EC%A7%81
- 야라바, 〈Visual Basic과 Visual Basic.Net은 다른 것일까?〉, 《티스토리》, 2014-12-03
- 쮸쀼쮸쀼, 〈비주얼 베이직은 이제 끝났습니다〉, 《기글하드웨어》, 2020-03-15
같이 보기