RSS

Allegro CL 8.0 Express Edition; Notes from the Metalevel, CSound; ZF – Lis(t|p) Comprehensions

18 Jun

… all kinds of animals coming here:
Occasional demons too. (*)

Allegro CL 8.0 Express Edition çıkmış. Yaklaşık 30 MB büyüklüğündeki “bzip”li kurulum dosyasını çektikten sonra açtım ve ardından Franz Inc.’den gelen e-postadaki URLyi ziyaret edip gerekli lisans dosyasını da kurulum dizinine yerleştirdim, ./allegro deyip çalıştırdım.

Uzunca bir süre GNU Emacs + SLIME + SBCL ortamına alıştıktan sonra başlangıçta biraz garip geliyor tabii. Refleks tepki olarak insan önce “Allegro CL editörünü nasıl Emacs uyumlu moda sokarım” diye bir ortalığı kurcalıyor. Bu halledildikten sonra bir nebze rahatlamak mümkün oluyor.

Anahtar teslim paket çözüm şeklinde ticari bir Common Lisp ortamı sunan Allegro Common Lisp’in hoşuma giden özelliklerinden biri de epey derli toplu yardım ve dokümantasyon menüsü, özellikle de Knowledge Tree kısmı oldu. Birçok “tutorial” belge ve örnek proje de yine paketle birlikte geliyor. Sürprizlerden bir tanesi de belgeler arasında gezinirken, CLOS belgelerinin arasında Paul Graham’ın ANSI Common Lisp kitabındaki CLOS bölümünün bir kopyası ile karşılaşmam oldu.

Tabii kocaman bir Common Lisp IDE ile uğraşmak yerine doğrudan kara gün dostu, “programmer-friendly” Emacs içinden de Allegro CL derleyicisine bağlanıp onunla “konuşmak” mümkün.

50 MB kadar bir “heap” sınırı olsa da küçük ve orta ölçekli pek çok proje ve iş için şimdilik bu sınır bir sorun teşkil etmiyor gibi görünüyor.

Yine Franz Inc. tarafından sunulan kalıcılık katmanı olan Allegro Cache‘i ise henüz deneme fırsatım olmadı. Rucksack ve Elephant gibi bir kalıcılık aracı olan AllegroCache’i başlangıçta NHibernate terimleri ile düşünmüş olsam da sanırım biraz daha farklı bir yapısı var ve doğrudan bir veri tabanı ile ilişki kurmak zorunda bırakmıyor programcıyı (?).

***

Nihayet Notes from the Metalevel: Introduction to Algorithmic Music Composition bitti. 24. ve son bölüm olan Beyond MIDI bölümünde Taube yazılım ses sentezleme sistemlerine değinmiş, örnek olarak CSound ve Common Lisp Music‘in Common Music sistemi ile nasıl entegre edildiğini göstermiş. Birkaç satır kod yazarak daha önce hiçbir kulağın duymamış olduğu yapay enstrümanlar, ses manzaraları üretmek ve bunları kullanarak beste oluşturmak… Bir kitap biter, diğeri başlar, sıradaki kitap kütüphaneden birkaç gün önce aldığım The Csound Book – Perspectives in Software Synthesis, Sound Design, Signal Processing and Programming var. Doğal devam.

***

“If you your face would find
One glass will do
But you need two
To see yourself behind.”

“Yüzünü görmek için
Tek ayna yeter
Ama onun ardındaki kimliğini görmek icin
İki ayna gerekir” (**)

Geçen gün FZ’nin tersi ZF’yi Wikipedia’da aratınca bu sayfa ile karşılaştım, Zermelo-Fraenkel aksiyomatik sistemi, İTÜ yıllarım, cümleler teorisi, nostalji filan deyip dolanmaya devam ederken karşıma List comprehensions çıktı. A-aa ne güzel, yıllardır alışık olduğumuz matematiksel notasyona ne kadar benziyor, hmm, Haskell, acaba Lispçesi de varmış diye HB ile laklak ederken bir de baktık 15 sene önce Guy Lapalme gitmiş “Implementation of a Lisp comprehension macro” başlıklı eğlenceli bir makale yazmış. Tabii denememek olmazdı, hemen bir .lisp dosyası açıldı, SLIME buffer’ına geçildi, kod yazılıp derlendi. Sonuçta ne oldu?


CL-USER> [x (x <- '(1 2 3)) (oddp x)]
(1 3)

CL-USER> [(list x y) (x < - '(a b c)) (y <- '(1 2 3))]
((A 1) (A 2) (A 3) (B 1) (B 2) (B 3) (C 1) (C 2) (C 3))

CL-USER>

tarzında şeyler yazmak mümkün oldu. Lapalme’ın makalesinde QuickSort’un bu notasyonla yazılmış örnek Common Lisp kodu da mevcut. Bir kez daha Lisp’e neden programlanabilir programlama dili dendiğini anlamış oldum! 😉

* “Catfish Rising” albümünde “Occasional Demons”, Jethro Tull, 1991
** 1001 Gece Masalları, YKY, sayfa 1204, Alim Şerif Onaran, Mathers’in İngilizce Mardrus çevirisinden Türkçeye çevirmiş.

Advertisements
 
Leave a comment

Posted by on June 18, 2006 in General, Lisp, Music, Programlama

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: