Samantha Kleinberg ile CL-GODB, Common Lisp ve Biyoinformatik Üstüne

0
FZ
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...
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ı.

Görüşler

0
Tarık
güzel yazı ...

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...

0
bm
biz şimdi tembel miyiz neyiz? kendimizi neden bu insanlar gibi geliştiremiyoruz yauw

Yavas yavas olacak. Tembel filan degiliz, biraz imkan biraz tarz biraz Ingilizce bilmemekten veya utangacliktan ice kapanma vs. Hepsi gecer. Bir de bu insanlarin sivrilenlerinin o imkanlara sahip kac kisi arasindan ciktigini hesaba katmak lazim. OSS her zaman boyle insan secmiyor, secilmeyen insanlarin ise ister ve azmederlerse bu bilgiye ulasma imkanlari bile cok yeni memlekette. Herneyse, ben ilan ettim bunu burada ama soran olmadi: http://www.fazlamesai.org/forum/viewtopic.php?t=1467

Baska bir proje de deneyelim dedik onu da soran olmadi: http://cs.bilgi.edu.tr/pipermail/cs-lisp/2005-October/000273.html

Simdi sizce bes sene sonra bunlari soylemek bana dusecek mi? Elbette dusmeyecek, canavar gibi gencler hic benim 'soyledim size' dememe hacet kalmadan bu isleri yapacaklar. Biraz zaman lazim.

0
ttk
Merhaba

Öncelikle söyleşi oldukça faydalı yapanların, emeği geçenlerin eline sağlık.
Dediğiniz gibi ingilizceyi yeterli bilmemek büyük bir handikap. İngilizcem yeterli olsa bahsi geçen kitabı yalayıp yutmuştum büyük ihtimalle. Asli olarak başka işlerle uğraşıyor olup kendimizi geliştirmek için zaman ayırmamamız, ayıramamamız da kötü, elimizde ne varsa ne kullanıyorsak onu "en iyisi" bilme gibi bir yaygın, zararlı bir alışkanlık da var.
Bir kaç kere yazdım belki bıktırıcı olacak ama, giriş seviyesinde bir online Lisp kursunun bile o kadar çok faydasını gördüm ki hani bir söz var, anlatılmaz yaşanır.
Bayanın da dediği gibi hiç kullanılmayacak da olsa mutlaka Lisp'i öğrenmek ve anlamak lazım, insanın ufkunu gerçekten genişletiyor.
0
bm
İngilizcem yeterli olsa bahsi geçen kitabı yalayıp yutmuştum büyük ihtimalle.

Comp.lang.lisp'te gozuken ttk iseniz, bence bunu yapabilecek durumdasiniz. Okuyup zorlayarak daha iyi okur hale gelmenin disinda bir yol bilmiyorum ben bu konuda, hoca da tutsaniz yaptiracagi bu size. Iyi okuyabilenler cok okuduklari icin iyi okuyabiliyorlar.

Bir kaç kere yazdım belki bıktırıcı olacak ama, giriş seviyesinde bir online Lisp kursunun bile o kadar çok faydasını gördüm ki hani bir söz var, anlatılmaz yaşanır.

Bu biraz da ogrenme tarzi meselesi. ELM-ART'tan bahsediyorsunuz zannediyorum, ben onu gorudugumde 'sistem iyi fikir ama lisp kursu pek olmamis' demistim mesela.

Bayanın da dediği gibi hiç kullanılmayacak da olsa mutlaka Lisp'i öğrenmek ve anlamak lazım, insanın ufkunu gerçekten genişletiyor.

Bir de ML'e sonra belki Haskell'e filan bakin hoslandiysaniz. Alanimiz dar degil.

0
ttk
Merhaba

Evet Comp.lang.lisp'e bir soru göndermiştim. İngilizcede kelime dağarcığı problemim var daha çok, aşmaya çalışmam lazım. Tavsiye ve bilgi için teşekkür ederim, ismini verdiğiniz diğer dillere de bakacağım, bunların da Lisp sınıfından olduklarını bilmiyordum (duyup da unutmadıysam :)
Daha çok satır sonları noktalı virgülle gelen dillere alışığım, bir ara Haskell'e bakmıştım şöyle bir ama pek bir şey anlayamamıştım.
Neticede gayret va çalışma olmayınca olmuyor.
0
bm
Evet Comp.lang.lisp'e bir soru göndermiştim. İngilizcede kelime dağarcığı problemim var daha çok, aşmaya çalışmam lazım.

