Bjarne Stroustrup’dan Dillerin Evrimi
Her biri bir anda, mühendislik alaninda biranda degisen, çabucak tekrar sekillenen ve ilerleyen bir bölüm oldular. Sanki yazilim gelistiriciliginde C++ programlama diline giris yaptiktan sonra bir ilerleme meydana gelmisti. Bu ilerleyis , C++’tan önceki Simula67 ve Smaltalk’ta gibi nesneye yönelik programlama dillerinin kendi içinde bir gelisim yoktu. Her seye ragmen C++dili C dilinin üzerine insa edildi(gelistirildi) (ve C programlari gibi derlenebilir) soyutlamalari nesneye yönelik düsünüm sayesinde ana görüse yerlestirebilme olanagi sagladi.
C++ ‘in gelisiminde “meta-programciligi”dan güzel örnekler ve yazilim gelistirme ve dizayninda bulunan tüm güzel islemler kullanildi. Bunun nedeni, donanim platformlari arasinda daha tasinabilir olmasi ve daha düsük seviyelerde daha etkili olmasi. C++ etkleyici bir sekilde dünyada, daha hizli olabilme ve daha az donanim geresinimi açisindan bir esas olacak.
C++ dilinin gelistiricisi olan Bjarne Stroustrupile konusurken gerçekten heyecanlandim. Kendi basliklari hakkinda ve programlama dillerinin endüstrisi hakkinda ki görüslerini ögrendim, ayrica kendi kisisel okuma listesini ögrendim. Benim blog’uma okuyucular tarafindan yazilip , tavsiye edilen bir çok soruyu sordum. Sorulariyla katkida bulunan herkese ve tabiî ki Bjarne’ye tesekkür ederim.
Dil Hakkinda Düsündükleri:
Howard Dierking: Neden programlama dilleri insanlarla bu kadar alt seviyede baglaniyorlar? -ki toplulugun dili direniyorken niçin böyle bir alt seviye baglantisi gerekli?
Bjarne Strustrup: Bunu bir bilgisayar bilimciden çok psikologa, sosyologa yada ne bilieyim bir economiste sormalisin. Benim düsüncem eger bir dil biliyorsaniz, kendimizi ve kendi fikirlerimizi açmamiz, açiklamamiz için bizim bir parçamiz haline geliyor. Diger dillerinde taraftari olmak kisisel bir korkuya neden olabiliyor. Bu noktada çözüm daha çok dili daha iyi bilmek gibi görünüyor. Yazilim alaninda tek bir dil bilmekle bu alanda profesyonel olabileceginize inanmiyorum. Bunun ekonomik nedenleri olabilir örnegin bir programlama dilinin sinirlarini zorlamaya baslayabilirsiniz ama bazi pratik becerileri edinemezsiniz. Simdi ben X dilini biliyor ve sadece onun hakkinda onun araçlariyla ilgili bilgim varsa ve ben Y dili hakkinda bir sey bilmiyor ama konusuyorsam eger bu benim geçimimi tehdit eder. Çözüm yine çok dil ve bu dillerin kullanim araçlarini bilmekten geçiyor. Maalesef ki önerilerim bazilari tarafindan sadece belli bir süre kullanilirken, bazilari hesaba bile almadan sadece kendi düsünceleriyle yürüttükleri islerine devam ediyorlar.
HD: Yazilim gelistiriminde IDE nin rolü ne olmalidir? IDE dili nasil desteklemelidir?
BS: Ben öyle çok IDE kullanan biri degilim. Benim dilimi IDE ile destekleyen tüm editörleri tebrik ederim ama ben IDE’ler olmadan çalismak isterim. Eger gerçekten tümsel olarak kullanilabilen bir IDE sahibi olsaydim farkli düsüncelere sahip olabilirdim. –gerçekten bir yazilim parçasi olmus bir önek için sekil 1 e bakin. Benim istegim burada portatif kodlarin rol almasi. C++ ile sistemimdeki kaynak dosyanin içinden kaynak kodlarini anlayabilmegi istiyorum. Ben hali hazirda dönüsüm ve kusak içeren IDE mekanizmalarini sevmiyorum, bu kodlari insanin tüketimine uygulanmis, kaliplastirilmis gibi gösteriyor.

