비주얼 베이직 닷넷: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
Cocoonist (토론 | 기여)
편집 요약 없음
271번째 줄: 271번째 줄:
* [[마이크로소프트 비주얼 스튜디오 익스프레스]]
* [[마이크로소프트 비주얼 스튜디오 익스프레스]]
* [[비주얼 베이직 닷넷과 C 샤프의 비교|비주얼 베이직 닷넷과 C#의 비교]]
* [[비주얼 베이직 닷넷과 C 샤프의 비교|비주얼 베이직 닷넷과 C#의 비교]]
* [[응용을 위한 비주얼 베이직]]
* [[비주얼 베이직 포 애플리케이션]]
* [[프로그래밍 언어의 비교]]
* [[프로그래밍 언어의 비교]]



2014년 6월 1일 (일) 23:03 판

비주얼 베이직 닷넷
패러다임구조적, 명령적, 객체 지향적선언적
설계자마이크로소프트
개발자마이크로소프트
발표일2001년
최근 버전2012 (11.0.0.0)
플랫폼CLR
운영 체제주로 마이크로소프트 윈도
또한 안드로이드, BSD, iOS, 리눅스, 맥 OS X, 솔라리스유닉스
웹사이트msdn.microsoft.com/vbasic
주요 구현체
마이크로소프트 비주얼 스튜디오, 마이크로소프트 비주얼 스튜디오 익스프레스, 닷넷 프레임워크 SDK모노
마이크로소프트 비주얼 베이직
영향을 받은 언어
닷넷 프레임워크

비주얼 베이직 닷넷 (Visual Basic .NET, VB.NET)은 닷넷 프레임워크에서 구현되고 비주얼 베이직(VB)의 진화된 형태인 객체 지향 컴퓨터 프로그래밍 언어이다. 마이크로소프트는 현재 비주얼 베이직의 두 가지 주요 통합 개발 환경을 제공한다.(상용 소프트웨어마이크로소프트 비주얼 스튜디오, 프리웨어마이크로소프트 비주얼 스튜디오 익스프레스) 비주얼 베이직 닷넷의 마이크로소프트 구현은 "마이크로소프트 비주얼 베이직"이라고 한다. 명령 줄 컴파일러인 VBC.EXE는 프리웨어인 .NET 프레임워크 SDK의 일부로 설치된다. 또한 모노는 명령줄 VB.NET 컴파일러를 포함한다. 최신 버전은 2013년 11월 18일에 출시된 VB 2013이다.

체제 및 하드웨어 요구사항

  • 운영 체제
    • 윈도 XP 서비스 팩 2 이상 (2010 출시는, 서비스 팩 3)
    • 윈도 서버 2003 서비스 팩 1 이상
    • 윈도 서버 2003 R2 이상
    • 윈도 비스타
    • 윈도 서버 2008
    • 윈도 7
  • 하드웨어
    • 최소: 1.6 GHz CPU, 384 MB RAM, 1024×768 화면, 5400 RPM 하드 디스크
    • 권장: 2.2 GHz 이상의 CPU, 1024 MB 이상의 RAM, 1280×1024 화면, 7200 RPM 이상의 하드 디스크

버전

비주얼 베이직 닷넷은 지금까지 여섯 판이 개발되었다.(2014년 1월 기준)

비주얼 베이직 닷넷 2003 (VB 7.1)

비주얼 베이직 닷넷 2003은 닷넷 프레임워크 '버전 1.1'과 함께 출시되었다. 새로운 특징은 닷넷 컴팩트 프레임워크에 대한 지원과 더 나은 비주얼 베이직 업그레이드 마법사가 포함되었다는 것이다. 또한 성능과 닷넷 IDE(특히 배경 컴파일러)와 런타임의 신뢰성을 개선하였다. 또한 비주얼 베이직 닷넷 2003은 '비주얼 스튜디오 닷넷 아카데믹 버전'(VS03AE)에서 사용할 수 있었다. VS03AE는 비용 없이 각 나라에서 일정한 수의 학자들에게 배포되었다.

비주얼 베이직 2005 (VB 8.0)

비주얼 베이직 2005는 Visual Basic .NET의 업데이트 판이다. 비주얼 베이직 2005부터 마이크로소프트는 제목에 '.NET'을 붙이지 않기로 결정하였다.

추가된 기능:

  • 편집, 계속하기
  • 디자인-시간(Design-Time) 표현식 평가.
  • 'My' 가상 이름공간(개요, 세부 사항). 다음 사항을 제공한다:
    • .NET 프레임워크의 특정 영역에 접근하기 쉬워짐.
    • 동적으로 생성된 클래스(My.Forms가 대표적)
  • VB-VB.NET 변환기가 개선됨[1]
  • 자유 리소스가 처분 패턴을 필요로 하는 개체 사용의 단순화하는 'Using' 키워드
  • 디버그할 때 비주얼 스투디오 .NET IDE와 시스템 라이브러리 코드가 쓴 보일러 플레이트 코드를 건너뛰게 해주는 'Just My Code'
  • 데이터베이스 서버/클라이언트 개발을 쉽게 만들어 주는 데이터 소스 묶기

위의 기능들(특히 'My')은 고속 응용 프로그램 개발 플랫폼으로서 비주얼 베이직 닷넷의 집중을 강화하고 더 나아가 C#와 차별화하려는 의도이다.

비주얼 베이직 2005는 '더욱 강력한' 다른 .NET 언어들과 차이를 줄이기 위해서 다음과 같은 기능들을 추가로 소개했다:

특허된 'IsNot' 연산자

비주얼 베이직 2005의 또 다른 특징은 'If Not X is Y''If X IsNot Y'와 동일하게 만드는 IsNot 연산자이다. 이 연산자는 마이크로소프트가 특허 응용 프로그램으로 발표했을 때 혹평을 받았다.[4][5][6]

비주얼 베이직 2008 (VB 9.0)

비주얼 베이직 9.0은 2007년 11월 19일에 마이크로소프트 닷넷 프레임워크 3.5와 함께 출시되었다.

이 버전에서 마이크로소프트는 많은 기능을 추가하였다:

비주얼 베이직 2010 (VB 10.0)

2010년 4월, 마이크로소프트는 비주얼 베이직 2010을 출시하였다. 마이크로소프트는 이번 버전[7]동적 언어 런타임 (DLR)을 사용하기로 결정했지만 비주얼 베이직과 자매 언어 C# 사이의 동등성을 높이기 위해 공동 진화 전략으로 변경되었다. CLR과 COM 개체와 동적 상호 작용하는 비주얼 베이직의 타고난 능력은 IronPythonIronRuby 같은 DLR에 빌드된 동적 언어와 작동하도록 향상되었다.[8] 비주얼 베이직 컴파일러는 대부분의 경우에 줄 연결 문자 '_'의 필요를 없애고 일반적인 컨텍스트의 집합에서 행 연속으로 추정하도록 개선되었다. 또한 기존 인라인 함수 지원은 Sub와 함수 람다의 여러-줄 버전뿐만 아니라 인라인 Sub에 대한 지원을 구비하였다.[9] 또 다른 새로운 점은 이전 버전과는 달리 디버그 모드에서 일시 중지된 응용 프로그램의 소스 코드를 더 이상 편집할 수 없다.[출처 필요]

비주얼 베이직 2012 (VB 11.0)

2014년 1월 기준으로 비주얼 베이직 닷넷의 가장 최신판이며, 닷넷 프레임워크 4.5를 이용한다. 비동기 기능, 반복자, 호출 계층(Call Hierarchy), 호출자(Caller) 정보와 이름공간에 넣는 전역(Global) 키워드가 주요 기능이다.

비주얼 베이직 이전 버전(VB6과 그 이전)과의 관계

비주얼 베이직 .NET을 비주얼 베이직의 또 다른 버전으로 구분해야 하느냐 아니면 완전히 다른 언어로 구분해야 하느냐는 논쟁의 대상이다. 이는 명확하지 않으며, 한 때의 방법이 그 주변으로 이동되고 자동으로 변환이 설명될 수 있으며, 언어의 기본 구문론은 수많은 "파괴적" 변화를 보지 못했고, 단지 추가로 구조적 예외 처리와 단기-순환 표현 같은 새로운 기능을 지원한다. 두 가지 중요한 데이터 형식 변경은 VB.NET로 이동하면서 발생하였다. VB6에 비해, Integer 자료형은 16비트에서 32비트로 길이가 두 배로 되었고, Long 자료형은 32 비트에서 64 비트로 길이가 두 배로 되었다. 이것은 VB.NET의 모든 버전에 대한 사실이다. VB.NET의 모든 버전에서 16비트 정수는 이제 Short로 알려져 있다. 마찬가지로, 윈도 폼 GUI 편집기는 스타일과 기능에서 비주얼 베이직 양식 편집기와 매우 비슷하다.

새로운 비주얼 베이직 (7, 7.1, 8, 9, ...)에 사용되는 버전 번호는 이전 비주얼 베이직에서 여전히 본질적으로 마이크로소프트의 동일 제품으로 분명히 한다는 것을 의미한다고 볼 수 있다.

크게 변경되는 것들의 의미론—결정론에서 실행되는 객체 기반 프로그래밍 언어들로부터, COM을 기반으로 한 참조횟수 계산닷넷 프레임워크에서 지원하는 완벽한 객체 지향 언어, 공용 언어 런타임(가상 머신JIT 컴파일 엔진에서 세대 쓰레기 수집을 사용)과 훨씬 더 큰 라이브러리의 조합으로 구성된다. 폭넓은 후자의 증가는 또한 VB 개발자가 언어에 접근할 때 감당해내야 하는 문제를, 비주얼 스튜디오 2005의 나의 기능에 의해 어느 정도 해결된다.

변경 사항은 성능 및 유지와 관련하여 할 수 있는 "권리"에 대한 일에 대해 많은 기본적인 가정을 변경했다. 일부 기능과 라이브러리는 더 이상 존재하지 않는다; 다른 사람은 사용할 수 있지만, "네이티브" 닷넷의 대안만큼 효율적이지 않다. 그들은 컴파일하더라도, 대부분의 변환된 VB6 응용은 새로운 언어를 최대한 활용하기 위해 어느 정도의 리팩토링이 필요하다. 문서화는 배포 및 용어, 응용 디버깅, 문법의 변화를 충당하기 위해 사용할 수 있다. [10]

비교적 샘플

다음의 간단한 예제는 VB 및 VB.NET 사이의 구문에서 유사성을 보여준다. 두 예제는 OK 버튼과 함께 "Hello, World"라는 메시지 상자가 나타난다.

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

비주얼베이직 닷넷 예제에서, MsgBox 또는 MessageBox 클래스는 이렇게 쓰일 수 있다.

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Msgbox("Hello, World")
    End Sub
End Class
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("Hello, World")
    End Sub
End Class
  • 해당 버튼이 디자인 보기에서 클릭되면 비주얼 베이직 6 과 비주얼 베이직 닷넷이 자동으로 SubEnd Sub 문장을 생성한다. 비주얼 베이직 닷넷은 또한 필요한 ClassEnd Class 문장을 생성한다. 개발자는 "Hello, World" 메시지 상자를 표시하기 위해 문장을 추가한다.
  • 모든 프로시저 호출은 함수(괄호가 필요하다) 및 하위 기능(Call 키워드를 사용하여 호출되지 않는 한 괄호는 허용된다)에 대해 다른 규약들이 있는 VB6에서 반면에, VB.NET에서 괄호로 만들어져야 한다.
  • 또한 Command1Button1이라는 이름은 필수 사항이 아니다. 그러나, 이들은 VB6과 VB.NET 각각의 명령 버튼에 대한 기본 이름이다.
  • VB.NET에서는, Handles 키워드는 Button1 객체의 Click 이벤트에 대한 Button1_Click 처리기의 하위 기능을 만드는 데 사용된다. VB6에서는, 이벤트 처리기 하위 기능은 개체의 이름으로 구성된 구체적인 이름 ("Command1"), 밑줄("_"), 그리고 이벤트 이름 ("Click", 그러므로 "Command1_Click")이 있어야 한다.
  • VB6에서 해당 함수와 비슷하게 사용할 수 있는 Microsoft.VisualBasic 네임스페이스에 MsgBox라는 함수가 있다. 최고의 방법으로 사용하는 함수에 대한 논란이 있다(메시지 상자 표시 제한 뿐만 아니라 Microsoft.VisualBasic 네임스페이스의 다른 기능에 관한 것). 일부 프로그래머는 "닷넷 방식"의 일을 하는 것을 선호하며, 프레임워크 클래스는 더 많은 기능을 갖고 있기 때문에 덜 구체적인 언어다. 다른 사람들은 구체적인 언어 기능을 사용하여 코드를 읽기 쉽게 만들자고 주장한다. (예를 들어, System.Int32 대신 int (C#) 또는 Integer (VB.NET)를 사용).
  • VB 2008에서, ByVal sender as Object, ByVal e as EventArgs의 포함은 선택 사항이 되었다.

다음의 예제는 VB6과 VB.NET 사이의 차이점을 보여준다.두 예제들은 활성 창을 닫는다.

고전적 VB 예제:

Sub cmdClose_Click()
    Unload Me
End Sub

VB.NET 예제:

Sub btnClose_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnClose.Click
    Me.Close()
End Sub

'cmd' 접두사는 'btn'접두사로 교체되고, 이전에 언급한 새로운 협약에 부합한다.

비주얼 베이직 6은 일반적인 연산자 단축키을 제공하지 않는다. 다음은 동일하다:

VB6 예제:

Sub Timer1_Timer()
    Me.Height = Me.Height - 1
End Sub

VB.NET 예제:

Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub

비평

초기 버전은 VB6(더 이상 마이크로소프트에서 판매되지 않는다)에 있는 언어의 많은 구조와 사용자 인터페이스 기능의 때문에 비주얼 베이직 사용자는 오랫동안 비주얼 베이직 .NET에 대해 불평했고, 남은 것들의 의미를 변경했다; 예를 들어, VB.NET 매개 변수는(기본적으로) 참조가 아닌 값에 의해 전달된다. 험담을 퍼뜨리는 사람들은 비주얼 프레드 또는 DOTNOT[11]처럼 VB.NET을 경멸적으로 부른다. 2005년 3월 8일, 청원[12]은 VB6에 대한 주요 지원[13]을 확장하는 마이크로소프트의 거절에 대한 응답으로 설립되었다.

VB.NET의 지지자는 새로운 언어가 원래보다 더 강력하게 가장 존중받고, 좀 더 자연스럽게 현대적인 객체 지향 프로그래밍 패러다임을 통합하는, 보다 일관되고 완전한 방식으로 이전 버전이 가능했다. 상대는 VB6은 자신의 개체 모델에서 결함을 가지고 있지만, VB.NET로 변환하여 얻을 수 있는 모든 혜택이 재개발 노력의 측면에서 비용이 너무 높다고 반응하는 경향이 있다.[출처 필요]

VB.NET을 포함한 공통 중간 언어(CIL)의 대상 언어는, 기계 코드로 컴파일되는 언어에 비해 디컴파일하기 쉽다. .NET 리플렉터와 같은 도구는 CIL에서 제공하는 메타데이터의 양이 많기 때문에 원래 코드에 근접하는 것을 제공할 수 있다.[출처 필요]

마이크로소프트는 자동화된 VB6 에서 VB.NET 변환기를 공급하고 있고, 비주얼 스튜디오 .NET에서 시간이 지나면서 개선되었지만, 모든 코드를 변환할 수 없고, 거의 모든 비 사소한 프로그램을 컴파일하려면 약간의 수동적인 노력이 필요하다. 대부분은 최적으로 작동하도록 리팩토링의 상당 수준이 필요하다. 비주얼 베이직 프로그램은 주로 자연적인 알고리즘의 몇 가지 어려움으로 마이그레이션이 될 수 있는 데이터베이스 지원, 그래픽, 관리되지 않는 운영 또는 구현 세부 정보에 이러한 기능에 크게 의존하는 사람이 더 골칫거리다.[출처 필요]

또한, VB.NET 프로그램은 상당히 큰 닷넷 프레임워크의 설치를 요구하는 동안 VB6 프로그램에 필요한 런타임 라이브러리가 윈도 98 SE와 그 이상에 제공된다. 이 프레임워크는 윈도 7, 윈도 비스타, 윈도 XP 미디어 센터 에디션, 윈도 XP 태블릿 PC 에디션, 윈도 서버 2008윈도 서버 2003에 포함되었다. 지원되는 다른 운영체제는 윈도 2000 또는 윈도 XP (홈 또는 프로페셔널 에디션)이며, 별도로 설치되어 있어야 한다.

개발자 불만족에 대한 마이크로소프트의 대응은 새로운 개발이 쉽게 이동하는 주변에 초점을 맞추었고 VB6에서 VB.NET으로 기존의 코드 베이스가 바꿔 준다. 그들은 최신의 코드 예제와 기사를 VB런타임 웹사이트에서 제공한다:

  • 인쇄 미리보기를 만드는 것과 같이, 일반적으로 VB6은 VB.NET이 작업을 완료하는 데 사용
  • VB6과 VB.NET 솔루션 통합(VB 융합으로 불림)

크로스 플랫폼 및 오픈-소스 개발

VB.NET 개발을 위한 오픈-소스 도구의 탄생은 모노 개발 플랫폼이 윈도 폼 GUI 라이브러리와 같은 표준 프레임워크 라이브러리뿐만 아니라, VB.NET-구체적 라이브러리 및 VB.NET에서 작성된 VB.NET 8.0 호환 컴파일러의 구현[14]을 제공함에도 불구하고 C#에 비해 느리다.

샤프디벨롭모노디벨롭오픈-소스 대안 IDE이다.

예제

다음은 매우 간단한 VB.NET 프로그램, 고전적인 버전의 "Hello world" 예제를 콘솔 응용으로 만들었다.

Module Module1
    Sub Main()
        Console.WriteLine("Hello, world!")
    End Sub
End Module

이 효과는 명령 행에 Hello, world!를 작성하는 것이다. 다음과 같이, 각 행은 특정한 목적을 제공한다:

  • 1행: 모듈 정의이고, 클래스와 유사한 분류의 코드이지만, 모듈은 클래스를 포함할 수 있다. 모듈은 프로그램의 다른 부분에서 참조할 수 있는 코드의 컨테이너 역할을 한다.[15] 그것은 모듈과 코드 파일에 대한 일반적인 관행이고, 그것을 포함하여, 같은 이름을 가진다; 그러나, 이것은 필요하지 않고, 단일 코드 파일은 하나 이상의 모듈 및/또는 클래스 정의를 포함할 수 있다.
  • 2행: 프로그램이 실행을 시작하는 진입점이다.[16] Sub는 "서브루틴"의 약어이다.
  • 3행: 출력을 쓰기의 실제 작업을 수행한다. Console은 시스템 개체이고, 명령줄 인터페이스를 대표하고 표준 스트림 운영 체제의 프로그래밍 방식으로 접근 권한을 부여한다. 이 프로그램은 Console 메서드 WriteLine을 호출하고, 전달되는 원인 문자열을 콘솔에 표시한다. 또 다른 일반적인 방법은 MsgBox(Message Box)를 사용하는 것이다.[17]

아래 코드 조각은 플로이드의 삼각형의 해답이다.

Imports System.Console
 
Module Program
 
    Sub Main() 
        Dim rows As Integer
 
        ' 유효성 검사를 입력한다.
        Do Until Integer.TryParse(ReadLine("얼마나 많은 행을 표시할 것인지에 대한 값을 입력하시오: "), rows) AndAlso rows >= 1 
            WriteLine("허용된 범위는 1과 {0}이다", Integer.MaxValue) 
        Loop
 
        ' 플로이드의 삼각형의 출력
        Dim current = 1
 
        For row = 1 To rows
            For column = 1 To row 
                Write("{0,-2} ", current) 
                current += 1
            Next
 
            WriteLine()
        Next 
    End Sub
 
    ''' <요약>
    ''' 프롬프트 문자열이 사용하는 Console.ReadLine 및 버전을 보호한다.
    ''' </요약>    
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If
 
        Return Console.ReadLine()
    End Function 

End Module

같이 보기

참조

  1. 비주얼 베이직 2005에서 비주얼 베이직 업그레이드 마법사의 새로운 기능
  2. 비주얼 베이직 2005에서 제네릭스 정의 및 사용
  3. 비주얼 베이직 2005에서 연산자 오버로드
  4. Sherriff, Lucy (2005년 2월 22일). “Real Software slams MS IsNot patent application”. The Register. 2009년 4월 9일에 확인함. 
  5. Taft, Darryl K. (2005년 2월 21일). “Real Software Slams Microsofts Patent Effort”. eWeek. 2009년 4월 6일에 확인함. 
  6. Vick, Paul A. Jr.; Barsan, Costica Corneliu; Silver, Amanda K. (2003년 5월 14일). “United States Patent Application: 20040230959”. 《IS NOT Operator》. US Patent & Trademark Office. 2009년 4월 6일에 확인함. 
  7. “도대체 "VBx"라는 것은 무엇인가?”. 2007년 5월 1일. 2009년 8월 12일에 확인함. 새로운 DLR으로, 우리는 IronPython, IronRuby, 자바스크립트, 그리고 새로운 동적 VBx 컴파일을 위해 지원한다 
  8. “What's New in Visual Basic 2010”. Microsoft. 2009년. 2009년 8월 12일에 확인함. Visual Basic binds to objects from dynamic languages such as IronPython and IronRuby 
  9. “What's New in Visual Basic 2010”. Microsoft. 2010. 2010년 8월 1일에 확인함. 
  10. 마이그레이션 - 비주얼 베이직 6.0으로부터 업그레이드 MSDN ? 개발자 센터 ? 비주얼 베이직 6.0 자원 센터 ? 이주 ?
  11. Karl E. Peterson. “마이크로소프트 베이직: 1976-2001,R.I.P.”. 《http://vb.mvps.org》. 2009년 5월 7일에 확인함.  |work=에 외부 링크가 있음 (도움말)
  12. 마이크로소프트에 청원
  13. 비주얼 베이직 6.0을 위한 제품군 주기 안내서
  14. 모노 프로젝트: 비주얼베이직 닷넷 지원
  15. “모듈 정책”. MSDN - 개발자 센터. 2010년 1월 20일에 확인함. 
  16. “비주얼 베이직에서 주요한 절차”. MSDN - 개발자 센터. 2010년 1월 20일에 확인함. 
  17. “비주얼 베이직 버전의 Hello, world”. MSDN - 개발자 센터. 2010년 1월 20일에 확인함. 

추가 읽기

  1. “비주얼 베이직 언어 사양 8.0”. 마이크로소프트 회사. 2005년 11월 15일. 2010년 12월 10일에 확인함. 

외부 연결