1. Anasayfa
  2. Teknoloji

Ezoterik Programlama Dilleri: Asla Programlama Yapamayacağınız 4×4’lük Diller


0
Ezoterik programlama dilleri

Merhaba, bugün eğlenceli bir konuyu işleyeceğiz. Konumuz ezoterik programlama dilleri. Anlamayanlar için kısaca açıklayalım.

Ezoterik programlama dilleri, pratik kullanım amacı taşımayan ve dizayn açısından normal programlama dillerinin normlarına meydan okuyan acayip programlama dilleridir.”

Yani Ezoterik programlama dillerinden anlayacağınız; adamların amacı bunların pratik kullanımdaki faydası değil, hayal gücüne meydan okuyan dizaynları. Bazen şaka amaçlı ve güldürü öğeleri içerirken bazen de sanatsal değer taşıyan bu programlama dillerini yapanlar ve kullananlar ise gerçekten “işsizliğin” sınırlarını zorlayanlar oluyor.

Şimdi Ezoterik programlama dillerindeki bu işsizlik harikalarının dizayn prensiplerini inceleyelim ve daha sonra bu prensiplerin örneklerine göz atalım.

Ezoterik Programlama Dillerinde Dizayn Prensipleri

Turing Makinesi

Turing Makinesi esaslarına dayanmasına rağmen pratik anlamda kullanılamayacak dillerdir. Aslında Turing Makinesiyle simüle edilebilecek bütün programların yazılması mümkün, fakat “Hello World” yazdırabilmek bile bir saatinizi alacaktır. Turing Makinesi temelli bir programlama dilinde karakter sayısı çok sınırlıdır, sadece “Hello World” yazmak bile bu yüzden başlı başına bir dert olur. İşsizseniz vaktinizi doldurmak için tasarlanmış.

Ezoterik Programlama Dillerinde Quine

Ezoterik programlama dillerinde Quine yazılımları, girdi almaz ve çıktı olarak kendi kaynak kodunu verir. Boş bir program yazılamaz, çıktı vermeyen bir program bile içinde bulunduğu dilde geçerli bir programdır. Adeta Programception. Kaynak kodu diskten veya hafızadan okumak da hile yapmak oluyor. Bu mimaride asıl mesele kaynak kodunu yöneterek girdi-çıktı almak (ya da almaya çalışmak) gibi işlemler yaptırmaktır. Yazarken benim bile beynim yandı.

Code Golf

Code Golf, mümkün olan en büyük algoritmayı olabilecek en küçük kaynak koduyla işletmeye dayalı bir prensip ve bununla ilgili bir oyun. Burada “en küçük” derken bahsettiğimiz çalıştırılabilir kodun boyutu değil, kullandığımız operatör ve fonksiyonların uzunluğudur. “Golf scripting”, Code Golf oynama fiili için kullanılır.

Eh, meydan okumalar yaratıcılık için bir motivasyon kaynağı.

Şaşırtmaca (Obfuscation)

Bir resim düşünün. Düşündünüz mü? Şimdi size o resmi bilgisayar programına çevirebilirsiniz desem? Veya “neden” kelimesini yazdırmaya çalıştığınızda ekrana “kaplumbağa deden” yazılacak desem?

Aslında şaşırtmaca, programlamaya özgü bir şey değil. Şaşırtmacanın konsepti, asıl mesajı gizlemek veya görüntüsünü değiştirmektir. Eğer kullanıcının kafasını allak bullak etme veya kodu gizleme gibi gıcık niyetleriniz varsa, bu prensip dilinizi oluştururken tercih edeceğiniz en mantıklı seçenek olacaktır. Kodunuzu resimle, müzikle, tiyatro oyunuyla, pasta tarifiyle gibi alakasız biçimlerle yazabilirsiniz.

Alt tarafı yemek tarifi, başka ne olabilir ?

Çoğu ezoterik programlama dilleri bu prensiplerle yazılıyor. Kimisi bilimsel araştırmalarda, kimisi adamı çıldırtmak amacıyla, kimisi ise sanatsal değeri amacıyla yazılıyor.

O zaman bu dillerden birkaçını tanıyalım.

Bazı İlginç Ezoterik Programlama Dilleri

Befunge

Bu dilin olayı programların 2-boyutlu bir düzlemde yazılması. Yukarıdan aşağı, aşağıdan yukarı, soldan sağa, sağdan sola yazış biçiminize çıktılar değişiyor. Sağdan sola mıydı aşağıdan sağa doğru muydu, ooof. Beynim yandı. Ezoterik Programlama dillerinin bir etkisi bu.

Brainf**k

Üreten kişi gayesini dile verdiği isimle belli etmiş. Brainf**k, bilinen bütün ezoterik programlama dillerinin belki de en ünlü olanı. Ben bile bu dilde bir şeyler kodladım. Makine Turing complete, yani Turing makinesinin bütün bileşenlerini kullanıyor. Okuyup yazabilen bir kafası ve okunan değerlerin yazılı olduğu bir alanı var.

Dil çok minimalist ve onu zor kılan da bu. Arkadaşımı trolleyeyim derken bir şaka programı için 2 gün uğraşırsınız, denemeyin gidin C++ falan kullanın.

Tüm bileşenleriyle 8 karakterden oluşan bu dil boyutunda rağmen döngüleri destekleyebiliyor.

Aşağıda Brainf**k karakterlerinin işlevlerini gösteren bir tablo.

  1. Code: Pseudo code:
  2. >> Move the pointer to cell2
  3. [-]  Set cell2 to 0
  4. << Move the pointer back to cell0
  5. [       While cell0 is not 0
  6. – Subtract 1 from cell0
  7. >> Move the pointer to cell2
  8. + Add 1 to cell2
  9. <<  Move the pointer back to cell0
  10. ] End while

Ve de klasik “Hello World” kodu.

Piet

Piet, programların soyut resimlere benzetildiği bir programlama dilidir. Renklerle kodluyoruz yani. Parlaklık, renk ve pozisyon gibi parametreleri kullanarak istediğiniz güzelliği programa çevirebilirsiniz!

İşte πcasso’ dan “Hello World”.

Shakespeare

Shakespeare, “kodlarım Shakespeare oyunlarının metinleri kadar güzel olsun” diyen bir abimiz tarafından yapılmıştır. Bu dilin ilginç kurallarına göz atalım.

Değişkenler Romeo ve Juliet gibi geçerli karakterler olmalıdır ve kullanılabilmek için önce sahneye çağrılmalıdır. Sahne isimleri ve perdeler GOTO etiketleri gibi çalışır. Sayısal değerler dahi cümlelerle belirtilir (bazı kelimeler yerine göre sayı değeri alabiliyor).

Hamlet:

You lying stupid fatherless big smelly half-witted coward!

Juliet:

You are as villainous as the square root of Romeo!

Sayısal değerlerin gösterilişi.

“Remember” (hatırla) veya “Speak your mind” (fikrini söyle) gibi özel kelimeler ve kelime grupları, komut olarak çalışıyor. Bunlar herhangi bir değişkenin değerini yazdırmak veya kod içinde döndürmek olabilir.

Sahnede, Shakespeare’ den “Hello World”.

  1. The Infamous Hello World Program.
  2.  
  3. Romeo, a young man with a remarkable patience.
  4. Juliet, a likewise young woman of remarkable grace.
  5. Ophelia, a remarkable woman much in dispute with Hamlet.
  6. Hamlet, the flatterer of Andersen Insulting A/S.
  7.  
  8.  
  9. Act I: Hamlet’s insults and flattery.
  10.  
  11. Scene I: The insulting of Romeo.
  12.  
  13. [Enter Hamlet and Romeo]
  14.  
  15. Hamlet:
  16. You lying stupid fatherless big smelly half-witted coward!
  17. You are as stupid as the difference between a handsome rich brave
  18. hero and thyself! Speak your mind!
  19.  
  20. You are as brave as the sum of your fat little stuffed misused dusty
  21. old rotten codpiece and a beautiful fair warm peaceful sunny summer’s
  22. You are as healthy as the difference between the sum of the
  23. sweetest reddest rose and my father and yourself! Speak your mind!
  24.  
  25. You are as cowardly as the sum of yourself and the difference
  26. between a big mighty proud kingdom and a horse. Speak your mind.
  27.  
  28. Speak your mind!
  29.  
  30. [Exit Romeo]
  31.  
  32. Scene II: The praising of Juliet.
  33.  
  34. [Enter Juliet]
  35.  
  36. Hamlet:
  37. Thou art as sweet as the sum of the sum of Romeo and his horse and his
  38. black cat! Speak thy mind!
  39.  
  40. [Exit Juliet]
  41.  
  42. Scene III: The praising of Ophelia.
  43.  
  44. [Enter Ophelia]
  45.  
  46. Hamlet:
  47. Thou art as lovely as the product of a large rural town and my amazing
  48. bottomless embroidered purse. Speak thy mind!
  49.  
  50. Thou art as loving as the product of the bluest clearest sweetest sky
  51. and the sum of a squirrel and a white horse. Thou art as beautiful as
  52. the difference between Juliet and thyself. Speak thy mind!
  53.  
  54. [Exeunt Ophelia and Hamlet]
  55.  
  56.  
  57. Act II: Behind Hamlet’s back.
  58.  
  59. Scene I: Romeo and Juliet’s conversation.
  60.  
  61. [Enter Romeo and Juliet]
  62.  
  63. Romeo:
  64. Speak your mind. You are as worried as the sum of yourself and the
  65. difference between my small smooth hamster and my nose. Speak your
  66. mind!
  67.  
  68. Juliet:
  69. Speak YOUR mind! You are as bad as Hamlet! You are as small as the
  70. difference between the square of the difference between my little pony
  71. and your big hairy hound and the cube of your sorry little
  72. Speak your mind!
  73.  
  74. [Exit Romeo]
  75.  
  76. Scene II: Juliet and Ophelia’s conversation.
  77.  
  78. [Enter Ophelia]
  79.  
  80. Juliet:
  81. Thou art as good as the quotient between Romeo and the sum of a small
  82. furry animal and a leech. Speak your mind!
  83.  
  84. Ophelia:
  85. Thou art as disgusting as the quotient between Romeo and twice the
  86. difference between a mistletoe and an oozing infected blister! Speak
  87. your mind!
  88.  
  89. [Exeunt]

Ezoterik programlama dilleri İlginç, değil mi ?

İçeriği Nasıl Buldunuz ?
  • 0
    harika
    Harika
  • 0
    g_zel
    Güzel
  • 0
    fena_de_il
    Fena Değil
  • 0
    berbat
    Berbat
İlginizi Çekebilir

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir