Ünlü Bir Microsoftçunun Lisp Aşkı

0
FZ
Yazdığı kitaplarla Microsoft ortamlarında programlama yapanların yakından tanıdığı ve davet üzerine bir süredir Microsoft'ta çalışan Don Box, son yazılarından birinde "Scheme Is Love" başlığı ile konuya girmiş ve Scheme'e olan aşkını itiraf etmiş.
Her ne kadar bazıları yahu adam en nihayetinde yine C#, .NET ve MS reklamı yapıyor yazının sonunda diye burun kıvırsalar da Don Box'ın bu kısa yazısı ve eğlenceli üslubu okumaya değer.

Kaynak: Lambda the Ultimate - The Programming Languages Weblog

Görüşler

0
FZ
Gelen yorumlar arasında hoşuma gidenlerden biri (Scheme ile Common Lisp arasındaki ayrımı vurgulaması bakımından):

"Why Lisp" depends an awful lot upon to whom you talk. One possible answer is "because some dialects of Lisp get you really close to the most fundamental notions of what computation is," in which case Scheme is an excellent dialect, The Little Schemer is an excellent introduction, and Structure and Interpretation of Computer Programs is an even larger mind-expander.

At the other end of the spectrum, some folks appreciate having a built-in programmable parser, extraordinarily flexible object system, just about every data type you can shake a stick at, and even, if you care to use it, built-in support for formatting numbers as Roman numerals. That would be Common Lisp, and the best introduction to it that I know of is Practical Common Lisp.
0
ttk
Yani şimdi bu ne demek ?
Common Lisp daha işe yarar ama kötüleştirilmiş bir Lisp mi imiş ya da ne imiş ?
İngilizcem pek iyi değildir anlayamadım.
0
ttk
Yazıya bakınca, sonunda sahiden bu adam MS reklamı yapıyor dememek elde değil.
Özellikle SQL'e yaptıklarını kastettiği eklemeler (!) en azından programların veritabanı kısımlarını Standart SQL'den uzaklaştırmaya yönelik adımlar oluyor benim bildiğime göre (gördüklerimden çıkartabildiğim bu.)
Hani web standartlarının içine IE ve sadece ona yönelik web sayfaları ve bileşenleri kullanan dangalakları ortaya çıkartmaları gibi, bir ara Internet'e karşı MSN denemesi yapmaları gibi SQL'lerine bir yapışanın sorgularını kolay kolay başka yere taşınamaz duruma getirecek işler tasarlıyor gibiler.
Yaptıkları çok şerefsizce ayak oyunları ne yazık ki, can çıkar huy çıkmazmış.
0
FZ
Hemen her büyük veritabanı kendine özgü yapısal SQL dilleri ile birlikte gelir, misal Microsoft ve Sybase SQL Server T-SQL ile, Oracle PL/SQL ile gelirler. Benzer şey PostgreSQL için de söylenebilir. Veritabanı söz konusu olduğunda sineğin yağını çıkarmaya çalışırsınız, "portable" kod yazmanın bir manası yoktur, elinizdeki platformun tüm ince detaylarını bilip bunları zorlamaktır aslolan. Yazdığınız "stored procedure" kodları tabii ki veritabanınıza özgü olacaktır, bunun Microsoft ile bir alakası yok.

Sanırım bu "portability" meselesinin bazen yanlış anlaşılmasının sebebi pek çok insanın veritabanları ile MySQL aracılığı ile tanışmaları yani "stored procedure" gibi bir kavramdan çok uzun süre habersiz kalmış olmaları.

Tabii kast ettiğiniz SQL dilinin kendisi ise o zaman farklı bir şeyden bahsediyoruz (bunu mu kast etmiştiniz?).

"Şerefsizce ayak oyunları?" ???

