2dpl - Google

2dpl

Z Wikipedii

Skocz do: nawigacji, szukaj

2dpl – 2-Dimensional Programming Language – ezoteryczny, jak go określa sam autor, język programowania, wzorowany na BeFunge.

Elementami języka są pojedyncze znaki, kodujące elementarne operacje oraz literały (stałe argumenty działań). Treść programu w 2dpl rozmieszczana jest na płaszczyźnie, w potencjalnie nieograniczonej dwuwymiarowej tablicy znaków. Wykonanie programu, to jest odczytywanie kolejnych znaków i wykonanie odpowiednich działań, może odbywać się w czterech kierunkach: poziomo, od lewej do prawej albo od prawej do lewej, oraz pionowo, z góry na dół i z dołu do góry. Cecha ta, wzorowana na BeFunge, odróżnia te języki od innych języków programowania, w których program zapisywany jest liniowo, jako ciąg znaków i symboli (w niektórych językach istotny jest podział na wiersze), i interpretowany w zasadzie w kolejności zapisu.

Dodatkową cechą, odróżniającą 2dpl od BeFunge, jest zmienna prędkość wskaźnika programu – interpreter może odczytywać każdy kolejny znak (instrukcję) programu, albo też co drugi, co trzeci, ... co n-ty. Sterowanie prędkością wskaźnika odbywa się poprzez odpowiednią konstrukcję programu (wykorzystanie instrukcji języka).

Na interpreter języka 2dpl składają się:

  • opisana tablica - pamięć tekstu progamu,
  • wskaźnik programu (wskazanie bieżącego punktu interpretacji),
  • parametry (kierunek i prÄ™dkość) ruchu wskaźnika programu,
  • stos obliczeniowy.

Główne cechy języka 2dpl:

  • arytmetyka caÅ‚kowitoliczbowa,
  • interaktywność – jÄ™zyk ma wbudowanÄ… prostÄ… operacjÄ™ wejÅ›cia, umożliwiajÄ…cÄ… zapytanie użytkownika o danÄ… (znak lub liczbÄ™),
  • brak symboli – jÄ™zyk nie definiuje symboli, w szczególnoÅ›ci nie ma w nim możliwoÅ›ci deklarowania staÅ‚ych, zmiennych i podprogramów,
  • mechanizm samomodyfikowania siÄ™ programu.

Spis treści

[edytuj] Instrukcje

Poniższa tabela przedstawia instrukcje języka.

Instrukcje sterujÄ…ce
X Kieruje wskaźnik w prawo.
x Kieruje wskaźnik w lewo.
Y Kieruje wskaźnik w dół.
y Kieruje wskaźnik do góry.
 ? Ustawia losowy kierunek dalszej interpretacji.
# Przeskakuje następną instrukcję.
@ Zatrzymuje interpretację (kończy program).
Instrukcje sterujÄ…ce warunkowe
_ Warunkowa zmiana kierunku na poziomy: zdejmuje liczbę ze stosu i działa jak X jeśli liczbą tą było 0, albo jak x w przeciwnym razie.
| Warunkowa zmiana kierunku na pionowy: zdejmuje liczbę ze stosu i działa jak Y jeśli liczbą tą było 0, albo jak y w przeciwnym razie.
Instrukcje obliczeniowe
0...9 Wkłada liczbę (jednocyfrową) na stos.
" Wkłada na stos kolejne napotykane znaki aż do ponownego napotkania znaku ".
+ Dodawanie (zdejmuje dwie liczby ze szczytu stosu i wkłada ich sumę na stos).
- Odejmowanie (zdejmuje dwie liczby i wkłada ich różnicę).
* Mnożenie (zdejmuje dwie liczby i wkłada ich iloczyn).
/ Dzielenie (zdejmuje dwie liczby i wkłada ich iloraz).
 % Modulo (zdejmuje dwie liczby i wkÅ‚ada resztÄ™ z ich dzielenia).
 ! Negacja logiczna (jeÅ›li liczbÄ… na szczycie stosu jest 0, zastÄ™puje jÄ… liczbÄ… 1, w przeciwnym razie zastÄ™puje jÄ… liczbÄ… 0).
