15-12-2007, 01:17
Giriş
Herkese öncelikle merhaba, bu makaleyi yazmamdaki amacım bilgi birikimlerinden dolayı öne gelen araştırmalarım ve bilgisayar programlamacılığına olan hayranlığımdır. Uzun süredir programlama dünyası içindeyim ve şu sıralar genel olarak microsoftun geliştirdiği .net teknolojisi ile ilgileniyorum.C# kendi özünde oldukça basit,kullanımı rahat ve esnek demeyeceğim çünkü bu esnek kelimesi programlama dilinde ne anlama geliyor bir türlü anlamamışdır. Yabancı dilden çeviriyorlar olsa gerek. C#’ın gelişmesine göz attığımızda ise microsoft’un java programlama diline karşı bir rakiplik, bir kafa tutma olarak çıkardığı bir progralama dili yani kısaca açıklayacak olursak C++’daki zorlukları giderip C++’deki yanlış giden bazı olayları yok edip, C# dilini oluşturmaları.
Bilirsiniz ki eski diller yazması biraz ezbere dayalı, zaman alıcı, zahmetli ve gerçek kafa isteyen şeyler. Microsoft’un yapmaya çalıştığı şey ise artık kullanıcıların yıllardan beri dile gelmiş alışkanlıkları ve aynı yazım standartlarının dışına çıkıp, insanlara programlamadan zevk alır hale getirmek. Gerçekten öyle mi oluyor derseniz C# programlama dilinin gücüne bakınca şahsen yapabilecekleriniz ve bu dile dair ulaştığınız rahatlığa bakınca evet diyebilirsiniz.
Kısa bir girişten sonra C# dilinin diğer dillerin özünü aldığını C++ dilinden geliştirildiğini anlattıktan sonra, yeni özellikleri nelerdir onlara bakalım:
Java programlama dili zamanında diğer dillere rakip olmak için ve her platforma uygun bir sistem yaratmak için kendi içinde oluşturduğu bir teknoloji ile ortalığı kasıp kavurmuştur. Biz buna virtual machine(VM) türkçe adı ile sanal makine adını vereceğiz Bu VM ne işe yarar derseniz;
[attachment=3]
Buraki nokta sanal makine kodu var olan platform koduna dönüşüyor ve o kod yüklü olan platformda yürütülüyor. Bu da istediğiniz platforma programınızı çalıştırmak anlamına geliyor. Bu da yazdığınız programın otomatik olarak pazarını geliştirmiş oluyor. İşte bu yüzdendir ki, bilgisayar program firmaları taşınabilir programlama dillerine yatırım yapma yoluna gitmiştir.(Ör: LKS LOGO muhasebe yazılım programının java dilinde yazılması) Arada kulağa bu olay hoş gelsede programınız karmaşıklaştıkça bu kodların sanal makine ve gerçek makineye aktarımı uzuyor ve programınızın yavaşlamasına( ki şu sıralar çok çekirdekli işlemcilerin gündeme geldiği sıralar önemini kaybetmeye başlasa da) ya da yavaş çalışmasına neden oluyor.
Bu duruma Java’nın bir çözüm bulamadığı sırada Microsoft el uzatarak biz bir çözüm bulduk demesi ile .net platformunun doğumunu gerçekleştirmiş oluyorlar.
.Net’in Kurtarışı
Java uygulamış olduğu platformu Microsoft örnek alıp Sun’ın geliştirmiş olduğu Java dilindeki hataları .Net’te düzelterek(hepsini değil), Java başarısız kaldığı konuları yenerek piyasaya tekrar hakim olmaya çalışmıştır.
.Net’in özünde programlama dillerindeki entegrasyon yani bir dil değil bir çok dilli program yazabilmeniz(Java’ya darbe indirdiği konulardan bir tanesi);
.Net platformu özünde çoklu dillerin bir araya birleşmesi geliyor .Net platformu içinde standart olarak kullanabileceğiz programlama dilleri;
Managed C++
C#
Visual Basic.net
J#
Tabii bunların dışında sizin ek olarak geliştirilmiş .Net eklentileri ile başka programlama dillerini de .Net platformuna ekleyebilmeniz anlamına geliyor.Örnek:
Lisp,Perl,Phyton(Bkz: Iron Phyton),COBOL(daha neler!!!)...
Peki bu dilleri standart dışı nasıl çalıştırıyor. Az önce yukarıda bahsettiğim gibi sanal makine(VM) kodları alıp MSIL (Microsoft Intermediate LANGUAGE) diline çevirmesi ile iş bitiyor.
Peki siz bunları kullanmadan .Net’in içinde MSIL dili ile yazıp program geliştirebilir miyim diye soracak olursanız, bu da mümkündür, ancak bu dillerin amacı size pratik kazandırmak aksi halde sizi Assembly koduna benzer kod yığınları arasında saatlerce program yazmak gibi sıkıcı bir işleme sokmak değil.
.Net’in Java’nın çözemediği hız kavramına gelirsek, Microsoft bu sefer kendi hazırladığı JIT(Just In Time) olayıdır. Bu ne işe yarar diye sorarsanız. JIT, programınızın MSIL’e dönüştürülmüş olduğu kodu siz ana makine koduna çevirir çevirmez(bu işlem x86 koduna çevrilmiş olarak dönmektedir.), JIT bu kodu saklar ve 2. defa bastığınızda gerek kalmadan x86 işlemci değerine çevrilmiş ana makine kodunu tekrar tekrarlar ve böylece onca dil çevirme işleminden kurtularak kodlarınızın hızını artırır.
Bu şekilde .Net platformunda geliştirdiğiniz projeler, aynı kodların gönderilmesi sonucunu kaydederek hızlanma yoluna gidecektir.
Azaltma Teorisi
.Net’in bir diğer uğraşı ise onlarca kodda yazabileceğiz bir programı tek bir kod indirmek;
System.Console.Writeline(“Yalan Dünya”);
Yukarıdaki kodu incelersek bilgisayar aslında arka fonda hafızanın içinde ileri ve geri giderek kendini bir işleme tabii tuttuğudur. Ancak bizim yaptığımız ise sadece tek satırda ekrana bir şey yazdırmaktır. Kısaca anlatabileceğimiz olay ise .Net platformuna uyan dillerin “küçültülebilir” veya “azaltılabilir” olması gerektiğinden geliyor. Kendiniz süper bir fonksiyon yaratarak BanaWindowsCipstaYap() şeklinde karmaşık bir fonksiyonu bilgisayarda işleme tabii tuttuğunuzda bilgisayar bu fonksiyonu alıp, onu bir takım kodlara dönüştürüp, onun üzerinde matematiksel işlem yapacaktır. Bu yüzdendir ki, sanal makinenin kendisi bu matematiksel kodları nasıl işleyeceğini ve hafıza üzerinde nasıl ileri gidip, geleceğini bilyorsa diğer platformlara aktarmakta hiç sorun yoktur.
Gelecek
Gelecekte Microsoft C# dili ile neler yapmayı bekliyor? Kısaca Microsoft, C# dili ile kendini göstermeyi planlıyor.C++’daki karmaşayı ve yanlışları süpürmeye çalışan Microsoft, piyasadaki ağırlığını koyduğu C# teknolojisi ile geliştirilen programlara bakınca ve ayrıca Windows Vista ile birlikte .Net programlarını kendi içinde daha hızlı çalıştırması özelliği ile çoktan insanları bu teknolojiye adapte etmiş gibi duruyor.
Özet
Özet geçecek olursak .Net platformunun özelliklerini ve sistemin kısaca nasıl çalıştığını görmüş olduk ve gelecekte bizim neyi bekler olduğunu anlamış olduk. Sırada C# dili ile proje geliştirmeye bir ön giriş yapacağız...
Buğra Çuhadaroğlu
Herkese öncelikle merhaba, bu makaleyi yazmamdaki amacım bilgi birikimlerinden dolayı öne gelen araştırmalarım ve bilgisayar programlamacılığına olan hayranlığımdır. Uzun süredir programlama dünyası içindeyim ve şu sıralar genel olarak microsoftun geliştirdiği .net teknolojisi ile ilgileniyorum.C# kendi özünde oldukça basit,kullanımı rahat ve esnek demeyeceğim çünkü bu esnek kelimesi programlama dilinde ne anlama geliyor bir türlü anlamamışdır. Yabancı dilden çeviriyorlar olsa gerek. C#’ın gelişmesine göz attığımızda ise microsoft’un java programlama diline karşı bir rakiplik, bir kafa tutma olarak çıkardığı bir progralama dili yani kısaca açıklayacak olursak C++’daki zorlukları giderip C++’deki yanlış giden bazı olayları yok edip, C# dilini oluşturmaları.
Bilirsiniz ki eski diller yazması biraz ezbere dayalı, zaman alıcı, zahmetli ve gerçek kafa isteyen şeyler. Microsoft’un yapmaya çalıştığı şey ise artık kullanıcıların yıllardan beri dile gelmiş alışkanlıkları ve aynı yazım standartlarının dışına çıkıp, insanlara programlamadan zevk alır hale getirmek. Gerçekten öyle mi oluyor derseniz C# programlama dilinin gücüne bakınca şahsen yapabilecekleriniz ve bu dile dair ulaştığınız rahatlığa bakınca evet diyebilirsiniz.
Kısa bir girişten sonra C# dilinin diğer dillerin özünü aldığını C++ dilinden geliştirildiğini anlattıktan sonra, yeni özellikleri nelerdir onlara bakalım:
Java programlama dili zamanında diğer dillere rakip olmak için ve her platforma uygun bir sistem yaratmak için kendi içinde oluşturduğu bir teknoloji ile ortalığı kasıp kavurmuştur. Biz buna virtual machine(VM) türkçe adı ile sanal makine adını vereceğiz Bu VM ne işe yarar derseniz;
[attachment=3]
Buraki nokta sanal makine kodu var olan platform koduna dönüşüyor ve o kod yüklü olan platformda yürütülüyor. Bu da istediğiniz platforma programınızı çalıştırmak anlamına geliyor. Bu da yazdığınız programın otomatik olarak pazarını geliştirmiş oluyor. İşte bu yüzdendir ki, bilgisayar program firmaları taşınabilir programlama dillerine yatırım yapma yoluna gitmiştir.(Ör: LKS LOGO muhasebe yazılım programının java dilinde yazılması) Arada kulağa bu olay hoş gelsede programınız karmaşıklaştıkça bu kodların sanal makine ve gerçek makineye aktarımı uzuyor ve programınızın yavaşlamasına( ki şu sıralar çok çekirdekli işlemcilerin gündeme geldiği sıralar önemini kaybetmeye başlasa da) ya da yavaş çalışmasına neden oluyor.
Bu duruma Java’nın bir çözüm bulamadığı sırada Microsoft el uzatarak biz bir çözüm bulduk demesi ile .net platformunun doğumunu gerçekleştirmiş oluyorlar.
.Net’in Kurtarışı
Java uygulamış olduğu platformu Microsoft örnek alıp Sun’ın geliştirmiş olduğu Java dilindeki hataları .Net’te düzelterek(hepsini değil), Java başarısız kaldığı konuları yenerek piyasaya tekrar hakim olmaya çalışmıştır.
.Net’in özünde programlama dillerindeki entegrasyon yani bir dil değil bir çok dilli program yazabilmeniz(Java’ya darbe indirdiği konulardan bir tanesi);
.Net platformu özünde çoklu dillerin bir araya birleşmesi geliyor .Net platformu içinde standart olarak kullanabileceğiz programlama dilleri;
Managed C++
C#
Visual Basic.net
J#
Tabii bunların dışında sizin ek olarak geliştirilmiş .Net eklentileri ile başka programlama dillerini de .Net platformuna ekleyebilmeniz anlamına geliyor.Örnek:
Lisp,Perl,Phyton(Bkz: Iron Phyton),COBOL(daha neler!!!)...
Peki bu dilleri standart dışı nasıl çalıştırıyor. Az önce yukarıda bahsettiğim gibi sanal makine(VM) kodları alıp MSIL (Microsoft Intermediate LANGUAGE) diline çevirmesi ile iş bitiyor.
Peki siz bunları kullanmadan .Net’in içinde MSIL dili ile yazıp program geliştirebilir miyim diye soracak olursanız, bu da mümkündür, ancak bu dillerin amacı size pratik kazandırmak aksi halde sizi Assembly koduna benzer kod yığınları arasında saatlerce program yazmak gibi sıkıcı bir işleme sokmak değil.
.Net’in Java’nın çözemediği hız kavramına gelirsek, Microsoft bu sefer kendi hazırladığı JIT(Just In Time) olayıdır. Bu ne işe yarar diye sorarsanız. JIT, programınızın MSIL’e dönüştürülmüş olduğu kodu siz ana makine koduna çevirir çevirmez(bu işlem x86 koduna çevrilmiş olarak dönmektedir.), JIT bu kodu saklar ve 2. defa bastığınızda gerek kalmadan x86 işlemci değerine çevrilmiş ana makine kodunu tekrar tekrarlar ve böylece onca dil çevirme işleminden kurtularak kodlarınızın hızını artırır.
Bu şekilde .Net platformunda geliştirdiğiniz projeler, aynı kodların gönderilmesi sonucunu kaydederek hızlanma yoluna gidecektir.
Azaltma Teorisi
.Net’in bir diğer uğraşı ise onlarca kodda yazabileceğiz bir programı tek bir kod indirmek;
System.Console.Writeline(“Yalan Dünya”);
Yukarıdaki kodu incelersek bilgisayar aslında arka fonda hafızanın içinde ileri ve geri giderek kendini bir işleme tabii tuttuğudur. Ancak bizim yaptığımız ise sadece tek satırda ekrana bir şey yazdırmaktır. Kısaca anlatabileceğimiz olay ise .Net platformuna uyan dillerin “küçültülebilir” veya “azaltılabilir” olması gerektiğinden geliyor. Kendiniz süper bir fonksiyon yaratarak BanaWindowsCipstaYap() şeklinde karmaşık bir fonksiyonu bilgisayarda işleme tabii tuttuğunuzda bilgisayar bu fonksiyonu alıp, onu bir takım kodlara dönüştürüp, onun üzerinde matematiksel işlem yapacaktır. Bu yüzdendir ki, sanal makinenin kendisi bu matematiksel kodları nasıl işleyeceğini ve hafıza üzerinde nasıl ileri gidip, geleceğini bilyorsa diğer platformlara aktarmakta hiç sorun yoktur.
Gelecek
Gelecekte Microsoft C# dili ile neler yapmayı bekliyor? Kısaca Microsoft, C# dili ile kendini göstermeyi planlıyor.C++’daki karmaşayı ve yanlışları süpürmeye çalışan Microsoft, piyasadaki ağırlığını koyduğu C# teknolojisi ile geliştirilen programlara bakınca ve ayrıca Windows Vista ile birlikte .Net programlarını kendi içinde daha hızlı çalıştırması özelliği ile çoktan insanları bu teknolojiye adapte etmiş gibi duruyor.
Özet
Özet geçecek olursak .Net platformunun özelliklerini ve sistemin kısaca nasıl çalıştığını görmüş olduk ve gelecekte bizim neyi bekler olduğunu anlamış olduk. Sırada C# dili ile proje geliştirmeye bir ön giriş yapacağız...
Buğra Çuhadaroğlu