(Bir Dilde IDE Tasarimi)
HD: BU günlerde dillerin(programlama) genel amaçlari hakkinda problem duyuyor yada okuyor musunuz? Eger böyle seyler varsa çözüm nedir peki ?
BS: Daha basit bir söz dizimi daha güzel olabilir, çogu kisinin okunabilirlik hakkinda konustuklari zaman dogruluk derecesi olan bir dokümanin umduklari karmasiklikta ortaya çikmadigi hakkinda etrafta yakindiklarindan süpheleniyorum. Çogu insan herhangi bir dille yazilmis herhangi bir programa ulasmayi ve onu anlamayi bekler, online yardim desteginin sundugu olanaklar dahilinde tabi ki, aslinda tek sorun programin yayinlamasinda ki tüm yapilari anlamak ve programin kendi mantigini kapmaktir. Bizim dogal dillere karsi olan bakisimizi ve onlari kullanisimizi kiyasla. Mesela Shakespear’in siirlerini herhangi bir alt yapin olmadan tam anlamiyla anlayabilirmisin? Yada “Beowulf” ( 8. Yüzyila ait epik bir siir türü) eski orijinal Ingilizcede nasildi? Beklide biz programlama dillerinden çok sey bekliyoruz. Hiçbir dil tüm alanlarda, tüm gereksinimleri karsilayabilecek kadar sorunsuz ve bir hayli gereksiz karmasikligi olmayan bir sistem degildir ama uygulamalari gelistirebilmek amaciyla temelleri bulundururlar. Her dilin özelligi o dilin tanimladigi bir sisteme hitap eder ama biz simdiki zamanimizda bu karmasikligin bedeli olarak bir çok dili ve onlarin getirdigi bir çok yapiyi ögrenmek zorundayiz.
HD: Genel amaçli programlama dilleri, uygulama gelistirimi sirasinda bilesen programlama yada hizmet programlamasi, nasil olmalidir?
BS: Genel programlama dilleri, genel yada uygulamaya özel kütüphanelerin tarifinin tasarimini desteklemeli, araç tasarimini desteklemeli, farkli uygulamalarla kontak kurabilmeyi desteklemelidir. Bunun için bir dil esneklige, anlamli bir sisteme, güzel ve temel bir performansa ve uzun gelecekte karaliliga ihtiyaci vardir.
HD: Çoklu dispatch sizce iyi bir seymi?
BS: Evet, basmakalip nesneye yönelimli programlama dilleri ( Simula, C++,Smalltalk,Java,C# gibi) basit islemleri hassa bir sekilde tanimlayamiyorlar. Çoklu olanlarin ise arakesiti bulmalarinin iki sekli var, bunlarin mecburiyet çesitleri çalisma zamanina kadar bilinemiyor. Böyle bir kodlamanin sonucu umdugumuz gibi bir yürütebilirlik vermiyor. Geçen sene ögrencilerimle birlikte bu konu üzerine arastirdigimiz makaleyi yayinladik, sonuç olarak içinde bulunulan durumu yada olayi daha az hafizayla, daha kisa zamanda, daha basit ve daha hizli bir çalismayla halledebildigimizi gördük. Bu konuyu asagida ki sekilde (sekil 2) görebilirsiniz. Bu çalisma C++ için çok geç geldi diye düsünüldü. Ayrica isterseniz makaleyi color=#0000cc http://research.att.com/~bs/multimethods.pdf adresinden bulabilirsiniz.

(Sekil 2)
HD: C++ ‘in esdegerliligi hakkindaki düsünceleriniz neler? Gelecekte son çikan biçimleri ekleyerek dilin versiyonunu yenileyecek misiniz?
BS: Aslinda hayir, bu alanda C++ ne yapmasi gerekiyorsa yapiyor. Hiçbir <elma> vektörünün, bir <meyve> vektörüne dönüsmesini gibi bir örnek düsünebiliyor musunuz? Bu korkunç bir sekilde güvenliksiz olurdu ancak <meyve> vektörü sabittir (ya da siz onun<meyve> yerine bir <portakal> ekleyebilirsiniz). Çalisma süresi gerçekten bir sorun teskil eder seviyeye gelinceye kadar böyle bir sey yapmayi düsünmüyorum.
HD: Bir anahtar dil özelligi ile ilgili mesaj geçimi yapimi hakkinda ki düsüncelerin neler? Bir metod lüzumuna karsi çikan özellikler?
BS: Net olan mesaj geçimlerini seviyorum ama onlari çok uzun zaman önce kullandim ve ayrik sistemlerin içeriginde yer aliyorlar. Gerçekçi olursak, büyük ölçekli islerde mesaj geçimi için çok ciddi bir çalisma ve araç destegi saglamamiz gerekiyor. Bunun tam anlamiyla tamamlandigini sanmiyorum, tabi yaniliyor da olabilirim. Çogu hata paylasim ve kilitleyip devam etmeyle bagdasiyor eger ki gerçekten mesajlar ve mesaj kuyruklari üstünde çalisiyorsaniz. Bunun için C++ ta standart kütüphaneleri görmeyi seviyorum.
HD: Genel amaçli dillerde içsel olarak es uyumlu bir yerde herhangi bir çakisma duyuyor musunuz? Yani sizi takip edenler tarafindan herhangi bir hata bildirisi aliyor musunuz?
BS: Simdi eger küçük bir kitleye hitap ediyor olsaniz onlari takip edebielir ve nasil bir hata yaptiginizi göz önüne alarak daha güzel seyler ortaya çikarabilirsiniz (örnegin onlara su teorik bilgiyi ögrenin diyebilirsiniz.) ama genel amaçli dillerde böyle bir islem yapmaniz çok zor zaten. Genel amaçli bir dilin bir parçasi olmak bazen çok vahsice gelebilir düsünsenize yaziginiz dökümanlar milyonlar tarafindan okunuyor, uygulaniyor vs. . C++ özel bir dil degil fakat hassas iste bu konudaki düsüncelerim bunlar.
HD: Mimarideki anlami çok mu öne çikardik?
BS: Hayir, en azindan benim tanimladigim manasiyla. Ters sekilde anlasilan çok az bir ön plana çikarma var, yapilarin prensiplerini çok az anlayip kodlama çok zayifça bir is çikarir. Benim mimari hakkinda süphelendigim ana konu su : programcilarin iyi kod kodlama ile ilgili belirsiz düsüncelerinin olmasi. Ne yapmaniz gerektigi hakkinda yada yapmamaniz gerektigi hakkinda yeterli bilginiz yok bu yüzden bizim iyi mimari edilmis siki kurallara ihtiyacimiz var.
HD: Açik kaynakli kod birligi size yardim etti mi? Size zarar verdi mi? Yada dizayn da her hangi bir kalite degisikligi yapmadi mi?
BS: Bu gerçekten zor bir soru. Çogu yerde yardimlarini gördüm(insanlara sunacagimiz kodlarin profesyonellik derecesinde kalitesini ayarlarken), tabi bana zarar verdikleri yerlerde oldu (gerçekten kötü bir sekilde düsündükleri aliskanliklari ve vaziyetleri) ve daha söyleyemeyecegim bir çok durum var.Uzun zamanda toplulugun etkisi ne olur tahmin edemem, topluluk daha iyi mi destek verir yoksa daha az mi bunu bilemem çünkü topluluk tahmin edebilecegimden daha kalabalik.
Dil Egitimleri:
HD: Yakin gelecekte Dinamik Dillere aday olacak bir sey görebiliyor musunuz?
BS: Aslinda hayir, insanlar elma ile armut u çok sik kiyasliyorlar. Genel olarak Statik ve Dinamik diller arasinda bir seçimimizin olduguna inanmiyorum. Fillerin bu iki kalipla biçimlenebilecegine inanmiyorum : çogu eger dinamik degilse, statik olarak sinirlandiriliyor. Bir moda var tabiî ki ama bu konu yani bu moda hakkinda bir tahminim yok çogu gerçek-dünya dillerinin seçimi yönlü olarak bir uygulamanin ihtiyacini karsilayacak, gelistiricinin becerisine yönelik olarak tasarlaniyor. Örnegin ben hiçbir zaman bir RUBY ‘ yi java ile gerçeklestirmedim yada gerçek bir interaktif simülasyonu C++ gibi bir dille yapmadim.
HD: En sonunda void/variant/object ve benzerlerinin tamamen kaldirilmasi sizce iyi bir sey mi? (asagida ki kodlama örnegi bunun için iyi bir örnek)
STDMETHODIMP
CoCalc::QueryInterface(REFIID riid, void** ppv)
{
if (riid == IID_IFirst || riid == IID_IUnknown)
*ppv = static_cast<IFirst*>(this);
else if (riid == IID_ISecond)
*ppv = static_cast<ISecond>(this);
else
{
*ppv = 0;
return E_NOINTERFACE;
}
AddRef();
return S_OK;
}
BS: Tahmin ediyorum ki prensip olarak kapsamli(genis) seylerden kurtulmak iyi bir durum ama reel olarak biz kendi tanimlamak istedigimiz seyleri tam manasiyla siniflandirarak daha özel olabilir ve basarabiliriz. Örnegin ben hiçbir zaman her obje için bir seyler yapabilen bir fonksiyon görmedim; ne üzerinde oynama yapiyorsaniz sürekli bir varsayim yapiyorsunuzdur. (saf bir ilerleme fonksiyonu, sayaç örnegi için en yakin düsünebilecegim seydir). C++ dünyasinda ki su anki konsept çalismasi (genetik algoritmalarda ki baskilar/gereksinimler) bu konuda bir yardimi olacaktir ama kendimizi genel mekanizmalar olmaksizin böyle bir açiklamayi yapabilecek derecede görmüyorum; “bilmek istemedigim bir sey” gibi beklenmedik bir yaklasim olabilir.
HD: Gevsek yazilmis dillerin arkada kalmasi gibi bir egilim var. Acaba tekrar Macar Rotasyonu üzerine mi düsünmeliyiz?
BS: Öyle bir egilim oldugunu sanmiyorum. Gittikçe kaybolan dillere uygun düsen görevler artmakta. Diger yandan bu tür diller hala gelisiyor olabilir (ben böyle düsünüyorum) çünkü geride kalmis kaybolan dillerin kullanimi arttikça gelisimi de paralel olarak artmakta. Ayrica kesinlikle Macar Rotasyonunu kullanmayiniz, bu çok kötü bir düsüncedir. Yazdiginiz programin kaynak kodu programinin simüle yazimini degil anlamini yansitmalidir. Eger gerçekten Macar Rotasyonuna ihtiyaç duyuyorsaniz emin olun ki uygulamaniz için uygun olmayan bir dil kullaniyorsunuz demektir.
HD: 2000 yilinda “ C++,yeni milenyum için yeni bir dil” isminde bir sunum yaptiniz ve “Wrap<T>” konseptine degindiniz. Bu basit olarak söyleyecek olursak “ aspect- oritnted programming(AOP)” tir. Genel olarak soracak olursak “AOP” ve onun sablonu olan “Wrap<T>” hakkinda ne düsünüyornusuz?
BS: “AOP” hakkinda tam bir cevap verebilmek için çok fazla zaman harcamadim aslinda. Aslinda olusumlari seviyorum ( özellikle yayilimci olmayanlarini) . Ben esasen ekstra-dil ile alakali olan araçlari ve onlarin standartlasmamis araç zincirini merak ediyorum. C++ örnek sablonlari yayimlicilik göstermeyen, ilgi çeken ve basarili olusumlardir –Örnekler için Standford Üniversitesi Kütüphanesi ne bakin, gömülü sistem programlamasi bölümüne. Bunun, kati bir sekil almaya ve hiyerarsik sekilde ön dizayna gerek kalmadan ve zorlanmaksizin olmasi kombine bir fikir için gerçekten de güçlü bir sekil. Fakat bu durum bazi gelistiriciler için yönetimi zorlarlastirir ve kavramsal olarak agirlastirir. C++0x biçimsellik veya performans olmaksizin bir sürü örnek sablon içerir.
HD: C++’in kesin söz malum karakteristiginde istenmeden yapilanan, kötü amaçli ve önemli potansiyelleri var ( örnegin makrolar ). Bu yapilari yani belirsizlikleri C++’ta yada genel anlamli modern dillerde nasil gömeliyiz?
BS: Aslinda makrolarin kötü amaçli oldugunu “C” dilini kullanmaya basladigimda gördüm ama diger bu isi yapan tüm insanlar gibi bunlarin kötü amaçli olusunu veya olumsuz yönlerini tam olarak tahmin edemedim. Iste C++ in neden 10 yil gibi bir sürede mükemmel derecede gelistiremedigimizin nedenidir yani “C” dilinde ki makrolarin her yana yayilmasindan dolayi. C++ ta objeleri sifirlanin bir çok yaniltici yöntemi var. Umarim C++0x te adreslerin tek sekilli mekanizmalri olur. Diger soruda örnek sablonlardan bahsetmistim. Iste sonraki C++ in (1985 te yayinlanan) basarisinin temel nedeni budur. Uyumluluk sorunlari nedeniyle C++ ta adreslenemeyen irili ufakli hatalar kesfedildi. Örnegin söz diziminin sahipliligi gereksiz bir yanlislikti, sadece lineer bir gösterim daha iyi olabilirdi. Benzer biçimde bir çok varsayim yanlisti; yapilar öntanimli olarak geri dönüsümlü olmamaliydi. Isimler öntanimli olarak baska kaynak kodlardan erisilebilir olmamaliydi ve dahasi… Bagdatiricilarin kontrol edilememesi sabit bir problem olmamistir; özel olarak uygulayicilar birbirine zit sekillerde sunulmasi memnuniyet saglamistir. Tüm bunlara ragmen olumlu süprizlerde oldu.. En güzel olani ise çöp toplama isleminin kaynak yönetime olanak saglayabilmesi ve hata yönetimini kontrol edebilmesidir. Tüm bunlardan sonra çöp toplama fikrinin güzel bir olay oldugunu biliyorum.
HD: Sitenizde ki bir söyleminizde: “Dilin içindeki özelliklerinden çok yaptiginiz uygulamanin zerafetine dikkat etmelisiniz” demistiniz. Bu söylem Alansal Özellestirilmis Diller’e (DLS=Domain Specific Languages) yönelik bir hareket mi oluyor?
BS: Evet, asagi yukari kesinlikle. Bu alana siklikla bir girisim, tesebbüs olmustur. Bazen yapmak gerek.
HD: Genel olarak DLS hakkinda ki düsünceleriniz neler? DLS ve genel amaçli diller arasinda ki iliski hakkinda kafanizda ne canlandiriyorsunuz?
BS: Kaç dilin gelistirilmeye baslandigini, gelistirildigini ve çok abartili bir sekilde sunuldugunu ve sonradan beklenmedik bir sekilde anlamini yitirip kayboldugunu gerçekten merak ediyorum. Bir çok yil gelisim için ugrasilir tüm bunlar boyunca çok emek harcanir ama birden fark edilir ki geri dönüsü olmayan bir kaybolma yoluna girilmistir. Bu konu hakkinda “Anlamsal Gelistirilmis Kütüphane Dillerine Mantiksal Bir Bakis” adli bir makale yazmistim ( color=#0000cc http://research.att.com/~bs/SELLrationale.pdf ). Kütüphanelerin kullanilmasini, olasilikla desteklenen araçlar ve genel destekli diller hakkinda elestiride bulunmustum.
Bence DLS basvurulacak son nokta olmali, ilk degil. Eger mümkünsel genel amaçli dillere ve onlarin araç zincirlerine saglam bir sekilde tutturulmalidir. DLS bir genel amaçli programlama diline ihtiyaç duyar( en azindan bir sistem programlama dili ) dili ve dilin genel çalisma zamanini tanimlamak için. Eger DLS genel amaçli bir dilde saglam ve bilinçli olarak eslestirilirse, yeni özellikler kazandirmak ve yeni kütüphaneler eklemek için çok güzel olur. Açikçasi bir profesyonel bir çok dilde usta olmalidir
HD: C++ dilinde bir çok yapinin bilinçli olarak belirsiz yapinin degerin farkli donanimlarda çesitli degerler aldigini ifade ettiniz . Bu belirsiz yapilarin isbiliginden bir ilerleme gördünüz mü?
BS: “ Belirsizlik” yanlis kelime. Tanimlanmamis bir çok seyden ve tamamlamaktan uzak bir ifade. Ben sundan süphe ediyorum; eger tekrar C++’i karama isinden baslayarak tekrar dizayn etsem hiçbir tanimlanmamis veya tamamlanmamis kismi kalmazdi fakat bir zaman makinem yok ayrica milyonlarca kodlanmis satir arasindan iyi olmayanlarini toplayip tekrar degerlendirebilecek durumum yok.
Yöntembilimi ve En Iyi Egzersiz:
HD: Bu dili örenmek isteyenlere ne gibi süreçler tavsiye edersiniz?
BS: Anahtar uygulama konseptini tespit edin, yararli kütüphaneleri tespit edin, uygulama konseptine uygun olacak kütüphaneler olusturun, fikirleri hemen deneyin, hemen tümlestirin, erkenden ve sik sik test edin, egitimsel dökümanlar kullanin ve küçük programlardan çok büyük çapli programlar gelistirin (gerçi bu çok uzun zaman alabilir). Açik olmak gerekirse ben su an için küçük çapli projelere odaklanmis durumdayim.
HD: Hiç programlama dilleri veya gelistirme metoduyla ilgili bir kesisim yada ortaklik görüyor musunuz?
BS: Tabiki, kütüphane gelistiriminde özellikle. Gittikçe yüksek seviyeli ihtiyaçlar doguyor ve bunun sonucu olarak kütüphane dizayni kaçinilmaz bir sekilde dildeki yerini aliyor. Bu noktayi her ne kadar böyle söylesemde abartmamam gerekli çünkü tüm dillerde bu islem için tek bir yol izlenilebilir diyemem mesela COBOL, C, JAVA, C++ ve PYTHON için her dilden minimum destekle kazanç ummak gerekir.
HD: Bir yazilim gelistirirken sizin kisisel kurallariniz nelerdir?
BS: Ana konsepte odaklanmak, ara yüzlere odaklanmak, kaynak yönetimine odaklanmak ( hafiza, dosyalar, kilit ve digerleri… ), hata yönetimine odaklanmak, siniflar için degismezlikler ve kaynak edinim siniflanmasi (Resource Acquisiton Is Inialization = RAII ), iste bunlar anahtar teknikler.
HD: Atik oldugunuza dair bir çok söylenti var. Sizin için ”atiklik” ne ifade ediyor? C++ atikligi destekliyor mu?
BS: Ben böyle bir kelime kullanmadim. Bu çok muallak bir sey. Evet C++ bunu destekler, o ne demekse…
Gelecege Bakis:
HD: Nasil olurda bir dil ileri derecede özelliklerini örnegin örnek sablonlarini, dinamik olaylarini, kendi kendine kod yazimini(tamamlamayi), ayni zamanda yeni girisler için oldugu gibi kalan erisilebilirligini kendi kendine gelistirebilir?
BS: Bilmiyorum. Bunun genel bir cevabinin oldugunu düsünmüyorum. Yeni özellikler dilin içeriginin daha kullanisli yardimi için önemlidir fakat istikrar temeldir; C veya C++’i zorlamaya devam eden tek bir sebep girilen yeni degerin eskiye döndürülmesine neden olur. Bu kolay degil, en azindan bunu söylemek ve yeni bir giris her zaman basarili olamayabiliyor. Çogu zaman kullanicilar tarafindan yoksayildigini duyuyoruz. Bazi ana özellikler C++0x için tasarlanmisti örnegin tekdüze yükleme, otomatik kelime tamamlama ve örnek sablon kontrolü gibi islemler daha iyi hizmet verebilmesi açisindan eksper kullanicilara sunulmustu.
HD: “ÜSTVERI(MetaData)” yi gelecekte ki programlama dilleri için önemli bir özellik olarak görüyor musunuz?
BS: Hayir, ben kisisel olarak üstveri’nin saçma sapan kullanilisini rahatsiz edici buluyorum.
HD: Ileride CPU’larin çekirdek sayisinin artmasiyla birlikte uyumluluk için temel bir degisim görüyor musunuz? C++0x teki adreslemeye ne kadar uyumluluk saglanabilir ?
BS: C++0x size temel olani sunar. Bir makine modeli çok kullanimlilik için uygun olabilir. Düsük seviyede kuyruga bagli olanlar kütüphane olusturumu için bir is parçacigidir ve API kütüphanesini kilitler. Daha fazlasini görmek isterim özellikle daha basitini. Yüksek seviyeli olanlari is havuzlari, örnekler ve mesaj kurulari baz alinarak uyumluluk saglattirilir. Bizim ihtiyacimiz olan otomatik yada otomatige yakin , bir hesaplamayi diger islemlerden ayirip yerini belirleyen yollar bulmamiz. Bu alanda bir çok çalima var özellikle C++ ta ama halen baskin bir model olusmus durumda degil. Örnegin Texas A&M üniversitesinin STAPL içeren çalismasi ve INTEL in çalismasi olan TBB.
HD: GPGPU hakkinda ne düsünüyorsunuz? (GPGPU=bakiniz color=#0000cc http://tr.wikipedia.org/wiki/GPGPU )
HS: Ümit verici ama henüz bu konuda konusabilecek bir deneyimim olmadi ama açikçasi bunu kullanabilmek için bir özel amaçli yetenege sahip olan bir islemciye sahip olmak gerekir.
HD: Yüksek performansli islem yapmanin çabucak bir sekilde programcilar için sefaflasacagini öngörüyor musunuz? Dahasi bu amaç bir programlama dili için mi? Bir kütüphane için mi? Yoksa bir framework(yapi) için mi olacak?
HS: Sadece bir yere kadar seffaflik. Uyumlulugun olabilecegini yada tamamen seffafligin olabilecegini düsünmüyorum. Baslangiçtakiler için hata yönetimi islemcilerin kullanilabilirligine bagli olarak çok degisik olabilir, paylasilmis(yada paylasilmamis) hafiza, ayrilmislik(yada ayrilmamislik) ve gecikme süresi. Öngördügüm kadariyla seffaflik yeni bir dil için, yeni dil özellikleri için ve (benim favorim) yeni kütüphaneler için yerini alacak bir amaç. Son bahsettigimiz mümkün eger ki altinda yatan dil temel ihtiyaçlara bir makine modeli olarak cevap verebilir ve çok düsük seviyede kurala bagli olmaksizin sabitlenebilirse. C++0x bunu yapacak.
HD: C++0x’in dizayni nasil? Ne zaman bitiyor?
BS: En sonunda finale yaklastik. En azindan umarim, oylama bitene kadar hiçbir sey söyleyemem ve adaylar sonlanana kadar her set gergin ve duygusal olabilir. Bizim suan ki planimiz oylamayi kazanmak ve Haziran da yeni bir standart duyurusu yapmak. Açikçasi bu bir baslik hakkinda bir kitap yazabilirdim nasil bir standart yapabilirsiniz? Yol gösterim prensiplerinin ne oldugu saniliyordu? Ve kesinlikle bunun içinde ki nedir? Bunu neredeyse yaptim benim HOPL makalemi görün “Gerçek Bir Dünya Için Dil Gelistirimi : C++ 1996-2006” ( color=#0000cc http://research.att.com/~bs/hopl-almost-final.pdf adresinden erisebilirsiniz) ama C++0x ilgili bir sey bulamazsiniz. Eger obur bir cezalandiriciysaniz sitemde ki “WG21” e bakin ve tüm ISO C++ Standartlariyla ilgili makaleleri bulun eger hiç biri sizi ikna etmediyse bu çok çalisma demek. Genisçe kullanilmis bir programlama dilini gelistirmek zordur özellikle de bir çok katmani, bir çok araci , dilleri ve uygulamalari tamamlanmissa. Benim C++ sayfamda ve baska online ders veren sitelerde azda olsa video bulabilirsiniz bu konu hakkinda.
Kitaplar ve Telefonlar:
HD: Son zamanlarda ne okuyorsunuz?
BS: Teknik metaryeller. Hennessy ve Paterson un makine mimarisi üzerine hatirlatici dökümanlarina geri döndüm. Insanlarin iyi kod yazabilmeleri için makaleler ve dökümanlar biriktiriyorum( bu arada bende ögreniyorum tabi ki ). Bazen umdugumdan daha zor makaleler buluyorum öyleki akademik makalelerin çok özel egilimleri oluyor ve akademik olmayan makaleler ispattan yoksun yüksek seylerden bahsediyor(öneriler hos karsilaniyor). Daha sonra bu dökümanlar elbette C++’in standartlastirilmasi saglam bir akim olacak. Knuth serisini tekrar okuyorum ama biri 3.cildi çalmis, sanirim beklemem gerekecek. Heyecan için biraz O’Brain’s Aubrey ve Maturin okuyorum. Bilime olan bakisimi yenilemeye çalisiyorum ve Rodger Command in “Okyanus : Ingiliz Deniz Kuvvetlerinin Tarihi 1645-1815” (bu nedenle O’Brain i ziyaret ettim)
HD: “ Her zaman bilgisayarimi kullanmam telefonumu kullanmam kadar kolay olsa, dilegim gerçeklesti çünkü artik telefonumun nasil kullanildigini anlayamiyorum” demistiniz peki bir SmartPhone’nunuz var mi? Bu bir sekilde faha mi kolay oldu?
BS: Ben iyi bir telefon takipçisi degilim. Yüz yüze görüsmeyi tercih ederim bunu yapamadigim zamanlarda ise kelimeleri yazmayi tercih ederim. En iyi telefon bile güzel bir mailin yerini tutamaz. Ben cebime sigmasi açisindan ince bir telefon kullaniyorum ve özelliklerinin hiç birini de kullanmiyorum. Ses kalitesi ve güvenlik için hemen hemen tüm özelliklerini biraktim. Adaletli olmak gerekirse kullanici ara yüzleri bu gün daha iyiye gidiyor.
Kaynak: color=#0000cc http://msdn.microsoft.com/en-us/magazine/cc500572.aspx
Bu metin color=#0000cc Cyber-Warrior TIM | Haberci Grup tarafindan mub@rek üstadin talebi ile çevrilmistir.