VB neden bu kadar popüler? [kapalı]


28

Bana göre Visual Basic sakar, çirkin, hataya açık ve okunması zor görünüyor. Başkalarının nedenini açıklamasına izin vereceğim . VB.net, dil açısından özellikler açısından açıkça büyük bir adım atmış olsa da, neden birisinin VB'yi neden C # ile kodlamayı seçtiğini anlamıyorum.

Ancak, hala (ne gibi görünüyor) "MS dükkanları" ticari web uygulamalarının büyük çoğunluğunun VB'de yerleşik olduğunu görüyorum. Bu konuda düzeltilmiş durabilirim, ancak VB hala hakettiğinden daha popüler görünüyor.

Herhangi biri bu soruların herhangi birini (veya tamamını) cevaplamaya yardımcı olabilir:

  • VB ile bir şey eksik mi? Öğrenmesi daha kolay mı, yoksa "dostça" mı C # 'dan daha mı kolay? Bilmediğim özellikler var mı?
  • Neden özellikle web projelerinde VB / VB.net bugün bu kadar sık ​​kullanılıyor?

4
Hangi ticari Microsoft web sitelerinin oluşturulduğunu nasıl biliyorsunuz?
samjudson

30
"Neden VB / VB.net bugün bu kadar sık ​​kullanılıyor?" Diye sormak biraz "Neden katırlar / kamyonlar bugün ulaşımda bu kadar sık ​​kullanılıyor?"
Daniel Daranas

2
Sadece gelecekler için düzeltilmiş duruyorum. VB çok sadık bir kullanıcı topluluğuna sahip ve bu da çok fazla şey söylüyor.

5
bu sorunun silinmesi gerekiyor.

25
Bu soruyu silmeyin. Kötü, önyargılı ve sübjektiftir, ancak oldukça sık görülür ve referans olarak kullanılabilir.
Konrad Rudolph

Yanıtlar:



42

Sanırım nereden geldiğine bağlı. Bir programcı olarak başlarken, VB'nin C # 'dan daha kolay okunabileceğini düşünüyorum , çünkü sembollerden daha çok kelimelere dayanıyor, bu da normal insanlar için girmeyi kolaylaştırıyor.

Uzun yıllardır VB programcısıydım ve .NET geldiğinde ilk birkaç yıldır hala VB.NET'te çalıştım (C # ile gerçekten anlamadım). Şimdi birkaç yıl arkamda C # var ve bazen VB.NET kodunun benim için C # kodundan daha fazla "kodunu çözmesi" biraz zaman alıyor. Muhtemelen, bazı yapılar için sembollerden çok kelimelere dayandığı için ...


5
Durumumu aynen anlatıyorsun.

6
Burada da aynı - VB.NET kodu, C tarzı bir sözdizimi perspektifinden baktığınızda "gürültü" ile dolu. Herhangi bir VB geliştiricisine alınma. C # dan VB ye giderken hissettiği gibi.

2
kabul ediyorum, VB.NET'e dayanamıyorum - sözdizimi bir hikaye gibidir ... ve evet aylarca sürekli kullanmak zorunda kaldım, beni çıldırttı, C # sözdizimini seviyorum.
Dal

2
C # programcıları normal insanlar değil mi?
sağ

@ rightfold Hayır. VB.net programcıları da normal değildir. VB.net programcıları normal insanlardan daha müthiş ve C # için ... yorum yok. = D VB.net KURALLARI !!!!!!!
Anonim Penguen

27

Aşağıda cevabımı başka bir konuya kopyaladım :

Düzenli olarak hem VB hem de C # geliştiriyorum, para kazanmamın çoğu C # ile ilgiliydi. Şahsen, çoğu (ama hepsi değil… lambdas!) İşleri için VB'yi tercih ederim. Jon tarafından ana hatlarıyla belirtilenlerin dışında herhangi bir zorlu avantajı söyleyemem. Aslında, Herfried web sitesinde birkaç tane topladı (Almanca!), Ancak oldukça teknikler.

Beni C ile ilgili tüm diller için gerçekten rahatsız eden şey aptal sözdizimidir. Bu tamamen kültüreldir ancak profesyonel çalışmalarının çoğunu C ++ 'da yapan ve bu konuda oldukça yetkin olan biri olarak sözdiziminden kesinlikle nefret ediyorum. Ve sadece C ++ 'sevimli küçük tuhaflıklar. Hayır, bütün paket. Neden diş telleri? Neden noktalı virgül (belki de tüm programlama tarihinin en aptalca kararı)? Aptal C tarzı neden yazım sözdizimi? Değişken bildirimi için neden anahtar kelime yok (aslında, bu en aptalca karardır)?

