Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
Brainf*ck
Edit
PageHistory
Diff
Info
LikePages
You are viewing an old revision of this page.
View the current version
.
![Brainf*ck] An interesting [ProgrammingLanguage]. It is very easy to learn, but can get extremely confusing. The language has 8 different commands which follow, and included is their purpose. They use a nameless pointer to manipulate an array of (typically) 30000 cells, all initially set to 0. The pointer starts at the left end of the array. ; + : Increment the value of the current cell by 1 ; - : Decrement the value of the current cell by 1 ; . : Print the current cell as a character to standard output [stdout(3)] ; , : Read a value from standard input to the current cell (these two use ASCII)[stdin(3)] ; > : Move the pointer to the next cell ; < : Move the pointer to the previous cell ; [ : Start of a loop. This essentially is a while loop which will keep iterating until the current cell equals zero. ie. while(x) { } ; ] : End of the while loop. Anything between these two language constructs will get executed whilst the while loop executes. As they say about [Perl]: ''There are many ways to skin a Camel'' This also holds true for [Brainf*ck]. Standard [Brainf*ck] thinks of every variable as an integer with a range of 0 through to 255. A variable in [Brainf*ck] is used by the < and > instructions. For example, the code: ++>++++< would mean the following: * Increment the current variable by 2 * Move to the next variable * Increment this variable by 4 * Move to the previous variable After this bit of code, the variable we are currently referencing has a value of 2, and the next variable has a value of 4. !Sample [HelloWorld] program The basic program to display the functionality of a programming language. The text string "Hello World\n" File: helloworld.bf ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++++++++++>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++.+++++++..+++.>++++++++++++++ ++++++++++++++++++.<<.>.+++.------.--------. >>+++++++++++++. A big archive of brainfuck programs and implementations is at http://esoteric.sange.fi/brainfuck/ . !Notes The language has the simple specification to ignore any character in the program source code which is not a valid brainfuck command. This allows us to put comments in our code, as long as we make sure we do not accidentally use one of the language constructs in our comments. [GerwinVanDeSteeg] is planning on writing his own Compiler and an Interpreter for this language sometime in the near future. There are some available already on the WorldWideWeb, to find one, try Google. !Brainfux0r I've just written one. Insomnia has its own imperatives. Here you go: [brainfux0r.ml | http://www.wave.co.nz/~glyn/brainfux0r.ml]. It is written in [Ocaml]. It has a compiler (it compiles to [C]), an imperative interpreter and a functional interpreter. The functional interpreter has an infinite Turing tape as memory. I wrote and rewrote this program several times to try out various Ocaml features. (I'm following the advice on StuffToCode.) --GlynWebster ---- ''There is someone in my head,''%%%''and it is not me.'' ;:''-- Pink Floyd, Brain damage''
4 pages link to
Brainf*ck
:
Forth
ML
WhiteSpace
StuffToCode