For faster navigation, this Iframe is preloading the Wikiwand page for Brainfuck (programlingvo).

Brainfuck (programlingvo)

Brainfuck estas minimumisma komputillingvo kreita de Urban MÜLLER ĉirkaŭ 1993. Ĉar "fuck" estas fivorto en la angla, la lingvo estas ankaŭ nomata Brainf*ck, Brainf***, (ŝerce) B****fuck[1], aŭ simple BF.

La celo de Müller estis krei simplan Turing-kompletan komputillingvon, kiu povus esti implementita per kiel eble plej malgranda tradukilo. La lingvo konsistas el nur ok instrukcioj. Versio 2 de la originala tradukilo, verkita por la komputilo Amiga, estis nur 240 bitojn granda.

Kiel sugestas la nomo ("Brainfuck" signifas "Cerbofiko"), programoj en Brainfuck inklinas al nekomprenebleco, kvazaŭ tiom, ke la programisto freneziĝu. Tamen, la Turing-maŝino, do tial ankaŭ Brainfuck, povas plenumi ajnan komputan taskon. Malgraŭ la malfacileco programi iajn taskojn en Brainfuck, tamen certe eblas fari tiel.

La lingvo estas bazita sur simpla maŝinmodelo, kiu konsistas el, krom la programo, tabelo komence nula, indiko al la tabelo (komence indikas al la unua bitoko de la tabelo), kaj du vicoj da bitokoj por enigo kaj eligo.

La unuaj ok instruckioj, ĉiu nur unuliteraj, estas:

SignoSignifo
> altigu la referencon je unu paŝo
< malaltigu la referencon je unu paŝo
+ altigu la bitokon ĉe la referenco je 1.
- malaltigu la bitokon ĉe la referenco je 1.
. eligu de la bitoko ĉe la referenco (en Askio).
, enigu al la bitoko ĉe la referenco (en Askio).
[ saltu antaŭen al la instrukcio post la responda ] se la bitoko ĉe la referenco estas nula.
] saltu malantaŭen al la responda [.

(Por simetrieco, iuj diras ke ] saltas reen nur se la bitoko ĉe la referenco estas nenula, sed fine estas tute egale.)

Brainfuck-programoj povas esti transliteritaj al C per la jenaj anstataŭoj, kie ptr estas de datumtipo char*:

BrainfuckC
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }

Ekzemploj

[redakti | redakti fonton]

Saluton, mondo!

[redakti | redakti fonton]

Programo kiu eligas sur la ekrano "Hello, world!" ("Saluton, mondo!"), per unu linio de kodo kaj sen notoj, estas:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

Brainfuck estas tre interesa pro ĉi tiu kazo, ĉar "Saluton, mondo" programo estas nek malgranda nek facile verkebla!

Enigo/eligo de signoj

[redakti | redakti fonton]

,.

Enigi unu signon de la klavaro kaj eligi ĝin al la ekrano

Simpla itero

[redakti | redakti fonton]

,[.,]

Sindaŭriga itero kiu prenas klavaran enigon kaj eĥigas ĝin al la ekrano. Rimarku ke ĉi tiu supozas ke 0 estas la signalo de enigofino; implementoj varias pri ĉi tiu temo. Versioj por -1 kaj "neniu ŝanĝo" estas ,+[-.,+] and ,[.[-],]

Manipulado de referencoj

[redakti | redakti fonton]

,[.>,]

Versio de la lasta ekzemplo kiu ankaŭ konservas ĉiun enigon en la tabelo por estonta uzo, per ĉiufoje movi la referencon.

Referencoj

[redakti | redakti fonton]

Vidu ankaŭ

[redakti | redakti fonton]
  • Ook

Eksteraj ligiloj

[redakti | redakti fonton]
{{bottomLinkPreText}} {{bottomLinkText}}
Brainfuck (programlingvo)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?