__________________________________________________

              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:

  ,----
  | 100 REM+++++++++++++++++++++
  | 100 REM+     COMPUTE PI    +
  | 120 REM+++++++++++++++++++++
  | 200 N=100:S=0:C=1/N
  | 220 FORI=1TON
  | 230 X=(I-0.5)*C
  | 240 S=S+(4/(1+(X*X)))
  | 250 NEXTI
  | 300 PRINT"PI IS",S*C
  | 320 REM=====================
  `----

  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.