4 puan yazan GN⁺ 2024-04-25 | 1 yorum | WhatsApp'ta paylaş

Piet programlama diline giriş

  • Piet, soyut bir resim gibi görünen programlar yazmak için kullanılan bir programlama dilidir
  • Adını, geometrik soyut sanat alanının öncülerinden Piet Mondrian'dan alır

Piet dilinin tasarım ilkeleri

  • Program kodu, soyut sanat formunu taşır

Piet'te kullanılan renkler

  • Piet, 20 benzersiz renk kullanır
    • Ton döngüsü: kırmızı -> sarı -> yeşil -> camgöbeği -> mavi -> macenta -> kırmızı
    • Parlaklık döngüsü: açık -> orta -> koyu -> açık
  • Beyaz ve siyah bu iki döngüye dahil değildir
  • Ek renkler (turuncu, kahverengi vb.) kullanılabilir, ancak etkileri uygulamaya göre değişir
    • En basit durumda beyazla aynı şekilde ele alınırlar

Codel

  • Piet kodunun temel birimi bir renk bloğudur
    • Bir veya daha fazla bitişik, aynı renkte codel'den oluşur
    • Yalnızca çapraz olarak komşu olan renk blokları bitişik sayılmaz
    • Şekil açısından bir kısıtlama yoktur ve içinde başka renklerden "delikler" bulunabilir

Yığın

  • Piet, tüm veri değerlerini saklamak için yığın kullanır
  • Veri değerleri yalnızca tamsayıdır, ancak Unicode karakter değerleri olarak okunabilir veya yazdırılabilir
  • Yığın kavramsal olarak sonsuz derinliğe sahiptir, ancak uygulamalar sonlu bir azami boyut sağlayabilir

Program yürütme

  • Piet yorumlayıcısı, programın sol üst codel'ini içeren renk bloğunda çalışmaya başlar
  • Bir yön işaretçisi (DP) ve codel seçici (CC) tutar ve aşağıdaki kurallara göre renk blokları arasında hareket eder:
    • Geçerli renk bloğunun kenarları arasından DP yönünde en uzakta olan kenarı bul
    • Bu kenar üzerinde CC yönünde en uzakta olan codel'i bul
    • Bu codel'den, DP yönündeki bitişik renk bloğuna geç
  • Program sona erene kadar bu süreç tekrarlanır

Sözdizimi öğeleri

Sayılar

  • Siyah ve beyaz dışındaki her renk bloğu, o bloktaki codel sayısına eşit bir tamsayıyı temsil eder
  • Yalnızca pozitif sayılar doğrudan ifade edilebilir, ancak işleçlerle negatif sayılar üretilebilir
  • Yorumlayıcı bir sayıyla karşılaşsa bile onu otomatik olarak yığına itmez

Siyah bloklar ve kenarlar

  • Siyah bloklar ve programın kenarları, program akışını sınırlar
  • Siyah bir bloğa ya da kenara gitmeye çalışılırsa CC terslenir ve DP saat yönünde döndürülür
  • 8 denemeden sonra da hareket edilemezse program sona erer

Beyaz bloklar

  • Beyaz bloklar, yorumlayıcının hiçbir kısıtlama olmadan içinden geçtiği "serbest" alanlardır
  • Yorumlayıcı, beyaz codel'ler üzerinde DP yönünde "kayarak" beyaz olmayan bir bloğa ulaşır
  • Beyaz blok üzerinden geçilerek yeni bir renge geçilse bile komut çalıştırılmaz
  • Beyaz blok içinde yol tamamen geri izlenirse program sona erer

Komutlar

  • Yorumlayıcı bir renk bloğundan diğerine geçtiğinde, komut renk değişimiyle tanımlanır
  • Çalıştırılacak komut, ton döngüsü ve parlaklık döngüsündeki adım sayısına göre belirlenir
  • Beyaz blok üzerinden geçişte komut çalıştırılmaz
  • Başlıca komutlar:
    • push, pop, add, subtract, multiply, divide, mod, not, greater
    • pointer, switch, duplicate, roll
    • in(number), in(char), out(number), out(char)

GN⁺ görüşü

  • Piet, görsel olarak çekici bir programlama dili ve soyut sanat ile programlamanın özgün bir birleşimini gösteriyor
  • Ancak pratiklik açısından sınırlı görünüyor. Karmaşık programlar yazmanın kolay olmayacağı tahmin edilebilir
  • Daha çok programlama dili tasarımına yönelik deneyler, bulmacalar veya sanat eserleri üretiminde kullanılabilecek gibi duruyor
  • Görsel programlama dilleri arasında Google'ın Blockly'si veya MIT'nin Scratch'i daha pratik alternatifler olabilir
  • Her hâlükârda Piet'in fazlasıyla derin bir dil olması nedeniyle, gerçek başlangıç seviyesindeki kullanıcıların programlama öğrenimi için kullanmasının zor olacağı düşünülüyor

1 yorum

 
GN⁺ 2024-04-25
Hacker News yorumları
  • Piet dilinin örnekler sayfasındaki son program gerçekten şaşırtıcı. Birisi (Piet adında) Piet dilini çağrıştıran bir eser görmüş, onu çalıştırmayı denemiş ve gerçekten çalışmış. Bu, bir grafik sanatçısının tesadüfen çalıştırılabilir bir program çizdiği tarihteki ilk olay.

  • Piet, ezoterik programlama dilleri arasında çığır açan bir deney, ancak geliştirici bilerek yapmadıkça bir Mondrian tablosu gibi görünme hedefine ulaşmakta yetersiz kalıyor. Keşke dilin yapısı, yazılan şeyin kendi başına bir Mondrian tablosu gibi görünmesini sağlayacak şekilde tasarlanmış olsaydı.

  • Bu, "Algoritma nasıl görünür?" sorusunu gündeme getiriyor. Hermann Hesse'nin 'Cam Boncuk Oyunu' (Magister Ludi) gibi bir şeyi gerçek hayatta yapabilir miyiz? Görsel yönelimli biri olarak böyle düşünmek istiyorum ve gerçekten bu tür araçları kullanmayı denedim, ancak belirsiz yanıtlar yüzünden görsel ifade gücü ile modülerlik arasında denge kurmak zor.

  • Bu tür şeyler, suç gerilimlerinde baş karakterleri/soruşturmacıları şaşırtan ve sonra birinin bunun kod olduğunu fark ettiği sahnelerde yer alacak gibi duruyor. Biz QR kodların faydalı olduğunu sanmıştık...

  • Piet'yi keşfetmek; huşu, kafa karışıklığı ve hayranlığın yaşandığı özel bir an. Bu, CS podcast'inde arkadaşım Oz ile yaptığım sohbette de yakalanmıştı.

  • Birisi Piet ile bir quine yapmış. Görsel bozulmuş ama CodeGolf'ta bir kopyası var.

  • Üniversitede ezoterik programlama dilleri üzerine küçük bir ders vardı ve herkes bir dil seçip onunla oynuyordu. Ben Piet'yi seçmiştim; eğlenceliydi ama dürüst olmak gerekirse küçük örnek uygulamalar estetik açıdan pek tatmin edici değildi. Piet ile sanat yapmak için uzman olmak gerekiyor gibi.

  • Üniversite yıllarımda bununla karşılaşıp gece geç saatlere kadar basit programlar yazmıştım; gerçekten çok eğlenceli bir deneyimdi. İnsanlara en az bir kez denemelerini tavsiye ederim!

  • Örnekler sayfası harika. Tuvalin giderek daha incelikli ve güzel hale gelişini görebiliyorsunuz.

  • Gerçekten çok havalı! Piet eserlerini derleyip verilen metni döndüren bir program yapmanın mümkün olup olmadığını merak ediyorum. Yani bir tür Piet kod üreticisi. Basılı halde harika bir hediye olabilir!