Microsoft,
C#’ı geliştirdi. 1990’ların sonlarına doğru Microsoft’ta ortaya çıktı ve Microsoft’un
.Net staratejisinin bütününün bir parçası oldu. C# ilk kez 2000’in ortalarında alfa
versiyonu olarak piyasaya çıktı. C#’ın baş mimarı, çeşitli büyük başarılara imza
atmış bulunan, dünyanın önde gelen dil uzmanlarından Andres Hejlsberg’dir . Örneğin,
Hejlsberg 1980’lerde çok başarılı ve güçlü bir dil olan Turbo Paskal’ın orjinal
yazarıdır. Turbo Paskal’ın sadeleştirilmiş uygulaması, geleceğin tüm derleyicileri
için standartları belirlemişti.
C#’ın
dedesi C’dir. C’den C# söz dizimini, anahtar sözcüklerin bir çoğunu ve operatörlerini
almıştır. C#,C++ ile tanımlanan nesne modeli üzerine kurulmuştur
ve bu nesne modelini geliştirmiştir. C veya C++’ı biliyorsanız C# ile adeta
kendinizi evinizde hissedeceksiniz.
C#
ile .NET Framework Arasındaki Bağlantı
C# kendi başına incelenebilecek bir bilgisayar dili olmasına rağmen C#’ın çalışma
zamanı ortamı (runtime environment) ile, yani .NET Framework ile özel bir ilişkisi
vardır. Bunun iki sebebi vardır. Birincisi, C# başlangıçta Microsoft tarafından
.Net Framework için kod geliştirmek amacıyla tasarlanmıştı. İkincisi, C# tarafından
kullanılan kütüphaneler, .Net Framework tarafından
tanımlanan kütüphanelerdi. Yani, C# dilini .Net ortamından ayırmak mümkün olsa dahi,
her ikisi birbiriyle sıkı sıkıya bağlıdır. Bu nedenle, .Net Framework’ü genel olarak
anlamak ve bunun C# için önemini kavramak gereklidir.
.NET Framework Nedir?
.NET Framework,
çok dağıtık(highly-distributed), bilişen yönelimli uygulamaların geliştirilmesini
v eyürütülmesini destekleyen bir ortam tanımlar. .Net Framework, farklılık gösteren
bilgisyar dillerinin birlikte çelikmasını mümkün kılar (VB.Net,C++.Net,Java#.Net, C#.Net yani bir projeyi
diyelimki VB.Net ile oluşturursunuz sonra proje gelti bazı bölümlerini C#.Net ile
bazı bölümleri C++.Net veya Java#.Net ile yazmanız gerekti(çünkü projeye dahil olan
elemanlar bu dilleri biliyor) bir proje içersinde bu kadar bir birinden farklı programlama
dilleri olmasına ragmen projeniz baştan sona tek bir dille yazılan program kadar
sorunsuz çalışır.) .Net Framework C# ile ilişkisi bakımından çok önemli iki
unsuru tanımlar. Bunlardan ilki
Common
Language Runtime (CLR
– Ortak Dil Çalışma Zamanı). Bu, programınızın çalışmasını idare eden sistemdir.
Diğer avantajlarının yanı sıra CLR, .Net Framework'ün programların taşınabilirliğini
mümkün kılan, karışık dilde programlamayı destekleyen ve güvenliği sağlayan bir
parçasıdır.
Common Language Runtime Nasıl Çalışır?
CLR, .NET kodunun çalıştırılmasını (yürütülmesini) idare eder. CLR şu şekilde çelişir:
Bir C# programını derlediğinizde, derleyiciden elde edilen çıktı çalıştırılabilir
bir kod degildir. Bilakis bu Microsoft Intermediate Language(MSIL) denilen özel
bir tipte sözde kod (pseudecode) içeren bir dosyadır. MSIL, spesifik bir CPU’dan
bağımsız olan bir takım taşınabilir komutlar tanımlar. Aslında, MSIL
taşınabilir
bir Assemly dili tanımlar. Diğer bir hususta şudur:MSIL her ne kadar Java’nın bycode’una
benziyor ise de her ikisi aynı değildir.
Program
çalıştığı zaman ara kodu çalıştırılabilir koda dönüştürmek CLR'ın görevidir. Böylece,
MSIL elde edilecek şekilde derlenen her program CLR’ın uygulandığı her ortamda çalıştırılabilir.
Bu, :Net Framework’ün taşınabilirliliği temin etme biçiminin bir yönüdür.
Microsoft
Intermediate Language, bir JIT derleyici kullanılarak çalıştırılabilir bir koda
çevrilir. “JIT”,”Just-In-Time ”a karşılık gelir (yani, “Tam Zamanında” demektir).
Süreç şöyle gelişir: Bir .Net programı
çalıştığı zaman CLR, JIT derleyiciyi etkin kılar. JIT derleyici programınızın parçalarının
her birine duyulan ihtiyacı temel alarak MSIL’i yerel dile dönüştürür. Böylece,
C# programınız başlangıçta MSIL üretecek şekilde derlenmiş olsa bile, aslında yerel
kod gibi çalışacaktır. Bunun anlamı şudur: Programınız başlangıçta yerel kod üretecek
şekilde derlenmiş olsaydı, elde etmiş olacağı çalışma hızına yakın bir hızda çalışacak,
üstelik MSIL’in taşınabilirlilik avantajlarına da kavuşacaktır.
Bir C#
programını derlediğinizde, MSIL’ e ek olarak elde edilen bir değer şey de
metadata alarak adlandırılan çıktıdır. Metadata, programınızın kullandığı
verileri tarif eder ve kodunuzun diğer kodlarla etkileşimini mümkün kılar. Metadatai
MSIL ile aynı dosya içinde yer alır.
