Programlama Sanatı

Goto Geçmiş;

Pazar, 23 Ağustos, 2009

Şu hata girdisini görüp de gözleri dolmayan varsa beri gelsin. PHP sonunda kendi öz ve öz “goto”suna kavuşmuş, gençler de geyiğini yapıyorlar.

(Arkası Burası…)

Yeni bir “özgür” dil: Fortress

Salı, 16 Ocak, 2007

Sun Java’dan sonra Fortress’i de serbest bırakmış[ing](önsürüm).
Çiçeği burnunda dil, “yüksek başarımlı hesap-kitap işlerine” el atma amacıyla tasarlanmış. Java’ya misafir olması sebebiyle yüksek başarım umudumuz pek olmasa da matematikten anladığına şüphe yok. (bkz. Fortress Fortran isim benzerliği)

Dil, sosyetik ve işlevsel dillerden (ML ailesi, Eiffel, Scala vb.) ne bulduysa araklamaktan utanmamış.
Nesne yapısı, istisnalar, tür çıkarımı, n’liler, parametrik türler, birinci sınıf işlevler, kuyruk özyineleme eniyilemeleri, sentetik geliştirilebilirlik, sözleşmeler, bölünmez işlemler ve elbette ki matris ve kayıpsız sayı desteği ile göz kamaştırıyor. (Bakış açısına göre baş da döndürebilir.)

Parametrik çokşekillilik iddiası biraz tartışmalı bölgede. Gelişmiş bir şablon desteğinden öte gitmiyor gibi. Öte yandan fazla yükleme desteği de var görünüyor (Java da ucundan bulaşmış yani). Bu ikisi ışığında tür çıkarımı da ne kadar başarılı olabilir merak konusu.

Aslında dilin sentetik ilginçlikleri de yok değil; sapına kadar “Unicode” desteği (ASCII dışı işleç (operatör) ve tanımlayıcılar), çarpma işlecinin seçeneksel olması, rastgele boyut ve derinlikte matris girişi vb.

Örneğin “15 a” ifadesi “15 * a” ile aynı anlama geliyor. Fakat “a 15″ ifadesi a(15) anlamına da gelebiliyor (a işlevinin 15′e uygulanması). Kağıt kalem alışkanlıklarını yaşatma çabaları gibi görünen bu “çeşitliliğin” getirdiği karışıklık yanında ML tadında sade bir “Curry”leme[ing] desteğini de imkansız kılması birinci sınıf işlevlerini yaya bırakabilir.

Dilin değişken tanım ve atamaları da tartışmaya açık nitelikte.

isim = ifade

şeklinde bir kod parçası yerine göre “sabit değişken” tanımlarken (mesela “let” tadında, yerel etki alanında), yerine göre Bool veritüründe eşitlik sorgu ifadesi olabiliyor.

Dil, değişmez nesneleri normal nesnelerden ayırıyor. Böyle bir nesnede, programcı nesnenin alanına yeni bir atama yapmak isterse:

değişmez_nesne.alan := ifade

derleyici hata vermek yerine sessiz sedasız bildiriyi değiştiriyor;

değişmez_nesne := Değişmez_nesnenin_yapıcısı(alan=ifade, diğer_alanlar=değişmez_nesne.diğer_alanlar)

Bir başka deyişle, “değişmez_nesne” tanımlayıcısı yeni bir nesneye bağlanıyor ve eski “değişmez_nesne” gölgeleniyor.
Her ne kadar nesneleri (belirli bir alan hariç) kolayca kopyalayabilmek çok yararlı bir yeti olsa da, dilin her fırsatta mevcut yapılarına fazla yükleme yapması, zaten “her özellik olsun” yaklaşımından dolayı tehlikede olan sadelik zarafetine bir darbe daha vuruyor.

Maymun iştahlılıktan ve Java bağımlılığından çok çekeceğe benzeyen dil, akademisyenlerin, Sun ismiyle gözü kamaşan Java programcılarının ve nesne güdümlü/işlevsel paradigmalarının her türlü deneysel birlikteliğini merakla izleyen Defter yazarlarının ilgisini çekebilir.