Beni gerçekten üzen ve sinirlendiren çok şey var. VB aziz değil, dilinin dezavantajları var. Ama yukarıda söylediklerime kıyasla hiçbir şey yok.

Bu ifadelerin çoğunun gerekçelendirilmesi gerektiğinin farkındayım, ancak bunun yalnızca onlara bu kadar alışmış olduğumuz için olduğunu ileri sürdüm. Ek olarak, burası doğru yer değil. C # 'ın sözdiziminin VB'ye göre en büyük avantajı olmasına rağmen, bunun ana dezavantajı olduğunu söylemek yeterli.

Ad Myalanı nedeniyle VB'yi tercih etmiyorum, XML değişmezleri nedeniyle tercih etmiyorum, zayıf yazma nedeniyle tercih etmiyorum, isteğe bağlı parametreler nedeniyle veya çok daha iyi olması nedeniyle tercih etmiyorum. switchBeyan. Hayır, sözdizimi nedeniyle tercih ederim.


Bununla birlikte, VB'nin sözdizimi tarafından daha da kuşatıldığını itiraf etmeliyim. En son yutturmaca, lambda işlevleriyle parametreleştirilmiş Linq sorguları gibi görünüyor ve bunun birçok şeyi daha basit hale getirdiğini itiraf ediyorum. Ne yazık ki, VB'nin lambdas sözdizimi C # ile rekabet edemeyecek kadar zordur. Bir aramanın VB'de nasıl Parallel.Forgöründüğünü, bunun doğal göründüğü C # ile karşılaştırıldığında nasıl şişirilmiş olduğunu düşünün . IMHO, VB tasarım ekibi burada yanlış yöne gitti ve okunabilirliğe karşı muhafazakar tutarlılığı tercih etti.


Sübjektif suçlamalarına cevap vermek için:

Bana göre Visual Basic sakar, çirkin, hataya açık ve okunması zor görünüyor.

Bunu kesinlikle düşünme hakkına sahipsiniz, ancak Marc aşağıda belirtildiği gibi, bunu nesnel olarak tartışmakta zorlanırsınız. Kesinlikle VB'de var olan her şeyden nesnel olarak daha fazla hataya açık olan bir dizi C sözdizimi öğesinden bahsedebilirim. Aslında, VB sözdizimi bu tür bildirimlerin açıkça önlenmesi için geliştirilmiştir.

“Sakar, çirkin… ve okunması zor”, aşina olduğunuz hemen hemen tüm dillere etiketlenebilen niteleyicilerdir. Basitçe söylemek gerekirse: çirkinlik, dilinize yabancı olmanızın doğrudan bir sonucudur.

Bir dili iyi tanımak koddaki kalıpları tanımak anlamına gelir. İyi yazılmış kod olacak uygulama virtuel tarafından bad iken (yavaş, hataya açık) kodu çirkin görünecektir, zarif görünür. Bu kadar basit.


Son bir söz: Sizin alıntı yaptığınız makaleler birkaç yanlışlık ve eski bilgiler içermektedir. Son derece öznel ve duygusal bir tartışma için tek gerekçe olarak çok uygun değiller.


4
Blake: evet, Ruby için tam puan. Sonunda bir dil doğru yapıyor. Python da benimle yüksek puanlar. Yine de, mevcut tüm sözdizimlerinden kısmen memnun değilim.
Konrad Rudolph

2
Ruby berbat: P ... şimdi bunun dışındayım ... anahtar sözcükleri temel alan anahtar sözcükler arasındaki majoy sözdizimi farklarının gerçek nedeni çözümleyici yazma kolaylığına iniyor. Eskiden büyük bir VB (genel olarak BASIC) hayranıydım ama C # 'ya taşındığımdan beri çalışmayı çok daha kolay ve daha hızlı buluyorum.
Matthew Whited

4
Neden diş telleri? Çünkü, eğer doğru kullanılırsa, görsel olarak bir kod bloğunu ayırırlar. Evet, VB'deki girintilerin de bunu yaptığını biliyorum, ancak diş telleri bunu daha net bir IMO ile yapıyor. Noktalı virgüller derleyici için işleri kolaylaştırır (yalnızca VB derleyici ekibine bu konuda sorun). C # 'daki oyuncuları sezgisel ve kompakt buluyorum. Ve orada olan bir değişken bildirimi anahtar kelime:var
Robert Harvey

1
@Robert Harvey: 1) VB, girintiyi değil blokları göstermek için anahtar kelimeler kullanır. Netlik için çok fazla. 2) Döküm hakkında, C ++ çok uzun zaman önce C-tarzı dökümden vazgeçmeyi doğru bir şekilde seçti çünkü çok görsel olarak göze çarpmıyordu ( iyi bir şey değil ; türlemenin değişmiş anlambilim ve potansiyel zayıflıklarını ortaya koyduğundan, oyuncu kadrosu öne çıkmalı). 3) Hayır . Her beyandan önceki sözdizimsel ipucunu kastediyordum . var int xakla gelir. Diğer tüm ifadeler ve bloklar özel anahtar kelimelerle tanıtılmıştır, neden değişkenlerin ve yöntemlerin bildirimleri yapılmaz? Yuh. Tutarsız ve çirkin.
Konrad Rudolph

4
@Konrad: İlk başta alışmak biraz zaman aldı itiraf edeceğim. Felsefi farkın bir kısmı, programlama dilimi artık VB'de programladığım gibi yaptığım gibi İngilizcenin bir türevi olarak düşünmemem olabilir . C # 'ya geçmek, kullandığım programlama dilini fazla opak olmadan biraz daha sembolik (ve özlü) kullandı. Bu sembolizm, zihinsel özgürlüğün, nesne yönelimi, mesaj iletimi ve lambdalar gibi şeyler hakkında daha kavramsal düşünmesini sağladı.
Robert Harvey

15

Bana göre Visual Basic sakar, çirkin, hataya açık ve okunması zor görünüyor.

Bana göre İngilizce, özellikle zayıf dilbilgisi, kötü heceleme, büyük harf kullanımı ve noktalama işaretlerini dikkate almayan ve düşüncesini mekansal ve zihinsel olarak nasıl düzenleyebileceklerini anlamayan insanlar tarafından yazılmış, sakar, çirkin, hataya açık ve okunması zor görünüyor.

Bu, yalnızca Visual Basic'in dilin sözdizimi nedeniyle okunması veya sakarlanması zor değildir, ancak genellikle programcının kişinin kendi düşüncelerini ifade etmekte gerçekten iyi olmadığı için:

If blah = 10 Then If stuff = "foo" Then t = 1 + k: s = 42: dostuff21

Tamam, bu korkunç. Ancak diğer dillerde de korkunç kodlar yazmak zor değil. Doğru yazıldığında, kod VB ile yazılmış olsa bile çok mantıklı olacaktır:

If SelectedType = 10 And UserName = "Foo" Then
    CurrentUsers = CurrentUsers + 1
    UserConnectionID = 42
    PerformUserOperation
End If

En azından bu daha okunaklı ve anlaşılabilir. Hala TEMEL. Programcının, kodlarını kolay okunur bir şekilde biçimlendirerek, iyi tanımlanmış tanımlayıcıları kullanarak ve anlaşılabilir kod yazmaya dikkat ederek niyetlerini net bir şekilde ifade etme kabiliyetine varır.

Bununla birlikte, VB3 günlerinden beri Visual Basic’e çok fazla dokunmadım, (bu nedenle "eski" sözdizimi örneğindeki örnek) ancak sadece bir dilin kötüye kullanılabileceğinden, oldukça sağlam kod yazmanın doğru bir şekilde kullanılamayacağı anlamına gelmiyor . Elbette, bazı eksiklikler olabilir, ancak bu sorunların üstesinden gelmek için tasarlanan yaklaşımlar aynı zamanda bir programcının diğerine karşı becerilerini de gösterir.

(Ayrı ayrı yapılan püskürtme On Error Resume Next, .NET öncesi VB'de istisnalar eksikliğinin eksikliklerini aşmanın o kadar da iyi olmayan bir yolu olarak akla geliyor.)


13

VB'ye karşı savınızın çoğu, sadece VB-Classic (ikinci bağlantı) için veya zayıf veya eski argümanlara dayanarak uygulanabilir.

  • VBC'de bile GoSub ... Return vb. Kullanmazsınız.
  • Neyin var static? C ++ bunu da destekliyor.
  • VB10, örtük satır devamını sağlar (C # gibi gereksiz noktalı virgül bile gerekmez)
  • Farklı döküm fonksiyonları da C ++ ve C # 'dadır. C # (object)(expr)-Sast-Sözdizimi ve object as typedaha kafa karıştırıcı ve tutarsız.
  • Nesi kötü with? İç içe ağaç yapıları C # ile mümkün olmayan sezgisel bir şekilde oluşturabilirsiniz.
  • VB'de Etkinlik İşleme, C # 'dan çok daha zarif. WithEventsDelegeleri, olay işleyicileri -procs'ları vb. Başlatmaya gerek kalmadan olayları tek bir anahtar sözcükle ( ) tanıtabilir ve işleyebilirsiniz . Bu VB'de GUI programlamayı çok daha konforlu hale getirir ve tasarımcı tarafından olay kodu oluşturmanıza gerek yoktur .
  • İsteğe bağlı parametreler yeni C # 'ya girmiştir, bu yüzden iyi görünmektedirler.
  • VB.NET, hem katı hem de kısayol-boolean operatörlerine sahiptir.
  • Sen do Eğer bir komut dosyası dili gibi VB çalıştırmak sürece derleme zamanında yazım hatalarını denetleyen.
  • End Ifsadece daha yararlıdır }. Karmaşık sözdizimsel yapılara sahipken tüm küme parantezleri sadece kafa karıştırıcıdır, oysa bir beton End ...hangi bloğun kapatılmadığını belirlemenize yardımcı olur.
  • XML Literals - XML ​​betiği şimdi kodun bir parçası, intellisense tarafından tamamen destekleniyor.

Sonuçta, VB.NET ve C # arasında sözdiziminden başka sadece birkaç nesnel fark vardır. EG: GUI tasarımı, VB'de daha iyi bir olay sistemi ve daha iyi bir IDE nedeniyle çok daha verimlidir; oysaki, örneğin algoritmalar C # 'da daha iyi ifade edilebilir, çünkü sözdizimi özleştiricidir.

Gerisi sadece kişisel tarzınla ilgili bir soru. C-Style programcıları C #, VB (ya da belki Pascal?) İle kendilerini rahat hissediyorlar - Stil programcıları VB kullanıyor.

Ancak kelime temelli, daha açık VB-Sözdizimi, yeni başlayanlar için okunması, C'deki tüm sembollerden daha kolay olabilir.

If (a < 15) Xor (b = 2) And Not Condition Then

için

if ((a < 15) ^ (b == 2) && !Condition())

Bu, bir dilin diğerinden daha iyi olduğu anlamına gelmez.

Düzenle : -----------------------------------------

Argümana VB hataya açık olacaktır. Kullandığınızda Option Strict OnC # kadar katıdır ancak bu tür hatalar yapmamıza izin vermez:

// VB would initialize with zero (C/C++ doesn't)
int countZeros;
// No confusion with loop bounds with For x = 1 To Length
for (int i = 1; i <= length; i++) {
    // Never confusing == with = 
    if (data[i] = 0) 
        countZeros++;
}

1
C #, countZeros'u (yerel kapsamda) başlatmamak ve if ifadesinde [i] verisine bir değer atamak için derleme hatası verir. Yorumunuzda c / c ++ 'ya atıfta bulunduğunuzu biliyorum, ancak OP'nin VB ile C # :)' yi karşılaştırdığına inanıyorum

1
Benim düşünceme göre, VB10 C # 10 büyük zaman atıyor!
Shimmy

Tüm dilleri seviyorum: LISP, C, VB, PHP, siz adlandırın.
systemovich

+1 ve VB'nin Switch deyiminin C # 'lar gibi işe yaramaz olmadığını da ekleyeceğim.
Joel Brown

12

Tarihsel olarak VB geliştirme ortamı, belirli uygulama türlerini oluşturmanın hızlı ve etkili bir yoluydu (örn. GUI uygulamaları). Bu çok popüler bir seçim olmasına yol açtı. Bence VB en çok kullanılan dildi (örneğin VB6)

Bu tür bir kurulu tabanla, içinde halen çok fazla çalışma olması şaşırtıcı değildir.


2
+1 afaics VB6 ve özellikle VS IDE, tüm problemler ve olasılıklarla birlikte yeni bir kodlayıcı kuşağı oluşturan girişe (çok) düşük bir engel oluşturdu

7

Her şey C # var olmadan önce başladı

~ 1999'da Visual Studio 5 / 6'ya sahip olduk. Bağımsız Yazılım Satıcısı veya Windows kullanıyorsanız ve kurum kullanıyorsanız ve örneğin çalışanların projelere harcadığı zamanı izleyebilecek bir yazılıma ihtiyacınız varsa, birkaç seçeneğiniz vardır:

  1. Visual Basic'te Formlar.
  2. MFC, ATL veya Win32, Visual C ++.
  3. 97/2000 Erişim Formları.
  4. ASP web sitesi.
  5. Java uygulaması.

O zamanlar, Dot-Com balon patlamasından hemen önceydi, bu yüzden (4) ya da (5) ile iyi olan herhangi biri, hangi noktalarda yakalandıysa görsün, hisse senedi seçeneklerini pazarlık etmeye gitti.

(3) kilitleme ve genel ölçeklenebilirlik ile ilgili sorunlar yaşadım, ancak ihtiyaç duyulduğunda destek işlevlerini yerine getirecek çok sayıda Access odaklı çözüm gördüm.

Böylece bizi VB ve VC ++ ile bırakıyor:

VB'deki Forms editörü, o zamanlar verimlilik için mükemmeldi. Bileşenlerinizi sürükleyip bırakabilirsiniz - yalnızca düğmeler, etiketler ve metin kutuları değil, akıllı Izgaralar, Excel sayfaları veya IE örnekleri gibi yeniden kullanılabilir bileşenlerin eksiksiz 'OLE denetimleri' araç kutusu. Birleştirme perde arkasında yapıldı - her şey nesne gibiydi ve olay işleyicileri eklemek için şeyleri çift tıkladınız. Bu, Visual C ++ 'da çok daha zordu. O zamanlar Visual Studio geliştirici destek ekibinin bir üyesi olarak, Visual Basic destek çağrılarının çoğunlukla hangi bileşenin en iyi kullanılacağı ya da uygulamalarını belirli şekillerde nasıl en iyi duruma getirecekleri hakkında olduğunu hatırlıyorum. Neredeyse hiç bir zaman 'X, Y ve Z kullanıcı arayüzü özellikleriyle nasıl bir uygulama yapabilirim' değildi.

Visual C ++ ile zengin bir UI oluşturmak farklı bir zorluktu. Diyaloglar ve SDI / MDI formları için görsel editör desteği olmasına rağmen, oldukça sınırlıydı. OLE Control'leri (ActiveX) MFC veya Win32'ye gömme desteği, ATL'de biraz daha kolay olmasına rağmen, siyah bir sanattı. Yeniden boyutlandırma etkinlikleri veya mal sahibi çekme gibi basit şeyleri kablolamak, bileşenlerde özel olaylar için gereken Bağlantı Noktaları'ndan bağımsız olarak oldukça acı vericiydi.

Evet, VC ++ yürütme hızına, hata ayıklama yeteneğine ve esnek çerçevelere / kütüphanelere / UI seçeneklerine sahipti; / 2 serbest olay hattı desteklemektedir.

IIB, VB ile birlikte gelen uygulama paketleyicisi, uygulamanızı, VB çalışma zamanını ve en son kullanılan genel kontrol DLL'lerini paketleyebilir ve size bir CD'ye yazıp müşterilerinize ulaşabileceğiniz bağımsız bir EXE yükleyicisi sağlayabilir. Bunların hiçbiri 'hangi msvcrtXX.dll ve mfcxx.dll kurdunuz?', MFC geliştiricilerini rahatsız etti.

Bu nedenle, pazara girme süresi ve zengin kullanıcı arayüzü nedeniyle, VB çok büyük bir takip aldı.

Visual J ++ ve Visual Interdev, VS6'ya çarptığında, Visual Basic IDE'nin, IMHO olarak adil olan Visual C ++ one'a karşı savaş kazandığı açıktı. Visual Studio. NET'in yeni COOL C # dili için VB benzeri form düzenleyicileri olması hiç de şaşırtıcı değildi .

Bu süre zarfında VB halkının zevk aldığı UI tasarımcısıyla birleştirilmiş yeni Java / C / C ++ benzeri dil, şimdi MFC / ATL / Win32 ile yapılan C ++ kullanıcıları için yeni bir geçiş yolu oluşturdu. VB.net'te% 100 geriye dönük uyumsuzluktan hoşlanmayan VB 3/4/5/6 kişilere, bu tanıdık bir ortamda yeni bir dil öğrenme fırsatı sundu.


VB'nin bu kadar kapsamlı bir ürün olmasının sebeplerinin Microsoft'un kökenleri ile bir ilgisi olması, Basic'in amiral gemisi geliştirici ürünü olması ile ilgili, ancak şu anda herhangi bir alıntı yapmıyorum.


6

Bununla birlikte, çirkin bir dil herhangi bir dilin yapışmasının sebeplerinden biri olabilir: genellikle devasa bir kod tabanını kazımak çok pahalıdır ve geliştiricilerin dili zaten bilmesi gerçeği, diğer dillerden daha ucuza kullanılmasını sağlar.


6

VB.NET'in öğrenmesi daha kolay, haklısınız ve bence genel olarak C # 'dan daha kolay. VB'nin neden bu kadar popüler olduğu ilk nokta. Bir diğeri ve bence en büyük nokta, bu dilin VB 6 ve daha eski sürümleri ile çalışan geliştiricilerin büyük bir bağıntısı olduğu ve VB.net ile uygulama geliştirmeleri için yeni bir dil öğrenmekten daha kolay olduğunu düşünüyorum.


6

Diğerlerinin de söylediği gibi, dil sözdizimi konusundaki estetik yargınız, daha önce bildiklerinize bağlıdır. On yıldan fazla bir süredir, bir C-benzeri yarışmaya benziyor, dolaylı (perl, php) için "blok", "->" için küme parantezi, işlev çağrısı argümanları için parantez, // yorumlar ve satırın her ucunda noktalı virgül. Hatta bazı insanlar bu "benzersiz pensée" sayesinde, bir dil biliyorsanız, hepsinin çok saçma olduğunu biliyorsunuz. Ancak bu, C ++ / Java insanları arasında doğru sözdizimi estetiği olan ve COBOL'u klonlamaya çalışan herhangi bir şey olduğu fikrini uyandırdı.

Birkaç yıl önce yakut ve şimdi python'a geçtim ve daha çirkin noktalı virgüllere, kıvrımlı parantezlere ve diğer anlamsız karakterlere dayanamıyorum. Kaynak kodun insanlar tarafından okunması amaçlanmıştır. Görsel stüdyoyu denediğimde, C # yerine VB'yi seçtim. Bazı programcıların C # 'ı sadece java benzeri sözdizimiyle "ciddi görünmek" için seçtiğinden şüpheleniyorum, ama hadi, aynı özellikler orada ... gözlerinize biraz dinlensin.


4

Eğer .NET hakkında konuşuyorsanız, düşünebileceğim çok kolay bir tane var:

VB.NET'in Visual Studio'daki editörü, C # 'dan ziyade sözdizimi hatalarını yakalamakta çok daha iyidir.

C # 'nın editörü VS2008 SP1’de büyük bir gelişme sağlasa da, programı derlemeye çalışana kadar editörün yakalayamadığı bazı sözdizimi hataları var.


Bu arka plan derlemesi tam olarak V2005'teki büyük VB projelerini düzenlemeyi çok yavaşlattı. Her durumda, ReSharper bunun içindir;)
Lucas

Yalnızca arka plan derlemesi değil, otomatik biçimlendirme ve kod temizleme araçları, derlemeyi tetiklemek için bloktan çıkmadan önce birçok şeyi düzeltir. Bu vb # ile karşılaştırıldığında BÜYÜK zaman tasarrufu vb
Bill

4

VB popülerliğinin büyük bir kısmı, VB takımlarının diğer dillerden daha arkadaşça olduğu bir zamanda ortaya çıktı. "Klasik" VB, Win32 API'sini öğrenmek veya manuel bellek yönetimi ile uğraşmak zorunda kalmadan Windows uygulamaları oluşturmak için kolay bir yol sunuyor. Yeni başlayanlar için giriş engelleri VB ile C ++ 'dan çok daha düşüktü, bu yüzden birçok kişi dişlerini VB ile kesti.

Bu günlerde, VB'nin C # 'ya göre bir avantaj, yıllar boyunca VB ile çalışmış olanlar için tanıdık olduğunu düşünüyorum. Diğer bir avantajı, VB kodunun noktalama işaretleri yerine anahtar kelimeler kullanma eğilimi nedeniyle okunması kolay olmasıdır. VB, Java, C, C # ve Python'da çalışan biri olarak, VB'nin yıllar önce yazdığım kodu incelerken geri dönmenin en kolay dili olduğunu biliyorum. Sözdizimi, kod okumayı kolaylaştıran çoğunlukla daha ayrıntılıdır ve Visual Studio, yazarken biçimlendirmeyi temizlemek için VB kodunu biçimlendirmek için her zaman harika bir iş çıkarmıştır, böylece kod tutarlı bir şekilde biçimlendirilir (yazarın dikkatsizliğinden bağımsız olarak).

Bir yandan not olarak, Python'u benzer nedenlerle okuması ve incelemesi oldukça kolay buluyorum. Python'da, kodun biçimlendirilmesi IDE yerine tercüman tarafından uygulanır, ancak sonuç aynıdır. Python ayrıca, VB'den daha az olsa da, noktalama işaretlerini tercih eder.


3

Başka herhangi bir dilden daha fazla ya da daha az "hataya açık" olduğunu iddia etmek zor olurdu. Ayrıca "ticari MS ağının büyük çoğunluğu" olduğu konusunda şüphe duyuyorum; Gördüğüm kadarıyla, C #, .NET geliştirme konusunda öncülük ediyor (.NET, MS yığınında aygıt sürücüsü olmayan şeyler için amiral gemisi aracı olan).


3

VB.NET'in C # 'dan (C # 4 ile kaybolacak) üstünlüğünün bir avantajı, varsayılan ve adlandırılmış parametrelerdir, VSTO kullanırken olması gereken çok hoş bir şey.


Ve, bu konuda, "dinamik" - C # 'a varolan geç / gönderim bağlamasıyla benzer VB'lere benzer bir şey vermek
Marc Gravell

1
Bu sözde avantaj benim için her zaman sorunlu oldu - benim okuduğum, C # 'nın aynı pratik sonuca ulaşmanın daha güvenli bir yolu olan aşırı yükleri olduğu yönünde.

2
aşırı yüklerin dezavantajı, birkaç varsayılan değer belirlemek istediğinizde korumak için daha zor ve kafa karıştırıcı olmalarıdır. Derleyici tarafından doğrudan yönteme çözümlenmek yerine, derleyiciyi iç içe geçmiş yöntem çağrıları haline getiren karmaşık aşırı yük zincirleriyle bitebilirsiniz.
Matthew Whited

3

VB / VB.NET, RAD (Hızlı Uygulama Geliştirme) kategorisine aittir. Araç kutusundan sürükle bırak kontrolleriyle ve daha az kodla uygulamalar geliştirebilirsiniz.


ASP.net + C # combo için de aynı şeyi söyleyebilirsin, hayır?

Evet, çoğu Visual Studio tabanlı dil bildiriyor.

Eh, VB (.net) yaşındayken C # vs. yoktu. Yani VB o zamanlar tek BÜYÜK şeydi. Daha sonra VB kullanıcıları VB.NET'e geçtiler. VB <> VB.NET yine de.

3

Bence klasik VB ile VB.NET arasında bir ayrım yapmanız gerekiyor.

Ben VB.NET çok popüler değil , ama Visual Basic "Klasik" hala is1 olduğunu hissediyorum. Bunun nedeni, Windows uygulaması oluşturmak için ÇOK kolay olmasıdır. Bunu, şu anda neredeyse tek alternatif olan C ++ / Mfc'deki bir Windows uygulamasıyla karşılaştırın.

Aynı sebepten dolayı Delphi bir zamanlar çok popülerdi.


VB.net’in klasik VB kadar popüler olmadığını kabul ediyorum. Kod tabanlarını VB.net'e taşıyamayan bazı geliştiriciler bunun yerine C # ile değiştirilmiş olabilir.
JBRWilkinson

3

VB çok ayrıntılı ve kolay kullanımlı C # ile karşılaştırıldığında alışmak kolaydır. Bir acemi programcı için en iyi başlangıç ​​noktası.


3

Birkaç isim:

  • kullanım kolaylığı
  • Bilinen ad (basit ilk popüler bilgisayar programlama dillerinden biriydi)
  • microsoft marketing'i küçümseme

3

Sebebinin bir kısmı, eski ASP programcılarının .NET'e girdiğim gibi VB'yi çok iyi tanımaları, çünkü VB betiği çoğunlukla ASP için kullanılan klasik dil. VB'de .NET'te yazmak için daha az zaman harcadım, çünkü VB'yi nasıl konuşacağımı zaten biliyordum. Ayrıca VB, C # 'dan daha az ağlayan bir bebek. Her ikisini de okuyabilir / yazabilirim, ancak VB'yi tercih ederim çünkü yeni bir programcıysanız arkadaş edinmek kolaydır.


2

İkisini de kullandığımız bir ortamda çalışıyorum. Klasik ASP ve VB lehine C # 'ya geçtik. Benim düşünceme göre diller arasında anlaşma yok. Çoğu proje için aynı işi her iki dilde de yapabilirsiniz. Şimdi hata eğilimli görüşünüzü paylaşıyorum ve ayrıca VB'yi darmadağın olarak buluyorum (sebepsiz).

Diğerlerinin de söylediği gibi, VB çok basittir ve tarihsel olarak çok hızlı projeler inşa edebilirsiniz. Bu web gelişiminde yaşadı (hızlı gelişmiş), ama insanlar C # 'ın kadar hızlı geliştiğini fark ettiklerinde, VB kaybolacak. Salıverileceğini düşündüğüm bir diğer neden de, web uygulamaları yaparken kodladığınız her şeyin (CSS, JavaScript) VB'den daha C # gibi görünmesidir, bu nedenle yeni başlayanlar için bile C # kullanımı mantıklıdır.


2

Ben şahsen olayları vb.net'de 'handles' anahtar kelimesiyle tutturma biçimini seviyorum ... IDE / Visual Studio / VB ile ilgilenirken daha fazla yanıt veriyor ve son ifs ve benzerlerinin çoğunu otomatik olarak ele alıyorsa ... C # elbette çok daha özlü ve temiz (IMHO, ikisiyle de biraz çalıştım)


"Handles" ve VS tasarımcısı ile devam eden büyülü sahne arkası olaylarını değil, olaylara kendim abone olmayı tercih ederim.
Lucas

2

4.0 çerçevesinden itibaren, VB'nin C # ile kıyaslanamadığı çok az şey vardır ve bunun tersi de geçerlidir. Yani:

  1. En dikkat çeken şey, VB.NET'in Yieldanahtar kelimeye sahip olmaması , ancak yakında yeni eşzamansız çerçeveyle VB.NET'e geliyor.
  2. unsafeAnahtar kelime yok . Bunu asla gerekli görmedim, ama elbette sahip bazı insanlar var.
  3. Çok satırlı dizeler yok. Çok satırlı dizeler, satırlar boyunca + (veya eski ve) işleçler kullanılarak gerçekleştirilir. Ya da XML değişmezi sözdizimi kullanılarak yapılabilir: Dim s = <s>My string... multiple lines...</s>.Value. Güzel değil, ama seçici değilseniz ve gerçekten çok satırlı dizeler istiyorsanız, çalışır. Ve, onunla <%= myVar %>güzel olan sözdizimini kullanarak string enterpolasyonunu yapabilirsiniz .
  4. Değişken kapsamlı eşdeğeri yoktur dynamic. Dinamik değişkenler ile uzun süre VB etrafında olmuştur Option Compare Offo kadar iyi olarak değil, bu yüzden kapsamlı, ama bu dosya dynamic, çünkü dynamicsınırlar sadece değişkene kapsamı bu şekilde ilan etti.
  5. VB kısa bir lambda sözdiziminden yoksundur. Lambdalar orada, ama Function(x)ya kullanmalısın Sub(x).

Bazı özellikler VB.NET C # 'a sahip değildir:

  1. Her şey için kullanışlı olan XML değişmezleri, sadece XML için değil.
  2. Bir dilde harf duyarsızlığı kedinin miyavasıdır. Diğer pek çok dil buna izin vermez, ancak kodlama hızında yazarken tuşa basmak zorunda kalmaması ve kodunuzun istediğiniz şekilde otomatik olarak biçimlendirilmesi gerektiğinde hiçbir fark yaratmaz.
  3. Genellikle gereksiz olan Selectcümlecik, Linq sorgularından çıkarılabilir.
  4. NothingAnahtar kelime çok daha yararlı daha nullher şeyin (hatta değer türleri) 'de ayarlanabilir Nothingve varsayılan olsun. defaultAnahtar kelimeye gerek yok .
  5. VB.NET sürekli olarak Visual Studio'da derlenir, böylece hemen hata görürsünüz. C # 'de olduğu gibi gün boyu CTRL-SHIFT-B'ye isabet yok.

Mağazam VC.NET kullanarak Razor ile MVC3 yapıyor ve bir kez (çoğunlukla asılsız) önyargıları aşınca, aslında kullanması çok hoş bir dil. C # 'dan (lambdalar hariç) pek çok hak talebinden daha ayrıntılı değildir ve C # ile paralel bir özellik özelliğidir. Çoban olan insanların çoğunun modern VB.NET'te herhangi bir süre boyunca kodlanmadığını öğrendim.


Bana gelince, VB.NET çok ayrıntılı. Çok sayıda kazan plakası kodunu el ile yazdırmanız gerekir ve ReSharper aslında yardımcı olmaz. Ben zaten 3 yıldır paraller içinde C # / VB.NET kodlama edilmiştir.
Hedin

VB, uzun anahtar kelimeler nedeniyle gerçekten yatay olarak ayrıntılı. Onları sık sık yazmasanız da, çünkü IDE onları sizin yerinize koyar. Ancak IMHO C #, küme parantezleri nedeniyle genellikle dikey olarak ayrıntılıdır. VB'nin diğer bazı avantajları: ayraç stilini tartışmaktan kaçının çünkü VB'de yalnızca bir stil var; (dil yanaktan girer), noktalı virgül ve ayraçlı kazan yazarken, fazla soluk sağ küçük parmağınızı kullanmaktan kaçının.
MarkJ,

1
@MarkJ: C # taraftarlarının eleştirme şeklini ilginç buluyorum AndAlso[konuşulduğunda "çift ve amper" den daha kısa olmasına rağmen]] ama If-Then/Else/EndIfüç satır artı kontrol edilen ifadeleri alması gerçeğini göz ardı ederken, C # eşdeğeri en az dört tane alacaktı ve } else {tek bir satır olarak yazılmadığı sürece, küme sözleşmelerine bağlı olarak muhtemelen altı .
supercat,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.