Convert the displaying of output to MVVM
[brainmess.git] / README.md
1 Brainmess
2 =========
3
4 This project contains multiple implementations of interpreters for the language
5 I call [Brainmess](http://en.wikipedia.org/wiki/Brainfuck). (Note, this links
6 to the wikipedia article that describes the language and gives it's *real*
7 name. The real name may by NSFW.)
8
9 I've normally taken the approach that the tape should be "infinite" in
10 both directions and therefore I tend to use a linked list.
11
12 I've used this programming exercise during Refactoring study groups, with
13 an emphasis on clean code and testability rather than on 
14 efficiency. Therefore, the implementations tend to be more "verbose" than
15 the implementations discussed at the Wikipedia site.
16
17 This abstraction presents itself as interfaces an extension methods in C#.
18 In Haskell, I created my own class to break the module circular dependencies.
19 In C I used header files to define modules with different implementations for
20 production and test.
21
22 <table>
23     <tr>
24         <th>Directory</th><th>Description</th>
25     </tr>
26     <tr>
27         <td>java</td><td>A Java implementation. A few unit tests.
28         The Java LinkedList works a little stranger than I expected.
29         I wrote a strange ListTraveler class to adapt the iterator
30         to my needs. Opens up in Eclipse.</td>
31     </tr>
32     <tr>
33         <td>csharp</td><td>A C# implementation. A lot of unit tests. At one
34         point it was 100% code coverage. Some refactorings have left
35         the coverage somewhat less. Opens up in Visual Studio 2010. The
36         code projects will open in MonoDevelop as well. The test projects
37         won't as they are MSTest. I'm considering switching to another
38         code coverage tool so I don't need to use MSTest.</td>
39     </tr>
40     <tr>
41         <td>haskell</td><td>A Haskell implementation. Some unit tests.
42         Compiles with ghc. Just type ghc brainmess.hs to compile.</td>
43     </tr>
44     <tr>
45         <td>csrc</td><td>A C implementation. No unit tests (I plan to
46         try CUnit.) Should compile by just typing make.</td>
47     </tr>
48     <tr>
49         <td>scripts</td><td>Some sample brainmess programs.</td>
50     </tr>
51 </table>
52
53 Other implementations that I plan to tackle: C++, Objective C, Javascript.