POSTS

I love programming languages!

Blog

I love them all! They’re all so mysterious and baffling. Each of them invites you to think a little bit differently.

(+ 1 2)

This is LISP. Lisp is a programming language from the 194060’s that’s still used today. Growing up I learned that 1+2 evaluates to 3. That’s what the above says too, but the operator is at the beginning of the statement. This is called Polish notation. Man. Talk about stretching your mind, that’s like asking you to think in reverse.

Speaking of thinking in reverse, on an HP12C calculator, my dad showed me that it uses Reverse Polish Notation. That’s cool too you say. ( 1 2 +)

You say so what. But what if you had a whole string of numbers to enter ( before you had Excel ).

( 32.44 152.16 0.32 +). See you only had to enter the “+” token once. Pretty handy. You would have had to hit a lot more “+” buttons if you needed to enter a long string of numbers.

Know what else is amazing about LISP, is that it’s functional programming. You know like you did in 7th grade math. A function

f(x)=x^2+3x+6

But that’s pretty cool too, because in LISP you could write programs like this

(* 2 (+1 2))

work from the inside out:: the answer is 6 [ or (*2 3) ] .

That’s pretty neat. Programming wise you could do something like

(decide_if_mail_is_spam(process_the_email an_email))

And that’s a very organized way to think about programming, process it, and then send the result to ‘decide_’.

And that’s just Lisp. There are other languages that do functional programming, languages that describe languages, languages to parse language descriptions, some are functional ( as I described above ) some are not.

It’s just like learning a new human language invites you to think differently about your syntactic structures and your brain is changed afterwards forever.

I think that the apple is red ( english )

Ik denk dat de appel rood is ( dutch)

1+2=

(+1 2)

…or….

(1 2 +)

Astounding. The verb inversion order of my dutch example above really makes a fun point. That you think differently when working in different languages - programming languages included. I realize this is no great realization for those is the code-mangling professions, but this is such a powerful idea I just wanted to say it here too.

And what about other languages like C or SmallTalk or Java or Ruby or Perl or … there are just so many. So many that can say different things about you and how you feel and how you think about the problem. They’re just so wonderful.

What a wonderful world I happen to live in where little squiggles and ideas of categorizing little squiggles makes me so happy. I guess this was really why I took Logic in college ( besides having to ;) ). Symbolic logic has the coolest squiggles.