Okumaktan baska caresi yok bence onun. Zamanla oturuyor. En azindan ben ezberi cok zayif biri olarak bildigim kadarini oyle ogrenebildim.

ismini verdiğiniz diğer dillere de bakacağım, bunların da Lisp sınıfından olduklarını bilmiyordum (duyup da unutmadıysam :)

Degiller. Siz 'lisp ufkumu gercekten genisletti' dediniz diye baska yonlere dogru ufuk acacak (ve ulasilabilir) diller olduklari icin ml, haskell filan dedim. Buradaki lisp hareketinin benim icin onemli/birincil amaci insanlari lispci yapmak degil. 'Yahu senelerdir bilinmesine/kullanilmasina ragmen bunu bilmiyor idiysem, baska nelerdan habersizim acaba?' demelerini saglamak icin lispin iyi bir arac oldugunu dusunuyorum.

0
ttk
Teşekkür ederim, bahsettiğiniz açıdan en azından ben, FZ ile sizin çok katkılarınız olduğuna şahidim.
0
FZ
Cells gerçekten de enteresan bir proje. cells-gtk gibi GUI geliştirme araçları (ekran görüntülerine bakınız) dışında da kullanım alanları olabilir belki. Öte yandan dokümantasyon konusu biraz problemli görünüyor (her ne kadar cells-gtk projesinin ekran görüntüleri heyecan verici olsa da). Bu durumda gerekli olan şey belki de BSD ve Linux'un ilk çıktığı zamanlardaki gibi bir hareketlenme. Yani öyle cicili bicili dokümantasyon yok diye ağlamak yerine sahip olduğu keskin zeka, çalışma azmi ve deneyim ile kaynak kodun altından girip üstünden çıkacak, onu anlayıp açıklayabilecek ve katkı yapabilecek türden insanların oluşturacağı türden bir hareketlenme. Benim deneyimim, eğer kod içine yorum satırları düzgün bir içerik ile yerleştirildi ise ve söz konusu yapı özel bir alana dair uzmanlık bilgisi gerektirmiyorsa o zaman Lisp kodunu okuyup anlamak birkaç ay düzenli Lisp çalışmış birisi için hiç zor değil. Bir başka avantaj ise kaynak kod el altında olmanın yanısıra herhangi bir değişiklik yapıp uzun derleme seanslarına gerek kalmadan o değişikliğin etkisini anında ekranda görebilmek, adım adım kolayca takip edebilmek.

Bu arada belirtmeden geçemeyeceğim Samantha Kleinberg'e ulaşabilmemde, e-posta filtrelerini geçebilmemde bana en çok yardımcı olmuş olan kişi de yine Cells'in geliştiricisi Kenny Tilton idi ;-)
0
bm
Kenny'nin gurubu cok faydali isler yapiyor. Aksini iddia eden vatan haini ve at gozlukludur suphesiz.

Bu cells'i dokumante etme isi aklima Lisp-NYC ve ozellikle KT'de bir 'ciragin elinden tutma' hali gordugum icin geldi. Bu insanlara artik senin de ulasiyor olman cok iyi, su staj mtaj resmiyet isini bir saglama baglasak da uc bes kisiye faydalari dokunsa diyorum.

Yani öyle cicili bicili dokümantasyon yok diye ağlamak yerine sahip olduğu keskin zeka, çalışma azmi ve deneyim ile kaynak kodun altından girip üstünden çıkacak, onu anlayıp açıklayabilecek ve katkı yapabilecek türden insanların oluşturacağı türden bir hareketlenme.

Cells baglaminda koda bakmaya da gerek yok, yazanlarin yardim edebilecegini dusunmustum. Genel icin insanlarin bu hale gelmelerini kolaylastiracak bir cl-gardeners gurubu var, belki posta listesine bakmak faydali olur.

