C# Programlama Dili Microsoft’un son zamanlarda geliştirdiği .NET platformunun bir öğesidir. Eski programlama dilleri ile yeni dillerin harmanlanması ile oluşmuştur. Ayrıca C, C++, Java, Visual Basic dillerinin bir türevi niteliğindedir. C# , C/C++ ve Java dillerinden türetilmiş, bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı, güçlü basit, esnek, tip güvenli (type safe) Net platformu için sıfırdan geliştirilmiş %100 nesne yönelimli bir dildir.
C#, eskiden beri programcıların yaygın bir biçimde kullandığı C/C++ve Java dillerine benzerliği ile tanınan bir programlama dilidir. İlk aşamada çok benzer bir dil olarak görünse de bu iki dilden farklı bir çok özelliğe sahiptir. C/C++ ve Java’nın güzel özelliklerini alıp bu dillerin tehlikeli olabilecek olabilecek özelliklerini dışarıda bırakan bir dildir. C#, C/C++ dilinden farklı olarak tamamıyla nesneye yöneliktir. “int”, “double” gibi temel veri türleri dahi birer nesne olarak tanımlanmıştır. Java dilinden farklı olarak C# dilinde işaretçiler (pointer) kullanılabilmektedir.
- Nesne yönelimli programlamaya tam destek vermektedir.
- Yüksek verim.
- Güç ve kolaylık arasında dengededir.
- Xml desteği sunmaktadır.
- Windows Forms mantığını destekler.
- Internet teknolojilerinin gelişimine uyum sağlayabilmiş modern bir dildir.
.NET Bileşenleri
Önceden, geliştirilen yazılımlar direkt olarak makine koduna derlenir ve bu şekilde çalıştırılırlardı. Ayrıca bu programlar, her işletim sistemine özel olarak geliştirilmekte ve derleme işlemi işletim sistemine göre belirlenmekteydi. Böyle bir yapıda taşınabilirlikten söz etmek mümkün değildir. Java’da ise, program önce byte code’a çevrilmektedir. Bu kodu JVM(Java Virtual Machine), işletim sisteminin istediği koda çevirmektedir. .NET platformunda da temel prensip Java ile benzerdir.
.NET kodu önce IL (Intermediate Language-Ara dil)’ye derler ve bu IL kodu çalıştırılmak istendiği zaman .NET CLR (Common Language Runtime‐Ortak Dil Çalışma Platformu), JIT (Just In Time) derleyicilerini kullanarak makine diline çevirir. CLR makine diline çevrilmiş bu kodu önbellekte tutar, bu performans artışına sebep olurken diğer taraftan sistem hafızasında küçümsenmeyecek yer işgal eder. Temel Dil Tanımlamaları CLS (Common Language Specifications) ve Ortak Tip Sistemi CTS (Common Type System) ile .NET uyumlu dillerin hepsi aynı değişkenleri ve benzer nesne yönelimli özellikleri taşır. Örn: C# ile yazılan programdaki temel veri tipleri, VB.NET ‘tekiler ile aynı özelliklere sahiptir. Böylece farklı dillerde yazılan bileşenler birbiri ile sorunsuz çalışırlar.
Ortak Dil Çalışma Platformu(CLR)
CLR, .NET altyapısında programların çalışmasını kontrol eden ve işletim sistemi ile programımız arasında yer alan arabirimdir. Normalde yazılan kodlar makine diline çevrilir ve işletim sistemi ile direkt bağlantı kurup çalışırdı. IL kodu, CLR tarafından çağrılınca JIT derleyicileri tarafından makine diline çevrilir ve çalıştırılır. Eğer çok sayıda platform olduğunu düşünürsek, programların bunlar için ayrı ayrı yazılıp derlenmesi gerekir. Bu durum imkansız gibidir. Eğer platformdan bağımsız bir ortam istiyorsak, ihtiyaç duyulan şey CLR dir, hangi platformda iseniz (Linux,Mac,Windows) CLR bu noktada devreye girer ve .NET programlarının farklı platformlarda işletim sistemine göre çalıştırır.
Aradil (IL veya MSIL)
Herhangi bir C++ veya Vbasic kodu direkt makine koduna çevrilirdi ve çalıştırılırdı. Makine diline çevrilen programlar, işlemciye ve işletim sistemine özel olarak derlenirdi. Fakat .NET ortamında kodumuzu derlediğimizde elde ettiğimiz IL (ara dil) kodu işlemciye bağlı olmaz.
IL içerisinde değişken tanımları, değişkenlerin nasıl saklanacağı, metotların nasıl çalıştırılacağı, aritmetik ve mantıksal işlemler, bellek kullanımı gibi birçok işin nasıl yapılacağı açıklanır. Bütün bunların yanında IL’de Metadata olarak adlandırılan bir birim daha vardır. Metadata, programda kullanılan verilerin tiplerinin yanında oluşturulan sınıfların metotlarını ve bunların özelliklerini ve diğer bilgileri içerir. Artık IL ile oluşturduğumuz kodumuzun çalıştırılabilir bir program olması için derlememiz gerekiyor. Bunun için JIT (Just in Time) derleyici kullanılır.
JIT Derleyiciler (Just in Time)
Metadata’nın içeriği çalışma zamanında JIT derleyicileri tarafından kullanılır IL ve Metadata’sı oluşturulan kod parçası, çalıştırılabilir bir yapıdadır.
C# ile IL’ye derlediğimiz programı çalıştırırken JIT derleyicileri devreye girerler. Bu derleyiciler programın çalıştırıldığı sistemin ve işlemcinin anlayabileceği makine kodunu oluştururlar. Windows ortamı için 3 çeşit JIT mevcuttur.
Normal JIT: IL kodu makine koduna çevrilirken default(varsayılan) olarak kullanılan derleyicidir. IL kodunu orijinal makine koduna çevirir ve önbellekte tutar. Örneğin ; program içindeki bir derlenmiş bir metot program akışı içinde tekrar çağrılırsa önbellekten çekilir.
Pre-JIT: Tüm program kodunu makine koduna çevirip sonra çalıştıran JIT. Fazla hafıza gerektirir. Programın daha hızlı çalışmasını sağlar.
Eco JIT: Kısıtlı hafıza ve önbellekli sistemlerde .NET programlarının daha iyi çalışmalarını sağlamak için kullanılan derleyicidir. Derlenen ve çalıştırılan program parçaları normal JIT’de hemen hafızadan silinmiyordu. Fakat Eco‐JIT’de kullanılabilir hafıza belli bir oranın altına düştüğünde, daha önceden derlenmiş ve çalıştırılmış kısımlar hafızadan silinirler.
CTS
Bütün veri tiplerinin tanımlı olduğu bir sistem olarak düşünebiliriz. C# dilindeki veri türleri aslında CTS’deki veri türlerine karşılık gelen ara yüzlerdir. CTS sayesinde .NET platformu için geliştirilen bütün diller aynı veri tiplerini kullanırlar, tek değişen türlerin tanımlama yöntemi ve söz dizimidir. Geliştirilen bir nesnenin diğer dillerde de sorunsuz çalışmasını garanti eder.
CTS sayesinde;
- .NET’de tip güvenli, yüksek performanslı ve kullanılan programlama dilinin diğer .NET uyumlu diller ile entegre bir şekilde çalışması sağlanır.
- Birçok programlama dilinin .NET mimarisinde tam nesne yönelimli olarak .NET için program yazma aracı olmasına imkan verir.
- Herhangi bir .NET uyumlu dilde geliştirilen nesne diğer dillerde de sorunsuz olarak çalıştırılabilir.
CLS
CLS, dil derleyicisinin uyması gereken kuralları içerir. .NET platformunu paylaşan dillerin sadece CTS’yi desteklemeleri yetmemektedir. Bunun yanında Ortak Dil Spesifikasyonu’ da (CLS) desteklemeleri gerekmektedir.
CLS’ ye uyan bir dille yazılmış kod ile diller arası iletişim sağlanmış olur. CLS uyumlu bir dil ile geliştirilen bir program ile farklı diller arasında etkileşim sağlanabilir. .NET’in temel sınıf kütüphanelerinin içerisinde yer alan kodların büyük bir bölümü CLS uyumludur.
Assembly
.NET platformu için yazılan bütün kodların sonucunda oluşan .exe ve .dll uzantılı dosyalara genel olarak assembly denilmektedir. Derlenmiş kodlar ve metadata olarak adlandırlan özniteleyici kodlar Assembly içerisinde bulunurlar. Assembly içersindeki metadata verileri, tür bilgileri ve başka kaynaklara olan bağlantıları saklar. Assembly’de ayrıca versiyon bilgisi de tutulur. Assembly sayesinde programlar register edilmeye gerek kalmadan direkt kopyalanarak kurulabilirler.
Application Domain
Application domain sayesinde aynı anda çalışan birden fazla program veya process birbirinden izole edildiği halde sistemde herhangi bir aksaklığa yol açmadan aralarında veri alış‐verişi yapabilirler.
Bir yanıt yazın