C# ve .NET Framework İlişkisi

"Squ4LL

Özel Üye
14 Tem 2009
14,316
6
592

Aslında C# kendi başına bir programlama dilidir. Fakat .NET Framework ile direkt olarak ilişkilidir. Çünkü C# in çalışma zamanı ortamını .Net Framework sağlar. Microsoft C# dilini .NET Framework için kod geliştirmek için oluşturmuştur ve C# da kullanılan kütüphanelerin tümü .NET Framework'ün kütüphaneleridir. Aslında Framework ün kütüphaneleri tüm .NET dillerinde ortak olarak kullanılır. .NET in gücüde buradan gelir.


.NET Framework Nedir?

.NET Framework çatısı farklı dillerin aynı ortamda çalışmasını sağlar. Yani bir projenin bir bölümü VB.NET diğer bölümü C# ile kodlanmışlabilir. .NET Framework barındırdığı ortak dil çalışma zamanı (Common Language Runtime) sayesinde, .NET in deslektediği diler ile yazılmış kodları makine diline çevirerek. Yazılımlarda çoklu dil kullanmaya olanak sağlar.

Peki bu tam olarak nasıl sağlanıyor. Çalışma Zamanı derleyicisi kodları derlerken çeşitli bileşenler kullanır. Bu bileşenler CLR (Common Language Runtime) ye bağlıdır. Bu bileşenler den bazıları şunlardır.


  • MSIL(Microsoft Intermediate Language) to native compiler : MSIL kodu makine diline çevirir.

  • Code Menager: Kodu uygulayarak kontrol eder.

  • Garbage Collector : Objelerin yaşam sürelerini otomatik olarak denetler.

  • .NET Framework Class Libary Support: Kodda yer alan classları .NET Framework ile birleşirir.



Bu saydıklarımız en önemli leridir. Şimdi gelelim çoklu dil kullanımının nasıl gerçekleştiğine. Her kod öncelikle kendine ait derleyicisinde derlenir. Mesela Visual J# ile yazılmış kod önce Visual J# derleyicisinde derlenir. Kendi derleyicisinde derlenen kod MSIL (Microsoft Intermediate Language) ye göre yeniden derlenir. Elde ettiğimiz MSIL kodu kendi başına çalıştırılabilir bir kod değildir.


MSIL birtakım özel taşınabilir assembly koddan oluşur. Program çalıştırıldığında MSIL olarak derlenmiş kodu çalıştırılabilir bir kod haline CLR getirir. Bu işlem tüm .NET dilleri için aynı şekilde uygulandığı için .NET dilleri arasında performans farkı yok denecek kadar azdır. Bu yok sayılabilecek farkta dillerin kendi derleyicilerinin performans farklarından doğabilir.


Derleme Süreci

C# Kodu -> C# Derleyicisi -> MSIL Derleyicisi -> (Taşınabilir Assembly kod) MSIL Kod

Çalıştırma Süreci

MSIL Kod -> CLR(Common Language Runtime) -> Makine Dili

.NET Framework Hangi Dilleri Destekler?

.NET Sınırsız sayıda dili destekleyecek yapıda tasarlanmıştır fakat Şu anda 20 dili desteklemektedir. Bu diller.

C#
Visual Basic.NET
Visual J#.NET
Visual C++
Jscript.NET
C
COBOL
Python
Pascal
Perl
ADA
Oberon
Scheme
ML
Eiffel
APL
SmallTalk
Mercury
CAML
Haskell


.NET bu saydığımız dilleri desteklemektedir. Çoklu dil desteğini ne gibi faydaları var? Biraz akıl yürütelim mesela bir yazılım şirketimiz var ve yazılımcı elemanımız 5 kişi, bunlardan ikisi C# ve üçü Visual Basic.NET uzmanı. Fakat çok büyük bir proje geliştirmeniz gerekli. Ne yapıcaz? C# uzmanları iki kişi onlara VS mi öğreteceğiz. Yoksa işten çıkarıp yerine VS bilen eleman mı alacağız? Tabi ki hayır bırakın herkes bildiği dilde yazsın #:) .NET sizin yeriniz aynı dile çevirecektir.

 

osm4nl1evl4d1

Kıdemli Üye
15 Mar 2017
4,776
10
T Ü R K
Normal python değil, IronPython'dır o... Yani .NET ortamına python'da kod yazmak için geliştirilmiş özel paket.

üstad aklıımda bir soru var.
araştrıdım ama işe yarar bir cevap bulamadım.
sorum şu ;
mesela visual studioda c# ile form uygulaması yapılıyor ya.
peki python ile form uygulamaları yapılabilir mi ?
 

Phoique 7

Katılımcı Üye
14 Mar 2017
505
1
Manisa
demek istediğim modül değil.
mesela bir tema tasarlıyıp python kodlarını o temaya enjekte edebiliyor muyuz :?

Dediğim modül pyqt ile form tasarımı yapılıyor. Yani buton, textbox gibi gibi itemler kodlanabiliyor. Python kodlarını enjekte etmekten kastın sanırım butona tıklayınca hello world adında bir çıktı vermesi veya textboxlardaki itemi yazdırma gibi ise evet buda yapılabiliyor. Form tasarımı eğer kodlarla yapmak zor gelirse qt designer adında bir program ile sürükle bırak mantığı ile tasarım yapabilirsin.
 

osm4nl1evl4d1

Kıdemli Üye
15 Mar 2017
4,776
10
T Ü R K
Dediğim modül pyqt ile form tasarımı yapılıyor. Yani buton, textbox gibi gibi itemler kodlanabiliyor. Python kodlarını enjekte etmekten kastın sanırım butona tıklayınca hello world adında bir çıktı vermesi veya textboxlardaki itemi yazdırma gibi ise evet buda yapılabiliyor. Form tasarımı eğer kodlarla yapmak zor gelirse qt designer adında bir program ile sürükle bırak mantığı ile tasarım yapabilirsin.

Kardesim aradigim cevap buydu.
Tesekkur ederim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.