0
FZ
Gereksiz karamsarlığa mahal yok. Pek çok Türk pek çok şey yapıyor bilgisayar alanında. Öte yandan eğer sizin de elinizde bir PC, bir ADSL bağlantısı ve günden birkaç saat "boş vakit" var ise, düzenli bir çalışma ile 1-2 sene içinde Summer of Code'daki gördüğünüz projelerden çok daha güzelini yaparsınız, pek çok yabancı sitede de sizin projelerinizin ismi geçer. Yeter ki bir işin nasıl ve neden yapılamayacağını tartışanlardan değil de adım adım ilerleyip takıldığı yerde soruşturan, araştıran ve devam eden bir insan olun.
0
Tarık
aslında soruyu bireysel olarak sormadim zaten. türkiyenin ve gençlerinin uğraştığı işlere bakınca, fazlamesai.net gibi oluşumların dışında bilgi paylaşımı adı altında insanların abuk sabuk bilgilerle dolduruluyor olması ve adam gibi projelerin, ar-ge çalışmalaraının çıkmıyor olması beni bu soruyu sormaya itti. tabii benim bilmediğim yerlerde insanlar ciddi işler çıkartıyorda olabilirler oda ayrı bir konu.

yani bir bayan bilgisayar kullanıcısı(operatör, programcı herne ise) kalkıyor daha ilk common lisp deneyiminde bunları yapabilyor. yani bir disiplin ortaya koyup bu başarıya ulaşabilmiş.

bm'ninde dediği gibi kaynakların türkçe olmayışıda bu sorunu ağırlaştırıyor. insanlar olaya odaklanamıyorlar.

tabii bunlar kendi fikirlerim

0
anonim
Güzel ve aydınlatıcı bir roportaj olmuş en azından common lisp ile ilgili bazı önyargılarımı yenmemi sağladı desem yeridir. En önemlisi, ben de common lisp öğrenmeye karar verdim :).
0
FZ
Önyargılarınızın olduğuna üzüldüm, bunları yenip öğrenmeye karar verdiğinize sevindim. Eğer öğrenmeye karar verdi iseniz FM'de Lisp ile ilgili makalelere göz atmanın yanısıra takıldığınız yerleri sormaktan da sakın çekinmeyin. Türkçe Lisp Çalışma Grubu e-posta listesi ya da comp.lang.lisp gibi yerlerde soracağınız teknik soruların çok büyük kısmına gayet düzgün cevap alacaksınız.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

CUSP - development environment for Lisp built on top of the Eclipse platform

eevrim

2007 LKD şenliklerinde Core-Server sunumunda Emacs'ı beğenmeyip (?), "Bunun grafik arabirimi yok mu?" gibi sorularla karşılaşmıştık. Reddit'te gezerken CUSP'a rastladım.

Programming In Lisp With Cusp

Lisp Resource Kit: Canlı Canlı Lisp ;-)

FZ

LispNYC ve ALU tarafından geliştirilmiş olan The Lisp Resource Kit boot edebilen Debian GNU/Linux tabanlı Knoppix kullanılarak hazırlanmış bir Lisp tanıtım, eğitim öğretim CDsi. Her türlü deneyimden insana Common Lisp programlama dilini ve teknolojilerini tanıtmak amacı ile hazırlanmış ve ekran görüntülerine buradan ulaşabileceğiniz bu CDdeki yazılımların birkaçına örnek vermek gerekirse:

Kor Bilişimden Common Lisp Tabanlı JavaScript Üreteci

aycanirican

Web uygulamaları konusunda araştırma ve geliştirme yapan Kor Bilişim, Core Server ile beraber kullanabileceğiniz tamamen yeni ve özgün bir JavaScript üreteci geliştirdi.

reddit.com Lisp'ten Python'a geçti

innaw

Lisp kullanılarak yazılan reddit.com, python ile yeniden kodlandı. Reddit blogundaki kısa açıklamada artık python ile yeni özelliklerin daha kolay ekleneceği belirtilirken, Lispçiler için de bu altyapı değişikliğini açıklayan ayrıntılı bir yazının yakında yayınlanacağı belirtilmiş. Hayırlısı.. :)

C++ içinde Lisp kullanmak

bk

C++ kodlarken "ah şu anda filanca fikrimi Lisp ile ne kadar kolay ifade ederdim" dediğiniz oluyor mu? Bir ortamdan diğerine geçmeye, ayrı ayrı işlemler yapmaya üşenenlerden misiniz?

En az bir evet cevabı verdi iseniz InteLib tam size göre. C++ kodlarken doğrudan Lisp sözdizimine ve semantiğine çok benzer şekilde kod yazmanızı ve doğrudan derlemenizi sağlayan bir kütüphane. Şu anda aktif olarak geliştiriliyor. Ne gerek var ki böyle bir şeye diyenler FAQ belgesini okuyabilirler.