2009-09-01 12 views
7

Tôi khá quen thuộc với các hình thức khác nhau của VB đã tồn tại trước .NET (VB6, VBA, VBScript ...), nhưng vẫn chưa nghiên cứu về The Sweet New Flavour là VB.NET.Sự khác biệt giữa VB.NET và các phiên bản trước của VB là gì?

Vì vậy, tôi sẽ đánh giá rất cao nếu ai đó sẽ cung cấp bản tóm tắt nhanh về những khác biệt chính trong ngôn ngữ do VB.NET mang lại.

+0

điều gì khiến bạn hỏi một câu hỏi rộng như vậy? Và, trả lời nó là tốt? – shahkalpesh

+8

Không có gì sai khi trả lời các câu hỏi của bạn. Nó thực sự được khuyến khích. Bạn chỉ muốn được *** chắc chắn bạn có một câu trả lời rất tốt khi bạn làm như vậy, và rằng bạn để lại một cơ hội cho cộng đồng cũng cung cấp đầu vào. Đó cũng là nghi thức tốt trên SO để tạo trang wiki cộng đồng _answer_ (không phải câu hỏi) của bạn. –

+4

@sakthivignesh: tôi nghĩ bạn đã bắt được rất nhiều điều này bằng cách viết một câu hỏi mơ hồ * và sau đó ngay lập tức đăng một câu trả lời rất không thích hợp cho nó *. Trong tương lai, bạn sẽ muốn tránh điều này trừ khi, như Joel lưu ý, bạn * biết * bạn có một câu trả lời hay. Thay vào đó, dành nhiều thời gian hơn để viết một câu hỏi hay ... – Shog9

Trả lời

10

Giả sử khi bạn nói vb, bạn có nghĩa là vb 6. Khá lớn. Bản gốc hình ảnh cơ bản không sử dụng môi trường thời gian chạy .net, và mặc dù họ có tên tương tự, họ có khá nhiều ngôn ngữ khác nhau quá. Visual Basic không hoàn toàn hướng đối tượng, nhưng VB.net là. Lỗi xử lý là rất khác nhau giữa hai. VB.Net đã cố gắng nắm bắt các khối mà vb truyền thống sử dụng trên các báo cáo GOTO Lỗi. Đây chỉ là một vài khác biệt. Danh sách tiếp tục và bật.

Đây là liên kết mô tả tên "Visual Fred".

+2

Đừng quên biệt danh "Visual Fred". – Kawa

+0

OMG Tôi hoàn toàn quên mất cái tên đó. – kemiller2002

+1

VB.Net vẫn hỗ trợ các câu lệnh GOTO trên báo lỗi cho các lý do tương thích ngược. – Kibbee

3

Có một số ít - quá nhiều vào danh sách tôi nghĩ. Bạn gần như có thể xem xét VB.Net một ngôn ngữ hoàn toàn khác nhau mà chia sẻ một số cú pháp tương tự như VB. Sự thay đổi lớn nhất đang trở nên quen thuộc với các lớp .NET.

5

VB.Net chỉ là phiên bản của Visual Basic nhằm làm việc với khung .Net. Nó cũng làm cho những thay đổi khác và bổ sung cho ngôn ngữ, nhưng trái ngược VB.Net với VB là không thể, bởi vì họ là những điều tương tự.

Điều bạn có thể làm là tương phản với VB.Net với VBA, hoặc VB6 hoặc VBScript hoặc một số biến thể khác của Visual Basic. Nhưng VB.Net vẫn còn IS một biến thể có thể có của VB. Trong thực tế, nếu bạn nhìn vào ngôn ngữ một phần của sản phẩm, họ hiện đang gọi phiên bản mới nhất VB9, với VB10 sẽ được ra mắt vào cuối năm nay.

Trong cùng một cách, bạn không thể tương phản "Pespi" và cola, bởi vì Pepsi một cola, nhưng bạn có thể tương phản Pepsi và Coke.

Điều đó nói rằng, VB.Net phương ngữ VB mang lại một số lượng đáng kể các thay đổi và cải tiến ngôn ngữ, bao gồm hỗ trợ thực sự cho các mô hình hướng đối tượng và chức năng, đến điểm mã VB.Net thành ngữ thường rất khác nhau Mã VB6-age.

+3

Sau khi sử dụng cả hai, tôi phải không đồng ý. – Kawa

+2

Không, không. Mặc dù cả hai đều là phương ngữ cơ bản, nhưng với các trình biên dịch khác nhau và cú pháp hơi tương tự. – svinto

+3

VB.Net là một trong những hương vị của VB. Nó không phải là hương vị duy nhất, chắc chắn, nhưng để tin rằng nó không VB bởi vì nó không giống như một biến thể cụ thể của VB bạn có thể đã sử dụng chỉ là sự thiếu hiểu biết. –

1

VB.Net là phiên bản mới hơn sử dụng Dot Net Framework/mã được quản lý.

VB là phiên bản cũ.

1

VB biên dịch thành mã p hoặc mã gốc, VB.net biên dịch thành MSIL. Ngoài ra cú pháp khác một chút. Khi VB.net là đường dẫn nâng cấp cho người dùng và chương trình VB, có một loạt các đối tượng trợ giúp và các hàm giúp chuyển mã từ VB sang VB.net dễ dàng hơn, các đối tượng và chức năng này thường không được sử dụng trong các chương trình được viết bằng ngôn ngữ khác. ngôn ngữ ròng.