Kaynakça: Fortress Tanım Belgesi[2.2 MB PDF][ing]

Webpostalarda Türkçe yazım denetimi

Pazar, 26 Şubat, 2006

Bildiğim kadarıyla ilk örneğini Cafer yaptı. Oldukça da hoş olmuş.

Olayın güzel tarafı adı geçen webposta uygulamasının aslında aspell ya da ispell komut satırı uygulaması yerine aspell kütüphanesini pspell yoluyla kullanıyor olması. Bu örnekte görüldüğü gibi yazım denetimi yapabilen (nerdeyse) her türlü PHP uygulaması, küçücük yamalarla Türkçe yazım denetimi de yapabilir.

Viki Bağlaç: Wordpress için Vikipedi (ve Sözlük) bağlantı eklentisi

Cumartesi, 11 Şubat, 2006

Vikipedi’nin iç bağlantı sistemi oldukça rahat ve kullanışlı olduğundan, benzer bir işlevselliği Wordpress‘de de arıyor insan.
Viki Bağlaç, bu işi yapan küçücük bir eklenti.
Örnekler:
[[Emacs]] → Vikipedi’de Emacs
[[es:Debian|]] → İspanyol Wikipedia’da Debian
[[ek:Linux|GNU/Linux]] → Ekşi Sözlük‘de GNU/Linux
[[#:366|Viki Bağlaç]] → Defter‘de Viki Bağlaç

Renklendirilmiş kaynak kodu ve indirilebilir kaynak kodu mevcut. Uzantısının php yapılıp wp-content/plugins dizinine atılması ve yönetim panelinden etkinleştirilmesi yeterli.

On Lisp halka açılmış

Perşembe, 2 Şubat, 2006

Güzel kitap[ing]

(digg’den…)

MÜKS – 5 – Kabuksal ihtiyaçlar

Salı, 25 Ekim, 2005

(MÜKS dizisi hakkında genel bilgi, yasal uyarılar, vesaire için şuraya bakılabilir)
(Bu yazının Defter standartlarına uymaması gerekçesiyle, tekrar gözden geçirilmesi gerekmektedir. Yazarın aşk sarhoşluğundan sapıttığı varsayılabilir. Başınıza bir şey gelirse Defter sorumlu değildir.)

MS, Özgür Yazılım camiasını çekebilmek için nokta-net komut satırı arayüzü geliştiriyor. Arstechnica da benim gibi Windows’tan uzak yaşayanlar için oldukça ayrıntılı bir belge hazırlamış[ing].
(Arkası Burası…)

ICFP 2005 sonuçları

Pazartesi, 3 Ekim, 2005

İşlevsel programlama konferansı ICFP’nin programlama yarışması sonuçları açıklanmış[ing]. Yarışmacılar eskiden kalite ve performans açısından değerlendirilirken, bu sene mantıklı bir şekilde çalışma hızı geri plana atılmış[ing]. İlk olarak bir ICFP ile adını duyduğum (C’den sonra) en hızlı programlama dili olarak görünen OCaml’ı güçsüz bırakan bu durum Haskell’ın ve Dylan’in en önemli 4 ödülü 2-2 paylaşmasına imkan vermiş.

ICFP’lerin şimdi hatırlamadığım bir tanesine, takımlardan biri bash ile katılmış ve oldukça iyi sayılabilecek bir başarı yakalamıştı.

Neden iyi programcılar tembeldir?

Cuma, 26 Ağustos, 2005

Böyle de bir bakış açısı var[ing].

Ki zaten kendimizin zorlandığı işleri yapsın diye program yazdığımız düşünülürse, tembellik ile program yazma arasındaki ilişkiyi görmemek zor olsa gerek.

Engerek ve kelebek

Pazar, 14 Ağustos, 2005

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.
(Arkası Burası…)