Bu arada Lisp'e gelince, Scheme iyi, Common Lisp kötü anlamında değil o. Scheme tasarım itibari ile biraz daha sade bir dil. Common Lisp <b>büyük</b> bir dil. Endüstriyel uygulamalarda Common Lisp daha çok kullanılıyor ancak bu Scheme ile de bir sürü iş güç yapan insan yok değil.
0
ttk
Evet, SQL dilinin kendisini kastetmiştim. Her ne kadar bir platformu kullansam da o platformun altında kendi belli standartları olan bir şeyi kullanırken elimden geldiğince (en azından mesela programı yeniden yazsam da SQL standarttır bunu elden geldiğince taşınabilir durumda kullanayım diye düşünürüm) idealin çok dışına çıkmamaya çalışırım. M.Soft, MS SQL'in yenisinin içerisine C#kodları gibi kod yazılmasını da sağlayacak denildiğini duydum, ona kızmıştım (yanlış mı kızdım şimdi :).
MySQL'i ise hiç kullanmadım şimdiye kadar.

Bu arada Scheme ile yola devam etmeye çalışmak durumunda, piyasaya iş yaparken mesela, umulmadık bir yerde desteksiz kalmaya sebebiyet verebilir gibi bir durum mu var ?
0
darkhunter
Bu arada Scheme ile yola devam etmeye çalışmak durumunda, piyasaya iş yaparken mesela, umulmadık bir yerde desteksiz kalmaya sebebiyet verebilir gibi bir durum mu var ?

Kastettiğiniz "piyasa" TC piyasası ise bu durum Scheme içinde CL içinde aynı keskinlikte. Eğer daha geniş bir spektrum söz konusu ise CL ile ilgilenen insan sayısı bildiğim kadarıyla Scheme'den daha fazla, en azından içinde bulunduğumuz sanal akvaryumdan öyle görünüyor... Durum böyle olunca CL daha fazla destek ve dinamik bir kitleyle beraber geliyor desek yanlış olmaz sanırım.

Siz bunu sorunca benim aklıma P. Siebel'in scheme tarzıyla CL anlatması geldi. Anlayacağınız durum biraz karışık :)
0
ttk
Sözkonusu olan Lisp olunca, sorularıma cevap verebilecek insanların oldukça az olduğunu, onların da vaktinin az olduğunu gördüm özellikle de Türkiye'de. Gidip Comp.lang.Lisp'de soru sorabilmek için de bir seviye bir şeyler öğrenmeye başlamak lazım (az az başladım sayılır), hani sıkışacaksın da soru soracaksın, adamlar da cevap verecek "git adam gibi soru sormayı öğren de gel" ya da "bu soru cevaplanmaya değer" gibi gelen tepkilerden durumumuzu tartacağız vs :)

Şimdi başta Common Lisp mi Scheme mi seçimi yaparken zaten boş arazinin daha da boş tarafına tarla taban kurmaya kalmayalım komuşumuz olsun biraz derdim var :)

Gerçekten son derece işe yarar şeylerden çoğunluğu uzak durmaya iten şeyin ne olduğunu merak ediyorum bazen.
0
darkhunter
""git adam gibi soru sormayı öğren de gel" ya da "bu soru cevaplanmaya değer" gibi gelen tepkilerden durumumuzu tartacağız vs :)"

Yok canım, öyle şeyler olmaz. Tabi sorunun anlaşılır olması açısından a- iyi ingilizce b- temel CL bilgisi gerekli. Bu son şık ile ilgili FZ gidin onlara sorarak öğrenin diyordu son konuştuğumuzda. Orası size kalmış...

Ama yazmasınız bile CL ile uğraşacaksanız izlemeniz gereken bir kaynak.

Not: Bende bu aralar open-gl ile ilgileniyorum, bu konuyla ilgili paylaşacak birşeyleri olan herkesi dinlemeye hazırım (:
0
ttk
Keşke anlasaydım, bilgi paylaşmaya çalışırdım OpenGL hakkında.
"OpenGL iyi bir şeydir, DirectX'siz Google Earth görüntülerini epey bir hızlı çözümleyip gösterebiliyor vay be" den öte pek bir şey söyleyemiyorum hakkında :)
0
Ragnor
<a href="nehe.gamedev.net">nehe.gamedev.net</a> ' i biliyorsundur. O sitedeki dersler bayağı bir işine yarar (bilmeyenler için verdim bu bilgiyi de :)).
0
ttk
Bu bana mı, bana ha ..
Galiba diğer arkadaş idi mesaj :)
Yine de adres için teşekkürler.
0
FZ
Sözkonusu olan Lisp olunca, sorularıma cevap verebilecek insanların oldukça az olduğunu, onların da vaktinin az olduğunu gördüm özellikle de Türkiye'de.

Türkiye'yi kriter kabul etmeyin, daha dün ADSL sahibi olduk sayılır. Pek çok insanımız da bilgisini sır gibi saklamaya alışık. Bir kısmı çekingen, vs.

Gidip Comp.lang.Lisp'de soru sorabilmek için de bir seviye bir şeyler öğrenmeye başlamak lazım (az az başladım sayılır), hani sıkışacaksın da soru soracaksın, adamlar da cevap verecek "git adam gibi soru sormayı öğren de gel" ya da "bu soru cevaplanmaya değer" gibi gelen tepkilerden durumumuzu tartacağız vs :)

USENET sizin dostunuzdur, düşmanınız değil. Eğer giriş-orta seviye İngilizce biliyorsanız ve kendi anadilinizde de derdinizi anlaşılır şekilde, teknik detaylara özen göstererek tarif etme becerisi edinmişseniz o zaman yolunuz açık. comp.lang.lisp'teki insanların ters cevap verdiğini hemen hiç görmedim, bilakis 20-25 yıldır Lisp (ve başka dilleri) kullanan insanlar, Lisp derleyicisi geliştiren insanlar, ANSI standartlarını ortaya koymuş, MACSYMA gibi efsanevi sistemleri geliştirmiş insanlar, Lisp üzerine kitap yazmış insanlar vakit ayırıp en basit sorularınıza bile detaylı cevap veriyorlar. Başınıza gelebilecek en kötü şey, alabileceğiniz en ters yanıt, HyperSpec'e ya da CLtL2'ye ya da bir kitaptaki bir bölüme link verip "burada güzelce anlatmış, takıldığın bir yer varsa sor" demek olabilir.

Üstelik sadece problem olduğunda yazmanız da şart değil. En basitinden "yahu ben şöyle bir kod yazdım, güzelce de çalışıyor ama Lisp acemisiyim belki bu mevzunun Lisp ortamında çok daha güzel söylenişi vardır" gibi bir kod eleştirisi istiyorsunuz, bir bakıyorsunuz uluslararası çaptaki insanlardan, 5 kuruş para harcamaksızın, ders alıyor durumdasınız. Yine pek çok şey anlatıyorlar. Bu adamlar aptal mı? Bilmem, gidin onlara sorun :), bir kısmının gerçekten vakti var, bir kısmı üniversitede hoca, anlatmayı seviyor zaten her halükarda.

Şimdi başta Common Lisp mi Scheme mi seçimi yaparken zaten boş arazinin daha da boş tarafına tarla taban kurmaya kalmayalım komuşumuz olsun biraz derdim var :)

Araziniz Internet, yani tüm dünya. Pek boş tarafı yok.

Gerçekten son derece işe yarar şeylerden çoğunluğu uzak durmaya iten şeyin ne olduğunu merak ediyorum bazen.

Psikolojik ve sosyal etkenler. Mesela Internet'te pek ses çıkarmayan insanlarla bir araya geliyorsunuz bir bakıyorsunuz gayet meraklılar, hevesliler filan, allah allah diyorsunuz bunlar Internet ortamında, USENET ortamında niye bu kadar sessiz.

Ya da işte İngilizce bir kaynak gösteriyorsunuz, orta seviye İngilizce bilen ve anlayabilecek olan insanlar pek ilgilenmiyor, bir hafta sonra Türkçe çevirip aynı kaynağı koyduğunuzda aynı insanlar epey ilgileniyor filan.

