Boşluk (programlama dili) - Whitespace (programming language)

Sözdizimi vurgulamalı boşluk merhaba dünya programı
  sekmeler
  boşluklar

Whitespace , Durham Üniversitesi'nde Edwin Brady ve Chris Morris (ayrıca Kaya ve Idris programlama dillerinin geliştiricileri) tarafından geliştirilen ezoterik bir programlama dilidir . 1 Nisan 2003'te ( Nisan Şakası Günü ) yayınlandı. Adı boşluk karakterlerine bir referanstır . Çoğu boşluk karakterini yok sayan veya çok az anlam atayan çoğu programlama dilinden farklı olarak, Boşluk yorumlayıcısı boşluk olmayan karakterleri yok sayar. Yalnızca boşluklar , sekmeler ve satır beslemeleri anlamlıdır . Bu özelliğin bir sonucu olarak, Python gibi sözdizimi geçerliliği için boşluklara bağlı olan ve metni çok dilli yapan diller dışında, bir Boşluk programının başka bir dilde yazılmış bir programın boşluk karakterleri içinde kolayca bulunabilmesidir .

Dil kendisi bir zorunluluk yığın tabanlı dil . Sanal makine programları üzerinde çalıştığı bir yığın ve sahip yığın . Programcı, yığına isteğe bağlı genişlikte tamsayılar göndermekte serbesttir (şu anda kayan noktalı sayıların uygulanması yoktur) ve ayrıca yığına değişkenler ve veri yapıları için kalıcı bir depo olarak erişebilir .

Tarih

Whitespace, 2002 yılında Edwin Brady ve Chris Morris tarafından oluşturuldu. Slashdot , 1 Nisan 2003'te bu programlama dilinin bir incelemesini yaptı .

C++ dili için operatörler olarak boşluk karakterlerini kullanma fikri, beş yıl önce Bjarne Stroustrup tarafından esprili bir şekilde önerildi .

Sözdizimi

Komutlar, boşluk dizilerinden, sekme duraklarından ve satır beslemelerinden oluşur. Örneğin, sekme-boşluk-boşluk, yığındaki en üstteki iki öğenin aritmetik olarak eklenmesini gerçekleştirir. Veriler, boşluklar (0) ve sekmeler (1) kullanılarak ikili olarak temsil edilir ve ardından bir satır beslemesi gelir; bu nedenle, boşluk-boşluk-boşluk-sekme-boşluk-sekme-sekme-satır besleme, ondalık olarak 11 olan ikili sayı 0001011'dir. Diğer tüm karakterler yok sayılır ve bu nedenle yorumlar için kullanılabilir.

Kod, Komut Modifikasyon Parametresi (IMP) olarak yazılır ve ardından işlem yapılır. Aşağıdaki tablo, Boşluktaki tüm IMP'lerin bir listesini gösterir.

IMP Anlam
[Uzay] Yığın Manipülasyonu
[Sekme][Boşluk] Aritmetik
[Sekme][Sekme] Yığın Erişimi
[Satır besleme] Akış kontrolü
[Sekme][Satır Beslemesi] G/Ç

Her IMP'yi, o IMP için tanımlanan bir işlem ve gerekirse bir parametre izler. Boşlukta desteklenen işlemlerin listesi:

IMP Emretmek Parametre Anlam
[Uzay] [Uzay] Numara Sayıyı yığının üzerine itin
[Uzay] [LF][Boşluk] - Yığındaki en üstteki öğeyi çoğaltın
[Uzay] [Sekme][Boşluk] Numara Yığındaki (argüman tarafından verilen) n'inci öğeyi yığının üstüne kopyalayın
[Uzay] [LF][Sekme] - Yığındaki ilk iki öğeyi değiştirin
[Uzay] [EĞER EĞER] - Yığındaki en üstteki öğeyi atın
[Uzay] [Sekme][LF] Numara En üstteki öğeyi koruyarak n öğeyi yığından kaydırın
[Sekme][Boşluk] [Boşluk][Boşluk] - Ek
[Sekme][Boşluk] [Boşluk][Sekme] - Çıkarma
[Sekme][Boşluk] [Boşluk][LF] - Çarpma işlemi
[Sekme][Boşluk] [Sekme][Boşluk] - Tamsayı Bölümü
[Sekme][Boşluk] [Sekme][Sekme] - Modül
[Sekme][Sekme] [Uzay] - Yığında saklayın
[Sekme][Sekme] [Sekme] - Yığından al
[LF] [Boşluk][Boşluk] Etiket Programda bir yeri işaretleyin
[LF] [Boşluk][Sekme] Etiket Bir alt programı çağırın
[LF] [Boşluk][LF] Etiket Bir etikete atla
[LF] [Sekme][Boşluk] Etiket Yığının üstü sıfırsa bir etikete atla
[LF] [Sekme][Sekme] Etiket Yığının üstü negatifse bir etikete atla
[LF] [Sekme][LF] - Bir alt yordamı sonlandırın ve kontrolü arayana geri aktarın
[LF] [EĞER EĞER] - Programı sonlandır
[Sekme][LF] [Boşluk][Boşluk] - Yığının en üstündeki karakteri çıkar
[Sekme][LF] [Boşluk][Sekme] - Yığının en üstündeki sayıyı çıkar
[Sekme][LF] [Sekme][Boşluk] - Bir karakter okuyun ve onu yığının en üstünde verilen yere yerleştirin
[Sekme][LF] [Sekme][Sekme] - Bir sayı okuyun ve yığının üst tarafından verilen yere yerleştirin

"Kopyala" ve "kaydır" işlemleri, Beyaz Alan 0.3'e eklenmiştir ve tüm uygulamalar tarafından desteklenmeyebilir.

Basit kod

Aşağıdaki, basitçe "Merhaba, dünya!" yazdıran yorumlu bir Beyaz Alan programıdır. , burada her Boşluk , Sekme veya Satır Besleme karakterinden önce sırasıyla "S", "T" veya "L" tanımlayıcı yorum gelir:

S S S T	S S T	S S S L
T	L
S S S S S T	T	S S T	S T	L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	S T	T	S S L
T	L
S S S S S T	S S S S S L
T	L
S S S S S T	T	T	S T	T	T	L
T	L
S S S S S T	T	S T	T	T	T	L
T	L
S S S S S T	T	T	S S T	S L
T	L
S S S S S T	T	S T	T	S S L
T	L
S S S S S T	T	S S T	S S L
T	L
S S S S S T	S S S S T	L
T	L
S S L
L
L

Bazı tarayıcılarda Boşluk kaynak kodu görüntülendiğinde, bir sekme karakteri tarafından üretilen yatay aralığın sabit olmadığını, metindeki sonraki yatay sekme durağına göre konumuna bağlı olduğunu unutmayın . Yazılıma bağlı olarak, sekme karakterleri de karşılık gelen değişken sayıda boşluk karakteriyle değiştirilebilir.

Ayrıca bakınız

Referanslar

  1. ^ a b c d "Boşluk" . Compsoc . Arşivlenmiş orijinal 18 Haziran 2015 tarihinde . Erişim tarihi: 8 Aralık 2015 .
  2. ^ Timothy (1 Nisan 2003). "Yeni Yalnızca Boşluk Programlama Dili" . Slashdot . 23 Ocak 2014 tarihinde alındı .
  3. ^ Stroustrup, Bjarne. "C++2000 için Aşırı Yüklemeyi Genelleştirme" (PDF) . Florham Park, NJ, ABD: AT&T Labs . 23 Ocak 2014 tarihinde alındı .

Dış bağlantılar