xFX JumpStart
Quick Links HomeDownloadPurchaseSupportSite MapPublic ForumsWhen I'm Bored
UtilitiesDHTML Menu BuilderKeyLaunchSoftLedsNice FoldersFile Extension ManagerNetToolsxFXMixerPopUp Killer VBBrainFNET News Description Download
APE for Traktor Pro
.NET ControlsDXVUMeterNETMixerProNET
ActiveX ControlsDXVU MeterMixerProFormShaperxFX Slider
GamesxFX Domino

Google
Web software.xfx.net

ROR

So you think this is a joke? No... it is not a joke; Brainfuck is a programming language (believe it or not) and VBBrainFNET is, by far, the most versatile, powerful and, above everything else, fastest IDE, debugger and interpreter for such programming language.

According to Wikipedia, Urban Müller created brainfuck in 1993 with the intention of designing a language which could be implemented with the smallest possible compiler [1], inspired by the 1024 byte compiler for the FALSE programming language. Several brainfuck compilers have been made smaller than 200 bytes. The classic distribution is Müller's version 2, containing a compiler for the Amiga, an interpreter, example programs, and a readme document.

The language consists of eight commands, listed below. A brainfuck program is a sequence of these commands, possibly interspersed with other characters (which are ignored). The commands are executed sequentially, except as noted below.

Commands

The eight language commands, each consisting of a single character, are the following:

Character Meaning
> increment the pointer (to point to the next cell to the right).
< decrement the pointer (to point to the next cell to the left).
+ increment (increase by one) the byte at the pointer.
- decrement (decrease by one) the byte at the pointer.
. output the value of the byte at the pointer.
, accept one byte of input, storing its value in the byte at the pointer.
[ jump forward to the command after the corresponding ] if the byte at the pointer is zero.
] jump back to the command after the corresponding [ if the byte at the pointer is nonzero.

(Alternatively, the ] command may instead be translated as an unconditional jump to the corresponding [ command, or vice versa; programs will behave the same but will run more slowly.)

So, VBBrainFNET is simply and IDE to aid in the development and debugging of brainfuck programs.
At this moment, VBBrainFNET provides the following features:

  • Editor to create, write, save and open brainfuck programs
  • Ability to distinguish between actual code and comments (brainfuck does not provide any "standardization" on how to include comments on a brainfuck program)
  • Fully-featured debugger (with support for break points)
  • Memory map viewer
  • Tracer
  • Support for 256 and 512 cell sizes
  • Ability to prettify the source code
  • Real-time conversion from brainfuck to ready-to-run Javascript, Visual Basic and C
  • Ability to save ready-to-run javascript versions of brainfuck programs
  • Ability to compile brainfuck programs into Windows EXE files (requires CL.EXE to be installed)
  • Ultra fast interpreter can easily execute an average of 60 million opcodes per second on a Pentium IV @ 2.6GHz

Known bugs:

  • The progress bar in the status bar may some times display corrupted information
  • The code editor is a bit buggy. Hopefully, I will soon be able to come up with a more stable version.

 

Benchmarks as of version 1.0.2944
I recently found a very nice and simple program, apparently developed by GreaseMonkey, that could be used to benchmark Brainfuck compilers:
++++++++[->-[->-[->-[-]<]<]<]
>++++++++[<++++++++++>-]<[>+>+<<-]>-.>-----.>

So I used in the latest version of VBBrainFNet and here are the results (compred to some other popular compilers and interpreters):

Compiler/Interpreter Cell Size   Time to complete
VBBrainFNet
1.0.2665
256 (8bit) ~ 4.5 seconds
512 (16bit) ~ 39.8 seconds
Brainfuck Developer
1.4.2.1
256 (8bit) ~ 4 seconds
512 (16bit) ???
(didn't finish after running
for over 10 minutes)
GreaseMonkey 256 (8bit) ~ 3.8 seconds

GreaseMonkey's compiler is a lot faster, being able to run the benchmarking code is less than 2 seconds but you cannot edit, debug, trace or do anything else other than run a brainfuck program and watch its output. Also, his compiler fails to run complex programs such PI16.b (to calculate PI) and mandelbrot.bf (used to display a fractal image). Both brainfuck programs, and many more, are included with VBBrainFNet.

I have to admit that the current code editor in VBBrainFNet is quite buggy, unstable and slow which kind of makes the application a plain compiler but, as I said before, this is something I plan on addressing pretty soon.

Other Brainfuck compilers