RSS

Monthly Archives: May 2006

Summer of Lisp Code: Yazın Lisp ile para kazanmak; Emacs Versor; OpenMusic; IRC loglama; FireBug; The Aeolian Harp; How to Fish


Lisp ile nasıl balık tutulur? comp.lang.lisp Usenet grubunun müdavimlerinden Pascal Bourguignon’a göre şöyle tutulur:


 +~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-+
/                                                        
    Give a fish to a man, he'll eat one day;            /
/   Teach a man how to fish, he'll eat all his life.     
                                                        /
 +_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-~-_-+

;; Here is how to fish:

(asdf:oos 'asdf:load-op :trivial-http)

(defpackage "GOOGLE-GROUP"
  (:use "COMMON-LISP")
  (:export "URL-FOR-MESSAGE-ID"))
(in-package "GOOGLE-GROUP")

(defun url-for-message-id (message-id)
  (destructuring-bind (response header body)
      (trivial-http:http-get
       (format nil "http://groups.google.com/groups?selm=~A"
               (trivial-http:escape-url-query message-id)))
    (case response
      ((301) (cdr (assoc :location header)))
      (otherwise (error "Unexpected reponse code ~A~%~S~%~S~%"
                         response header body)))))

;; For example:

(in-package "COMMON-LISP-USER")
(print
 (GOOGLE-GROUP:URL-FOR-MESSAGE-ID "861x2q4pfx....@cawtech.freeserve.co.uk"))

;-)

Google’ın bu seneki Summer of Code etkinliğindeki Common Lisp projelerine ek olarak LispNYC’nin Google’dan bağımsız olarak birkaç projeyi daha destekleme durumu varmış. Dikkat çekici olan kısım ise:

If you have a worthwhile open source project that you would like to see funded, now is a good time to bring that to the attention of LispNYC. To do so, join the LispNYC mailing list: http://www.lispnyc.org:8080/mailman/listinfo/lisp

Note that you don’t have to be a member of LispNYC (or even a citizen of the US). The money will be used for Lisp projects only though.

Gün geçmiyor ki Emacs için garip garip şeyler çıkmasın. Geçen hafta keşfettiğim gariplik: Emacs Versor: Versatile Cursors

GNUemacs has many ways of navigating text buffers: words, expressions, sentences, functions, paragraphs… but they can be much harder to type than the ordinary cursor movements. Versor (Versatile Cursors) makes them more accessible, mapping pairs of these movement dimensions onto the cursor keys, and using the cursor keys themselves, with a modifier, to navigate around the space of possible movement types. It also provides an extended cursor, in the form of a whole unit of whatever your selected movement dimension is, and makes this the unit of copying, deletion or other changes, as well as of movement.

Uzun detaylı bir demoyu buradan izlemek ve aynı adamın yazdığı diğer Emacs güzelliklerine buradan erişmek mümkün. (Bunlara bakarken bir anda kendimi Emacs Lisp ve w3m-emacs işlevselliği ile (ve buradaki url-retrieve kodu ile) hava durumunu Emacs mode-line’da göstermeye çalışırken buldum. Hangi programlama ortamına gitsem ilk denediğim şeylerden biri bu oluyor ve bunda sanırım yıllardır dışarı bakan penceresi olmayan havasız bir ofiste çalışmanın yarattığı bilinçaltı durumlarının etkisi yadsınamaz diye düşünüyorum :))

Yazılım dünyasında dönüp dolaşıp benzer fikirlerin gündeme gelmesi ve güneşin altında söylenmiş yeni pek bir şeyin olmaması hali yine çıktı karşıma:

Montezuma is a Common Lisp port of Ferret. Ferret is a Ruby port of Lucene. Lucene is sort of Doug Cutting’s Java version of Text Database (TDB), which he and Jan Pedersen developed at Xerox PARC, and which, to complete the circle, was written in Common Lisp (see “An Object-Oriented Architecture for Text Retrieval”).

Lisp ağırlıklı günlük notlar. Lisp ve müzik. Notes from the Metalevel kitabı bitmek üzere. Son olarak An Algorithmic Model of György Ligeti’s Désordre ve Spectral Composition bölümlerini okuyup ilgili Common Music kodlarını denedim. Ligeti ile ilgili bölüm kitabın belki de müzik teorisi bakımından en eğır ve karmaşık bölümü. “Spectral composition” ise biraz daha rahat okunabilir, anlaşılabilir ve eğlenceli bölümlerden biri. Sabahın köründe bu bölümde anlatılan FM sentezleme tekniği temel alınarak gerçekleştirilmiş The Aeolian Harp – for piano and computer generated tape parçasını dinledim. 23 dakika 30 saniyelik bu olağanüstü eserin hikayesini herhalde uzunca süre unutmayacağım:

The Aeolian Harp is a mechanical instrument that creates musical sound from wind. As air passes through the harp its strings vibrate in sympathy with corresponding motion in the moving column of air. The result is an ethereal Aeolian resonance, a tonal memory of the wind’s chaotic motion that, like our own memory, is a colored artifact of a presence that has since departed. The ideas of transformation, resonance, memory and loss are all thematic currents in this work. The piece is dedicated to my sister, Marianna Christine Taube, who died in 1997 after a long and courageous battle with cancer. Although some elements of the composition relate specifically to her life, I think the piece is best described as simply being a reflection, or resonance, of my struggle to come to terms with her death, of the transformation we all undergo when emotional chaos, despair and anger gradually yield to the duller ache we tolerate and carry forward. The ideas of resonance, transformation and memory operate on many different levels in the composition.

Algoritmik besteleme, ses sentezleme ve Lisp programlama arakesitinde yer alan bir de OpenMusic varmış. Common Music’ten farklı olarak görsel kısmı ağır basıyor, biraz Max/MSP tarzı gibi görünüyor. Bunu da biraz kurcalamakta fayda var.

Kendime not: JavaScript debugger’ı FireBug‘ı kura ve incele!

Lisp ile başladık, Lisp ile bitireyim (full-circle? deja-vu? :)). IRC loglama ve Lisp gerçek hayatta ne işimize yarayacak üstüne:

Meme is a web application written by Kevin Rosenberg which displays Internet Relay Chat (IRC) logs. Currently, Meme is logging select channels from the freenode ircnet. Features of Meme include:

* Full-text searching with selectable number of surrounding minutes.
* Multiple viewing styles.
* Customizable filtering and highlighting.
* Auto-login avaiable with selectable start page.
* Graphs of channel activity.
* Stored user preferences.

Meme is written in Common Lisp and uses the following libraries:

CLSQL: SQL library
irc-logger: Logging daemon
cl-irc: IRC library
lml2: HTML generation
kmrcl: Utilities
base64: Base64 conversions
cl-ppcre: Regular expression library
Webactions/AllegroServe: Web server

 
Leave a comment

Posted by on May 31, 2006 in Emacs, General, Lisp, Music, Programlama

 

Organizational Knowledge; Salvami l'anima; Model Driven Architecture; C ile network programlama; Applying Use Case Driven Object Modeling; BrainBench ile Linux bilginizi ölçün; Çocuklara Bilgisayar


MDA yani Model Driven Architecture bağlamında deneme yapmak maksadı ile AndroMDA aracını kurcalayıp .NET ortamına yönelik ilk küçük örneği gerçekleştirme işi nihayet tamamlandı. Gördüğüm kadarı ile artık Microsoft platformunda yazılım geliştiren uygulama programcıları da bir hayli açık kodlu ürün ile iş güç yapıyor durumdalar. Söz gelimi meşhur NDoc, NAnt, NUnit gibi programlar Java ve J2EE dünyasından doğrudan feyz alınarak geliştirilmiş durumda. Kısa bir süredir incelediğim açık kodlu AndroMDA geliştirme aracı da yine bir başka meşhur açık kodlu araca, Apache organizasyonu tarafından geliştirilen Maven‘a ve Java tabanlı MagicDraw UML‘ye bağlı (“Community edition” ücretsiz olarak temin edilebiliyor). (Bu arada Maven’ı yansılayan İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümüne de şükranlarımı sunarım, Apache’nin sitesinden bir türlü tam olarak gelmeyen gerekli Maven sürümünü buradan çekebildim nihayet!)

AndroMDA, Maven, MagicDraw UML gibi araçlar bir araya gelince ne oluyor? Eğer nesneye yönelik modellemeyi iyi bilen tasarımcı elbisesini giyebilmiş bir programcı iseniz vaktinizin önemli bir kısmı gerekli analizleri yaptıktan sonra modelinizi çizmekle geçiyor. Ardından AndroMDA ile komut satırında birkaç komut vermek sureti ile bu modele karşılık gelen C# sınıfları, soyut sınıflar, yardımcı sınıflar, NHibernate eşleşmeleri ve NHibernate tarafından kullanılacak veritabanı yapısı, şeması, vs. de otomatik olarak oluşturuluyor. Programcıya da birkaç yardımcı metodun içini doldurmak kalıyor. Yaptığım basit Timecard örneğinde topu topu 7-8 satır ve birbirine çok benzer C# kodu yazmam ve bir iki Assembly dosyasına müdahale etmem gerekti (hayır, Assembly programlamadan bahsetmiyorum, evet korkunç bir isim seçimi!).

