Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Archive for the ‘C#’ tag

Hangi Programlama Dili Daha Popüler?

leave a comment

Programlama dillerinin dünya çapında popülerliklerini değerlendiren birkaç site var. Bu sitelerde 2010 itibariyle genel duruma grafiklerle bir bakalım.

www.langpop.com

Bu sitede popülerite için çeşitli kaynaklardan veriler derlenmiş. Bu kaynaklardan bazıları şöyle: Yahoo, Craigslist, Powell’s Books, Freshmeat, Google Code, Del.icio.us ve Ohloh. Her bir kaynaktaki popülerite ayrı ayrı görülebileceği gibi, aşağıdaki grafikte tüm kaynaklar eşit ağırlıklı kabul edilerek elde edilmiş genel durum görülmekte. Bu sonuçlara göre Java, C ve C++ oldukça popüler görünüyor. C# ise VB ve Delphi’ye göre epeyce popüler.

Popüler programlama dilleri

www.ohloh.net

Ohloh.net, açık kaynak yazılımlar ve yazılımcılar için bir dizin ve topluluk. Burada istediğiniz programlama dillerini seçerek birbiriyle karşılaştırmasını yapabiliyorsunuz. Aşağıdaki grafikteki değerler, buraya kayıtlı yazılımcılar tarafından “commit”lerin sayısından toplanmış (sitede, güncellenen kod satırı sayısı, proje sayısı vb. çeşitli kriterlere göre de değerlendirme yapılabiliyor ancak en makul yaklaşım “commit”lerin sayısı gibi görünüyor bana da). Bu grafiğe göre son 10 yıldır C++’ın popülerliği düşerken Java’nınki yükseliyor. C#, PHP ve Python’da da yükseliş görülürken, VB’nin çok değişmediği görülüyor.

Popüler programlama dilleri

www.tiobe.com

Tiobe’deki veriler de çeşitli kaynaklardan derlenerek oluşturuluyor. Aşağıdaki grafikte yaklaşık 10 yıllık bir karşılaştırma görülmekte. Bu grafikte öncekilerle paralel sonuçlar içeriyor.

Popüler programlama dilleri

Dünyada durum bu şekilde. Acaba Türkiye’de nasıl? Benzer çalışmaları Türkiye için de yapmak lazım aslında. Ya da en azından yazılım sektöründe çalışanlar arasında belirli periyotlarla anketler yapılsa ve bunlar yayınlansa çok güzel olur. Belki de yapılıyordur, benim haberim olmamıştır. Bu konuda bilgisi olan varsa yorumlarıyla katılırsa çok memnun olurum. Kariyer sitelerindeki ve gazetelerin İK sayfalarındaki iş ilanları, piyasadaki programcılık/yazılımcılık kursları ve kitapları da popülerlik bakımından belli bir fikir verebilir sanıyorum.

Benim kişisel gözlemlerim ve tahminlerim Türkiye’de son yıllarda C# dilinin yaygınlaştığı, Delphi’nin eski popülerliğini .Net desteğine rağmen büyük ölçüde kaybettiği, Java’nın da en popüler diller arasında olduğu yönünde. Siz ne dersiniz?


29.10.2010 tarihli ek: Bu konuyla ilgili şu makale gözüme çarptı 7 programming languages on the rise. Makalede özetle Python, Ruby, MATLAB, JavaScript, R, Erlang, Cobol ve CUDA dillerinin de yükselişte olduğundan bahsediliyor. Diğerleri tamam da Cobol’u bu listede görmek çok ilginç.

Written by vtunali

Ekim 23rd, 2010 at 12:41 pm

Özyinelemeli Lambda İfadesi Yazmak

leave a comment

C#’ta özyinelemeli (recursive) bir lambda ifadesi yazılabilir mi? Programcılık mantığıyla zor olmaz gibi geliyor ilk bakışta:

Func<int, int> fac = null;
fac = x => x == 0 ? 1 : x * fac(x - 1);
int f5= fac(5);

Ne kadar kolay değil mi? Ama yanılgıya düşülen nokta şu: örnekte özyinelemeli bir lambda ifadesi değil özyinelemeli bir fonksiyon yapmış olduk. Harici bir Func tanımı olmaksızın, sadece tek bir ifade (expression) ile istediğimizi yapabilir miydik? Daha doğrusu matematiksel anlamda gerçek bir lambda ifadesini özyinelemeli olarak oluşturabilir miyiz ve bunu C# ile yapabilir miyiz?

Nasıl olabileceğiyle ilgili msdn’de The Mellow Musings of Dr.T adlı günlükte bu konuda güzel bir makale var, meraklılarına tavsiye ederim.

Written by vtunali

Şubat 20th, 2009 at 7:58 pm

Mono Üzerinde .Net Konsol Uygulaması

leave a comment

