Samantha Kleinberg: İlk olarak 5. sınıfta başlamıştım ama lise yıllarıma kadar ciddi bir programlama deneyimim olmamıştı. Mount Sinai'nin Biyomatematik departmanında staj yaptığımda herkes çok sabırlı ve destekleyici idi ancak o zaman henüz yeterli deneyime sahip değildim. Favori hatıram bir sistem yöneticisine yaptığım bir metin dosyasını nasıl ASCIIye dönüştüreceğimi sorduğum zamandır. Ancak sonra Unix in a Nutshell'i sayfa sayfa okudum, ardından Perl ve MySQL çalıştım. Fizik ve bilgisayar bilimleri alanında eğitimimi tamamladıktan sonra tekrar biyoinformatik alanına döndüm. Programlama becerilerimi, matematik, fizik ve biyoloji bilgimi insanların üzerinde açık ve net bir etkisi olacak işler kullanmaktan gerçekten hoşlanıyorum.
ES: Google'ın 2005'teki "Summer of Code" etkinliğine nasıl katıldın? Motivasyonun neydi?
SK: Benim projem Google tarafından desteklenenler arasında idi. Google ile çok yoğun bir etkileşimim olmadı, tabii insanların yazıştıkları çok aktif bir Google Group vardı. Hocamın tavsiyesi üzerine başvurmuştum ve bu etkinliğin projeyi zamanında bitirmek için itici güç sağlamanın yanısıra bana bir miktar para kazandıracağını da düşünmüştüm.
ES: Neden CL-GODB projesi? Neden Common Lisp? Sana yol gösteren kimlerdi ve ne tür bir proje yönetimi söz konusu idi?
SK: Proje konusunda beni yönlendiren Marco Antoniotti oldu, kendisi CL-GODB'nin faydalı bir araç olacağına ve Common Lisp öğrenmek için de iyi bir fırsat teşkil ettiğine inanıyordu. Common Lisp programlama dilini kullandım çünkü CL-GODB'nin entegre olacağı sistem olan GOALIE de Common Lisp ile geliştirilmiş durumda. Buna ek olarak bu proje bağlamında beni yöneten ana organizasyon da LispNYC idi. Yoğun olarak Marco ile çalıştım, bana yol gösterdi ve yazdığım kodun daha etkin olması konusunda yardımcı oldu. Elimden geldiğince kendim yaptım ama takıldığım teknik noktalarda Marco yardımını esirgemedi.
ES: Daha önce hiç Common Lisp kullanmış mıydın? İlk izlenimlerin nelerdi?
SK: Daha önce hiç Common Lisp ile kodlamamıştım. Alışık olduğum dil C programlama diliydi. Lisp ile ilgili ilk izlenimlerin bir sürü parantez olduğu ve bunları nereye yerleştireceğimi hatırlamanın zor geldiği idi.
ES: CL-GODB'nin tamamlanması ne kadar sürdü? Başladığında ne kadar Lisp biliyordun?
SK: Yaklaşık 2 ay sürdü ve ilk Lisp projemdi.
ES: Çalışma ortamın nasıldı? Hangi platformları, araç setlerini tercih ettin?
SK: Kullandığım geliştirme ortamı LispWorks Enterprise Edition on Windows XP idi. Hem Windows hem de Unix üzerinde çalışan veritabanlarını ele aldık ve fonksiyonlar her iki platformda da çalışmaktadır. Grafik arayüz uygulamasına gelince o daha ziyade Windows ortamı hedeflenerek geliştirildi. Normalde C kodlarken ConTEXT metin düzenleyicisini ve gcc derleyicisini kullanırım bu yüzden LispWorks ortamına alışmam biraz zaman aldı. Bir kez alıştıktan sonra sunduğu özellikleri çok beğendim ve daha başka pek çok faydalı özelliğini keşfettim.
ES: Programlarken temel bilgi ve başvuru kaynakların nelerdi (kitaplar, forumlar, Usenet, hocaların)?
SK: "Practical Common Lisp" kitabı ile başladım. Sonra genellikle LispWorks dokümantasyonu ve hocamın yardımlarından faydalandım.
ES: DDJ'deki tanıtım yazınızda görsel bir arayüz olan CL-GODB Viewer'dan da bahsediyorsun. Bu da Common Lisp ile mi gerçekleştirildi?
SK: Evet, tüm proje Common Lisp ile tamamlandı. Aslında Common Lisp ile bu tür bir uygulama geliştirmenin ne kadar kolay olduğunu görünce epey şaşırdım. Vakti zamanında bir ders için C ve Assembly kullanıp bir oyun geliştirmişim ve bu tür bir şeyle onun haricinde uğraşmamıştım. Benim açımdan bu grafik arayüzü geliştirmek projenin en heyecanlı aşamalarından biri idi çünkü bunu Lisp ile yapmanın zor olduğunu düşünmüştüm. Kavramdan uygulamaya, uygulamadan dokümantasyona kadar tüm süreç gerçekten heyecan vericiydi.
ES: Common Lisp gelecekteki programlama faalyetlerin için aday diller arasında mı? Diğer dillerle kıyaslayabilir misin? Sence Common Lisp sadece yapay zeka ve bilimsel uygulamalar için geliştirilmiş akademik bir dil mi yoksa başka alanlarda da kullanılabilir mi?
SK: Projeyi bitirdikten sonra Common Lisp ile başka yazılımlar geliştirmeye devam ettim ve gerçekten de bu dili sevdim. Benim açımdan Java'ya kıyasla çok daha kolay ve doğal. Tabii ki dikkat edilmesi gereken noktalar var ama belli türlere takılmamak ve pointer aritmetiği ile boğuşmamak güzel. Gerçekten öğrenmeye değer bir dil olduğunu düşünüyorum, sırf başka dillere dair bir perspektif kazanmak ve kodlama tarzınızı geliştirmek için olsa bile. Bir yapay zeki dersi aldım ve ilk iki projemi yaptıktan sonra üçüncüsünü Lisp ile yaptım, çok güzel bir hediye gibiydi. Elbette yapay zeka türü işler için çok uygun ama şu anda Common Lisp'i veritabanı, matematik, vb. farklı alanlarda da kullanıyorum. Başka şeylerle kıyaslamam zor ama mesela grafik arayüz oluşturmanın çok kolay olduğunu gördüm ve hatta çevremdeki bazı arkadaşlarımı da projelerinde Lisp kullanmaları için ikna ettim.
ES: Programlama ve Lisp ile ilgilenen okuyuculara söylemek istediğin son bir şey var mı?
SK: Eğer kullanmadıysanız ama kullanmayı düşünüyorsanız vakit kaybetmeyin ve Lisp'e bir şans tanıyın. Alışmak biraz zaman alabilir ve belki herhangi bir şey için kullanmazsınız ama buna rağmen öğrenmeye değer bir dil kesinlikle.
ES: Cevaplar için çok teşekküler. İyi "hacking" deneyimleri dilerim... :)
Not: Özgün hali burada, Türkçe özgün adresi ise burası.
Fakat Samantha J. Kleinberg hanımın common lisp hakkındaki ilk düşünceleri ve o düşüncelerle yapabildiği olay çok ilginç geldi bana. ilk projesi ile google " Summer of Code " olayına girdiyse bizim ciddi olarak bazı şeyleri sorgulamamız lazım. biz şimdi tembel miyiz neyiz? kendimizi neden bu insanlar gibi geliştiremiyoruz yauw
röportaj, amatör comon lisp ciler için ilham kaynağı olacaktır bence...