` Porównanie "większe" (zdejmuje dwie liczby i wkłada 1, jeśli pierwsza była większa, albo 0 w przeciwnym razie).
 : Powiela danÄ… na szczycie stosu, wkÅ‚adajÄ…c na stos drugÄ… jej kopiÄ™.
\ Zamienia kolejność dwu najwyższych danych (znajdujących się na szczycie stosu).
$ Zdejmuje danÄ… ze szczytu stosu i odrzuca (ignoruje) jÄ….
Operacje wejścia i wyjścia
. Zdejmuje daną ze szczytu stosu i wypisuje na wyjście (ekran) jako liczbę.
, Zdejmuje daną ze szczytu stosu i wypisuje na wyjście (ekran) jako znak.
& Pyta użytkownika o liczbę i wkłada ją na szczyt stosu.
~ Pyta użytkownika o znak i wkłada go na szczyt stosu.
Manipulacje na treści programu
g Zdejmuje ze stosu dwie liczby, i używając ich jako współrzędnych do tablicy programu odczytuje znak z treści programu i umieszcza go na stosie.
p Zdejmuje ze stosu dwie liczby oraz znak, i uzywając tych liczb jako współrzędnych do tablicy programu umieszcza znak w treści progamu.

[edytuj] Ruch wskaźnika

Instrukcje X, x, Y i y ustalają nowy kierunek ruchu wskaźnika programu (kierunek interpretacji kolejnych instrukcji). Jeśli przy tym interpreter napotka jedną z tych instrukcji podczas ruchu zgodnego z określanym przez instrukcję, to prędkość wskaźnika zwiększa się o jeden. Jeśli zaś aktualny kierunek interpretacji jest przeciwny do określanego przez napotkaną instrukcję, a prędkość wskaźnika jest większa od 1, to kierunek nie ulega odwróceniu, a tylko zmniejsza się prędkość.


Ta sama reguła odnosi się do instrukcji ? – z tym zastrzeżeniem, że bieżący kierunek ruchu wkaźnika porównuje się do wylosowanego przez instrukcję nowego kierunku.

[edytuj] Przykład

Ten program wypisuje "Hello World!"

X                          Y
@,,,,,,,,,,,,"Hello World!"x

[edytuj] Podobne języki

[edytuj] Linki zewnętrzne


"Rozgrywającym ws. ustawy medialnej była lewica"
Platforma Obywatelska prowadziła arogancką politykę w zakresie ustawy medialnej w stosunku do SLD - twierdzi poseł niezrzeszony Maciej Płażyński.
Lubelskie: pogotowie przeciwpowodziowe
Wisła w Annopolu (Lubelskie) przekroczyła po południu stan alarmowy o 4 cm. W niżej położonych Puławach, poziom wody w rzece zbliżył się do stanu ostrzegawczego.
Lepper o Sejmie: to żenujące, kompromitacja
Andrzej Lepper, przewodniczący Samoobrony oświadczył w Olsztynie, że to, co dzieje się w Sejmie "jest żenujące", a "kłótnia między rządem, a pałacem prezydenckim kompromituje Polskę w oczach świata".
"Nie prowadzimy nagonki na Kurskiego i Wassermanna"
"Gazeta Wyborcza" nie prowadzi nagonki na posłów PiS Jacka Kurskiego i Zbigniewa Wassermanna. Wydaje się, że wyroki w procesach między "Gazetą" a nimi były sprawiedliwe - uważa z-ca redaktora naczelnego "Gazety" Piotr Pacewicz.
Pierwsza ofiara powodzi na Podkarpaciu
35-letni mieszkaniec Jabłonki w powiecie brzozowskim jest prawdopodobnie pierwszą ofiarą powodzi na Podkarpaciu. Ciało Grzegorza P. wyłowiono po południu z potoku Dydnianka, który wpada do Sanu.
Linki: Strona g³ówna