|
| Microsoft
.NET Nedir ? Teorik Bilgiler. |
Microsoft .NET ilk olarak lanse edildiğinden bugüne kadar yazılım
geliştiriciler tarafından bir çok soru soruldu, yorumda bulunuldu. Bu kadar çok
soru sorulmasının ve tam olarak anlaşılamamasının altında yatan sebep .NET'in
sadece "Bir Şey" den ibaret olmaması, altında yatan teknoloji
ve sunduğu olanaklarla bir bütün olarak değerlendirilmemesidir.
.NET'i açıklamaya başlamadan önce derleyicinin (Compiler) ne olduğu, hangi
mantık çerçevesinde çalıştığı hakkında bilgi verelim.
Derleyicinin en kısa tanımı "Kaynak kodu (Source Code) makine koduna
(Machine Code) çeviren uygulama" olarak yapılabilir. Kaynak kod,
belirli bir bilgisayar dilinin kurallarına uyularak yazılan koddur. Makine
kodu, belirli donanım(lar) tarafından çalıştırılabilen komutların
(Instructions) bulunduğu yapıdır. Örneğin Intel veya Risc (Reduced Instruction
Set Computer) tabanlı işlemciler.
Hangi derleyici olursa olsun, derleyici teknolojisinin geldiği son noktada tüm
derleyiciler kaynak kodun makine koduna çevrimi aşamasında aşağıdaki adımları
izlerler.
|
Aşama |
Açıklama |
 |
Lexical Analiz
|
Kaynak kod şekilsel olarak analiz edilir. Örneğin
anlatımlar sabitler, tamsayılar, belirleyiciler (Identifiers) şeklinde
parçalanır. |
 |
Syntax Analiz |
Kaynak kod cümle yapısı bazında kontrol edilir.
Örneğin anlatımlar operatörler bazında parçalanır. |
 |
Semantic Analiz |
Kaynak kod mantıksal olarak kontrol edilir. Örneğin
bir dizi (Array) ile bir tamsayının toplanması bu aşamaya kadar geçerli bir
işlemken, bu aşamadan sonra geçersiz sayılır. |
 |
Ara (Intermediate) Kod
Oluşturma |
Gerek şekilsel, gerek cümlesel, gerek mantıksal
olarak kontrol edilen kaynak kod ara bir dile çevrilir. Çevrilen bu dilin
yapısı derleyici üreticisinin belirlediği yapıdadır. |
 |
Kod Optimizasyonu |
Ara dile çevrilen kodun optimizasyonu yapılır. Bu
aşama derleyici kalitesinin etkili olduğu bir aşamadır. |
 |
Kod Oluşturma |
Optimize edilmiş ve hata bağımsız kaynak kod hedef
dile (Örneğin makine diline) çevrilir. |
Bugüne kadar her derleyici firması tarafından ilgili derleyici firmasına
özgü oluşturulan Ara Kod'un standart bir yapıya kavuşturulması
için bazı çalışmalar yapıldıysa da programlama dillerinin ve kullanılan
tiplerin birbirinden çok farklı olması sebebiyle başarı sağlanamamıştı.
.NET ile Microsoft, Microsoft Intermediate Language (MSIL) standardını tanımlayarak
tüm programlama dilleri ve derleyici firmaları tarafından kaynak kodun standart
bir Ara Kod'a çevrimini sağlayacak alt yapıyı kurmuş oldu.
Böylece temel olarak iki büyük hedef başarılmış oldu. Birincisi, birbirinden
farklı programlama dilleri kullanarak tip uyuşmazlığı gibi problemlerin
olmadığı bir zeminde standart ara kodun oluşturulması,
ikincisi, standart yapıda olan ara kodun optimizasyonunun ve hedef dile
çevriminin tek noktadan yapılabilmesi.
Bütün bu işlemlerin sağladığı olanaklar ise; Daha güvenli işletim
sistemi, dil bağımsızlığı, donanım bağımsızlığı olarak
özetlenebilir.
Not: Rakip teknoloji olan Java ile
yukarıda anlatılan yapı teorik bilginin yetersiz olması sebebiyle bazen
karıştırılmaktadır. Java, yukarıdaki işlemlerin tamamını hedef dil JVM
(Java Sanal Makinesi - Java Virtual Machine) olarak yapmakta, yaratılan byte
kodlar JVM tarafından farklı platformlar için (Intel, RISC vb.) makine
diline çevrilmektedir. Dolayısıyla kod optimizasyonu Java derleyicisi
tarafından derleme anında yapılmakta, farklı programlama dilleri
desteklenmemektedir.
Yukarıda anlatılan işlemler ve bazı kavramları daha iyi kavramak için
Temel Kavramlar başlıklı bölümü okumanızı öneririz.
.NET ile gerek derleyici firmaları, gerek programcıların
temel alışkanlıkları radikal olarak değişmektedir. Buna en güzel örnek
kullanılan dilin ve derleyicinin önemini büyük ölçüde yitirmiş olmasıdır. Dolayısıyla
ister C#, ister VB.NET isterseniz şu ana kadar desteklenen 25'in üzerinde
programlama dili ile uygulamanızı geliştirmiş olun, öncekine göre kullanılan
derleyici ve dilin etkisi çok daha az olacaktır.
Hemen akla bunun bir tekelleşme çabası olduğu gelebilir. Tekelleşme vardır
ancak ara kodun standartlaştırılması tekelleşmeyi beraberinde getiren doğal
bir sebep olarak görülmelidir.
.NET ile ilgili merak edilen diğer bazı konuları burada açıklamak yerine
Sıkça Sorulan Sorular ve
Temel Kavramlar bölümlerine eklemeyi uygun gördük.
|