Engerek ve kelebek
Engerek şimdilik doğal dillerden sadece Türkçe’yi destekliyor. Ahmet Akın‘ın Zemberek’i esnekleştirme çalışmaları meyve vermeye başladığında, Engerek de diğer Türki dilleri de desteklemeye başlayacaktır.
Fakat programlama dilleri açısından, Engerek projesi oldukça zengin bir yapıya sahip olacak gibi görünüyor. Zemberek Java’da yazıldığından, engerek komut satırı da Java’da yazıldı. GCJ sağ olsun, C++ ile de doğrudan kullanmak mümkün.
Aslında diğer diller, emacs ve elisp örneğinde olduğu gibi doğrudan bu komut satırını kullanıp işlerini görebiliyorlar. Fakat kısa ömürlü işler (web’den yazım denetimi, engerek -l kullananlar vesaire) için engerek gibi yavaş yüklenebilen bir uygulama çok da tatmin edici olamayabiliyor.
Bu noktada bir çözüm, halen Uludağ Projesi tarafından da başarılı şekilde kullanılan, Zemberek sunucu yapısı. Java’da yazılan sunucu, istemcilerle TCP/IP üzerinden haberleşebiliyor. Potansiyel olarak ortak sözlük gibi getirileri olan bu yaklaşımın Java’dan kaynaklanan bir kaç tane de götürüsü de yok değil.
Örneğin, Java’da çatallanma (fork) olmaması nedeniyle Unix ortamlarının alışılmış sunucuları (daemon) yazılamıyor. Haliyle gerektiğinde sunucu doğuran akıllı istemcilerden yapmak doğal bir şekilde mümkün olmuyor. Başka bir deyişle, halen hazır uygulamalarda aspell/ispell yerine engerek yazmak gibi şeffaf ve basit çözümler, ek olarak bir de sunucu çalıştırmayı gerektiriyor.
Java süreçler arası iletişim için sadece TCP’yi destekliyor (1.5′da değişecek deniyordu ama hala görebilmiş değilim). Halbuki Unix Alan Soketleri bir çok açıdan daha güvenli. Çok kullanıcılı sistemlerde ortak sözlük, ortak kişisel sözlük avantaj olabileceği gibi bir çok açıdan dezavantaj da olabilir. Kullanıcının kendi sunucusunu çalıştırmasına izin veren (ya da kolaylaştıran) bu yaklaşım, aynı zamanda, tek sunucunun sabit portu gasp etmesinin getirdiği sorunları da ortadan kaldırıyor.
Bütün bu sorunlar kelebek‘i doğurdu. kelebek ön tanımlı olarak Alan Soketleri kullanan akıllı komut satırı istemcisi prototipi. İstemci olarak çalıştırıldığında gerek görürse sunucu doğurup onunla iletişime geçebiliyor. Sunucu kipinde ise, engerek’i çalıştırıp çift yönlü iletişime geçip asıl istekleri ona yönlendiriyor. Mümkün olduğunca basit olmasını istediğim bu uygulamayı aslında Python ile yazmayı planlıyordum. Fakat süreçlerle çift yönlü (standart girdi ve çıktı) iletişim için makul bir çözüm göremeyince, Ruby’de karar kıldım (gene popen3 kullandık gerçi). Diğer seçenekler yadigar Perl ve popüler PHP idi. PHP, dile karşı olan soğukluğum ve yeteneksizliği nedeniyle, Perl (ya da benim Perl alışkanlıklarım) ise okunabilirlikten kaybetti. Zaten Ruby, çok sevdiğim Perl’den gerektiğinden bile fazla esinlenirken (yaklaşım, düzenli ifadeler, sistem kütüphaneleri), tamamen nesneye dayalı olması ve doğal ilmekleme yapısı ile pişman etmedi.
Tabii ağ ortamında çok kullanılan PHP’den de tamamen kaçmak mümkün olmadı. Basit ve tembel işi örnek bir yazım denetleme kodu ortaya çıktı. Ayrıca aspell kullanan Wordpress yazım denetleme eklentisi[ing] de engerek ve kelebek ile oldukça rahat çalışıyor görünüyor(kelime ekleme hariç):

Bütün bu kodlar, muhtemelen diğer dillerdeki örnekleriyle birlikte Engerek’in bir sonraki sürümüyle dağıtılacak.
alt-not: Ne yazık ki kelebek’in de Ruby gerektirmek gibi sorunları var. Muhtemelen en güzeli oturup C++’da, doğrudan libzemberek kullanan akıllı istemci yazmaktır ama kim uğraşacak
fazla bilgım yok bu konuda yorum yok
Aslında 3 dört gündür yana yakıla ubuntuya zemberek desteği vermeye çalıştım. Şuan çalışan bir zemberek desteği var. Çok ileri derecede bilgim olmamakla birlikte basit anlamda enchant adında bir spellchecker ile bu işi çözdüm. Fakat farkına vardım gibi gaim gibi gedit gibi uygulamalar direk olarak aspell desteğini getiriyorlar yani gnome-spell ‘e zemberek desteği kazandırdığımız halde (ki gnome-spell sadece aspell kullanıyordu.) gnome üzerinde bir yetkinliği olmadıgını anladım. Neyse aslında size belki faydası olur amacıyla enchantı soylemek istemistim . Eğer sen ne yaptın bakalım gnome derseniz: http://uyarer.com/blog adresini ziyaret etmenizi rica edecegim