Tabii hayat örnek projelerde resmedildiği kadar güllük gülistanlık olmak durumunda değil. Model Driven Architecture doğrultusunda, AndroMDA, Maven, NHibernate gibi araçlar kullarak orta ve büyük ölçekli projeleri epey bir disiplin altında, ele avuca gelir şekilde geliştirmek mümkün olmakla beraber buna girişecek olan yazılımcının ya da yazılım ekibinin bir kısmının nesneye yönelik modelleme konusunda somut deneyim sahibi olması gerekiyor. Daha önce nesneye yönelik modelleme ile uğraşmadı iseniz bir an önce temel modelleme kavramlarını öğrenmenizde ve temel/orta düzeyde UML okuryazarı hale gelmenizde fayda var. Eldeki araç seti, MDA’yı desteklemeye başlamış durumda, hala geliştirilmeleri gerekmekle birlikte somut olarak projelerde kullanılmaya başlandığını da biliyoruz. Bu da kendini sadece Java/C# kodu yazan kişiler olarak gören programcıların artık biraz daha uzman geliştirici profiline kaymalarının zamanının yaklaşmakta olduğunun habercilerinden biri.

Hazır UML idi, MDA idi, modelleme, tasarım, vs. idi derken dün gece bitirdiğim kitaplardan biri de Applying Use Case Driven Object Modeling with UML: An Annotated e-Commerce Example oldu. Doğrudan nesne yönelimli tasarım pratiğine yönelik olan kitap “Use Case” kavramını temel alıyor hantal Rational Unified Process ile fazla hafif eXtreme Programming arasında nasıl sağlam bir orta yol olabileceğinin örneğini veriyor. Bölüm sonundaki “tasarımın filanca aşamasında en sık yapılan 10 hata” ve bunlarla ilgili gerçek hayat senaryolarında karşılaşılan durumlardaki hataların ayıklanması kitabın güçlü yanlarından. Şimdiye dek pek karşılaşmadığım şeylerden biri olan Robustness Analysis ve bununla ilgili diyagram konusu gayet güzel ve somut bir dille anlatılmış. Sanırım daha önceki Use Case çalışmalarımda neyin eksik olduğunu bu kitap sayesinde kavramaya başladım!

Konu kitaplardan açılmışken, merak ediyorum acaba C kodlayarak sistem programlayan, network programlayan programcıların kaçta kaçı merhum üstad W. Richard Stevens‘ın kitaplarının en azından birkaç cildini hatmederek, sindirerek konuya başlıyorlar. Kitap okumak, Usenet gibi yine işin ustalarının bulunduğu kaynaklardan faydalanmak bazı durumlarda tarihe karışan yöntemler gibi algılanıyor kimi zaman, kimi insanlar tarafından.

Okumaya başladığım ve sıradan görünümlü başlığının aksine epey çarpıcı bir giriş yapan kitaplardan biri ise Organizational Knowledge: The Texture of Workplace Learning. Eğer sabahın 4 sularında gözler kan çanağı ve kafa tasarım, MDA, UML ile bulanmışken bir kitap böylesine berrak ve sağlam görünüp kendini 20 sf. kadar okutuyorsa gerisini okumakta fayda vardır. Birkaç dikkat çeken alıntı (OL: “Organizational Learning”, LO: “Learning Organization”, vurgular bana ait):

Foucault?s concept of discipline has been usefully applied in postmodern analysis of power/knowledge relations (Alvesson, 1993, 1994; Deetz, 1996;Townley, 1993) in the area of knowledge firms or in the construction of the subjectivity of knowledge workers. Also the exploitative ethos of many organizational learning discourses has been underlined by postmodern scholars (Boje, 1994) and other critical scholars (Huysman, 1999). I do not wish to pursue this line of analysis further;rather, I shall restrict my treatment to illustration of a set of premises implicit in OL and LO theorization in order to highlight how they
sustain a disciplinary discourse which disciplines concrete behaviours:

1. OL is always ameliorative and disinterested. Learning is regarded as always positive, in the spirit of ?the more, the better?. OL as a discourse implicitly assumes an ameliorative vision in which learning is incremental and knowledge is a cumulative product which undergoes constant development (Miner and Mezias, 1996). The alleged universality, neutrality and transparency of knowledge presume that humankind is its beneficiary, thereby neglecting the role of power in structuring organizational knowledge. What is deemed worth learning has already been selected: only those in power learn the right things.

4. OL presumes change but not its understanding. Learning proposes a change in the behaviour ? actual or potential ? of individuals or groups, or perhaps a cognitive change. It does not necessarily require individuals to understand the logic that has led to a change in SOPs (Child and Markoczy, 1993).This amounts to saying that if some change is manifest, then a learning process has taken place, but also that change does not require any learning. The problem thus arises of how the empirical evidence can be collected to demonstrate the relationship between change and learning.

Learning, writes Rorty (1989), is a term often part of a final vocabulary: it is a value in itself which cannot be further questioned. It is associated with improvement in performance, the rapid correction of errors and a fast reaction to environmental changes.The positive connotations associated with the word induces the a priori assumption of what needs to be empirically demonstrated. Learning, as the founding myth of the scientific community of OL scholars, obscures the myopia of learning from experience (Levinthal and March, 1993). In short, we have described the theoretical construction of OL and LO as a discourse of disciplining when it is preselected as a managerial technique which contains a bias towards systematic and purposeful learning, a bias towards improvement, and a normative bias.These biases are composed of a specific structuring of power/knowledge which sustains them and perpetuates them as a discourse of power. This is even more evident when we consider the literature on knowledge management.

The distinctive feature of current technological innovation ? writes Manuel Castells (1996) ? is not the central importance of knowledge and information in themselves but rather their application to produce knowledge and the technologies to develop it. The new technologies are not simply tools used in the production cycle; rather, they are processes that must be developed. Necessary, therefore, is analysis of how organizations create, use, institutionalize and maintain knowledge and
knowledge processes.These developments have had direct consequences for management because male and female workers (whether blue-collar or white-collar) make increasing use of specialist knowledge, and their work grows increasingly technical. They acquire greater power and broader autonomy in the workplace, because expert knowledge is more difficult to control and may easily become a resource with its own market. Workers develop cultures in occupations which are not professional in the strict sense, and these cultures collide with the traditional managerial culture based on bureaucratic organizational control. Organizations must be able to rely on the commitment of knowledge workers to their goals, so that also organizational cultures become instruments of control.

Kalling and Styhre (2003: 25) argue that the term ?knowledge management? is an oxymoron, since knowledge is processual and fluid, while management is aimed at control and order. A similar case was previously made by Weick and Westley (1996: 440): ?to learn is to disorganize and increase variety. To organize is to forget and reduce variety?.

(Şimdi öğleden sonra 2 civarı salim kafa ile bir daha okudum ilk bölümü, benzer şekilde algıladım. Demek ki bu kitap okunacak!)

Ofiste test çılgınlığı hasıl oldu: Brainbench Test Center – Free Tests. İster Java bilginizi ölçün, ister GNU/Linux yönetimi, isterseniz CISCO ya da proje yönetim teorik bilgilerinizi test etin. Sonuç? Görece olarak çok daha kısa süredir uğraştığım C# konusunda, Brainbench’e göre, GNU/Linux’a kıyasla daha “sağlammışım” ;-) Eh, meraklısı varsa, denemesi bedava.

Bunlar olup biterken bir yandan da Çocuklara Bilgisayar projesi yoluna devam ediyor. Pazar günü bir 2. el bilgisayar bağışı daha gerçekleşti. Bu hafta içinde de bir bilgisayar bağışı daha gerçekleşmesi planlanıyor. Projenin İtalya tanıtım ayağı için gerisayım başladı.

Gece, sabaha doğru, öğlen, öğleden sonra ve bu blog kaydı biterken “Mama” çalıyordu. Zucchero ve Stevie Ray Vaughan, Memphis 19 Mart 1989 kaydı.

“Mama! Salvami l’anima
Mama! Salvami l’anima
Mama! Saving my soul for me
Saving my soul for me…”

 
1 Comment

Posted by on May 30, 2006 in .NET, General, Programlama

 

Sendika: Ben bilmem beyim bilir


Bir insan, bir öğretmen, bir matematikçi bu kadar komik yazmamalı. Diyelim ki yazdı, insan bunu sabahın 6′sında okumamalı, hayır bir şey değil komşular rahatsız olabiliyor şok etkisi yaratan ve duvardan yansıyan kahkaha dalgalarından ötürü:

Sendikalı olmayan öğretmenlerden birine, sendikamız budur, tüzüğü şudur, işte öğretmenler odasındaki panosu bu ve diğer sendikaların panoları da şunlar, oradan da görebilirsin sendikaların taleplerini, ne dersin sendikalı olmaya deyince, “Bir beyime sorayım da sonra haber veririm ben size, zaten eşim de sendikalı, bir evden bir sendikalı yeter”, dedi. Buyrun bakalım. Bir diğeri de “Benim de babam sendikalı, bana gerek yok” dedi. Başkası “Ben hamileyim, doğurduktan sonra bakarız.” dedi. Allahtan üç kişi vardı o sıra öğretmenler odasında, daha fazla insan olsaydı kim bilir daha neler çıkacaktı, “Ben bir görümcemgile sorayım, onlar ne yapmış bu sendika işini”, “Benim dedem sendikalıydı, bana gerek yok”, “Ben regl oldum, bitince gelin, o zaman bakarız”…

 
Leave a comment

Posted by on May 24, 2006 in General

 

Tehlikeli bir programlama dili: Ruby ve Pattern Matching, S-Expression ve DSL mevzuları


