Λ-2D: Programlama Dili Olarak Çizimi Keşfetmek
(media.mit.edu)Proje λ-2D: resmi bir programlama dili olarak keşfetmek
-
Genel bakış: Proje λ-2D, resimler aracılığıyla programlama yapılabilen yeni bir dili araştıran bir çalışmadır. Lambda hesabı fikirlerini temel alır ve resimler üzerinden kod yazılabilmesi için tasarlanmıştır.
-
Dil dışı programlama dilleri: ASCII tabanlı Befunge ve asciidots ile görüntü tabanlı Piet gibi dil dışı programlama dilleri mevcuttur. Bu dillerden ilham alınarak yeni bir dil geliştirilmiştir.
-
Hedefler:
- Programları çizimle yazmanın avantajlarından yararlanarak, metin tabanlı dillerde mümkün olmayan özellikleri içermesi.
- Komut sayısının ne çok az ne de çok fazla olmamasını sağlayarak kullanım kolaylığını artırması.
- Görsel olarak çekici programlar çizilebilmesini sağlayıp, bunların birer sanat eseri gibi izlenebilmesine olanak tanıması.
-
Lambda hesabı: Lambda hesabında yalnızca iki komut vardır: fonksiyon uygulaması ve fonksiyon tanımı. Bu komutların her biri için uygun semboller geliştirilmiştir.
-
Veri akışı: Sembolleri bağlayan çizgiler üzerinden verinin akabilmesi sağlanacak şekilde tasarlanmıştır. Kullanılabilirliği artırmak için ek semboller de eklenmiştir.
-
Çerçeveler ve GUI öğeleri: Tuvalin belirli alanları çerçeve olarak ayarlanarak verilerin kullanılabilmesi sağlanır. Slider gibi GUI öğeleri eklenerek programın dinamik biçimde kontrol edilebilmesi mümkün kılınmıştır.
-
Editör yazılımı: Kullanıcıların programları dijital ortamda çizebilmesi için bir editör geliştirilmiştir. 5x5 piksellik semboller kullanıldığı için bunlar ızgara tuval üzerine kolayca yerleştirilebilir.
-
Çıktı sorununun çözümü: Saf fonksiyonel bir dilin doğası gereği "çıktı" komutunu uygulamak zordur. Bunu çözmek için, tuvalin fonksiyona aktarılıp değiştirilmiş tuvalin geri döndürülmesi şeklinde yeniden tanımlanmıştır.
-
Parser geliştirme: λ-2D programlarını JavaScript'e dönüştüren bir parser geliştirilmiştir. Ortaya çıkan sonuç karmaşık olsa da çalışmaktadır.
-
Programlama deneyimi: Yeni dilde program yazma deneyimi Minecraft veya Factorio'ya benzer, ancak bir araştırma olarak değeri vardır.
-
Görselleştirme ve ses: Program çalışmasının görselleştirilmesi ve çalışan programın müzik gibi dinlenebilmesi olasılığı araştırılmaktadır.
-
Gelecek planları: λ-2D'yi geliştirmek ve çizim yoluyla hesaplama sistemlerine entegre edilebilecek yeni programlama dilleri tasarlamak planlanmaktadır.
-
Çevrimiçi demo: λ-2D'nin beta sürümü çevrimiçi olarak denenebilir; parser ve editörün kaynak kodunun yakında GitHub'da yayımlanması planlanmaktadır.
1 yorum
Hacker News görüşleri
BitGrid'e benzer ama farklı bir kavram tartışılıyor; FPGA'nın nihai sadeleştirmesi olarak paralel ilerleyen bitler hayal ediliyor. Bu fikrin kitlelere petaflops sunma açısından faydalı olup olmayacağı belirsiz. ASIC'te DFF'nin tükettiği enerji önemli.
Otomasyon proje mühendisi işi eğlenceli ya da tanıdık gelebilir. Fonksiyon blok diyagramlarında fonksiyon blokları kablolarla bağlanır ve çalışma sırası blokların sırasıyla belirlenir. Bloklar motorun yerleşik fonksiyonları gibi olabilir ya da bileşik yapılar olabilir.
Dil şu anda Turing-tam, ancak kullanımı çok zor ve bu da tasarım kuralı #2'yi ihlal ediyor. Lambda Diagrams 1. aşamada kalmış.
Bu tür işler Labview'de yapıldı, ancak ilerletmesi zordu. Max gibi yazılımlarda da yapıldı, ancak hızla karmaşık hale geliyor.
Petri Nets için grafiksel biçimsel belirtimlerle ilgileniyordu. Grafiksel bir gösterim olursa mühendislerin biçimsel yöntemleri daha çok kullanacağını düşünüyordu, ancak Petri Nets gösterilince ilgilerini kaybediyorlardı.
Dil-dışı programlama dilleri alanının yeterince keşfedilmediği yönünde bir görüş var.
1987 tarihli "Wireworld"ü hatırlatıyor; Wireworld içinde 8 bitlik bir sayacın gerçekleştirildiğini görmüş.
Programlama paradigmaları açısından Funciton'a benziyor.