Teknolojilerin kesiştiği nokta!

C#’ın dünü, bugünü ve yarını

C#’ın kısa bir tarihi

Günümüzde C# geniş kullanım alanı bulan, olgunlaşmış, her tür program ihtiyacını karşılayabilecek kapasitede olan ve dünya üzerinde milyonlarca geliştirici tarafından kullanılan bir programlama dilidir. Fakat önceleri öyle değildi.

Bu makalede C#’ın tarihine dünden bugüne doğru kısa bir bakış atmaya çalışacak ve geleceğini tartışacağız.

Başlangıç: C# 1.0 (2002)

C#’ın özelliklerini anlatan metnin ilk iki cümlesi bu dilin tasarım amaçlarını oldukça net bir biçimde ortaya koyar:

“C# basit, modern, nesne yönelimli ve yazım güvenliğine sahip bir programlama dilidir. C#’ın kökleri C ailesinin dillerine dayanır ve bu nedenle C ve C++ dilini bilen yazılımcılar bu dile hemen uyum sağlayacaklardır.”

Bir keresinde C#’ın baş mimarı Anders Hejlsberg bana “yeni bir programlama dili, işe eksi 10 bin puanla başlar” demişti. Bir dilin oluşturulmasının, tercih edilir yapılmasının sürdürülmesi ve genişletilmesinin maliyeti o kadar fazladır ki var olan bir dille karşılaştırıldığında edinilmesi gereken yararlar devasa olmak zorunda kalır. Bununla birlikte her yeni dil atalarının avantajlarını kullanmak ister, C# da öyle yaptı.

C# 1.0 C++’a bir cevap olarak, onun temel sözdizimsel ögelerini alarak geliştirildi. C#’ın tasarımcıları, C++ kullanıcıların karşılaştığı birçok güçlüğü dikkatlice ele alarak bunların oldukça büyük bir kısmına çözümler geliştirdiler. Bunların bazıları, örneğin çoklu sınıf kalıtımsallığı’nın (multiple class inheritence) ortadan kaldırılması gibi, büyük değişimler yaratmıştır. Bunun yanında zekice düşünülen ufak değişiklikler de olmuştur.

Dilin tasarımcıları yazım güvenliği kavramına özel bir önem vermişlerdi. Yazım güvenliğini sağladığını söyleyen bir dilin derleyicisi, para birimi saklamak için oluşturulmuş bir alanda müşteri adı saklamak gibi işlemleri engelleyebilmeliydi. Yazım güvenliği bıçak sırtı bir iştir: bir yanda birçok hatalı programı daha derlenirken engellemek dururken diğer yanda ise programlama işini biraz daha zorlaştırmak vardır. C# 1.0 hedefi tam on ikiden vurmak için tasarlanmıştı: bir çok hatadan koruyabilecek sertlikte bir yazım sistemine sahipken aynı zamanda geliştiricilere bu hataların bazılarını çalışma zamanında kontrol etmek için öteleme olanağı veriyordu.

Sonuçta, özellik metninde de yer aldığı gibi, görece daha kolay bir nesne yönelimli programlama dili oldu. Fakat C# 1.0 yeni doğan bir programlama dili olmasa da henüz olgunlaşmadığı bir gerçekti.

Olgunluk artıyor: C# 2.0’dan (2005) 5.0’a (2012)

En başından beri C#’ın her yeri sürümünde adına “başrol oyuncusu” denilen ve dilin sunum gücünü büyük oranda artıran özellikler eklendi. C# 2.0’ın baş rol oyuncusu ise hazır tiplerdi. Hazır tipler sayesine C#’a katılan güç, güvenlik ve başarım inkâr edilemez; hazır tipler dilin neredeyse tüm aşamalarına sızmış ve dili bu gün ki konumuna taşımıştır.

Hazır tiplerin başarıyla sunumunun ardından, tasarım ekibi var olan birçok kodu incelediler. İnceleme sonucunda ortada birçok farklı veri yönetimi teknolojisi olduğunu, bunların her birinin birbiriyle uyumsuz sıralama, arama, gruplama, birleştirme vb. mekanizmaları olduğunu keşfettiler. Böylece C# 3.0’ın baş rol oyuncusu Dil ile Bütünleşik Sorgu (Language Integrated Query – LINQ) olarak belirlendi. LINQ geliştiricilere “bana Londra’da yaşayan ilk on müşteriyi soy isim sırasına göre ver” ifadesini müşterinin verisi her nerede tutuluyor olursa olsun bundan bağımsız olarak yazabilme olanağı tanımıştır. C# 3.0’ın tasarımında karşılaşılan zorluk, güçlü fakat anlatması zor kategori teorisi desteği ile anlaşılması kolay bir sözdizimi yaratma isteği arasındaki dengeyi bulmaktı.

LINQ’nun bu başarısından sonra tasarım ekibi tekrardan endüstri çapındaki eğilimlere ve C#’ın temel tasarım ilkelerine odaklandı. Süregelmekte olan Microsoft platformunu kullanan geliştiricileri destekleme hedefi, JavaScript, Phyton ve Ruby gibi daha az yazım güvenliği sunan “dinamik” dillerin git gide artan popülerlikleriyle birleşince C# 4.0’ın yeni “ baş rol oyuncusu” dinamik diller ile birlikte çalışabilme olarak belirlendi.

Yapılan bu seçim tartışmaları da beraberinde getirdi. C# geliştiricileri yazım güvenliğini çok sevmişlerdi, dolayısıyla C#’ın yazım güvenliğine halel getirecek her türlü girişim büyük ihtimalle direnişle karşılanacaktı. Tasarım ekibi önerilen bu özellik üzerinden birçok kez geçti, dikkatlice seçilmiş bir grup geliştirici tarafından iyice incelendi ve başa dönüldü. Sonunda güvenlik, kullanışlılık ve başarım arasında tatmin edici bir denge yakalandı ve bu yeni özelliği gayet şüpheci olan kullanıcı tabanına açıklamanın yolu bulundu: eğer dinamik dillerle ortak çalışmak üzere tasarlanmış nesneleri kullanarak bir C# programı yazıyorsanız, zaten programın o kısmındaki yazım güvenliğinden vazgeçmişsiniz demektir! Dinamik diller ile çalışabilirliği C#’ın yazım güvenliğini azaltıcı olarak tanımlamaktan ziyade, bu özellik programın güvenli olmayan kısımlarını daha iyi anlama ve yönetme olanağı getirdi.

Sıra C# 5.0’a geldiğinde, tasarım ekibi bir kez daha geliştiricilerin faydacı ihtiyaçlarına odaklandı ve bir çok mesleki yazılımın başının gecikme sorunları ile dertte olduğunu keşfetti. Bir verinin istenmesi ve kullanılabilir hale gelmesi arasında anormal bir zaman –tahminen milyonlarca makine döngüsü- geçiyordu. Böylesi yüksek gecikmeler varken geleneksel nesne yönelimle programlama dillerinde, hem işlemcileri verimli kullanıp hem de akıcı kullanıcı arabirimi olan programlar yazmak oldukça zor bir iştir. Eşzamanlı olmayan bekleme operatörü (asynchronous wait operator) sayesinde, bu özelliği kullanan C# 5.0 programları geneleksel eşzamanlı programlara göre çok daha kolay yazılırlar.

Kısacası tasarımcıların C# 1.0’dan beri çıkan her yeni sürümde ki ortak amacı profesyonel geliştiricilerin ihtiyaçlarını dikkate alarak C#’a, yazılmak istenen ifadeyi daha doğal olarak ifade edilebilmesini sağlayacak sözdizimleri eklemekti.

C#’ın geleceği

Microsoft uzun yıllardır kod adı Roslyn olan bir projede, C# derleyicisini bir servis olarak sunabilmek için (compiler as a service) çalışıyor. Yakın gelecekte Microsoft, derleyici ve Visual Studio IDE’si tarafından kullanılan sözcüksel, sözdizimsel ve anlamsal çözümleme motorlarını dokümante edilmiş ve desteklenmiş şekilde kullanıma sunacak. Bunun iki büyük etkisi olacak:

Birincisi, Microsoft tarafından C#’ı çözümlemek için kullanılan benzer kütüphanelerin genel ulaşılabilirliği, çözümleme araçları geliştirmek isteyen üçüncü şahısların maliyetlerini büyük oranda düşürecek. Üçüncü şahısların geliştirdiği çözümleme araçları, geliştiricilere C# kodlarını anlama, araştırma, bakım yapma, düzenleme, not düşme, dokümante etme ve hata bulma konuylarında yardımcı olacak. C# geliştiricileri daha iyi kod yazmalarını sağlayacak bu araçları çok sevecek.

İkinci olarak, yeni mimari temel ile birlikte, Microsoft için dile yenilikler getirmek daha kolay olacak. C#’ın sonraki birkaç sürümünde devalarca evrim geçireceğini beklemek yanlış olmaz. Ve elbette C# tasarım ekibi sektördeki eğilimleri yakından izlemeye devam edecek. Dolayısıyla C#’ın önünde uzun bir gelecek yatıyor ve ben gelecekte olacakları görmeyi iple çekiyor olacağım.

Kaynak: Developer Tech

Sitemizi kullanarak çerezlere (cookie) izin vermektesiniz. Detaylı bilgi için Çerez Politika'mızı inceleyebilirsiniz.

Links

Adres

Maslak Mahallesi, Maslak Meydan Sk. No:5. Spring Giz Plaza. Maslak/İstanbul

+90 212 282 7700

info@bilginc.com