Pazar, Ekim 01, 2006

Delphi nerede hata yaptı?

Windows işletim sisteminin yaygınlaşması ile birlikte windows için yazılmış programlar da yaygınlaşmaya başladı. İlk zamanlarda windows programları genellikle C ile Windows API (Application Programming Interface) arabirimi üzerinden yazılıyordu. Windows API programcılara büyük kolaylıklar getiren bir arabirimdi ama yine de windows için program yazmak kolay bir iş değildi. Microsoft Visual Basic ürününü çıkarana kadar windows programcılığı fazla yaygınlaşamadı, yazılan programlar da belli bir kapsamı aşamadı.

Formlar ve bileşenler kulllanarak program geliştirme yönteminin ilk atası Visual Basic'dir. Bu dönemde dilin haricinde başka görsel unsurlar da kullanılarak yapılan programlama şekline RAD(rapid application development) programcıya da geliştirici (developer) denmeye başlandı. Bu dönemde c++, smalltalk gibi nesne yönelimli programlama dilleri olmasına rağmen Visual Basic (VB) nesne yönelimli (object oriented) bir dil değildi ancak windows için program yazma işini çok basitleştirmişti. Program yazma şekli de daha çok prosedürel programlamaya benzediği ve o dönemde nesne yönelimli diller çok yaygınlaşmadığı için VB hızlı bir şekilde yaygınlaştı. Bu sahnede Microsoft daha fazla tek başına kalamadı. Önemli bir rakibi efsane Borlan Pascal'ın üreticisi Borland'dı.

Borland Pascal 7 paketi ile birlikte iki ürün daha geliyordu. Bunlar Turbo Vision ve Pascal for Windows idi. Pascal for Windows Pascal dili ile (bugün delphi ile program yazarken kullandığımız dil) windows programlarının yazılabilmesini sağlıyordu ancak VB gibi basit bir görsel tasarım aracı yoktu. Turbo Vision ise DOS programlarının daha basitçe yazılabilmesini sağlayan bir araçtı. Eğer windows programları gibi köşesinden tıklanarak kapatılabilen pencereleri olan, combobox, textbox gibi özellikler içeren ve mouse ile kullanılabilen bir DOS programı gördüyseniz bu büyük ihtimalle Turbo Vision ile yazılmıştır.

Bu ürünlerin varlığı Borland'ın elinde tamamen nesne yönelimli bir windows programlama aracı çıkaracak birikim olduğunu gösteriyor ama Borland prosedürel programlama ile nesne yönelimli programlama arasında bir orta yol üreterek Delphi ürününü çıkardı. Sanırım o dönemde prosedürel programlamaya da olanak sağlanması ticari bir karardı. Bu durum bir anlamda OOP temeli üzerine Prosedürel programlama yapılması anlamına geldi. Delphi programıcları bilirler. Eğer VCL'e ek bir bileşen yazmaya kalkarsanız yapmanız gerekenler ve düşünme şekliniz normal program yazarkenkinden çok farklıdır. Bu Delphi nin iki paradigmayı da barındırmasından kaynaklanır. VCL OOP temeli üzerine kurulduğu için VCL'e yapacağınız eklentileri nesne yönelimli kurallara göre yapmalısınız. Bileşen işine hiç girmeden program yazıyorsanız OOP'den anlamanıza gerek yoktur.

Önemli bir gelişme JAVA dilinin ortaya çıkmasıyla yaşandı. JAVA, VB ve Delphi den farklı olarak %100 nesne yönelimli bir programlama diliydi ve OOP ile windows programcılığını başarıyla biraraya getirmişti. Tabii JAVA ile yazılan programların windows haricinde Linux gibi windows dışı platformlarda da çalışabilmesi büyük bir avantajdı. JAVA bir anda dünyanın en çok kullanılan programlama dili haline geldi ve Microsoft ile Borland bu gelişmeye farklı tepkiler verdiler.

Microsoft'un Java'nın temel başarısının OOP temelli olması olduğunu düşünerek .NET altyapısı ve C# dili ile cevap verdi. .NET platformu %100 nesne yönelimlidir ama (multiplatform desteği olmasına ve Mono gibi Linux desteği olan projelere rağmen) resmi olarak Linux'da çalışmıyor.

Borland ise Java'nın temel başarısının Linux ile çalışması olduğunu düşünerek %100 nesne yönelimli olmayan ama Linux için program yazılabilmesini sağlayan Kylix ile cevap verdi. Sonradan Kylix'i piyasadan kaldırdı ve kaçan treni yakalayabilmek için .NET desteği olan Delphi2005 ürününü çıkardı ancak zamanında Delphi ile yapabileceklerini yapmakta çok geç kaldığı için istediğini bir türlü alamadı. Aslında bir zaman Borland bu gidişatı sezerek CORBA gibi çözümleri Delphi'ye entegre etmiş hatta şirketin de ismini Inspire olarak değiştirmişti. Daha sonraları Delphi ile birlikte DUnit ve ModelMaker gibi nesne yönelimli programlamaya hitap eden ürünler de gelmeye başladı ama bunlar Delphi programcılarının varlığını bildiği ama kullanmayı hiç düşünmediği ürünler olarak kaldı. Belkide asıl değişmesi gereken Delphi'nin hem prosedürel hem de nesne yönelimli program yazmaya imkan tanıyan yapısıydı.

Turbo Pascal ve Delphi dilinin yaratıcısı Anders Hejlsberg 1996 yılında Microsoft tarafından transfer edilmişti. Daha sonra Anders Hejlsberg Microsoft'ta J++, MFC ve C# ürünlerinin baş mimarlığını yapmıştır. Mutlaka Borland'da çok yetenekli mühendisler çalışmaktadır ancak bu transferin Delphi dilinin gelişimini nasıl etkilediği üzerinde düşünülmesi gerekir. Bu günlerde Borland'ın uygulama geliştirme ürünlerinin tamamını satacağı ve proje yönetimi ürünleri üzerine yoğunlaşacağı konuşulmaktadır.

Hiç yorum yok: