C# Nedir, Ne Değildir , Nasıl Çalışır ?

by eMRe 18. Aralık 2009 13:31

csharp nedir ne degildir
Tekrar merhaba, dünkü yazımda programlama dillerinin tiplerinden ve c# ın bu tipler arasında nasıl bir konumda olduğuna değindik.Şimdide C#'ın yapısından bahsedelim.

Öncelikle C# dediğimiz dil, bir .NET dil ailesine mensup dildir. Ve sadece .NET FrameWork yüklü olan bilgisayarlarda çalışır. .NET ile programlama yapabilmek için .NET'e uyarlanmış 60dan fazla dil vardır ve bunlar kullanılabilir. İşin güzel kısmı C# kodlarken dilerseniz Visual Basic ya da J# kütüphanelerini referans ederek onların methodlarını da kullanabilirsiniz.

C# ile yazılmış bir uygulamayı derlediğinizde oluşan exe bildigimiz exe'lere benzemez. Bildigimiz win32 exelerinin içinde bytecode bulunur, binary, yani makinanın anlayacağı ama insanın anlayamacağı kodlar bulunur. Ve bunlara kısaca PE yani Portable Executable derler. Çünkü çalışmak için işletim sisteminden başka hiç birşeye ihtiyac duymazlar. Ancak .NET ile oluşturduğunuz exe'ler PE olmazlar. .NET exesi diyebiliriz onlara. Bu exelerin içinde bytecode bulunmaz. Onun yerine MSIL ( MicroSoft Intercommon Language ) . Yani turkce izah edecek olursak ortak dil anlamına gelmektedir. Bu çok güzel birşeydir. Bir program yazdığımızı düşünelim. Bir button var tıklayınca ekrana merhaba yazısı geliyor. Bu programı isterseniz 10 farklı .net dilinde ayrı ayrı yazıp exelere cevirin. Bu exelerin içinde oluşan MSIL kodları tıpatıp aynı olacaktır.

 

 

İşte burda .NET FrameWork devreye giriyor. bir .net exe'sine çift tıkladığınızda .net framework devreye girer o exenin içindeki MSIL kodlarını okur ve bilgisayarın anlıyacağı hale cevirir ve program ile hardware arasında bir köprü oluşturur. Bu davranış biçimine JIT yani Just In Time compiler  denmektedir. Yani bir nevi siz her exe yi tıkladığınızda anlık olarak o ana mahsus arka planda compile (derleniyor) ediliyor ve çalıştırılıyor. Sanki yazdığınız program işletim sistemi üzerinde değil de .net framework üzerinde çalışıyormuş gibi oluyor. Dolayısı ile eğer exe nizin çalışacağı bilgisayarlarda .net framework kuruluysa acaba kullanıcının bilgisayarında hangi işletim sistemi var diye dert etmenize gerek kalmamaktadır.

 

Linux altında c# uygulamaları çalıştırmak mümkün. Ancak windowstaki kadar başarılı ve performanslı olmamaktadır. Mono adlı bir proje mevcut. Eger linux makinanıza mono kurarsanız daha sonra komut satırından "mono programınismi.exe" şeklinde komut vererek ilgili exe'yi mono üzerinden çalıştırabilirsiniz.

Aynı şekilde apache server için yazılmış lib-mono da bulunmaktadıır. Bu şekilde linux tabanlı sunucunuz uzerinde çalışan Apache altında asp.net sayfalarınıda çalıştırmanız bir yere kadar mümkün olabiliyor. Bunu şahsen denemiştim. Php ler ve aspx ler aynı klasör altında kardeş kardeş çalışıyorlardı. Çok huzurlu bir ortamdı:)

 

Özetleyecek olursak, .net dillerini kıyaslanamaz. Yok VB.NET daha guclu, yok J# daha guclu yok C# hepsini döver. gibi laflar çok anlamsız, çünkü sonuçta derlendiklerinde hepsi aynı MSIL kodları kullanılarak hazırlanılıyor. Diagrama da bakarsanız daha rahat anlarsınız, hangi dilde yazarsanız yazın, öyle yada böyle hepsi MSIL koduna dönüşüp ordan JIT'e geçiyor ve ordan da makina diline dönüşüyor. Her birinin syntax ı ve grameri farklı, Siz hangisinde kendinizi rahat hissediyorsanız onda geliştirin derim kendinizi. Ben neden c# ı tercih ettim ? Çünkü .net'in resmi dili olduğu için, populer olduğu için, kaynak sıkıntısı çekmediğim için, ismi havalı olduğu için :)

Etiketler: , , , , , , , ,

Bilgisayar | Programlama

Yorumlar

08.01.2010 10:11:59 #

AKTAS

öğrenmek istemişimdir hep ama bir türlü zamanım olmadı ve sağlam arkadaş bulamadım öğretecekSmile
emre usta senden şikayetçiyim insan kardeşinede öğretmezmi Laughing

AKTAS Turkey | Reply

21.03.2010 22:52:49 #

murat

Çok Güsel Paylaşımlar Ve Konuların Var Sağolasın Allah Senden Razı Olsun.

murat Turkey | Reply

23.03.2010 16:46:47 #

eMRe

Teşekkür ederim, Allah sizlerden de razı olsun, bu aralar askerlik telaşı ve işlerin yoğunluğu sebebiyle, programlama ile ilgili yazılar yazmaya kafa yoramıyorum kusura bakmayınız...

eMRe Turkey | Reply

25.03.2010 03:16:22 #

davetiye

teşekkürler. C# zor ama çok zevkli. kaynak kütüphanesi mükemmel. yazı için teşekkürler

davetiye Turkey | Reply

25.03.2010 03:55:50 #

eMRe

Reca ederim, umarim tez zamanda yazilarimin devami gelir, gorusmek uzere..

eMRe Turkey | Reply

26.03.2010 12:31:09 #

ahmet beslen

askerligin tez zamanda bıtsın..siz takıp edicem.

ahmet beslen Turkey | Reply

26.03.2010 13:07:37 #

eMRe

Tesekkurler insallah hayirlisiyla, bu arada yeni yazi eklendiginde haberdar olmak isterseniz sayet, sayfanin sag tarafinda bulunan "haberdar ol" kutusuna mail adresinizi yazip gondermeniz yeterlidir, boylece her gun bloga girip bugun yeni birsey varmi diye bakmaniza gerek kalmayacaktir Smile

eMRe Turkey | Reply

24.06.2010 23:10:55 #

click here

I just found your blog via Ask Jeeves, a really good read, thanks.

click here United Kingdom | Reply

Yorum ekle


(Gravatar simgesini gösterecek)

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading



Son Yorumlar

Comment RSS