Programlama yapamayacağınız ilginç 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 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 bu işsizlik harikalarının dizayn prensiplerini inceleyelim ve daha sonra bu prensiplerin örneklerine göz atalım.

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ış.

Quine

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ı.

programlama

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 dili 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ç 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ı.

kod

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.

hello world

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”

Açıklama istiyorsanız  buraya tıklayarak ulaşabilirsiniz.

uygulama

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

 

İlginç, değil mi ?

guest
212 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments