THE MOST AESTHETICALLY PLEASING PROGRAMMING
LANGUAGES
__________________________________________________
What is this about?
===================
I consider myself to be a hobby programmer. I like constructing
something which strictly follows logical rules to produce the
desired effect. This was always fascinating to me. Most of the
programs I wrote are more or less simple toys with under 1k lines of
code. I never tried to make a career out of it because I guess this
would also take the joy out of it. The other thing I have with
programming is that source code just looks so cool. As you may or
may not know the beauty of how a programs flows over the screen is
the most important aspect of any programming language. Here are my
favorites.
Brainfuck
=========
The complete language consists of only eight commands, so there is
absolutely no chance of finding a disruptive character or construct
in the source code (without comments of course). Since every command
takes up only one character you can arrange your code to have the
same number of characters on every line. This is absolute
perfection:
Note that the last two instruction do absolutely nothing. They are
only there to keep the character count per line even.
6502 assembler
==============
Like in Brainfuck the character length of each instruction is
constant. Each opcode consist of exactly three letters. Hex values
are indicated by a lovely dollar sign, number literals by a hash.
Every line of code is generally quite short. As long as you don't
overdo your commenting the source code fits approximately in a nice
square-like shape. Although your compiler is most likely
case-insensitive you absolutely have to write your code ALL-CAPS:
,----
| ;THIS SUBROUTINE ARRANGES THE 8-BIT ELEMENTS OF A LIST IN
| ;ASCENDING ORDER. THE STARTING ADDRESS OF THE LIST IS IN LOCATIONS
| ;$30 AND $31. THE LENGTH OF THE LIST IS IN THE FIRST BYTE OF THE
| ;LIST. LOCATION $32 IS USED TO HOLD AN EXCHANGE FLAG.
|
| SORT8 LDY #$00 ;TURN EXCHANGE FLAG OFF (= 0)
| STY $32
| LDA ($30),Y ;FETCH ELEMENT COUNT
| TAX ; AND PUT IT INTO X
| INY ;POINT TO FIRST ELEMENT IN LIST
| DEX ;DECREMENT ELEMENT COUNT
| NXTEL LDA ($30),Y ;FETCH ELEMENT
| INY
| CMP ($30),Y ;IS IT LARGER THAN THE NEXT ELEMENT?
| BCC CHKEND
| BEQ CHKEND
| ;YES. EXCHANGE ELEMENTS IN MEMORY
| PHA ; BY SAVING LOW BYTE ON STACK.
| LDA ($30),Y ; THEN GET HIGH BYTE AND
| DEY ; STORE IT AT LOW ADDRESS
| STA ($30),Y
| PLA ;PULL LOW BYTE FROM STACK
| INY ; AND STORE IT AT HIGH ADDRESS
| STA ($30),Y
| LDA #$FF ;TURN EXCHANGE FLAG ON (= -1)
| STA $32
| CHKEND DEX ;END OF LIST?
| BNE NXTEL ;NO. FETCH NEXT ELEMENT
| BIT $32 ;YES. EXCHANGE FLAG STILL OFF?
| BMI SORT8 ;NO. GO THROUGH LIST AGAIN
| RTS ;YES. LIST IS NOW ORDERED
`----
If you still not convinced keep in mind that the Terminator T-800
runs on a 6502 which is kind of cool in itself.
BASIC
=====
ALL-CAPS is equally essential in good old BASIC. Another nice
feature of the language is that line numbers are mandatory:
As you can see you don't even need fugly white-space to program in
BASIC. Nevertheless I inserted a space after each line number to
create a perfectly straight vertical divider.