Topher Cyll’in Pattern Matching, S-Expressions, and DSLs in Ruby makalesini okuduktan sonra bir kez daha Ruby dilinin ve camiasının tehlikeli bir ortam olduğuna kanaat getirdim!

Büyük ihtimalle Common Lisp, Qi, Haskell ve OCAML programcıları çok etkileyenmeceklerdir ama onlara soran kim ;-)

Martin Fowler’ın Ruby’yi neden sevdiğini ve mesela kendi işleri için XSLT’ten Ruby’ye neden geçtiğini sanırım artık daha iyi anlıyorum.

 
Leave a comment

Posted by on May 24, 2006 in General, Programlama

 

Çocuklara Bilgisayar Projesi İtalya Yolcusu


Çocuklara Bilgisayar projesi, Haziran ayında İtalya’da, Como’da düzenlenecek olan The Second International Conference on Open Source Systems konferansındaki tOSSad OSS2006 Workshop etkinliğinde “Computers for Kids: More Than a Simple Recycling Operation” başlığı ile yazdığımız bir makale ve sunumla tanıtılacak.

Kendi adıma, uluslararası bir platformda tanıtılmasının ve diğer etkinlik katılımcılarından geribesleme alınmasının proje açısından önemli olduğunu düşünüyorum.

Bu arada, PUSULA Günlüğü‘nün Sivil Toplum bölümünde de projeden bahsedilmiş, sevindirici gelişmelerden biri daha.

Projeye gönüllü destek verenlerin sayesinde yine Haziran ayının ilk haftasında bireysel bilgisayar dergisi olsun, yöneticilere hitap eden sektörel bilgisayar dergileri olsun, diğer popüler dergiler ve ulusal gazetelerde ciddi bir tanıtım kampanyasının da gerçekleşmesi ile bilgisayar bağışlarının artmasını bekliyoruz.

Şu anda genellikle bireysel bağış talepleri geliyor. Proje gönüllülerinin bireysel imkanları ile taşıma ve lojistik imkanlarını seferber etmeye çalışıyoruz. Haziran’daki tanıtım faaliyetlerinden sonra belki bir kargo şirketi sponsorluğu imkanı olabilir. Kasımpaşa’daki geri dönüşüm merkezi bağışlanan ikinci el bilgisayarlara ev sahipliği yaparken bir yandan da teknik altyapıya yönelik çalışmalar tamamlanıyor. Kurulum süreçleri esnasında her türlü Internet bağlantısı için merkezde artık ADSL altyapısı hizmete hazır ve test edilmiş durumda.

Henüz kurumsal bağış gerçekleşmedi. Yani ne herhangi bir banka, ne herhangi bir üniversite ne de büyük holdinglerimizden, şirketlerimizden ya da sivil toplum kuruluşlarımızdan biri çıkıp da “gelin bakın burada çalışan ama artık yavaş kalan, yenileyeceğimiz PCler var, alın bunları, sizin projede bir işe yarasınlar, çocukların evlerine girsinler,” demedi.

Niyet ile eylem arasındaki gerilim bir kez daha su yüzüne çıkıyor bu gibi durumlarda, “ne var ki canım, hallederiz, bak filanca yerde…” ile başlayan olumlu sinyaller kısa sürede sönümleniveriyor bazen.

Projenin bitmesine yaklaşık 4 aylık bir süre var. Şimdilik beklediğimiz tempoda ve koşullarda gelişiyor. Yaz aylarının getirebileceği rehavet riskine rağmen yine de durumun kötü bir sürprizle karşılaşmaksızın iyiye doğru gideceğini tahmin ediyoruz mevcut deneyimlerimize dayanarak.

 
1 Comment

Posted by on May 24, 2006 in General

 

Seibel'in Google Videosu; Ruby, closure ve trendy ortamlar; yazılım mühendisliği ve programcılık; NHibernate


Ödüllü Practical Common Lisp kitabının yazarı Peter Seibel, Google’ın New York ofisine davet edilmiş ve orada güzel bir sunum gerçekleştirmiş.

1 saat 12 dakikalık bu sunum esnasında aynı zamanda epey deneyimli bir Java programcısı olan Peter Seibel, bazı Java örnekleri üzerinde durduktan sonra Common Lisp, CLOS (Common Lisp Object System) konusuna hızlı bir giriş yapıyor. Deneyimli Google programcılarının sorularını da yanıtlayan Seibel, sonlara doğru Common Lisp kullanılarak Lisp’in kendisinin nasıl eğilip bükülebildiğini yine örneklerle açıklamış.

Son zamanlarda bazı eski fikirlerin yazılım geliştirme dünyasında yeniden canlandığını ya da tartışmaya konu olduklarını görüyorum. Bunlardan biri “continuation” kavramı. Java spesifikasyonu ile ilgili isimlerden Gilad Bracha Continuations for User Journeys in Web Applications Considered Harmful başlıklı bir yazı yazınca ortalık kızıştı. Önce Smalltalk ile geliştirilmiş web “framework”ünün geliştiricisi Ongoing Continuations ile verip veriştirdi, ardından da Sapir-Whorf is not a Klingon başlıklı yazısı ile Curtis Poe eleştiri oklarını eğlenceli şekilde fırlattı.

Bu tartışmalar bağlamında Java dünyasının has adamlarından, Sun Microsystems’teki üstadlardan ve sıkı Lispçilerden Guy Steele Jr. tarafından yaklaşık 2 sene önce yazılmış bir e-posta da bakış açısını gayet güzel özetliyordu:

Please remember that the design of a programming language consists not just in a laundry list of features, but also in making judicious choices of what to omit and, more importantly, in establishing design principles that are easy to understand.

Java does not support decimal arithmetic well, nor classic coroutines, nor full IEEE 754 floating-point arithmetic, nor computed GOTO, nor Fortran-style (or Common Lisp-style) FORMAT operations, nor automatic backtracking, nor pattern matching, nor unification of PROLOG-style expressions, nor tail calls, nor a host of other features. I’ve been beat up pretty hard over some of these. Some of them I even argued for myself in the early days of Java (such as tail calls). But others simply aren’t needed for the clientele Java is trying to serve.

Bir başka kavram ise “closure” kavramı. “Gerçek hayatta ne işimize yarayacak ki?” sorusunu pek sordurmayan dillerle uğraşanların pek bilmedikleri kavramlardan biri bu da. Tabii “continuation” kavramına kıyasla biraz daha kolay anlaşılabilir ve JavaScript gibi dillerde karşılaşılan türden. Konuyla ilgili güzel bir yazı Javascript Closures başlığı altında okunabilir. Görünen o ki nesneye yönelik tasarım ve programlama dünyasının meşhur isimlerinden Martin Fowler da bu kavramı seviyor ve Ruby kullanarak örneklendiriyor. Elbet bir gün C# programcılarının da öğrenmek durumunda kalacakları “closure” kavramı, C# dilinin 2.0 sürümünde buna benziyor. Bu sözdizimi ile gözü yorulanlar için yine .NET ortamında Boo dili ile yapılmış olanı da mevcut. (Boo dilindeki makro programlama örneklerine baktım ve aksi yönde koşarak uzaklaştım, gözünü sevdiğimin Lisp makro işlevselliği diye çığlık attım :))

Bir kez daha görülüyor ki bazı dillerde ve platformlarda (Lisp, Smalltalk) onlarca yıldır var olan özellikler pek bir popüler, pek bir enterprise (!) ortamlara yeni yeni geliyor ve yepyeni özellikler, teknolojiler olarak lanse ediliyor. Paul Graham’ın blub paradoksu hala geçerliliğini koruyor.

NHibernate konusu üzerinde çalışmaya ve çeşitli örnekleri denemeye devam. Bu bağlamda Model Driven Architecture kavramı ile haşır neşir olmakta fayda var gibi, hele de AndroMDA gibi bir araç kullanılacaksa. AndroMDA ile ilgili olarak ilk yapmam gereken Getting started with AndroMDA.NET yazısını okuyup uygulamak.

Dünyada bunlar oladursun, memlekette Yazılım Mühendisliği mi, Programcılık mı? gibi kısır tartışmalar devam ediyor. Programcıların “dingo”lara benzetildiği durumlar mı istersiniz, kafası karışık zihinlerden çıkmış cümleler mi istersiniz…

 
Leave a comment

Posted by on May 22, 2006 in .NET, General, Lisp, Programlama

 

Matematik, müzik, yapay zekâ, 1960lar, Kolmogorov, Turing Günleri ve Lee Morgan, 3. Avrupa Lisp Atölyesi ve Müzikoloji


Soğuk bir New York akşamı. Tarih 19 Şubat 1972. Slugs gece kulübüne gelen Helen More bir hayli sinirlidir. Kısa bir süre önce kavga ettiği sevgilisi Lee Morgan’a ateş püskürmeye hazırdır. Kalbi kırılmış öfkeli bir kadın tehlikeli kadındır. Elindeki tabancayı Morgan’a doğrultan Helen tereddüt etmeden tetiği çeker. Sahnedeki trompetçi yere yığılır, 33 yaşında hayata gözlerini yumar.

Caz tarihinin ve trompetin, hard bop‘ın en değerli ve önde gelen isimlerinden Lee Morgan 34 sene önce 33 yaşında işte bu şekilde mavi gezegeni terk eder. Kısa yolculuğuna pek çok şey sığdırmış, sadece Blue Note için bile 25 albüm kaydetmiştir.

Fonda az önce Search For a New Land‘den Melancholee çalıyordu. Biraz sonra ise meşhur albümlerinden bir başkası olan The Sidewinder başlayacak. 1960ların ilk yarısından iki başyapıt…