Kimimiz tokatlanmaya pek alışık değil, ondan da korkan oluyor mesela. Bazen soru soran birine "yahu gidip #lisp kanalında sorsana" diyorum. Tavsiyemi dinleyen kaç kişi çıkıyor bilmiyorum, paste.lisp.org ile birleşince bence IRC değme "online learning" ortamına basar geçer ;-)
0
ttk
Türkiye'de insanlar açıkta hatâ yapıp ayıplanmaktan korkuyorlar, bu bende de fazlasıyla var. Her an hatâ yapabilirim, çünkü kötü bir özelliğim (belki ummadığım kadar çok kişide bu var olabilir bizim memlekette), bir işi o an için halletmem gerektiği kadarıyla öğrenip az ötesini hesap etmeden oldukça önemli ayrıntılarını kaçırarak yeterince öğrenmiş olduğumu düşünmem. Mesela yukarıda M.Soft'un SQL'in içerisinde değişik dil kullanmasına (aslında bunun normal bir şey olduğundan haberdar olmadan) kızmam gibi. Durum denk düşüp de uarı gelmese kendi kendime hâlen aynı düşünceyi taşımaya devam edecektim, üstüne bir de gerektiğince işe yarayabilecek bir kaynaktan gereksiz yere uzak kalacaktım.
Öğrenilen her ne ise eksik öğrenme zamanla insanda bir hayat tarzı hâline geliyor, üstüne bir eleştiriye tahammülsüzlük varsa insan güdük ucube bir şey oluyor uğraştığı dal açısından. Meşgul olduğu işin önündeki en büyük engellerden birisi farketmeden kendisi olabiliyor vs.

Comp.Lang.Lisp'i sahiden merak etmeye başladım bu kadar övgü üzerine.
Irc kanalına da bakmaya çalışayım bari, her ne kadar yazılanları anında anlamak için ingilizcem pek yeterli değilse de.
Bu kadar yardıma istekli ünlü yandaşları olan bir dilden sanırım o kadar çekinmeye de gerek yoktur :)
0
FZ
Korku insani bir duygu ancak korkunun üstüne giderseniz bir şeyler öğrenme ve başarma imkanınız var.

Bir sistemin sadece o an işe yarayacak kadar kısmını öğrenmek de kötü bir şey değil, işinizi görür ve devam edersiniz ama bir gün gerekirse tüm detayları bilmeden bazı şeyleri yapamacağınızı görürseniz, o zaman da oturur detayları öğrenirsiniz.

Psikolojik direncinizi ve kültürel önyargılarınızı kırdığınızda, hata yapmaktan korkmadan iletişim kurmaya başladığınızda çok kısa sürede çok şey keşfedebilirsiniz diye düşünüyorum, bu hemen hepimiz için geçerli.

Kolay gelsin. Takıldığınız yerler olursa yazın, orada bir yerlerde ABDlisi, Fransızı, Almanı, Portekizlisi, Türkü, Norveçlisi, vs. cümbür cemaat sizin yazdıklarınıza bir şeyler ekliyor olacaklar.
0
ttk
Teşekkür ederim bilgi ve moral dopingi için :)
0
FZ
Microsoft'un yaptığı acayip bir şey değil ki, PostgreSQL de "stored procedure" dili olarak birkaç farklı dil kullanmanıza izin veriyor (Perl var mıydı aralarında?).

SQL'nin kendisine gelince onun dışına çok çıkmıyor kimse zaten. Yani ANSI SQL-92 standardının büyük bir kısmını ve ANSI SQL-99 standardının bir alt kümesini destekliyor olmalılar, daha iyi bilen arkadaşlar daha çok detay verebilir elbette.

Scheme ve CL pek çok açıdan kıyaslanabilir, benim gördüğüm CL'nin piyasa programcısı için daha çok şey sunduğu. En azından 2 büyük ticari CL geliştirme ortamı biliyorum ama mesela hiç Scheme'i hedefleyen ticari geliştirme ortamı görmedim.
0
ttk
"Microsoft'un yaptığı acayip bir şey değil ki, PostgreSQL de "stored procedure" dili olarak birkaç farklı dil kullanmanıza izin veriyor (Perl var mıydı aralarında?)."

Tamam o zaman :) bilmediğimi öğrenmiş oluyorum, bazen insan cahilliğini sergilemeyince ortada hep cahil kalıyor. Bu durumda yanlış düşünmüyorsam çoğu SQL veritabanı üreticisine göre M.soft'un bir eksik yanı sadece kendi işletim sistemlerinde çalışan bir veritabanı sistemi ile belli bir işletim sistemi ile çalışmak zorunda bırakması. Zaten kendi işletim sistemi de olan bir firmadan içimi rahatlatması için de aksini beklemem epey bir garip kaçar herhalde :)

Çok ideale kaçmayıp CL'i tercih etmekte fayda var şimdiye kadarki verilen bilgilere bakınca.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Google AI Yarışması Birincisi: Gábor Melis (ve Common Lisp)

FZ

Bir süreliğine dünyanın çeşitli yerlerindeki programcılara uykusuz ve adrenalin dolu geceler geçirten, eğlendirirken öğreten ve sosyal içerikli mesajlar içeren Google AI yani Google Yapay Zeka programlama yarışmasının birincisi Macar programcı Gábor Melis oldu. Melis yarışmayı Common Lisp dilinde geliştirdiği sistem ile kazandı.

Common Lisp ve Bir Optimizasyon Tekniği: Memoization

FZ

"Memoization" tabiri bilgisayar bilimlerinde ilk kez Donald Michie'nin 1968 yılında Nature dergisinde yayımlanan Memo functions and machine learning (Memo fonksiyonları ve makina öğrenimi) makalesi ile gündeme gelmiştir.

Memoization tekniği bir fonksiyonu hesaplarken önceden hesaplanmış değerleri hesaplamadan kullanmak, dolayısı ile işlemi hızlandırmak olarak tarif edilebilir. Sözcük olarak "memorization"ı yani "ezberleme" eylemini çağrıştırmakla birlikte daha genel bir anlamı kapsamaktadır.

Programlama dilinden bağımsız olmakla birlikte, bu yazıda "memoization" tekniğinin Common Lisp'te nasıl kullanılacağına bakacağız. Bunun için Peter Norvig'in PAIP kitabı ana eksenimizi oluşturacak.

GNU CLISP 2.34 sürümü çıktı

FZ

ANSI Common Lisp yüksek seviyeli, genel amaçlı bir programlama dilidir. GNU CLISP, Karlsruhe Üniversitesi'nden Bruno Haible ve Münih Üniversitesi'nden Michael Stoll'un ürünüdür. CLISP, ANSI Common Lisp standardında tanımlanmış Lisp dilinin büyük kısmını desteklemektedir. Hemen her türlü UNIX platformunda (Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX ve diğerleri) ve diğer sistemlerde (Windows NT/2000/XP, Windows 95/98/ME) çalışmakta ve bunun için sadece 4 MB RAM bellek yeterli olmaktadır.

Ruhan İkeda ile Müzik ve Lisp Üstüne

FZ

Bir sonraki Lisp toplantısının konuşmacısı Bilgi Üniversitesi'nde Müzik ve Linux dersini veren Ruhan İkeda.

Ruhan İkeda, gerçekleştirdiği müzik araştırmalarından ve bunlarla bağlantılı olarak kullandığı Common Lisp tabanlı araçlardan bahsedecek.

Düzeltme: Etkinlik 14 Ekim'de değil, 14 Kasım'da gerçekleşecek.

minifesto: mini mini 'animated' manifesto

FZ

Zach Beane yine yapacağını yapmış. minifesto sitesine gidip, istediğiniz metni yazıp bunu yakışıklı bir siyah kutu içinde, karizmatik yeşil yazılarla, daktilo efekti şeklinde görebileceğiniz bir "animated GIF" olarak elde edebiliyorsunuz.

Bir örneğini de Brian Mastenbrook'un blog'unda PI filminden meşhur bir alıntı şeklinde görmek mümkün.

Acaba bu şirinlik hangi programlama dili ile yapılmış? Tabii ki programlamayı tekrar eğlenceli kılan dille.