Bu maddenin doğru adı **C# ve Visual Basic .NET Karşılaştırması** biçimindedir fakat teknik nedenlerden dolayı **C Sharp ve Visual Basic .NET karşılaştırması** şeklinde adlandırılmıştır.

Dil Geçmişi
-----------

C# ve VB.NET sözdizimsel olarak çok farklı geçmişlere sahip çok farklı dillerdir.

Adından da anlaşılacağı gibi, C# sözdizimi, ilk olarak 1970'lerde Bell Laboratuvarlarında (AT&T) Dennis Ritchie tarafından geliştirilen temel C programlama diline dayanmaktadır. Java ve C++, sözdizimleri de C sözdizimini temel alan diğer iki programlama dilidir, dolayısıyla ortak bir görünüm ve izlenimi paylaşırlar.

**BASIC** (**B**eginner's **A**ll-purpose **S**ymbolic **I**nstruction **C**ode), 1960'larda Dartmouth College'da geliştirilmiştir. Bu dil, işlemciye ve markaya özel ana bilgisayarlar ve donanım için yazılmış derleyici dilinin kullanım zorluklarını aşmanın bir yolu olarak ortaya çıkmıştır. Programlama, mantıksal yapısının donanımı aşacak şekilde korunmasından ziyade pazarlama amaçları doğrultusunda donanıma bağımlı hale getirilmiştir. Tam da bu soruna bir cevap niteliğinde, Microsoft'un işletim sisteminin başarısı, tüketicileri donanıma özgü cihazların kısıtlamalarından kurtarmak ve bu görevleri işletim sisteminin içinde kapsüllemek olmuştur. Derleyici sayesinde kod "taşınabilir" hale gelmiş, bugün hem **Visual Basic .NET** hem de **C#** aynı **CLR** (Ortak Dil Çalışma Zamanı) ortamını kullanmaktadır.

Microsoft ve HP, başlangıçta bir ISO standart dili oluşturmakla ilgilenmişlerdir. Ancak, HP desteğini geri çekince, ISO bilgisayar dili asla bir uluslararası standart olarak hayata geçmemiştir. BASIC dili, programlamayı daha erişilebilir hale getirerek bilgisayar biliminin gelişiminde önemli bir rol oynamıştır. Derleyicilerin kullanımı sayesinde, kodun taşınabilirliği sağlanmış ve farklı platformlarda çalıştırılmasına imkan verilmiştir.

**VB.NET**'in kökenleri, **BASIC** programlama diline uzanır. İlk olarak, BASIC, üniversite öğrencilerine bilgisayar programlamaya giriş amaçlı "temel" bir dil olarak sunulmuştur ve ismi de bu amacı doğru bir şekilde yansıtıyordu. 1970'lerde, dönemin mikro bilgisayar üreticileri BASIC'i hem basit bir ROM gömülü programlama dili hem de giriş/çıkış kontrolü için bir yarı işletim sistemi olarak kullanmaya başladı. 1980'lerin başında, dil Microsoft tarafından benimsendi ve 1990'lar boyunca "hızlı uygulama geliştirme" (RAD) aracı olarak Windows programlama için satılan "Visual Basic" diline/platformuna dönüştürüldü. Bu dönemde PowerBuilder gibi diğer RAD araçlarıyla doğrudan rekabet etti. Visual Basic başarılı bir geliştirme platformu olmasına rağmen, Microsoft 2000'lerin başında .NET Framework ve ilgili Visual Studio geliştirme platformunu piyasaya sürdüğünde, 6. sürümü (VB6) ile birlikte kullanımdan kaldırıldı. Bu dönemde, Microsoft mevcut C++ ve VB6 dillerini yeni "Tümleşik Geliştirme Ortamı (IDE)" içerisinde iki yeni programlama dilinin temelini oluşturmak için kullandı. Bu diller **C#** ve **VB.NET** olarak adlandırıldı.

2010 yılında **C#** ve **VB.NET** dilleri, Microsoft tarafından birlikte evrimleştirilmeye başlanmıştır. Bu yaklaşım "ortak geliştirme stratejisi" olarak adlandırılmıştır. Şubat 2017'de Microsoft, 2010'dan beri uygulanan ortak geliştirme stratejisini sona erdirme ve C# ile VB.NET'in bağımsız olarak evrimleşmesine izin verme kararını açıklamıştır. Bu karar ile birlikte, C#, Microsoft tabanlı geliştirme dilindeki baskın konumunu güçlendirmiştir. Geliştiriciler, Visual Studio 2017'de ilk kez görünen VB 15 sürümünde, yeni C# 7.3'ün içerdiği bazı dil yeteneklerinin bulunmadığını fark edecektir.

Dil Karşılaştırılması
---------------------

C# ve VB.NET, sözdizimi açısından oldukça farklı olsalar da, aralarındaki farklılıklar esasen yüzeyseldir. Her iki dil de Microsoft tarafından aynı .NET Framework geliştirme platformunun bir parçası olarak tasarlanmıştır. Aynı zamanda Microsoft'un aynı dil geliştirme ekibi tarafından geliştirilir, yönetilir ve desteklenir. Her iki dil de aynı ara dile (IL) derlenir ve bu dil aynı .NET Framework çalışma zamanı kitaplıklarına karşı çalışır. Aşağıda daha ayrıntılı olarak ele alınacak bazı programlama yapıları farklılıkları olmasına rağmen, bu farklılıklar esasen sözdizimseldir. Ayrıca, Microsoft tarafından VB6'dan dönüştürmeye yardımcı olmak için sağlanan Visual Basic "Uyumluluk" kitaplıklarından kaçınıldığı takdirde, VB'deki neredeyse her komutun C#'da ve bunun tersi bir karşılığı vardır. Son olarak, her iki dil de işlevselliklerini genişletmek için .NET Framework'ün aynı temel sınıflarını referans alır. Sonuç olarak, birkaç istisna dışında, bir dilde yazılmış bir program, basit bir sözdizimi dönüştürücü aracılığıyla diğer dile çevrilebilir. Bu görev için birçok açık kaynaklı ve ticari ürün mevcuttur. Diller arasındaki temel farklar, arayüzlerin uygulanmasında ve olayların bildiriminde, tetiklenmesinde ve işlenmesinde bulunabilir. Her iki dil de yüksek seviyeli programlama dilleri olsa da, VB.NET bazı açılardan biraz daha yüksek bir soyutlama düzeyini korur.