Agu 21
Digg
Stumbleupon
Technorati
Delicious

Microsoft StyleCop 4,3

StyleCop' ın yeni versiyonu geliştiricileri tarafından görücüye çıkarıldı.

Bu versiyonda birkaç bug temizlenirken bunun yanında yeni kurallar ve dökümantasyonda değişiklikler gerçekleştirildi.

Data detaylı açıklama için buraya , ben direkt indireyim diyenler için buraya tıklamanız yeterlidir.

Agu 19
Digg
Stumbleupon
Technorati
Delicious

Dinamik diller için dinamik ortam DLR

.Net Framework ün temelini bildiğimiz gibi CLR oluşturmaktadır. CLR, IL kodlarına derlenmiş programlarını çalıştırmakla yükümlüdür. Herhangibir dille yazılırsa yazılsın CLR için IL koduna çevrilmiş olması yeterlidir. C# ve Vb.Net statik dil olmalarına karşın Python dinamik bir dildir. Peki şu dinamik dillerin geliştiricilere ne tür kolaylıklar getirdiğine bir bakalım.

.Net üzerinde dinamik diller ve DLR

IronPython ın ilk versiyonu CLR üzerinde çalışmaktaydı. Jim Hugunin IronPython ile CLR in dinamil diller için çok kötü bir ortam olduğunu ispatladı. İkinci versiyonla birlikte, tüm dinamik dilleride içinde barındırabilecek yeni bir platform geliştirildi DLR. Böylece Microsoft birçok dinamik dili .Net bünyesine katmak için çok büyük bir atılım yaptı.

Peki neden CLR kötü bir ortamdı ve neden DLR gibi yeni bir ortama ihtiyaç duyuldu?

Öncelikle dinamik dillerde tip tanımına ihtiyaç duyulmamaktadır. Hatta daha sonradan nesnenin temsil ettiği tipi değerini değitirerecek farklılaştırabilirsiniz. En önemli konulardan biri ise çalışma zamanında nesneleri irdeleyebilir ve değiştireilirsiniz.

Statik dillerde methodları derlendikten sonra çağırabilirken, Python ile dinamik olarak erişim sağlayıp, davranışlarını kolayca değiştirebilirsiniz.

Statik dillerde herbir nesnenin tipinin belirtilmesi zorunlu olup eğer tanım yapılmazsa derleyici tarafından güzel bir uyarı alırsınız :D.

Her ne kadar dinamik diller için tip tanımına gerek duyulmuyor desekde aslında her nesne bir tipe sahiptir. Gidipte bir metin ifadesi ile bir sayıyı toplayamazsınız. Peki fark nerede? Python yorumlayıcısı nesnelerin tiplerini onlara gereçekten ihtiyaç duyulmadıkça kontrol etmez (Ki statik dillerde bu işlem nesnenin tanımında gerçekleşmektedir ve eğer geçersiz bir durumla karşılaşılırsa da compiler tarafından derleme işlemi gerçekleştirilmez.).

IronPython geliştiricileri, Python vb. dinamik diller için herbirine ayrı ortamlar yaratmak yerine tekbir çatı altında tekbir temel tip düzeninde olabilecekleri, yeni dillerin rahatlıkla entegre edilebileceği DLR ı geliştirdiler.

Agu 17
Digg
Stumbleupon
Technorati
Delicious

Statikten dinamiğe

.Net programcıları için IronPython tamamiyle yeni bir dil. Programlama da yeni stillerle tanışacakları, dinamik programla dillerinini güç ve esnekliği ile tanışabilecekleri muhteşem bir ortam(Tabi daha önce Ruby, Python vb dinamik dillerle çalışmadığınızı varsayarsak).

IronPython tam bir .Net dili. Platforma ait tüm özellikleri kullanmanız mümkün. .Net ile bildiğiniz herşeyi uygulayabilmeniz mümkün.

