Lima Perubahan Top dari VB 6 ke VB.NET

01

dari 08

Lima Perubahan Top antara VB 6 dan VB.NET

Lima Perubahan Top

Visual Basic 1.0 adalah gempa besar sepanjang pemrograman. Sebelum VB1, Anda harus menggunakan C, C ++, atau lingkungan pengembangan mengerikan lainnya untuk membuat aplikasi Windows. Pemrogram benar-benar menghabiskan waktu berminggu-minggu hanya menggambar windows di layar dengan kode pemilih yang dipilih, terperinci, sulit untuk debug. (Hal yang sama dapat Anda lakukan dengan menyeret formulir dari bilah alat dalam beberapa detik.) VB1 adalah hit dan gazillions programmer segera mulai menggunakannya.

Tetapi untuk mewujudkan keajaiban itu, Microsoft membuat beberapa kompromi arsitektur utama. Secara khusus, karena VB1 membuat formulir dan kontrol, mereka tidak mengizinkan akses programmer ke kode yang melakukannya. Anda membiarkan VB membuat semuanya, atau Anda menggunakan C ++.

VB 2 hingga 6 mempertahankan arsitektur yang sama. Microsoft membuat beberapa pembaruan yang sangat cerdik yang memberi programmer lebih banyak kendali, tetapi pada akhirnya para programmer analisis masih tidak dapat mengintegrasikan kode mereka dengan kode VB. Itu adalah kotak hitam - dan tidak dengan cara OOP yang baik juga. Cara lain untuk mengatakan ini adalah bahwa programmer tidak memiliki akses ke "objek" VB internal dan cara lain untuk mengatakan bahwa VB6 masih belum sepenuhnya "berorientasi objek".

instagram viewer

02

dari 08

VB 6 - Jatuh Di Belakang Kurva Teknologi

Sementara itu, Java, Python, dan banyak bahasa pemrograman lain yang berorientasi objek WERE mulai muncul. Visual Basic semakin dilewatkan - waktu besar! Ini adalah situasi yang tidak ditoleransi oleh Microsoft... dan mereka memutuskan untuk menyelesaikan masalah itu untuk selamanya. Solusinya adalah .NET.

Tetapi untuk melakukan hal-hal yang perlu dilakukan .NET, Microsoft memutuskan bahwa mereka harus "merusak kompatibilitas". Yaitu, program Visual Basic telah (dengan pengecualian sangat kecil) "kompatibel ke atas" dari VB1 hingga VB6. Sebuah program yang ditulis dalam versi pertama VB masih akan dikompilasi dan dijalankan di versi berikutnya. Tetapi dengan VB.NET, Microsoft menemukan mereka tidak bisa membuat bahasa sepenuhnya OOP dan mempertahankan ke atas kompatibel.

Begitu mereka membuat keputusan mendasar ini, gerbang banjir dibuka pada sepuluh tahun akumulasi perubahan "daftar keinginan" dan SEMUA dari mereka pergi ke VB.NET baru. Seperti yang mereka katakan di Inggris, "Satu sen, satu pound."

Tanpa penundaan lebih lanjut, inilah daftar lima perubahan teratas saya yang paling pribadi dari VB6 ke VB.NET dalam urutan terbalik.

Baiklah... hanya satu penundaan lebih lanjut. Karena kita berubah dari VB6, di mana array dinyatakan sebagai Dim myArray (5) telah 6 elemen, Kami memiliki enam dari mereka. Itu hanya pas ...

(Drum roll tolong ...)

03

dari 08

Penghargaan (5) - Perubahan Sintaksis mirip-C

"Penghargaan (5)", penghargaan kami Tempat ke-6 penghargaan diberikan kepada pilihan C groupies: C-like Syntax Changes!

Sekarang Anda dapat mengkodekan + = 1 alih-alih a = 1, menghemat TIGA KEYSTROKES SELURUH!

Programmer Dunia, Bersukacitalah! VB telah dinaikkan ke level C, dan generasi baru yang mencoba mempelajari VB akan sedikit lebih dekat dengan kebingungan massa yang dihadapi siswa C ++.

Tapi tunggu! Masih ada lagi!

VB.NET sekarang memiliki "logika hubung singkat" yang telah memperkenalkan bug halus ke dalam kode C ++ selama bertahun-tahun untuk menghemat waktu prosesor yang sangat berharga. Logika hubung singkat hanya mengevaluasi beberapa kondisi dalam pernyataan logis jika perlu. Sebagai contoh:

