There are many guides and such you can find with google, but this topic is both a guide and a discussion of Brainf*ck.
Now, in order to understand the complex of Brainf*ck, you'll need to know how it works.
In Brainf*ck there is a pointer called 'The Pointer' or p, p points to what element in the array ( which is per standard 30,000 bytes ), the pointer can be moved around through the elements, and numbers can be added/subtracted.
|<||moves the pointer one down or to the left, depends on how you see it, or you would say decreases|
|>||moves the pointer the other way, or increases|
|-||subtracts 1 from the respective element in the array|
|+||adds 1 to the respective element in the array|
|,||allows the user to type in a letter or string|
|.||prints out the respetive element|
|[||starts a while loop that will go on untill the element is 0 or in C: while(*p != 0)|
|]||ends the while|
Now that you know what it prints, and what the operators is, you should grap a calculator, otherwise it will live up to it's name for you.
Let's go through some basics. In order understand the pointer, I've made some small codes that would help you:
This will go to '4 ( being element number 4 in the array ) and then add 3 to it. So it would somewhat simlar to this:
|Array:     |
^ being the pointer.
In case we want to move that 3 to '3 instead of '4, it can be done with a loop command, which in this example should keep on untill '4 is 0;
Now, I am going to go much through this, if you want a more detailed tutorial, look here;
Now, if you want a compiler for it, one can be caughted here:
Note: You have to replace the * with u in the adress bar since this sh*tty forums edits 'fuck' to 'f*ck'.
I will start showing off a program that says; "Hi, svip":
Credit to Segosa for telling me of Brainf*ck, and for the tutorial link.