| Yazar GİRİŞİ |
C# - CLR, CLS, MSIL olguları. ( .NET kodunun çalıştırılma esasları... )C# - CLR, CLS, MSIL olguları. ( .NET kodunun çalıştırılma esasları... )
Selam ile...
Bu dökümanı okumadan önce, bazı terimlerde güçlük çekmemeniz için " C# Programlama Dili, .NET Framework ve Programlama Dilleri Tarihinde Önemli Adımlar " adlı yazıyı okumanızı tavsiye ediyorum.
CLR ( Common Language Runtime ) - Ortak Dil Çalışma Zamanı
C# ile üretilmiş kodların sistem üzerinde çalıştırılmasını sağlayan mekanizmadır. C# ile oluşturduğunuz kodlar derlendiğinde elde edilen kod aslında çalıştırılabilir bir kod değildir. Hemen şaşırmayın! Bu kod Microsoft Intermediate Language ( MSIL ) denizel özel bir koddur. Bu kod " sözde kod " ( pseudocode ) içeren bir dosyadır. MSIL bu noktada işlemciden bağımsız taşınabilir kodlar tanımlar. Aslında bu Java 'nın " bytecode " 'u ile aynı gibi görülsede aslında önemli farklılıklar vardır.
Eğer kafanız karıştı ise şöyle ifade edeyim. C# veya Java da derlenmiş kodlar yani; gerek MSIL gereksede bytcode , bulunduğu sistemde bir ara program ile çalıştırılır. Bu program kendine gelen o programlama diline özgü kodu, sistem üzerinde çalıştırır. İşte C# ta bu CLR 'dir. Yani CLR 'nin olduğu her ortamda ( işletim sistemi ve işlemci farketmeksizin ) C# da derlenmiş kodlar daha doğrusu MSIL çalışacaktır. Bu aynı zamanda platform bağımsız ( Cross Platform ) bir programlama dili için bir zounluluk haline gelmiştir. Zira bilgisayarın işlemcisine giden kodların işlemciye göre yazılması gerektiği düşünüldüğünde, bu işin üstesinden gelebilmek için bir arayüz programı gerekmektedir.
C# Kodlarıın çalıştırılması
C# ile derlenen kodlar yani MSIL kodlar; bir JIT ( Just-In-Time - Tam zamanında ) derleyici tarafından kullanılarak çalıştırılabilir koda dönüştürülürler. C# ( veya .NET ) kodları çalıştırıldığı zaman CLR, bu JIT derleyiciyi çalıştırır. JIT derleyici programınızın ihtiyaçlarına göre MSIL 'i yerel dile çevirir. Yani MSIL olarak ürettiğiniz her kod CLR 'nin olduğu her ortamda o sisteme uygun bir dile çevrilir ve yürütülür.
Bu noktada MSIL 'i Java 'nın bytecode 'undan ayıran en önemli özellik. Kodun içinde yeralan metadata olarak tanımlanan çıktıdır. Bu çıktı sayesinde programınızın diğer kodlarla etkileşimi sağlanır.
CLR 'nin Kontrolünde Olan ve Olmayan Kodlar
Kontrol altında olan kod CLR 'ye bağlı bir koddur. Bu sayade zaten kod bulunduğu her ortamda işlemci ve işletim sistemi gözetmeksizin çalışmaktadır. Aynı zamanda bu kodlar bir çok açıdan programa avantajlar sağlamaktadır, gelişmiş yönetimler, diller arası etkileşim ve güvenlik bunlardan sadece bir kaçıdır. Ama bunların yanında CLR 'nin kontrolünde olan kodların dezavantajlarıda vardır. Derleyicinin mutlaka MSIL kod üretmesi ve Framework kütüphanelerine ( kabaca : gerekli dosyalara ) ihtiyacı olması gibi..
Kontrol altında olmayan kodlar ise CLR ile ilişkisiz kodlardır. Aslında buna en uygun örnek .NET ten önceki tüm windows programlarıdır. Tabi kontrol altında olan ve olmayan kodların bir arada çalışabilmesi C# 'ın önceki programlarla olan ilişkisini kısıtlamamaktadır.
CLS ( Common Language Specification - Ortak Dil Spesifikasyonu )
Diyelimki C# ile ürettiğiniz kodları başka programlama dilleri ile kullanmanız gerekiyor. İşte bu noktada CLS devreye giriyor. CLS 'nin görevi C# ile diğer dillerde olan ortak özellikleri tanımlamaktır. CLS diğer diller tarafından kullanılacak bileşenleri geliştirirken önem kazanır. Öğreneğin Delphi , Java veya başka bir dille yazdığınız programların C# ile yazdığınız programlara ulaşırken uygulayacağı veri tipleri ile ilgili kuralları CTS ( ortak tip sistemi ) belirler.
Son Sözler...
Bu dökümanda genel bilgi açısından gerekebilecek bazı önemli noktaları anlatmaya çalıştım. Aslında geçmişte programlama dili ile birazcık ilişkiniz oldu ise yazılanları iyi bir şekilde anladığınızdan eminim. Ama programlama dilleri ile daha önce hiç bir ilgisi olmayan arkadaşlar için de umutlu olduğumu söyleyebilirim. Zira bu gün için bilgisayar ve programlama dilleri ile ilgili hemen hemen herkesin bildiği, işletim sistemine göre kod yazılma, kodun çalıştırılma yöntemleri gibi konularda bilgili olduklarından eminim.
Tarih : 29-Eylül-2002
Kaynak : The Complete Reference C# , .NET Framework SDK ve C# yardım dosyaları.
Alıntı : -
Dökümanı Yazan : Fatih Hood - zw@zeb.biz - www.zeb.biz
| fatihhood 23.10.2003 | |
| Rating : 10 üzerinden 6.00 |
Yorum ekle