.Net in tüm özelliklerini be zaten favori statik dillerimlede(C#,Vb.Net) kullanabiliyorum ki. Ne diye gidip yeni bir maceraya atılayım. Bana sebep göster...

Tamam IronPython yeni olabilir. Ama Python olgun ve stabil bir dildir. Temel amaç herşeyi mümkün olduğunca kolay gerçekleştirmek. Daha az ama daha okunur kod.

C# ile klasik merhaba dünya :D ve Python ile merhaba dünya

Yukarıdada görüldüğü gibi C# derleyicisinin gönlünü hoş tutabilmek için ne kadar extra kod yazmamız gerektiği. Süslü parantezler, noktalı virgüller, tip tanımlamaları hepsi kodun okunabilirliğini azaltıyor. Aynı örneğin Python versiyonunda ise herşey kısa ve öz. Tamam bu kadar basit bir örnekle karşılaştırma yapmak doğru değil bu sadece adı da üstünde bir örnek :D. İlerde Python ı incelediğimizde umarım daha net farkı ortaya koyabiliriz.

Eğer uygulamanız için bir scripting dili geliştirecekseniz sizin için hazır, kolay ve güçlü bir seçenek var, IronPython. IronPython geliştirilme aşamasında tasarlanış şekli itibariyle uygulamalarınızın içine entegrasyonu çok kolaydır(Zamanı gelince :D. Zaten en çok kullanım yerimiz bu olacak.).

Agu 17
Digg
Stumbleupon
Technorati
Delicious

Python dan başka dil tanımam hani şu .Net i bi test etsem diyenlere

Python geliştricisi iseniz .Net deneyimi yaşamınız için IronPython bulunmaz bir fırsat. Daha önce de bahsettiğim gibi IronPython tamamen Python 2.5 (2 verisyonunda) temel alınarak geliştirilmiştir.

Eee, güzelim Python dururken ne diye şimdi IronPython kullanıyımki. Cevap aslında çok basit platform. IronPython la birlikte tüm geniş .Net framework e(tıpki muhteşem Python standart kütüphanesi gibi :D ) erişim sağlamış olacağız. Ve tabiki CLR.

CLR mi hmm devam et.

CLR, tamamen hız ve stabilite için sizin yerinize çalışır. Örneğin çok kanallı uygulamalarda(Multithreaded) multiple processor lerden maximum faydayı sağlar. Bu tarz işlemlerde performans için extra hiçbirşey yapmaya gerek yokken CPython uygulamalarında bu gerçekleştirilemez(GIL(Global Interpreter Lock)). IronPython a C# kullanarak rahatlıkla yeni özellikler katabilirsiniz bunu CPythona C ile gerçekleştimekten daha kolay bir şekilde.

IronPython ın .Net sınıflarına hiçbir müdahale gerektirmeden doğrudan erişim sağlaması, Python programcıları için büyük kolaylık sağlayacak, rahatlıkla kullanıcı arayüzleri oluşturabilecekleri Windows Form ve WPF ye erişim sağlayıp etkileyici arayüzler oluşturabilecekler.

Avantajlar bu kadarmı. Tabiki değil. Fakat şu tanıtım kısımlarını fazla uzun tutmadan biran önce atraksiyona mı geçsek. Ihh daha değil :D

Birde ben .Net ciyim C#(Vb.Net) ten başka dil bana gereksiz diyenler açısından bir bakalım.

Agu 17
Digg
Stumbleupon
Technorati
Delicious

Python la daha dinamik bir dünya için

Python la daha dinamik bir dünya için

Bir önceki "Güne yeni bir dille başlamak" adlı yazımda kabaca IronPython hakkında konuşmuştuk. Ama hala yapacak çok işimiz var.

IronPython için statik değil dinamik bir demiştik.Dinamik dillerin en önemli özelliklerinden biride tip tanımına ihtiyaç duymamasıdır. Yeni bir nesne oluştur, tip belirtme hatta çalışma zamanında istediğin gibi nesneye müdahale et.

Biraz şu IronPython dan bahset bize. Neymiş, nasıl olmuş, kim niçin yapmış...

IronPython, Microsoft tarafından Python dilinin açık kaynak kodlu bir implemantasyonu olarak geliştirildi.

Hmm bir dakika. Biliyorumki .Net uygulamaları derlendikten sonra IL kodlarına çevrilir ve çalışması içinde CLR e ihtiyaç duyar. Bu durumda diyebilirmiyizki. IronPython, Pyton kodlarını CLR in anlayacağı IL kodlarına çeviriyor.

Evet, IronPython motoru Python kodlarını bir assembly e derleyip CLR üzerinde çalışmasını sağlıyor.

 

IronPython ın ikinci sürümü ile birlikte ekip radikal bir değişiklik yaptı. Farklı dinamik dillerin aynı çatı altında çalışmasını sağlayacak DLR (Dynamic Language Runtime) geliştirildi ve IronPython tamamen bu yapıya uyarlandı.

IronPython her ne kadar bir Python implementasyonu olsada asıl amaç .Net Framework e erişim sağlamaktı. Burdan da çıkarılacağı gibi, IronPython içinden .Net tiplerine erişmek çok kolay. İster bir ASP.Net uygulaması geliştirin, ister bir Windows Form uygulaması herşey alıştığınızdan farksız bir şekilde. Hiçbir tip dönüşümü veya benzeri işlem yapmadan .Net i Python la yazmak. :D

IronPython kendisi Python ın birebir implementasyonu olarak C# ile yazıldı. İlk versiyon Python 2.4, ikinci versiyon da ise 2.5 versiyonu uygulandı. Eğer daha önceden Python kullandı iseniz Python a ait tüm temel özellikleri IronPython da da kullana bildiğinizi göreceksinizdir. Özet olarak diyebilirizki IronPython=Python

IronPython, Microsoft için farklı anlam taşıyan bir proje. Hem güçlü bir dilin .Net çatısı altına entegrasyonu hemde tamamen açık kaynak kodlu bir uygulama(Compiler tasarımı açısından çok güzel bir örnek.). Sanırım tüm bunlar için IronPython geliştiricisi Jim Hugunin e teşekkür etmemiz lazım.

Bir sonraki yazıda Python ve .Net geliştiricileri gözünden IronPython a bir göz atacağız.

Agu 16
Digg
Stumbleupon
Technorati
Delicious

Güne yeni bir dille başlamak

Güne yeni bir dille başlamak

.Net in kalbini oluşturan CLR(Common Language Runtime) içinde JIT(just in time) compiler, gömülü hafıza yönetimi ve güvenlik özellikleri ile çok güçlü bir sistemdir. Bunların nasıl çalıştıklarını, neler yaptıklarını bilmeden de CLR in tüm avantajlarından çok rahat yararlanabiliriz.

.Net programcılarını çoğunluğu dil olarak C#, Vb.Net veya C++ kullanmaktadır. Peki bu diller varken yeni bir dile neden ihtiyaç duyalım ki? Madem .Net teki herşeyi bu dillerle gerçekleştirebiliyorum o zaman neden?

Hmm öncelikle yeni bir dil derken hedef aldığımız dilden bahsetmek daha doğru olur sanırım. Tercihimiz IronPython. IronPython , Python dili için geliştirilmiş bir compiler dır. Eğer bir .Net geliştiricisi iseniz Python ı web geliştirmede, basit script ler yazmada kısacası .Nette yapabileceğiniz herşeyi yapabilirsiniz. Eğer bir Python geliştiricisi iseniz, buda size çok sevdiğiniz Python dilini .Net Framework ünün sağladığı avantajlar için kullanabilirsiniz demek. Peki neden hala IronPython?

IronPython, .Net için geleneksel diller olarak kabul edebileceğimiz C#, Vb.Net gibi dillerle benzer özellikler sağlamasının yanında kendine has çok güçlü özelliklerede sahiptir. Statik dillere karşın IronPython dinamik bir dildir. Ayrıca Python multi-paradigm bir dildir. Çok farklı programlama paradigmalarına destek vermektedir. Functional programming, OOP, meta-programming...

Microsoft, mevcut .Net ailesindeki birçok tool ve framework ü IronPython ın hizmetine sunmuştur.

ve daha birçok yapıyı kullanmak mümkündür.

Güzel, peki bu dil bana ne sağlayacak ki?

  • İlk olarak yeni bir dille yeni birkaç programlama paradigmasını öğrenme fırsatı doğacak(functional programming, meta-programming)
  • Farklı görüş açıları kazanıp, olaylara farklı açılardan bakmayı sağlayacak.
  • ve belkide en güzeli favori .Net dilleriniz ile birlikte kullanabileceğiniz çok güçlü ve kolay bir scripting language a sahip olacaksınız. :D

Ben hala bir fikir sahibi olamadım diyorsanız . O zaman biraz bekleticeğim. IronPython ın nasıl çalıştığını, dinamik dillerin getirdiği avantajları, basit olarak statik dillerle karşılaştırmalı örneklerinide gösterip asıl hedefimiz olan şu IronPython denen zat-ı muhterem i öğrenmeye başlayacağız.

Bir daha ki güne daha dinamik başlama dileğiyle...