Yeni bir “özgür” dil: Fortress

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]

Siz de düşüncenizi serbest bırakın