Lee Morgan gibi üstadlar 1960 ile başlayan döneme yepyeni bir soluk getirmekle uğraşadursunlar başka dünyaların insanları, Rus ve ABDli matematikçiler, bilgisayar bilimciler algoritmik bilgi teorisini kurmak ile meşguldüler. Kolmogorov, Chaitin ve Solomonoff gibi isimlerin çalışmaları ile nüveleri atılan bu araştırma alanı süreç içinde rastlantı ve tesadüf nedir gibi sorular, veri sıkıştırma ve sıkıştırılamayan karakter dizileri, istatistik, olasılık, makina öğrenmesi vb. pek çok alan ile bağlantı kuracaktı.

Algoritmik bilgi kuramının temel kavramlarından biri olan Kolmogorov karmaşıklığı maddesini çevirmeyi az önce bitirdim. Şimdi biraz cila çekip parlatmak, pürüzleri törpülemek ve tabii teknik kontrolden geçirmek lazım (gizli mesaj: boş durmayın siz de bir el atın eğer matematikten, bilgisayar bilimlerinden ve Türk dilinden anlıyorsanız ;-)).

Alanın kurucularından ve efsane isimlerden Ray Solomonoff, beşincisi düzenlenen Turing Günleri etkinliğinde üç gün boyunca (29, 30 ve 31 Mayıs) akşam 5′ten itibaren algoritmik bilgi kuramına dair bir “crash course” verecekmiş:

Crash Course by Prof. Ray Solomonoff
1- What is Algorithmic Probability? – Definitions, Properties
2- Some General Applications
3- Application to Artificial Intelligence

Sevgili kardeşim Ergin’in matematikçi Abel‘den aktardığı gibi: “Study the masters, and not the pupils.” (Öğrencilerini değil ustaları çalışın.)

İstanbul’da bunlar olurken bir grup utanmaz arlanmaz Lispçi de sanki ECLM yetmezmiş gibi kalkmış 3rd European Lisp Workshop düzenliyormuş ve şu tür sunumlar olacakmış:

- Agent-based framework to simulate metabolic processes
- Beating C in Scientific Computing Applications
- Lisp tools for musicology
- Naturalising Foreign Libraries
- Simulation of Quantum Computations in Lisp (Brecht Desmet, Pascal Costanza, Theo D’Hondt)
- LISP Hardware revisited

Özellikle son madde epey dikkat çekici:

The Breakout group “Reclaim the Hardware Design Space!” on the 3rd European Lisp Workshop is about creating hardware that is suited to dynamic programming languages in general, and LISP in particular. We will be investigating current hardware technologies to find out what they have to offer for systems that are dynamic from the ground up.

The breakout group is meant to provide a meeting point for researchers and practitioners working on hardware implementation techniques for dynamic languages. To participate, you should know something about the implementation of dynamic languages, about hardware, or both. You are not required to actually have created a LISP machine yourself, but you should be aware of some of the associated issues in order to take part in the discussion.

Some of the topics of interest are:

* Implementation of LISP-friendly CPUs in hardware
* Hardware assisted garbage collection
* Self-Synthesis and Hardware/Software Co-Design
* LISP based ASLs for hardware description and synthesis
* Techniques for CPU implementation on FPGAs
* Reengineering ancient CPUs in software or hardware

We hope that the breakout group will help in advancing dynamic hardware and provide for a place for researchers and practitioners to work together.

 
Leave a comment

Posted by on May 20, 2006 in General, Lisp, Music, Programlama

 

Düzenli GO Kursu @ Kafe76


Yahoo’daki İstanbul GO grubundan bir e-posta geldi, buraya da not düşeyim, unutmayayım, mümkünse katılayım. Emre Bektöre demiş ki:

“Türkiye GO şampiyonası öncesi yapılan GO çalışmalarından memnun kalınması sonucu kafede düzenli olarak (bu perşembeden itibaren) çalışma yapmaya karar verdik.

Zaman içerisinde yeterli kişi sayısıyla farklı bir günde düzenli çalışma yapmak isteyen bir grup, klüp, topluluk, vs. olursa tarihlerde değisiklik veya arttırım olabilir.

Her Salı 18.30-21.00 arası (yeni başlayanlara yönelik, 30-20 kyu)

Her Perşembe 18.30-21.00 arası (20 kyu ve üstü)

Her Cumartesi 14.00-17.00 arası (yeni başlayanlara yönelik, 30-20 kyu)

Her Pazar 14.00-17.00 arası (20 kyu ve üstü)

Mekan: Kafe 76
Adres: Tel sok. No:8 Kat: 2 Beyoğlu
Tel: 0 212 249 18 16

Görüşmek dileğiyle,
Emre Bektöre”

 
Leave a comment

Posted by on May 18, 2006 in General

 

Tarih Tekerrürden İbaret Değildir: Tanenbaum vs. Linus (ya da Monolitik Canavar Mikroçekirgeye Karşı)


2006 yılındayız ve yaş ortalaması 30 (+/- 5) civarı olan, GNU/Linux ile iş güç yapan ve tarihçe ile ilgilenen insanlar Tanenbaum ile Linus arasındaki tartışmaları üzerinden 10 yılı aşkın süre geçmiş olsa da unutmamıştır herhalde.

Biri bize işletim sistemi nasıl tasarlanırı en güzel anlatan hocalardan, diğeri ise gezegendeki en yaygın açık kodlu özgür işletim sisteminin çekirdeğini 10 yılı aşkın süredir, yüzlerce programcıyı da yöneterek geliştiren kişi.

Biri yıllardır 10 tonluk kamyonu andıran monolitik çekirdeklerin yönetilebilirlik, stabilite, güvenilirlik ve mühendislik problemlerinden bahsediyor, çözümün mikroçekirdek mimarisinde yattığını söylüyor diğeri ise buna şiddetle karşı çıkıp pratik olarak iş güç yapacaksak monolitik ve kocaman bir çekirdek ile devam edeceğiz diyor.

Uzunca bir süredir bu detaylı teknik tartışmalar unutulmuştu. Konuyla sadece hard-core işletim sistemi araştırmacıları, akademisyenler filan ilgileniyordu.

Sonra… Sonra bir gün…

Önce Tanenbaum ve arkadaşlarının Can We Make Operating Systems Reliable and Secure? başlıklı bir makalesi IEEE Spectrum dergisinde yayınlandı. Ardından Linus’un buna zehir zemberek bir cevabı geldi. Mikroçekirdek mimarileri ve somut uygulamaları konusundaki uzmanlardan biri olan Jonathan Shapiro da Debunking Linus’s Latest şeklinde tartışmaya katıldı. Tabii Tanenbaum’un kendisi de bir karşı cevap vermekte ve mikroçekirdek uygulamaları konusunda okuyucuları bilgilendirmekte gecikmedi.

Bütün bu tartışmalarda belki de Tanenbaum’un %100 haklı olduğu ancak yeterince vurgulanmayan bir nokta şu: “Bir kıyaslama yapıp tercih yapmadan önce biraz bilgi ve deneyim sahibi olun, öne sürdüğümüz fikirlerin somut uygulamalarına bir göz atın.”

Yani mesela MINIX 3ü yükleyin, örnek uygulamaları çalıştırın, bir X grafik ortamına geçin, biraz kurcalayın. Dokümantasyondan ve ilgili Usenet grubundan faydalanın. Tanenbaum’un vurguladığı bir başka şey ise MINIX 3′ün eğitim amaçlı geliştirilmiş ilkel ve basit bir işletim sistemi olmadığı.

Buradaki monitör görüntülerine baktığımda heveslenmedim değil doğrusu ;-) Dikkatimi çeken bir başka şey ise MINIX 3′ün grafik ortamdaki haline ek olarak kullanılan monitörlerin markası oldu. Bu monitörleri kullanan kişilerin yoğun olarak kod geliştirdiğini düşündüğümde aklıma daha önce yine blogda IIYAMA monitörlerden bahsettiğim geldi.

Kıssadan hisse:

- Çekirdeği 4000 satır kadar tutan MINIX 3′ü incele.

- Programcılar için geliştirilmiş bir monitör almak için para biriktir.

Not: Mikroçekirdek konusu ile ilgili güzel bir slashdot yorumu.

 
1 Comment

Posted by on May 17, 2006 in General, Programlama

 

Özgür İrade Teoremi


Dün Prof. Dr. Cem Say‘dan ilginç bir e-posta geldi cogsciforum e-posta listesine, not düşelim bloga:

Aşağıdaki adreste “free will” hakkında çağdaş fiziğin ne dediğine ilişkin enteresan bir makale var:

http://www.arxiv.org/abs/quant-ph/0604079

Benden daha iyi anlayan birinin bu makale hakkındaki özeti şöyle:

“Suppose that (1) the laws of physics allow something like a Bell or GHZ experiment, (2) the people doing the experiment can set their detectors any way they want (i.e., in a way not determined by the previous history of the universe), and (3) something like Lorentz invariance holds (i.e. there’s one reference frame where experimenter A measures first, and another where experimenter B measures first). Then the results of the experiment are also not determined by the previous history of the universe. Or as the authors colorfully put it: “if indeed there exist any experimenters with a modicum of free will, then elementary particles must have their own share of this valuable commodity.”

 
Leave a comment

Posted by on May 16, 2006 in CogSci, General

 
 
Follow

Get every new post delivered to your Inbox.

Join 53 other followers