Posted under C# (csharp)
NET platformunda istediğimiz programlama dili ile program yazabileceğimizi önceki yazımızda söylemiştik. Bunun için tek şart, kullandığımız dilin .NET için yazılmış olan bir derleyicisine ihtiyacımız olduğudur. .NET uyumlu programlama dili oluştururken belirli standartlara uyulması gerekir. Bu standartlar CLS (Common Language Specifications - Dillerin ortak özellikleri) ile belirlenmiştir. CTS(Common Type System) ise veri tipleri, nesneler, arayüzler ve programlama dillerine ait özellikleri tanımlar ve CLS’in bir parçası olarak karşımıza çıkar. CLS’de tanımlanmış kurallara uymak şartı ile istersek kendi programlama dilimizi dahi geliştirebiliriz veya herhangi bir dili .NET platformunda uygulama geliştirmek üzere değiştirebiliriz. CLR ,programlarımızı değişik şekilde derleyebilir. Varsayılan derleme türü JIT(Just IN TIME- çalışam anında derleme) ‘dır. Program çalışırken daha önce derlenmemiş bir parçasına gelince hemen o kısmı da derler ve bunu hafızda chach’e koyar. Tekrar aynı program parçasını çalıştırmak gerekirse burayı hafızadan çalıştırır. Eğer RAM ‘imizi yeteri kadar büyükse, programın tamamı derlenmiş ve hafızada depolanmış durumda olabilir. Bu durumda programımız çok hızlı çalışır.
Hafızamızın yeteri kadar büyük olmadığı durumlarda EconoJIT (Ekonomik JIT) derleyicisini kullanabiliriz. Bu derleyici ile programın derlenmiş kısımları hafızada depolanmaz ve her seferinde aynı program parçası derlenir. Tabi ki bu derleyici normal JIT’e göre programlarımızı daha yavaş çalıştırır. Ama RAM ‘imizi çok daha az kullanır.
CLR ile gelen üçüncü derleyicimiz PreJIT(ön JIT derleyicisi) ise derleme işini program çalışmadan önce yapar ve tüm makine kodlarını bir yerde saklar. Çalışma anında çok hızlı olan programımız diğer JIT derleyicileriyle derlenmiş olanlara nazaran çok hızlı çalışır.
Kolayca görebileceğimiz birkaç noktaya da parmak basmak istiyorum. .NET ile yazdığınız programlar diğerlerine göre yavaş çalışır. Çünkü iki defa derleme aşamasından geçerler, program kodu MSIL’ye, MSIL ise makine koduna çevrilir. Diğer taraftan .NET ile programlarımız platform bağımsız olacak, .NET uyumlu herhangi bir dil ile program geliştirebileceğiz ve programımız CLR altında daha güvenli bir şekilde çalışacaktır.