Emre Sevinc: Samantha, bize geçmişin hakkında biraz bilgi verir misin? Bilgisayarları kurcalamaya ne zaman başladın? Bilgisayar bilimlerinin hangi alanlarında nasıl uzmanlaştın?
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ı.
New York Üniversitesi'nden Samantha Kleinberg 2005 yılında Google'ın "Summer of Code" etkinliğine katılmış başarılı yazılımcılardan biri. Kendisi Common Lisp programlama dilini kullanarak CL-GODB projesini geliştirdi. Google ünlülerinden biri oluşu ve Common Lisp kullanmış olması dikkatimizi cezbetti ve her türlü engelip aşıp kendisine detaylı sorularımızı yönelttik. O da bizi kırmadı ve gayet net, konuya dair cevaplar verdi. Yayındayız...