Java, İnternet ortamında taşınabilirliği çevreleyen birçok hususu başarıyla ortaya koymuş
olmasına rağmen, Java‟nın da yetersiz kaldığı bazı özellikler hala mevcuttur. Bunlardan biri,
“diller arasında uyum içinde çalışma” (cross-language interoperability) olarak tarif edilebilecek
özelliğidir Buna ayrıca, karışık dillerde programlama (mixed-language programming) da denir.
Bu, bir dilde üretilmiş bir kodun bir başka dilde üretilmiş kodla birlikte kolaylıkla çalışma
becerisidir. Diller arasında uyum içinde çalışma özelliği büyük, dağıtık yazılım sistemleri
geliştirirken gereklidir. Bu, ayrıca programlama yazılım bileşenleri için de istenilen bir özelliktir.
Çünkü en kıymetli bileşen; en çok sayıda işletim ortamında, en çeşitli bilgisayar dilli
yelpazesinde kullanılabilen bileşendir.

Java'nın yoksun olduğu bir diğer özellik ise Windows platformlarıyla tam entegrasyondur.
Java programları (Java Sanal Makinesinin kurulmuş olduğunu varsayarak) Windows ortamında
çalıştırılabilir olmalarına rağmen, Java ve Windows yakından ilişkili değildir. Windows dünyada
en yaygın olarak kullanılan işletim sistemi olduğundan, Windows için doğrudan destekten
yoksun olması, Java için bir dezavantajdır.

Bu ve diğer ihtiyaçlara cevap vermek amacıyla Microsoft, C#‟ı geliştirdi. C#, 1990‟ların
sonlarına doğru Microsoft‟ta ortaya çıktı ve Microsoft‟un .NET stratejisinin bütününün bir par-
çası oldu. C# ilk kez 2000‟in ortalarında alfa versiyonu olarak piyasaya çıktı. C#‟ın baş mimarı,
çeşitli büyük başarılara imza atmış bulunan, dünyanın önde gelen dil uzmanlarından Anders
Hejlsberg‟dir. Örneğin, Hejlsberg 1980'lerde çok başarılı ve güçlü bir dil olan Turbo Pascal‟ın
orijinal yazarıdır. Turbo Pascal‟ın sadeleştirilmiş uygulaması, geleceğin tüm derleyicileri için
standartları belirlemişti.

C#; C, C++ ve Java ile doğrudan bağlantılıdır. Bu tesadüf değildir. Bunlar, dünyada en
yaygın olarak kullanılan - ve en fazla sevilen - programlama dillerinden üçüdür. Üstelik bugün
profesyonel programcıların neredeyse tamamı C ve C++‟ı, birçoğu da Java'yı bilmektedir. C#‟ı
sağlam ve iyi anlaşılır bir temel üzerine inşa ederek bu dillerden C#‟a kolay bir geçiş de
sağlanmış oldu. Hejlsberg için “tekerleği yeniden icat etmek” ne gerekli ne de istenilir bir durum
olmadığı için, kendisi belirli gelişmelere ve yeniliklere odaklanmakta serbestti.

C#‟ın aile ağacı İekil 1.1‟de gösterilmektedir. C#‟ın dedesi C‟dir. C‟den C# söz dizimini,
anahtar kelimelerinin birçoğunu ve operatörlerini almıştır. C#, C++ ile tanımlanan nesne
modeli üzerine kurulmuştur ve bu nesne modelini geliştirmiştir. C veya C++‟ı biliyorsanız C#
ile adeta kendinizi evinizde hissedeceksiniz.

C# ve Java arasındaki ilişki biraz daha karmaşıktır. Daha önce açıklandığı gibi, Java da C
ve C++ 'tan türemiştir. Java da C/C++ söz dizimini ve nesne modelini paylaşmaktadır. Tıpkı
Java gibi, C# da taşınabilir kod üretmek amacıyla tasarlanmıştır. Ancak C#, Java‟dan
türememiştir. Aksine, C# ve Java ortak bir soyu paylaşan, fakat birçok önemli açıdan farklılık
gösteren birer kuzen gibidir. Her şeye rağmen, bunun iyi bir tarafı da vardır: Eğer Java‟yı
biliyorsanız birçok C# kavramı size tanıdık gelecektir. Aksi de doğrudur: İayet gelecekte Java
öğrenmeniz gerekli olursa, C# ile öğrendiğiniz birçok şey Java'da da geçerli olacaktır.

Bu kitabın konuları içinde uzun uzadıya inceleyeceğimiz C#‟ın pek çok yeni özelliği
mevcuttur. Ancak C#‟ın en önemli özelliklerinden bir kısmı, standart olarak mevcut olan ve
yazılım bileşenleri için sunulan destek ile bağlantılıdır. Aslında, C# bileşen yönelimli bir dil
(component-oriented language) olarak nitelenmektedir; çünkü C#, yazılım bileşenlerini yazmak
için bütünleşik destek içermektedir.

Örneğin C#, bileşenleri oluşturan öğeleri, mesela özellikleri, metotları ve olayları doğrudan
destekleyen özellikler içerir. Ancak, C#‟ın karışık dillerin hâkim olduğu bir ortamda çalışabilme
becerisi belki de C#‟ın bileşen yönelimli özelliklerinden en önemlisidir.

[Herkes İçin C#]