+2

VB5 và VB6 có thể được biên dịch thành mã máy gốc. P-code đã được sử dụng trong các phiên bản trước của VB (nhưng vẫn là tùy chọn VB5 và VB6). –

8

Oh kinh dị.

Xin lỗi, nhưng tất cả câu trả lời hiện có đều sai theo cách này hay cách khác. Joel's thực sự là tốt nhất của bó nhưng từ ngữ nghèo của nó khuyến khích sự hiểu lầm (xin lỗi, Joel - nhưng chỉ cần nhìn vào ý kiến ​​của bạn!):

Tương phản VB.Net với VB là không thể, bởi vì họ là những điều tương tự .

Điều đó hoàn toàn giống như nói rằng "trái ngược với trái cây là không thể vì chúng giống nhau", và như vậy không hữu ích lắm; “VB6” đặc biệt vì nhiều người (vẫn) sử dụng “VB” đồng nghĩa với

Vì vậy, để xóa mọi thứ lên một chút: cả VB6 và VB.NET là tiếng địa phương của trực quan gia đình ngôn ngữ cơ bản (giả sử gọi nó là). Sự giống nhau của họ là hời hợt nhất; một người đã thực sự sử dụng cả hai (và không chỉ xem xét một số mã nguồn) sẽ nhận thấy rằng ngoài một tương tự cú pháp cursory, họ là những con thú hoàn toàn khác nhau. Sử dụng chúng là những trải nghiệm cơ bản khác nhau.

Khía cạnh duy nhất mà chúng thực sự giống nhau (ngoài cú pháp tương tự) là cả hai đều rất thích hợp cho phát triển ứng dụng nhanh (RAD)… ít nhất là cho đến khi bạn thử các ngôn ngữ động như Python hoặc Ruby kết hợp với các khung công tác nhanh nhẹn của GUI như Shoes. Nhưng ngay cả khi môi trường RAD cũng có một sự khác biệt lớn.

VB6 cơ bản được phát triển thành do RAD, không có gì khác. Và trong thời gian đó, VB6 là điều tốt nhất trên đánh dấu để làm RAD, bằng một biên độ lớn. VB.NET, mặt khác, là không được chọn để phát triển RAD - bất kỳ hơn C#. Cả hai đều là các ngôn ngữ cao cấp được hỗ trợ bởi một khung công tác chung, giống như Java nhưng với khát vọng cải thiện một số lỗi Java, chẳng hạn như sự chi tiết của nó bằng cách cắt rất nhiều mã soạn sẵn (giới thiệu các đại biểu, sự kiện, tài sản, điều hành quá tải, autoboxing để đặt tên nhưng một vài tính năng như vậy).

Và trong khi VB.NET ở mức tương thích ngược, điều này rất gây hiểu lầm. Trước hết, không có người sane nào nói rằng C và C++ là cùng ngôn ngữ chỉ vì rất nhiều chương trình C biên dịch tốt trên các trình biên dịch C++. Sự khác biệt giữa VB và VB.NET thậm chí còn lớn hơn bởi một số chỉ số vì không mã VB6 hoàn chỉnh là VB.NET hợp lệ. Nó cần một “trợ lý nâng cấp” tự động để tạo mã .NET hợp lệ, và kinh nghiệm cho thấy trợ lý nâng cấp này không phù hợp ngay cả đối với các dự án cỡ trung bình, chủ yếu là do bản dịch của nó phá vỡ nhiều hướng dẫn và giả định của thế giới .NET.

Nói, giống như Kibbee, các trình biên dịch VB6 và VB.NET là "về cơ bản giống nhau" là không đúng. Tương tự như vậy, tuyên bố rằng "thời gian chạy Net không phải là một thay đổi đối với ngôn ngữ". Tất nhiên đó là thay đổi về ngôn ngữ. VB.NET được xây dựng hoàn toàn xung quanh khung công tác .NET, nó không chỉ là bất kỳ thư viện nào khác.

Ông tuyên bố rằng

Nếu VB.Net có nghĩa là để trở thành một ngôn ngữ mới, và không chỉ là một phiên bản mới của một ngôn ngữ cũ, họ sẽ có được thoát khỏi "On Error Goto" mà họ didn 't.

- tương tự như vậy gây hiểu nhầm. “On Error Goto” được đưa vào chỉ để tương thích ngược (trợ lý nâng cấp không thể chuyển đổi lỗi xử lý lỗi kiểu cũ thành xử lý lỗi dựa trên ngoại lệ).

Hãy để tôi tóm tắt điểm chính của bài đăng khá dài này để nó không bị mất: Cũng giống như Java và JavaScript, VB6 và VB.NET có tên rất giống nhau (và cũng có cùng lý do: tiếp thị) nhưng điều này hoàn toàn gây hiểu nhầm. Có một vài điểm tương đồng cú pháp.Bên cạnh đó, bề ngoài cũng như dưới mui xe, chúng là các ngôn ngữ hoàn toàn khác nhau.

+0

Tôi sẽ nói rằng "chúng là các ngôn ngữ hoàn toàn tương tự", nơi "tương tự" tương đương với "khác" - như táo và lê! – andora