Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
BeFunge - Wikipedia, wolna encyklopedia

BeFunge

Z Wikipedii

BeFunge jest ezoterycznym językiem programowania. Programy w nim, w odróżnieniu od większości języków programowania, są zorganizowane w dwuwymiarowej tablicy. Instrukcje "strzałkowe" ( < > ^ v ) powodują przeniesienia sterowania, a pętle są tworzone poprzez zorganizowanie sterowania "w kółko". Każda instrukcja w BeFunge jest oznaczana pojedynczym znakiem.

W języku BeFunge program wykonuje się czytając instrukcje poruszając się po dwuwymiarowym obszarze. Zatem "licznik programu" składa się z dwóch liczb, oznaczających współrzędne na tablicy programu. Natomiast do przenoszenia i przechowywania wszelkich danych służy stos (obsługiwany zresztą na podobnych zasadach co w językach Forth i False).

Autorem BeFunge jest Chris Pressey, który stworzył ten język w roku 1993, w zamierzeniu jako język o niezwykle trudnym do napisania kompilatorze (w jednym z komentarzy było nawet napisane, że kompilatora takiego nie dałoby się w ogóle napisać, bo musiałby on posiadać sztuczną inteligencję - jednak dało się napisać kilka kompilatorów do tego języka). Poza kompilatorami dla BeFunge-93 istnieją też kompilatory z odpowiednimi rozszerzeniami. Wartym uwagi jest Funge-98, w którym programy można organizować w przestrzeniach dowolnego wymiaru (dla 1 Unifunge, dla 2 BeFunge, dla 3 TreFunge itd.), a nawet posiada programowanie wielowątkowe, czyli w całej przestrzeni może być więcej niż jeden "licznik programu". Tego typu rozszerzenia są zwane Fungeoidami. Główne cechy języka Befunge:

  • 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ę progamu.

[edytuj] Instrukcje

Instrukcje, podobnie jak w języku Forth operują wyłącznie na stosie, tzn. argumenty operacji są zbierane ze stosu, wynik operacji jest odrzucany na stos.

Instrukcje sterujące
> Kieruje wskaźnik w prawo.
< Kieruje wskaźnik w lewo.
v Kieruje wskaźnik w dół.
^ 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 > jeśli liczbą tą było 0, albo jak < w przeciwnym razie.
| Warunkowa zmiana kierunku na pionowy: zdejmuje liczbę ze stosu i działa jak v jeśli liczbą tą było 0, albo jak ^ w przeciwnym razie.
Instrukcje obliczeniowe
+ 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).
 : Podwaja liczbę na szczycie stosu.
\ 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
0...9 Wkłada liczbę (jednocyfrową) na stos.
" Wkłada na stos kolejne napotykane znaki aż do ponownego napotkania znaku ".
. 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] Przykłady

Program, który liczy liczby losowe:

 vv  <      <
     2
     ^  v<
  v1<?>3v4
     ^   ^
 >  >?>  ?>5^
     v   v
  v9<?>7v6
     v  v<
     8
  .  >  >   ^
 ^<

Program wyswietlajacy "Hello world!":

 >                          v
 @,,,,,,,,,,,,"Hello World!"<

[edytuj] Podobne Języki

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com