Dim R As Boolean
R = Function1 () Dan Function2 ()

Dalam VB6, kedua fungsi dievaluasi apakah mereka membutuhkannya atau tidak. Dengan VB.NET, jika Function1 () salah, Function2 () diabaikan karena "R" tidak bisa True. Tapi, bagaimana jika variabel global diubah di Function2 () - hanya secara kebetulan (programmer C ++ akan mengatakan, "oleh pemrograman buruk ".) Mengapa kode saya menghasilkan jawaban yang salah beberapa saat ketika diterjemahkan ke VB.NET? Mungkin ini!

Untuk Mencobasemakin sulit, VB.NET akan Menangkap sedikit keberuntungan dan Akhirnya dikenali untuk penanganan kesalahan "luar biasa".

VB6 memiliki penahanan terakhir GoTo: "On Error GoTo". Bahkan saya harus mengakui bahwa penanganan pengecualian terstruktur gaya C ++ "Try-Catch-Finally" adalah peningkatan besar, bukan hanya setengah peningkatan besar.

Apa, Anda mengatakan "On Error GoTo" masih di VB.NET? Baiklah... Kami mencoba untuk tidak terlalu banyak membicarakannya.

04

dari 08

Posisi ke-5 - Perubahan Perintah Lain-Lain

Tempat ke-5 seleksi adalah penghargaan grup: Perintah Lain-Lain Berubah! Mereka harus membagikan penghargaan ini dan ada trilyun dari mereka. Microsoft telah menabung selama sepuluh tahun dan mereka benar-benar kehilangan akal.

VB.NET tidak lagi mendukung fungsi VarPtr, ObjPtr dan StrPtr yang mengambil alamat memori variabel. Dan itu tidak mendukung VB6 LSet yang digunakan untuk mengkonversi satu tipe yang ditentukan pengguna ke yang lain. (Jangan bingung dengan VB6 LSet yang melakukan sesuatu yang sangat berbeda - lihat di bawah.)

Kami juga mengajukan tawaran suka untuk Biarkan, Hilang, DefBool, DefByte, DefLng, DefSng, DefSng, DefDec, DefDate, DefDate, DefStr, DefObj, DefVar, dan (favorit pribadi saya!) GoSub.

Circle telah berubah menjadi GDI + DrawEllipse. Hal yang sama berlaku untuk Line to DrawLine. Dalam perhitungan kami sekarang memiliki Atan bukan Atn, Masuk masuk untuk Sgn, dan Sqrt cocok untuk pertandingan besar, bukan Sqr.

Dalam pemrosesan string, meskipun masih tersedia jika Anda merujuk kompatibilitas Microsoft namespace, kami memiliki PadRight untuk LSB VB6 (sekali lagi, sama sekali berbeda dari LSB VB6, tentu saja) dan PadLeft untuk RSet. (Ada tiga penekanan tombol yang kami simpan dengan "+ ="!)

Dan tentu saja, karena kita OOP sekarang, jangan khawatir jika Property Set, Property Let, dan Property Get tidak terpenuhi di VB.NET, Anda bertaruh!

Akhirnya, Debug. Cetak menjadi Debug. Tulis atau Debug. WriteLine. Hanya kutu buku yang mencetak semuanya.

Ini bahkan tidak menyentuh semua perintah BARU di VB.NET, tetapi kita harus menghentikan omong kosong ini di suatu tempat.

05

dari 08

Tempat ke-4 - Perubahan pada Panggilan Prosedur

Di Tempat ke-4, kita punya Perubahan pada Panggilan Prosedur!

Ini adalah penghargaan "kebaikan, kemurnian, dan kebajikan yang bermanfaat" dan mewakili banyak kampanye keras oleh faksi "no more sloppy code".

Dalam VB6, jika variabel parameter prosedur adalah tipe intrinsik, maka itu adalah ByRef, kecuali jika Anda telah mengodekannya ByVal secara eksplisit, tetapi jika itu bukan kode ByRef atau ByVal dan itu bukan variabel intrinsik maka ByVal... Mengerti?

Di VB.NET, ini adalah ByVal kecuali jika diberi kode ByRef.

ByVal VB.NET default, omong-omong, juga mencegah perubahan variabel parameter dalam prosedur agar tidak disebarkan kembali secara tidak sengaja ke kode panggilan - bagian penting dari pemrograman OOP yang baik.

Microsoft juga "membebani" VB.NET dengan perubahan dalam persyaratan untuk tanda kurung dalam panggilan prosedur.