ASP.NET’i şimdilik bir kenara bırakıp Windows Forms uygulamalarının Mono’da nasıl çalışacağını denemek istiyorum. Tabi Forms’dan önce bir konsol uygulaması denesek nasıl olur?

Şu adreste verilen örneği önce Visual Studio ile çalıştırıyorum. Basit bir Hello World uygulaması yerine Google’da sorgulama yapan ve ilk 5 sonucu döndüren bir uygulama deniyoruz.

Visual Studio ile derleme sonucunda oluşan dosyaları olduğu gibi Linux’a kopyalıyorum ve çalıştırıyorum. Linux’ta çalıştırmak için doğrudan Exe’nin adını yazmak yeterli değil. Şu komut satırını vermek gerekiyor:

mono monocon.exe

Burada monocon.exe benim Visual Studio’da oluşturduğum programın Exe dosyasının adı.

Sonuç aynı. Konsol uygulaması için bir sorun yaşamadım. Bakalım Win Forms uygulamaları için de durum bu kadar kolay mı… Gelecek denememi bunun üzerine yapacağım.

Deneme yaptığım .cs dosyasını buradan indirebilirsiniz.

Written by vtunali

Kasım 17th, 2007 at 10:49 am

Linux Üzerinde Mono ile ASP.NET [1]

leave a comment

Windows üzerinde yapmış olduğum çalışmayı bir kez de Linux üzerinde yapmayı deniyorum. Bakalım burada neler yaşayacağım. Denemek isteyenler için olabildiğince açık bir şekilde, adım adım neler yaptığımı ekran görüntüleri eşliğinde yazmaya çalışacağım.

Öncelikle, Linux için bir kurulum dosyasına ihtiyacımız var; bunu http://www.mono-project.com/Downloads sayfasında yer alan kendimize uygun bir yöntemle yapabiliriz. Ancak Linux’çu (!) arkadaşlar benim gibi Windows temelli arkadaşları ihmal etmemişler ve güzel bir kurulum programı hazırlamışlar. Ben Linux Installer for x86 bölümünde yer alan Mono 1.2.5.1_2 Installer dosyasını indirip kullandım (sitede bu yazıyı hazırladığım sırada yeni bir dosyaya bağlantı verilmiş durumda olduğunu görüyorum). Bu dosyanın nasıl kullanılacağı da hemen yandaki Instructions to use the Installer sayfasında açıklanmış. Ben de aynı şekilde yaptım. An itibariyle o sayfada açıklanan kurulumun sürümü farklı, bu nedenle farklı bir MD5SUM sonucu çıkıyor, buna aldırmadan devam edin. Evet, resimlere başlayalım artık…

Microsoft Virtual PC 2007 üzerinde çalıştırdığım bir Pardus 2007 işletim sistemli sanal makinam vardı. Tüm çalışmamı bu sanal makinada yaptım. Daha önce bu Pardus’a herhangi birşey kurmamıştım, bunu da belirteyim. İlgili kurulum dosyasını kullanıcımın “home” klasörüne indirdim. Daha sonra konsol penceresi içerisinde aşağıda görülen komutları çalıştırdım.

chmod +x mono___installer.bin ./mono___installer.bin
./mono-1.2.5.1_2-installer.bin --mode xwindow

Grafik kurulumla ilgili sorun yaşayanlar için text mode kurulum için şu komutun kullanılması öneriliyor.
./mono-1.2.5.1_2-installer.bin --mode text

Daha sonra zaten Windows’dan alışkın olduğumuz bir kurulum programı başlıyor. Buradan itibaren ben varsayılan seçenekleri hiç değiştirmeden kurulum ekranlarında ilerledim.

Kurulum bitince bir uyarı penceresi çıktı. Bazı grafik kütüphanelerinin sistemimde olmadığını, bunları yüklemediğim taktirde bazı grafik uygulamalarını çalıştıramayacağımı söylüyor bu uyarı. Bunu önemsemiyorum…

Buraya kadar herşey güzel. Görünüşe göre sorunsuz bir kurulum gerçekleşti. Windows’da denediğim xsp web sunucusunu burada da denemek istiyorum. Bunun için Windows’daki kadar kolay bir yol bulamadım. Ben de komut satırından gereken parametrelerle xsp’yi çalıştırdım.

“home” dizinindeyken sırasıyla şu komutları çalıştırdım.

cd mono-1.2.5.1
cd lib
cd mono
cd 2.0
xsp2 --root /home/volkan/mono-1.2.5.1/lib/xsp/test

Ardından, xsp’nin 8080 portunda ve belirttiğim dizini sunucunun root dizini kabul ederek çalışmaya başladığını görüyorum. Peki, gerçekten çalışıyor mu? Hemen Mozilla’da deneyip görelim…

