Insanlar cocukluk caglarinda da yetiskinlik caglarinda da oyun oynamaya bayilirlar. Cocukken oynanan oyunlar daha temiz daha saf daha masum olurken yetiskinlikte oynanan oyunlar daha cikarci daha paraya dayali ve daha zevksiz olmaktadir. Yetiskinlerin en yeni oyunlarindan biride (en azindan bizim yeni ogrendigimiz) Hudson adi verilen lunaparkta oynadiklari “Haydi Soyle” adli oyundur. Bu oyunda gelecege dair dusuncelerinizi , olaylarin 2 yil 5 yil 10 yil sonra nasil gerceklesebilecegini, nerelere varabilecegini, hangi sonuclari dogurabilecegini soyleyip puan topluyorsunuz. Kisa vadede soylediginiz dusuncelerden gerceklesen olursa olayin buyuklugune gore bonus kazaniyorsunuz.
Şimdi bizde bu oyunun yazilim versiyonunu oynayacagiz hep birlikte. ileriye yonelik programlama dilleri, programlama teknikleri ve programlama ortamlari uzerinde tahminler yapip ileride “yaaa! bak demistim boyle olacagini” diyecegiz
Varolan seyler uzerine yorum yapmak yazi yazmak nisbeten kolaydir. Simdi zor olani deneyip gelecek uzerine tahminlerde bulunmaya calisacagiz.
Programlama dili olsun programlama teknikleri olsun hepsinin programlama ortamina siki sikiya bagli oldugunu dusundugumden programlama ortamlarinin ileride gelecekleri nokta programlama dillerini ve tekniklerini oldukca fazla etkileyecek ve sekillendirecektir. Bu nedenle oncelikle programlama ortami icin tahminlerimi hemen arkasindan da dil ve teknikler hakkindaki tahminlerimi yazmak istiyorum.
Saglam tahmin yapmak icin ortaya saglam gerekce koymak gerekir. Bircok alanda oldugu gibi yazilim dunyasinda da iki tane onemli faktor vardir. Satici ve musteri. Bu iki faktorun atacagi adimlar gelecegimizi belirleyecektir. Burdaki musteri den kasit biz yazilimcilarin program sattigi gercek musteriler degildir. Satici Microsoft, IBM, Sun, Borland, Oracle tarzi buyuk sirketleri musteri ise bu sirketlerin urunlerini kullanan biz yazilimcilari temsil etmektedir. Bizlerin yazilim uretip sattigimiz gercek musterilerin ise tahminlerimizi buyuk olcude etkileyecegini sanmiyorum. Cunku onlarinda asil odaklandigi yer asagida ki paragrafta belirtilmis olup nasil bir teknoloji kullandigimizin onlar icin bir onemi yoktur. Onlar sadece islerinin gorulmesini isterler.
Para hem satici hem de musteri icin onemli bir degerdir ve yapilan tum faaliyetlerin ana amaci paradir. Bu nedenle onumuzde iki ayri dunya vardir. Birisi ideal dunya digeri gercek dunyadir. Ideal dunyadaki satici ve musteriler para kismini bir tarafa birakip daha kolay daha basit daha bakilabilir daha gelistirilebilir daha kolay dagitilabilir yazilimlarin nasil yapilabilecegi uzerinde kafa yorarken gercek dunyadaki satici ve musteriler daha fazla nasil para kazanabilirim sorusuna cevap verdikten sonra ideal dunyadaki dusuncelerin uzerine kafa yorarlar.
Keske ideal dunya uzerinde tahminlerde bulunabilseydik. Hem daha kolay hem de daha eglenceli olurdu ama morpheus’un neo ya dedigi gibi. “gercek dunyaya hosgeldin” ![]()
Programlama ortaminin herseyden onemli oldugunu soyledim. “Bana ortamini soyle sana hangi teknolojileri kullanabilecegini soyleyeyim.” Kullanabilecegimiz teknolojileri bu kadar kesin cizgilerle ayirabilen en buyuk faktor programlama ortami. Programlama ortami olarak Windows kullaniyorsaniz belirli bazi araclari, linux kullaniyorsaniz belirli bazi araclari java kullaniyorsaniz belirli bazi araclari .net kullaniyorsaniz belirli bazi araclari , cep telefonu kullaniyorsaniz belirli bazi araclari kullanmaniz gerekir. Degisik bir pencereden bakarsak native bir ortamda degisik araclar (delphi, c++ vs), managed bir ortamda degisik araclar(java , c#, delphi.net vs.) dynamic ortam icin degisik araclar(Php, Ruby vs.) kullanmak gerekir. Araclar simdilik konumuz olmadigindan o kismi hizli gecelim ve yeniden ortama geri donelim. Ortami bos birakmaya gelmez ![]()
Cocukken oynadigimiz oyunlarla buyudugumuz zaman oynadigimiz oyunlari kisa bir sekilde yukarida karsilastirdim. Simdi de cocukken kurdugumuz hayallerle simdi kurdugumuz hayalleri karsilastirmak istiyorum. Cocukken sinir tanimadan ozgurce cok guzel hayaller kurabiliyorduk. Buyudukce zihnimizi yasaklarla fiziksel engellerle sinirlaya sinirlaya hayallerimizi demir parmakliklar arkasina hapsettik, yaratici dusunce dedigimiz olgudan cok cok uzaklastik. Kendi kendimizi esir ettik. Ornek vermem gerekirse bilgisayarla henuz tanismamis kucuk bir cocuk iken bilgisayarla ilgili cok degisik hayallerim, dusuncelerim vardi. Bilgisayarla en ucuk kacik seyleri yapabilecegimi dusunurdum, konusabilecegimi, sohbet edebilecegimi, derdimi mutlulugumu anlatabilecegimi, bana cevap verebilecegini dusunurdum. Benim cozemedigim problemlde bana yardimci olacagini dusunurdum. Buyudukce yasadigim dunyadaki fiziksel engeller yavas yavas zihnimede yerlesmis olacak ki buyuyunce bilgisayar hakkinda ki bu dusunceler de ya kayboldu ya imkansiz ya da mantiksiz gelmeye basladi kendime. En onemlisi bilgisayar artik benim icin programlama dilinin bildigim komutlarini anlayabilecek bir aletten ibaretti. Ucsuz bucaksiz bir dunyadan 100-200 komuttan ibaret bir dunyaya gecmistim. Kendimi oyle bir sartlandirmisim ki karsima cikan problemleri bu 100-200 komutla cozdum cozdum, cozemedim “bilgisayar da bu islem yapilamaz” diyip pes ediyordum. Cozulemez dedigim problemlerin bir baskasi tarafindan cozulmus oldugunu gormek ise allahin bana olan rahmetinden baska birsey olmasa gerek. Beynimizin her hucresini kaplamis ama bizim bir turlu goremedigimiz hayal gucumuzu esir almis, yeteneklerimizi sinirlayan zincirlerden, demir parmakliklardan kurtulmak icin bize verilmis bir nimet bir firsat bir sans… Eger firsatlari iyi degerlendirirseniz zincirleri kirip ozgur bir bicimde olaylara bakabilirsiniz. “Olmaz” diye birsey olmadigini benliginize kabul ettirmeniz gerekir. Bir problemle karsilastiginizda bu cozulemez/imkansiz diye konuya baslangic yapmak pesinen yenilgiyi kabul etmek sayilir.
Matrixte ki genc programcinin yazmis oldugu “kirmizili kadin” programinin benzerini yazma sansini sonsuza dek kaybetmek istemezsiniz sanirim
Konuyla ilgili Emre Eren in guzel bir yazisi var. okumak istereseniz buraya tiklayabilirsiniz.
Nerden nereye geldik derken konuyu hemen toparlayalim ve kesin bir ifadeyle platformumuzun tanimini ortaya koyalim. Hangis platform olursa olsun yazdigimiz kodun sorunsuz bir sekilde calismasi en oncelikli hedef olmali. Zamaninda parasal nedenlerden ve insanlarin takim tutar gibi platform tutmalarindan dolayi x platformunda yazilan bir kodun y platformunda calismamasi gibi garip bir durum soz konusu. X ve Y platformlarinin mimarisi farkli yapisi farkli gibi problemler olabilir ama sonucta muhatabimiz da bir bilgisayar. Ne olursa olsun yazdigimiz kodun farkli platformlarda calismasini saglayabilmeli. Bunu bile basaramiyorsa cocuklugumda ki bilgisayar sifatini bu aptal kutu kesinlikle hak etmiyor demektir.
Bir lokantaya girdiginizi dusunun. Masaya oturursunuz garson gelir menuden sectiginiz yemegi soylersiniz, garson yemeginizi getirir, yemeginizi yer hesabi oder isinize devam edersiniz. Butun lokantalarda islem adimlari hemen hemen aynidir. A lokantasinda farkli adimlar B lokantasinda farkli adimlar uygulamazsiniz. Yemeklerin nasil yapildigi, malzemelerin nereden alindigi, lokantada kac kisinin calistigi sizi ilgilendirmez. Hic bilmediginiz bir yerdeki lokantaya sanki her zaman geliyormus gibi girer yemeginizi yer ve cikarsiniz. Bizim istedigimizde budur. Yazdigimiz programin hangi platformda olursa olsun calismasidir. Pencerelerin nasil olusturuldugu, hangi mimarideki bir islemcinin oldugu, bellegi nasil yonettigi bizi ilgilendirmemesi lazim.
Lokantanin yapisiyla platformlarin yapisi bir degildir. Lokantalar basit platformlar kompleks yapilar diye dusunebilirsiniz. Hayir. Bilgisayarda kompleks bir makinadir ve zaten varolma amaci insanlarin cozmekte zorlandigi kompleks yapilari kolayca cozebilsin diye gelistirilmistir. Bu problemi cozemedikten sonra bilgisayar olmasinin benim icin fazla bir anlami yoktur.
Simdi bu platform bagimsizlik olayina biraz deginelim.
Evet mevcut ama yeterli degil. Belirli bir sirketin altinda gelistirilen bu tip kutuphanelerin ve bu kutuphaneleri kullanarak cross compiler ozelligi kazandirilan derleyicilerin cok yeterli oldugunu soylemek mumkun degil. Yeterli degil sozunun teknik olmaktan cok ideal dunyanin hedefleriyle alakali oldugunu belirtmek isterim. Yoksa gunumuzde bircok platformda calisabilen native dillerle yazilmis yazilimlar gormek mumkun ama bizim amacimiz daha kolay daha basit bir sekilde yazilim
gelistirebilmek. Ne yazik ki bu tip kutuphaneler ve programlar daha karmasik daha maliyetli olmaktan kendilerini kurtamazlar ve bircok yazilimin bu karmasiklik ve maliyetin altindan kalkabilecek kaynaga sahip degildir. Bu tip kutuphanelerin yeterli bir seviyeye gelmesi icin arkasinda tek bir sirket degil sektorde basi ceken yuzlerce buyuk sirketin durmasi gerekir. Aksi takdirde bircok problemle bogusmak zorunda kaliriz. Daha fazla problem daha fazla sorun hem ideal dunyanin hem de gercek dunyanin ulasmak istedigi hedeflerden cok uzaktir.
Butun herkesin destek verdigi ortaklasa gelistirdigi tek bir platform. Ideal dunyanin tum hedeflerini saglayabilecek lakin gercek dunyaninn para hedefine takilan bir dusunce.
Native diller isletim sistemlerine cok siki bagli oldugundan bu saatten sonra isletim sistemlerinin ayni standartlari cok siki bir bicimde destekleyeceklerini dusunmedigimden native diller de cozume cok uzak. Bazi diller icin gelistirilen croos compiler ozelliginin kulagi tersten gostermekten farksiz oldugunu dusunuyorum. Cozume biraz daha yakin duran secenek managed diller ve sanal makinalar.Platform bagimsizligini saglayabilen en ideal ve gercek cozum simdilik sanal makinalar. En onde gidenleri de JVM ve .Net.
Yeterli mi? Hayir.
İki platformunda eksileri var. JVM de sadece java dili kullanilabiliyorken .Net te sadece Microsoft platformlarinda resmi olarak desteklenmektedir. “Platformlar arasi entegrasyona en cok biz destek veriyoruz” desede microsoft bu destegin gercek dunyadaki para faktorune takildigini cok iyi gorebiliyoruz. JVM nin platform bagimsizligi daha yuksek duzeyde oldugu halde neden iyi bir cozum olmadigina ise platform bagimsiz ama tek bir dile bagimli oldugunu soyleyebiliriz. Tek bir dile bagimli olmasindan ziyade tek bir dile gore dizayn edilmis olmasi daha kotu.
Peki bu problem asilamaz mi ?
Birtakim calismalarla java haricinde ki diger dillerden de byte code uretilebilir ama ne kadar performansli olur tartismak gerekir. Hem boyle bir hareket zaten varolan birseyi yamalayip birtakim ozellikler kazandirma cabasina gireceginden omru cok fazla olmayacaktir.
Peki gelecekte ne olabilir ?
Gelecekte neler olabilecegini kestirmek icin gecmise bakmak gerekir.
Platformlarin ve dillerin gelismesini inceleyebiliriz. Yeni bir dil/platform cikar, bu dilin/platformun eksikleri zaman icerisinde ortaya cikar, belirli bir zaman sonra ortaya bu eksiklerin giderildigi yeni bir dil/platform cikar. Makina dili, sonra C , Cobol, Pascal, sonra Delphi , C++ sonra java , C# gibi. Platformlarda ayni sekilde. Butun dillerin bulustugu butun isletim sistemlerinde sorunsuz bir sekilde calisabilen bir platform olmasi gerekir. Bunun saglanabilmesi icin de butun herkesin ortak bir cati altinda birlesmesi gerekir. Microsoft , Sun, Ibm, Borland, Oracle gibi buyuklu kucuklu butun firmalarin bir araya gelip ayni cati altinda bir platform yapmalariyla olur. Java nin ve .Net in bir adim otesi. Her hangi bir platformda her hangi bir dil ile gelistirme yapabilecegimiz bir ortam. Akademik ve ticari cevrelerin tam destek verdigi bir yapi. Acik ve ortak standartlar , resmi destekler , her hangi bir sirkete bagimli olmama, bol kaynak az soru isareti.
Boyle bir platform olusturulabilir mi ?
Aslinda java ve .net teknik olarak bu hedefe cok yakinlardir fakat “birlikten kuvvet dogar” sozune su an icin iki tarafta pek itimat etmemektedirler. Her ikiside kendi teknolojisini bize zorla kabul ettirme havasinda birbirleriyle rekabet edip durmaktadirlar. Bizide tenis topu niyetine bir o yana bir bu yana savurup durmaktalar.
Boyle bir platform kacinilmaz sekilde yakin bir gelecekte vucut bulacaktir bundan eminim ama nerde nasil ve ne zaman sorularinin cevabini simdilik bilemiyorum. Cevabini bildigim iki soru var. Ne ve nicin.
Cozume en yakin olan taraf simdilik .Net gibi duruyor. .Net in Java dan farkli olan bir tarafi .neti bu yonde bir adim one geciriyor. Cunku .net her hangi bir dile bagimli degil. .Net destegi olan her hangi bir dil ile gelistirme yapabiliyorsunuz. Geriye iki madde kaliyor. .netin microsoftun tekelinden cikmasi ve diger isletim sistemlerini resmi olarak desteklemesi. Java tarafinda ise butun isletim sistemlerini desteklemesi, javanin bir sirketin tekelinde olmamasi gibi sorunlar asilmisken tek dile olan bagimlilik bence javanin boyle bir platforma alternatif olmasini daha dusuk kiliyor. “Alti ustu bir dil, 2-3 ay disimizi sikip java dilini ogrensek daha iyi olmaz mi butun sartlar yerine gelmis olur o zaman.” diyebilirsiniz. Bir noktada haklilik payiniz var ama ben dahil bir cok insan hali hazirda kullandigi dili birakip yeni bir dil ogrenme heveslisi olmayabilirler. Bu yazilmis bir cok projenin cope atilip yeniden yazilmasi manasina gelir. Sonuc itibariyle iki platformda gelistiricileri tam olarak cezbedemiyor. Bu tur imkanlari saglayan ilk platform yazilim aleminde rakipsiz bir numaraya oturacaktir. Sun firmasinin bu yonde gizliden gizliye bir calismasinin olmadigini ya da micosoftun kilitli kasalarinin icinde .net in linux ve macintosh ile uyumlu versiyonlarinin bulunmadigini kim soyleyebilir ?
Su an icin eli en kuvvetli olan microsoft o nedenle koseye sikismadiktan sonra boyle bir adim atacagina ihtimal vermiyorum oyle ki mikrosoft rakip olarak gordugu herseyi ya satin almak istiyor ya da benzer teknolojiyi kendisi uretmeye calisiyor. bkz: silverlight. Acikcasi ben bu hamleyi Sun dan bekliyorum. Sun in .net e cevabi cok surpriz olacaktir. Her turlu dili destekleyen platform bagimsiz guclu ozellikleri olan arkasinda yuzlerce buyuk yazilim sirketlerinin oldugu bir platform. Ustelik java dahil bircok dili desteklediginden eski kodlarin cope atilma olasiligi ve yeni bir dil ogrenme derdi olmayacagindan yayilmasi cok kolay olacaktir. Diger bir alternatif hali hazirda varolan Mono projesinin daha cok destek gorup microsoftu sollamasi. yeni siniflar yeni ozellikler eklenmesi ile insanlarin buyuk bir cogunlukla mono kullanmaya baslamasi. Bu da ayri bir ihtimal. En carpici ve en dusuk ihtimal ise bu sirketler disinda bir sirketin boyle bir ise girisip basarili olmasi.
Google mi dediniz ?
Sabah ola hayrola !
*Captive Hand - Adolya
** Dil ve tekniklere cok deginemedik cunku yazi cok uzun oldu. Baska bir yazida deginiriz ya da daha guzeli dil ve teknikte nasil yenilikler olabilecegine dair yorumlarinizi sizler yazabilirsiniz.

Entries (RSS)
August 31st, 2007 at 08:53:54
Gelecek tahminleri şöyle bir test var
Test :
1. Pazar günü insan kaynakları eki veren gazetelerden 2-3 adet alınır.
2. Programlama ile ilgili olan içinde (asp,php,jsp,asp.net vs.) geçen ilanlar işaretlenir.
3. Her dilin/platformun ilanlar içinde geçişinde o dile/platforma 1 puan veriniz.
4. En çok puan alan dil/platform hangisi ise geleceği parlaktır !
testi yapması sizden