Dalam VB6, tanda kurung diperlukan di sekitar argumen ketika membuat panggilan fungsi, tetapi tidak ketika memanggil subrutin ketika tidak menggunakan pernyataan Panggilan tetapi mereka diperlukan ketika pernyataan Panggilan digunakan.

Di VB.NET, tanda kurung selalu diperlukan di sekitar daftar argumen yang tidak kosong.

06

dari 08

Juara 3 - Array berbasis 0 dan bukan 1 berbasis

The Bronze Award - Tempat ke-3, pergi ke Array berbasis 0 bukan berdasarkan 1!

Ini hanya satu perubahan sintaks, tetapi perubahan ini mendapat status "podium medali" karena dipilih, "kemungkinan besar akan mengacaukan logika program Anda". Ingat, tempat ke-3 ADALAH "Penghargaan (2)" di daftar kami. Jika Anda memiliki counter dan array dalam program VB6 Anda (dan berapa banyak yang tidak), yang ini akan MESS YOU UP.

Selama sepuluh tahun, orang-orang bertanya, "Apa yang merokok Microsoft ketika mereka melakukannya dengan cara ini?" Dan selama sepuluh tahun, programmer memilikinya semacam universal mengabaikan fakta bahwa ada elemen myArray (0) yang hanya mengambil ruang dan tidak terbiasa untuk apa pun... Kecuali untuk programmer yang TIDAK menggunakannya dan program mereka terlihat, maksud saya, hanya "aneh".

Untuk I = 1 hingga 5
MyArray (I - 1) = Apapun
Lanjut

Maksudku, BETULKAH! ...

07

dari 08

Posisi Kedua - Datatype Varian

Medali Perak dari 2 Tempat pergi untuk menghormati teman lama yang dimasukkan ke dalam ember pemrograman dengan berlalunya VB6! Saya berbicara tentang tidak lain dari, Variasi Datatype.

Mungkin tidak ada fitur tunggal lain dari Visual Basic "notNet" yang lebih baik mewakili filosofi "cepat, murah, dan longgar". Gambar ini menghasilkan VB hingga pengenalan VB.NET. Saya cukup tua untuk mengingat pengenalan Visual Basic 3.0 oleh Microsoft: "Oh Wow! Lihat di sini! Dengan tipe data Variant baru yang ditingkatkan, Anda tidak perlu mendeklarasikan variabel atau apa pun. Anda bisa memikirkannya dan membuat kode. "

Microsoft mengubah nada mereka dengan sangat cepat dan merekomendasikan variabel mendeklarasikan dengan a tipe data tertentu segera, membuat banyak dari kita bertanya-tanya, "Jika Anda tidak dapat menggunakan Varian, mengapa memiliki mereka?"

Tetapi sementara kita berada di subjek tipe data, saya harus menyebutkan bahwa banyak tipe data telah berubah selain menjatuhkan Varian ke dalam semen basah. Ada tipe data Char baru dan tipe data Panjang yang 64 bit. Desimal sangat berbeda. Pendek dan Integer tidak lagi sama panjang.

Dan ada tipe data "Objek" baru yang bisa apa pun. Apakah saya mendengar seseorang berkata, "Anak varian"?

08

dari 08

1st Place - VB.NET akhirnya sepenuhnya Berorientasi Objek

Akhirnya! Medali Emas, Tempat 1, penghargaan tertinggi yang bisa saya berikan kepada ...

TA DAH!

VB.NET akhirnya sepenuhnya Berorientasi Objek!

Sekarang ketika Anda pergi ke pantai, programmer C ++ tidak akan menendang pasir di wajah Anda dan mencuri Anda (pacar / pacar - pilih satu). Dan kamu bisa masih kode Neraca Saldo Neraca Buku Besar lengkap saat mereka mencoba mencari tahu file header mana yang akan disertakan.

Untuk pertama kalinya, Anda dapat kode sedekat mungkin dengan chip yang Anda butuhkan dan mengakses semua sistem yang diinginkan hati Anda tanpa harus menggunakan panggilan API Win32 jahat itu. Anda mendapatkan warisan, kelebihan fungsi, multithreading asinkron, pengumpulan sampah, dan segala sesuatu adalah sebuah objek. Bisakah hidup menjadi lebih baik?

Apakah saya mendengar seseorang mengatakan C ++ memiliki beberapa pewarisan dan .NET masih tidak?

Bakar sesat!

instagram story viewer