original C prototype
[maximus:kjhf.git] / prototype / NEWS
1 (For the sake of this proposal, it is better to consider the
2 language non-profane.)
3
4 'Brainfuck' is an esoteric programming language based on a
5 minimal Turing machine: it has a data tape and a code array,
6 the instructions in the code modify the data in cells on the
7 tape. Despite the presence of only a few simple instructions
8 in the language it is theoretically possible to compute
9 everything that can be computed within the Church/Turing
10 model of computation; further an even more minimal
11 derivative of Brainfuck, 'Boolfuck', restricts the data on
12 the tape to consist only of single bits (either 0 or 1).
13
14 Now, consider changing the structure of the data 'tape', in
15 particular extending it into a 2D hyperbolic plane.
16 Hyperbolic geometry allows many parallel lines to a given
17 line through a given point not on the line, with the
18 consequence that the hyperbolic plane has exponentially more
19 space than the common flat Euclidean plane.
20
21 Now, it is possible to tile the hyperbolic plane with
22 congruent shapes, in many more ways than flat space can be
23 tiled.  For example, with one particularly shaped pentagonal
24 tile, one can tile the hyperbolic plane in uncountably
25 infinitely many ways.  To navigate in this new arrangement
26 of cells in this hyperbolic pentagonal tape, one adds three
27 new instructions to the language: in addition to moving the
28 cursor in the data tape East and West, new instructions
29 allow moving North, South-East and South-West.
30
31 This best visualised in the PoincarĂ© half-plane model of
32 hyperbolic geometry, in which shapes are distorted to give a
33 horizon at infinity to the South (compare with the PoincarĂ©
34 disk model in which there is a circular horizon at infinity,
35 most popularized by M C Escher's 'Circle Limit I-IV'
36 prints).
37
38 This 2D hyperbolic modification of 'Boolfuck' I call
39 'Hyperfuck', for fairly obvious reasons.
40
41 Now, the pentagonal tiling described above has a kind of
42 tree-like memory property: if you proceed from a starting
43 location and head North, you might enter the pentagon above
44 from either its South-East edge or its South-West edge: this
45 allows information to be encoded in the geometry of the
46 initial 'Garden Of Eden' configuration of the system.  By
47 modifying data in the cells and moving suitably, comparing
48 the results of the movements with what you expect allows you
49 to recover the stored bitstream.  Further, this information
50 need have no bound, for example one could encode an infinite
51 library of every book ever written and that ever will be
52 written (compare with Borges, the Shakespeare Typing
53 Monkeys, and the text entry software 'Dasher').
54
55 However,  a suitable source of information if a programmer
56 is to be able to write useful programs more easily needs to
57 be widely known and predictable: thus I propose the ASCII
58 bitstream of a certain authorized version of the Christian
59 Bible.
60
61 This liturgical modification of Hyperfuck I call 'King James
62 Hyperfuck', for fairly obvious reasons.
63
64 Now that the theoretical background to the project is
65 explained, I can proceed to the concrete proposal: to
66 implement a graphical King James Hyperfuck interpreter that
67 will run in a web browser, using Javascript and either SVG
68 or Canvas (to be decided).  There will be a facility to
69 choose from a library of simple example programs, and in
70 addition the visitor can write their own code to execute.
71 The interpreter will provide a visualisation of the
72 hyperbolic data tape and its mutation by the running code;
73 the code tape will also be displayed.  The output of the
74 program will be displayed as it is generated.
75
76 The first example program will reconstruct the text of the
77 King James Bible; its source code:
78
79     +[^/+;^+]
80  
81 The web installation will also present the visitor with the
82 theoretical background to the project, to enlighten and
83 inform.
84
85 Current state of the project: I have an unpublished
86 interpreter implemented in the C programming language
87 (though its algorithms need some minor tweaks to cope with
88 pathological bitstreams), and I have worked out the required
89 geometric shape of the pentagonal tiling when embedded in
90 the PoincarĂ© half-plane model of hyperbolic geometry.  I
91 have prior experience of Javascript/SVG/Canvas programming
92 and modelling hyperbolic geometry, so I am confident I can
93 fully implement this proposal.
94
95 References:
96
97 http://en.wikipedia.org/wiki/Brainfuck
98 http://web.archive.org/web/20070403131306/http://www.rpi.edu/~hughes/boof/
99 http://en.wikipedia.org/wiki/Uniform_tilings_in_hyperbolic_plane
100 http://en.wikipedia.org/wiki/Poincar%C3%A9_half-plane_model
101 http://en.wikipedia.org/wiki/The_Library_of_Babel
102 http://en.wikipedia.org/wiki/Infinite_monkey_theorem
103 http://en.wikipedia.org/wiki/Dasher
104 http://www.gutenberg.org/etext/10
105