From a1b0f82c966d0ea8f31a729fc15b5161932f2a03 Mon Sep 17 00:00:00 2001 From: Niels Serup Date: Tue, 21 Feb 2012 22:55:12 +0100 Subject: [PATCH] Added non-serious pages. --- site/projects/img/magicng.png | Bin 0 -> 63960 bytes site/projects/index.org | 1 + site/projects/magicng/index.org | 290 ++++++++++++++++++++++++++++++++ site/writings/number-bases.org | 22 +++ 4 files changed, 313 insertions(+) create mode 100644 site/projects/img/magicng.png create mode 100644 site/projects/magicng/index.org create mode 100644 site/writings/number-bases.org diff --git a/site/projects/img/magicng.png b/site/projects/img/magicng.png new file mode 100644 index 0000000000000000000000000000000000000000..7c318eb96ca1d8b137f4f46208cf7650b549164d GIT binary patch literal 63960 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 Z{{ROLD+6kX!yEtr002ovPDHLkV1mkVXB+?k literal 0 HcmV?d00001 diff --git a/site/projects/index.org b/site/projects/index.org index 7a7a131..65773e4 100644 --- a/site/projects/index.org +++ b/site/projects/index.org @@ -13,6 +13,7 @@ These are my projects, new and old. #++exec #+BEGIN_SRC python3 top_projs = ( + 'magicng', 'gravnoise', 'hbcht', 'mege', diff --git a/site/projects/magicng/index.org b/site/projects/magicng/index.org new file mode 100644 index 0000000..93ab2f9 --- /dev/null +++ b/site/projects/magicng/index.org @@ -0,0 +1,290 @@ +#+title: MagicNG +#&summary +The Next Generation Programming Language +#& +#+license: bysa +#&toc + +* Chapter 1: The Future of Yesterday + +/Software./ + +/Magic./ + +Two seemingly unrelated words. Yet together they form the essentials of the new +programming language that has already changed how computers and humans interact +with each other: *MagicNG* (short for Magic: The Next Generation). + +*MagicNG* is not your common programming language; it is not biased towards one + or two paradigms, in fact it uses none of the existing ways of programming: + ++ Functional programming is, naturally, much too functional for any magic-based + programming language, as magic is not /functional/, but + /magical/. Magic-based software do not require functionality as in something + being able to do something else, because it depends on magic which /does/ + stuff instead of making sure that /stuff/ can be done; this makes using the + computer much faster. ++ Object-oriented programming does not fit very well with the ideas behind + *MagicNG* either. While the magic-oriented approach /is/ able to properly + emulate object-oriented ways of doing things, such emulations will often + require {CMU&abbr='Central Magical Unit'}-expensive conversions from spell + scrolls to object-based representations. ++ Procedural programming conflicts with the nature of magic; since in the case + of magic, advanced heuristics are used run a program, the simple approach of + procedurally executing commands pales in comparison to the magical + approach. The same is true for assembly programming and machine programming. ++ Logic programming is mute. Magic is always above logic. Logic is based on + magic. Everyone knows that. ++ Declarative programming is actually the only one of the existing widespread + paradigms which is even slightly like *magical programming*. Declarative + programming languages do, however, still base their entire existence on + deduction and knowledge, both of which are infinitely long below the + standards of magical programming languages. Deduction and knowledge are for + programming languages that do not /see/ how everything works, whose authors + do not understand the connectionabilities of everything. + +In short, *MagicNG* employs the *magical programming* paradigm because it is +superior to non-magical approaches. + + +** But how do I program in it? + +The reader should now be comfortable thinking about programming in terms of +magic and be able to see what a big mistake it was to learn all those outdated, +logic-based programming languages. The reader might also be a little +overwhelmed and perhaps confused; but fear not, we will soon take a look at an +example of MagicNG programming. + +Before we get to that, we will go over a few (yes, there are many more) of the +applications of magical programming, to pique the reader's curiosity. + +1. First, there is the temporal improvement. Since magic is independent of the + flow of time, a program can be run not just everywhere, but + every{/when/}. This is the sole reason MagicNG is already so popular --- + someone spread its use many years ago, through several temporal-offset + MagicNG runs. +2. Speed. The Central Magical Unit runs programs magically many times faster + than any CPU in existence. This is possible due both to the previously + explained effects of magic in programming /and/ what we will come to refer + as "magic downleveling" in later chapters (since magic cannot be optimized, + other approaches such as the downleveling approach have been developed). +3. Code maintenance also becomes much easier, as you will see in the examples + and excercises. + +Now, to our first example. We wish to print to a computer console (on a magical +computer) the magical string "Hello, world!". This is often accomplished in +anything from 1 to 100 conventional lines in conventional programming +languages; in MagicNG, it is not /that/ simple. It's another kind of simple, +namely the /magic simple/ way, from now on referred to as the /magple/ way. + +To write the magple MagicNG code for this example, we first fire up our MagicNG +interactive interpreter: + +#+BEGIN_SRC text +MagicNG vX +? +#+END_SRC + +(MagicNG is not being developed because it relies on magic for updates, hence +the 'X' version.) + +(The correct way to program in MagicNG is to write on pergament scrolls, but +for the beginner it is often easier to write the magical expressions on one's +computer and then print afterwards.) + +The =?= at the prompt means we can type something. Let us try typing the +following: + +#+BEGIN_SRC text +? one frog eye +#+END_SRC + +What this tells the MagicNG interpreter is that if /it is not the case/ that no +frog eyes exist in the programmer's vicinity, it will print "Hello, +world!". The frog-eye detection is only a formality, included in MagicNG to +make the proofs of magical truth be magically true, and so the sentence can be +excluded if the programmer wishes so. That is, you could write + +#+BEGIN_SRC text +t +#+END_SRC + +which is short for "one frog eye", and it would have the same effects. + +MagicNG programs can be compiled (printed) to scrolls, which can then be used +independently of a running magical computer. + +(Trivia: This was in fact one of the major reasons why the text-based nature of +MagicNG was chosen over the two other proposed ways of programming: speech and +jumping. While speech had the advantage that it worked well for people who had +difficulties writing, history had shown that the human memory was not a good +place to store information not meant to be changed. And while jumping was good +for people who were only good at jumping, it was too radical an approach for +many of the language designers.) + +Now, it may not be obvious to the casual non-magician why and how both "one +frog eye" and "t" eventually prints "Hello, world!". In fact, these two +expressions are not at all the only ways to print "Hello, world!" --- one can +also write "traveller with seven legs", "spider queen", or something +similar. The thing to remember is that it is /the intention/ that counts. If +you /feel/ that the expression "bonsai of Norway" prints the sum of all +prime numbers below 4012, then /that is what it does/. + +In essence, MagicNG is an *intention-based programming language*. This might at +first sound like all other programming languages: You have an intention on +which you base your programming. The difference here is that the intention /is/ +the programming and not just part of it. Once you have figured out what you +want and written in down in your inner language, magic takes care of the boring +stuff. + +This has the side-effect that all magic is somewhat personal; a scroll written +by an individual A might yield different results if used by an individual B +with different intentions than A. + +This means that MagicNG has *built-in encryption*. + +At this point some might note that this is not good for interoperability. At +the core of MagicNG, this is true. However, one extraordinary extension has +been made to MagicNG that makes interoperability both possible and easy: +MagicIS (short for Magic Intention Serializer). + +MagicIS encodes your intention in a magical format, after which the intention +is compiled along with your program. With MagicIS, a compiled program that +prints "My name is Niels" might look like this (imagine it compiled on a +scroll): + +#+BEGIN_SRC text +Holy oak of honey +,si:pmnin34_=UUe +#+END_SRC + +where the =,si:= part denotes the start of the serialized intention. + +The MagicIS extension can be enabled on most MagicNG compilers with a +command-line option. Note that it will need to be connected to your brain with +a special magical interface to work. + + +* Chapter 2: Real World Examples + +"This is all very nice," you might think, "but what is it any good for?" + +MagicNG can be used for everything a typical, non-magical language can be used +for, the major differences being that MagicNG is per definition faster, better +and easier to program in. This has been magically proven. + +** cat + +Consider the UNIX =cat= program. If written in C (even if you look at the Plan +9 version), there are many lines of source code. If written in Python 3, there +are 2 lines: + +#+BEGIN_SRC python3 +for line in open(filename): + print(line) +#+END_SRC + +If written in MagicNG, there is _one_ line (/and/ it is magical): + +#+BEGIN_SRC text +cauldron of candy +#+END_SRC + +(without MagicIS enabled.) + + +** Finding a value when a key is known + +In a non-magical programming language, you could use a hash map. Or you could +sort the elements by their keys and use binary search. Or you could look +through every element one by one. + +In MagicNG, no such algorithms are used; /magic/ finds the value. In fact, this +reveals a large, fascinating and unavoidable part of MagicNG: it does not +support algorithms. + +"No algorithms? But how, then, can I program?" you think. The answer is simple, +and it has been explained before, but to stress it one last time: /magic/. + +This leads us to another important part of MagicNG: its use of the *black box +model*. The /black box model/ has been revered all over the known universe for +its unchangeability (it is absolute), unworsenability (since you cannot change +it, you cannot make it worse), high suprise factor ("who knew my program could +do /that/?!"), and lack of meaningful error messages (no errors, no worries). + + +** Calculating the sum of a list of numbers + +In C: + +#+BEGIN_SRC c +int sum(int xs[], int xs_len) { + int fin_sum = 0; + int i; + for (i = 0; i < xs_len; i++) { + fin_sum += xs[i]; + } + return fin_sum; +} + +[...] + +sum({1, 3, -2, 9}, 4); +#+END_SRC + +In Python: + +#+BEGIN_SRC python3 +sum([1, 3, -2, 9]) +#+END_SRC + +In MagicNG: + +#+BEGIN_SRC text +head of Macbeth +#+END_SRC + + +** A flight simulator + +Up until now, we have only looked at MagicNG programs spanning single +lines. One can create a very powerful MagicNG program in one line, but +sometimes it can be necessary to use two, or even three lines. + +As a flight operator, you may wish to have a very durable and efficient 3D +flight simulator; in MagicNG such a system can be written concisely in just +three lines of magical code (four lines with MagicIS enabled). + +#+BEGIN_SRC text +dragon claw polished with golden mead + mead in cauldron +tastebuds of 23 pigs +,si:3=)uUUn!2aa +#+END_SRC + +(Notice the indentation and the explicit number.) + + +/[Chapters 3 through 88 have been excluded in this preview. Only members of +the Magically Magical Magic Community (MMMC) have access to these chapters.]/ + + +* Chapter 89: How to Learn More + +To recap: MagicNG is an easy language to learn, since it not only does not +require the user to learn about algorithms, data structures and related wastes +of time, but actually discourages that; MagicNG encourages its users to /not +think/ which /reduces errors/. + +To expand your knowledge of MagicNG, both in theory and practice, do not look +at the examples of other MagicNG programmers, unless you are *absolutely sure* +that their intentions are the same as yours. You can of course deduce the +intention from a MagicIS line, but then, if you wish to base a new program on +the old program, you will have to convert that intention to your own along with +the actual program, which can be tedious and very difficult (MagicNG is +actually a very complex language). + +What you should do is lean back in a comfy chair and look into nothingness and +not strain your mind. That way, everything you need to know will come to you +eventually. That's how this book was written. + diff --git a/site/writings/number-bases.org b/site/writings/number-bases.org new file mode 100644 index 0000000..fa3729c --- /dev/null +++ b/site/writings/number-bases.org @@ -0,0 +1,22 @@ +#+title: Number bases +#&summary +This is fairly serious. +#& +#+license: cc0 + +| Base | Description | +|-----------------------+----------------------------------------------------| +| u-nary | the always true base | +| bi-nary | the somewhat true base | +| tri-nary | hipster binary ("binary is so mainstream") | +| revolutio-nary | trinary instead of binary | +| counterrevolutio-nary | binary | +| imagi-nary | unary imagined to be useful | +| visio-nary | binary or trinary, depending on the person | +| statio-nary | trinary or binary, depending on the person | +| ordi-nary | base 10 ("this works, so why use something else?") | +| extraordi-nary | base 11 | +| veteri-nary | base 14 ("Tetra? Is that an animal?") | +| no-nary | unary | +| u-r-i-nary | binary (mind melt) | +| evolutio-nary | base 60 |