Evet, mono kurulumuyla beraber gelen test uygulaması gayet güzel çalışıyor. Geçen seferki gibi yine gerçek hayatta kullandığım bir ASP.NET uygulamasını hiç bir değişiklik yapmadan, aynen Linux’a kopyaladım ve çalıştırdım. Sonuç biraz hüsran gibi olsa da aslında güzel.

Galiba .aspx dosyasında yer alan “asp” etiketli nesnelerin renk ifadelerinde kabul görmeyen birşeyler var.

Tamam, peki “asp” etiketli nesne içermeyen basit bir .aspx dosyasını deneyelim, hiç olmazsa onda sorun var mı görelim. Bu dosyada tek sorun geçenki denememizden hatırladığım Türkçe karakter sorunu… Bunun dışında gayet güzel.

xsp’yi deneyebildim. Daha önce Windows üzerinde çalışan Visual Studio kullanarak geliştirdiğim bir ASP.NET uygulamasını hiçbir değişiklik yapmadan Linux üzerinde, mono üzerinde çalıştırmayı denemiş oldum. Bir dahaki sefere “asp” etiketli nesneleri daha basit olacak şekilde bir sayfa hazırlayıp bir adım daha ileri giderek veritabanı bağlantısı kurmayı deneyeceğim.

Written by vtunali

Kasım 6th, 2007 at 4:03 pm

Windows Üzerinde ilk Mono Denemem

leave a comment

.Net ortamında C# kullanarak ASP.NET uygulamaları geliştirmişliğim vardı. Ancak bunları hiç Linux ortamında çalıştırmayı deneme ihtiyacı duymamıştım. Şirkette son günlerde gündeme gelen Linux üzerinde de çalışacak yeni bir geliştirme aracı/ortamı arayışı üzerine Mono’yu kurcalamaya karar verdim (Java, php, vb. araçlardan önce bildiğimiz bir ortam olan Visual Studio’ya ilk etapta öncelik veriyoruz).

Öncelikle www.mono-project.com adresinden Windows üzerinde çalışan sürümünü indirdim. Linux’u daha sonra deneyeceğim. Öncelikle minimumda ihtiyaç duyacağımız kütüphanelerin Mono tarafından ne kadar desteklendiğini görmek istiyorum. Sonrasında deneylerimi Linux üzerinde sürdüreceğim.

İndirdiğim kurulum dosyasını yükledim. Kurulum sonrası gelen menü şu şekilde:

Bu menüden XSP 2.0 Test Web Server seçeneğini seçerek test sunucusunu çalıştırdım. DOS penceresinde sunucu çalışmaya başladı. Varsayılan olarak 8088 portunda dinlemede bekliyor.

Görelim bakalım gerçekten çalışıyor mu?

Evet, görünüşe göre D:\Program Files\Mono-1.2.5.2\lib\xsp\test klasörünü sunucunun kök dizini kabul ederek buradaki .Net uygulaması sağlıklı çalışıyor. Peki buraya daha önce Visual Studio’da geliştirdiğimiz bir uygulamayı olduğu gibi koysak çalışacak mı?

Daha önce bir hosting firması için geliştirdiğim bir uygulamanın eski bir sürümünü deneme amaçlı kullandım. Ana sayfa Türkçe Karakter sorunu içererek açıldı. İlginç bir durum var, .aspx dosyasında yer alan Türkçe karakterli metinler bozuk görünürken .cs dosyalarından yani derlenmiş koddan gösterilen mesajdaki Türkçe karakterler bozuk değil! Yazı tipi sorunu da değil buradaki. Bu arada belirteyim, projedeki tüm dosyalar UTF-8 kodlamasına sahip.

Türkçe karakter sorununu bir kenara bırakıp SQL Server bağlantısı yapabiliyor muyuz bir bakalım…

Fakat o da ne, “Keyword not supported UİD“. Fakat ben ConnectionString içinde büyük harflerle “UİD” kullanmadım ki, “uid” olarak kullandım. Web.config dosyasında sakladığım ConnectionString içindeki bütün küçük “i”leri büyük “I”ya çevirerek tekrar deniyorum.

Veritabanı bağlantısını başardık ve veritabanından kayıtları listeledik. Tekrar belirteyim, kodla dinamik olarak oluşturduğumuz bütün Türkçe karakterli String ifadeler düzgün görünürken .aspx’teki statik metinler Türkçe karakter sorunu yaşıyor. Belki de şu an için bilmediğim bir ayarlama gerekiyordur. İlerleyen günlerde çözerim umarım.

Windows üzerindeki deneyime şimdilik ara veriyorum. En azından beklentimi karşıladı gibi ama tabi ki sonuçta burada .NET Framework 2.0 kurulu bir Windows üzerindeyiz. Linux’ta başımıza neler gelecek merak ediyorum.

Written by vtunali

Kasım 3rd, 2007 at 12:25 pm