The Truth About Lisp
In which the truth about lisp is revealed, and some alternatives are enumerated.
Learning lisp will alter your life.
Your brain will grow bigger than you ever thought possible.
You will rewrite all of your applications in just a handful of lines
Society will shun you. You will shun society.
You will become disatisfied with everything and everyone around you.
Lisp is so simple to learn that you can learn lisp in just a few minutes. I just learnt it now while I was waiting for a bus.
Lisp is so simple that you can implement it in any language in just a few pages of code. This might never happen though, because once you've learnt lisp you'd never want to write anything in any language other than lisp, so you wouldn't bother implementing lisp in any language other than lisp.
Lisp can be fully implemented in lisp in just a handful of lines. I just implemented lisp in lisp, fully, while i was hopping onto a bus and paying for my bus ticket all at the same time.
When you become a lisper, you will laugh at jokes that no one else thinks are funny. You will know things that cannot be expressed in ordinary imperative language.
You will think people are idiots when they state things like "Hi, how are you?" because a lisper simply doesn't need to use such verbose constructs. Lisp abstracts away those patterns of interaction and makes them completely irrelevant. The proper way to greet a fellow lisper is just a tiny nod of the chin, and about a tenth of a wink from your left eye, then point at your tin foil hat. They will know what you mean. if they don't know what you mean then they are not a true lisp programmer and they don't matter anyway.
Lisp was invented a long time ago, before java, before C, before fortran, before computers, before people, before the earth was built. the universe itself is a lisp program so trivial that no true lisper would even both implementing it.
Lisp is so elegant that the very fact that you know even the first thing about it will qualify you for a season as principal dancer of the royal ballet. You will go out on stage in your little tutu and just scribble a few round brackets in the air with your toe. People will gasp in wonder. Unless they don't know any lisp. If they don't know any lisp then they are idiots and they don't matter.
Only lispers have a true definition of fun. Maybe ML programmers too. All of today's languages are based on fortran and lisp. The bad bits fortran, the good: lisp.
If you're good enough to use lisp, you'll soon be frustrated with lisp. Lisp is not an adequate lisp. By the time my bus had made it two blocks I'd written some simple lisp macros that were so powerful they made lisp completely obsolete and replaced it with a new language. Fortunately, that new language was also called lisp. And i was able to prove, mathematically, that the new lisp i'd created was both far superior to lisp in every conceivable way, but also exactly equivalent to lisp in every possible way. I was very excited by this. But also found it very boring.
Reddit is proof that lisp is really powerful. Paul Graham originally wrote reddit, in lisp, on the back of a napkin while he was waiting for a coffee. it was so powerful that it had to be rewritten in python just so that ordinary computers could understand it. Because it was written in lisp it was almost no effort to rewrite the entire thing, and the rewrite was completed in-between two processor cycles. Paul Graham himself was completely written in lisp, by an earlier version of himself, also written in lisp, by an earlier version of lisp. It's lisp, paul graham, lisp, paul graham, all the way down.
Because we've reached the limits of moore's law, the computers of the future will have many-core processors and all our programs will need to be written in a combination of haskell and lisp, that will itself be so powerful that the computers of the future will not be able to implement any of our ideas without creating time-travelling algorithms that borrow processing power from other computers that are further into the future. This sounds difficult, but in lisp it isn't difficult at all. in haskell this is a built-in feature and the way you implement it is just a no-brainer to any one who knows lisp or haskell.
After that, the computer of the future will be called The Lisputer. It's speed will be measured using the Lispunit, which is a measure of how many simultaneous arguments about the inadequacy of lisp can be proposed and defeated by an infinite number of lisp pundits without any actual decisions being made. Today's computers run at just under one lispunit. The Lisputer will run at lisp Lispunits, where lisp is a fundamental maximum constant of the universe that can't be expressed using ordinary imperative numerals. Suffice to say that it ends with an infinite number of closing parentheses.
Anyway. i read an article about lisp on the bus today. Top article. All the articles on lisp are really full on -- my brain starts to explode out my ear. This one, lisp is sin, was by Sriram Krishnan, in which he talked about doing C# for work, but Lisp for fun. And he touched on some of the ways in which C# is moving toward lisp.
Here's some of the technologies that the commentors at that article suggested as possible substitutes for a lisp addict:
- chez scheme
- Common Larceny
- C Omega
- C# with Linq
Also, one person suggested porting the python libraries to lisp.
Curious for its absense: Ruby (see article Why Ruby is an acceptable lisp, and steve yegge's response: 'lisp is not an acceptable lisp')
(p.s. first person to write a comment that says "Paul Graham did not write reddit" deserves a lollipop.)
'joe' on Sun, 24 Sep 2006 23:56:08 GMT, sez:
You forgot dylan which is (supposedly) better lisp then lisp.
Oh and Paul didn't write reddit, he just funded it.
'paul stovell' on Mon, 25 Sep 2006 00:04:46 GMT, sez:
You rock Leon, love the article. Forget WPF, I'm learning lisp.
'joe' on Mon, 25 Sep 2006 00:07:49 GMT, sez:
I also forgot to say "haskell". Do I get a lollipop?
'Farmer Jeb' on Mon, 25 Sep 2006 01:14:51 GMT, sez:
It sounds to me like you're actually having a bit of a go at LISP types. Is this article completely sincere?
'lb' on Mon, 25 Sep 2006 01:27:57 GMT, sez:
(no (not (not (really (it is))))
'Don't forget S#' on Mon, 25 Sep 2006 01:38:37 GMT, sez:
'Locutus of Borg' on Mon, 25 Sep 2006 05:59:40 GMT, sez:
Somehow I expected Chuck Norris to appear in that article.
'HitScan' on Mon, 25 Sep 2006 09:57:11 GMT, sez:
Well, a roundhouse kick to the face /is/ a lot like a closing brace. Chuck Norris invented Lisp.
'Peter' on Mon, 25 Sep 2006 15:39:11 GMT, sez:
Leon, I am here to tell you that this is an awesome article.
There are hundreds (perhaps infinite numbers) of similar comments, but as anyone who knows a thing about Lisp knows, these comments are lazy-evaluated and will only arrive when absolutely necessary.
Until that time, I'll just say that this was awesome, my favorite since Defensive Programming!
'Mohamed Samy' on Mon, 02 Oct 2006 15:10:20 GMT, sez:
I think there's a small typo: Nermerle is actually spelled Nemerle :)
Great article, by the way! It's been long since I laughed so loudly :)
'Alistair' on Mon, 16 Apr 2007 09:48:02 GMT, sez:
Blinder, I feel compelled to pass this onto a mate who has been bitten by the Lisp bug!
'McD' on Mon, 16 Apr 2007 15:34:56 GMT, sez:
I've read that once you fully understand LISP you can see posts like this as being "fuzzy headed" and sophomoric.
I don't fully understand LISP and so it appears you've saved me a thorough brainwashing.
To LISP or NOT to LISP. What was the question?
(off to follow more links to confusing advice about languages that seem to have no real GUI API's and are thus... closer to the hardware design of the original IBM mainframe).
'nl' on Tue, 17 Apr 2007 01:22:15 GMT, sez:
what about newlisp?
'Adam Bloom' on Tue, 17 Apr 2007 03:41:54 GMT, sez:
Once you fully understand LISP, you will be so far beyond posts like this that half-way through the post you will have written a LISP program that both contradicts and proves every point simultaneously.
'Gernot Starke' on Tue, 17 Apr 2007 03:44:41 GMT, sez:
blogged about the merits of LISP myself, found it (too bad) practically unusable since many years, as it lacks basic infrastructure support. Who the hell wants emacs-based IDE's nowadays (I don't!).
thanx for a great essay,
'Drew' on Tue, 17 Apr 2007 07:38:33 GMT, sez:
The universe cannot be written fully functionally: reading a variable (a measurement) changes the value of the variable :)
So even God used imperative programming... Maybe that is why there are so many suffer in this world ;)
'Chris' on Tue, 17 Apr 2007 14:18:29 GMT, sez:
PS: Timesnapper rocks.
'smug lisp weenies' on Sun, 22 Apr 2007 16:33:23 GMT, sez:
i wrote yahoo shopping in lisp and sold it for $$$$$$$$$$$$ during height of internet bubble. now i dont have to do anything except to pontificate that i am a superior programmer. lisp made me rich and famous.
'Duane Johnson' on Mon, 23 Apr 2007 03:47:05 GMT, sez:
Io (see iolanguage.com) is also lisp-like in its power, but more modern in its implementation of operators.
'lb' on Mon, 23 Apr 2007 22:17:13 GMT, sez:
Japanese translation available here:
note to self -- links to japanese translation from top of page.
'Ashkan' on Sat, 19 May 2007 11:14:02 GMT, sez:
LOL! You made my day man =)) very funny.
'patrick giagnocavo' on Wed, 11 Jul 2007 01:08:38 GMT, sez:
Chuck Norris did not invent Lisp. Bruce Lee brought a small jade box with him out of China that had the first version of eval written on it.
However since the Chinese at that point did not have computers they considered it just an intellectual curiosity; also the strict binding of types as practiced by Confucius made eval almost heretical.
Chuck Norris invented the hard drive platters that he needed to store Lisp on, by placing 4 nickels in between the wheels of an old kids' rollerskate and then setting that on top of a broken transistor radio. Then he roundhouse kicked it together.
The only protocol the first drive used was a binary protocol called FIST ONE AND TWO .
'astroboy' on Thu, 19 Jul 2007 13:13:27 GMT, sez:
I only commented because the captcha image told me to write 'astroboy' and i found that hilarious =)
oh yeah, good article. lisp is above any other programming language.
'gamer' on Tue, 24 Jul 2007 22:00:57 GMT, sez:
lol, I also the word "astroboy". Are all captcha same?
Btw, excellent article. I don't want to learn lisp.
'lb' on Tue, 24 Jul 2007 22:03:06 GMT, sez:
>Are all captcha same?
ahhh... as a matter of security i don't discuss matters of security... (that's the kind of recursive statement that lisp lovers live for)
'Gold Mastes' on Tue, 04 Sep 2007 06:27:54 GMT, sez:
Well, a roundhouse kick to the face /is/ a lot like a closing brace. Chuck Norris invented Lisp.
'RV' on Tue, 30 Oct 2007 12:03:51 GMT, sez:
Glad to know this is easy to learn!
'Randy' on Fri, 09 Nov 2007 10:54:22 GMT, sez:
I agree that lisp is so simple that you can implement it in any language in just a few pages of code.
'La Monte H.P. Yarroll' on Sun, 11 Nov 2007 20:49:45 GMT, sez:
This space reserved for jelly stains.
'Brian Adkins' on Mon, 28 Jan 2008 22:55:21 GMT, sez:
Not sure which is funnier - the Paul Graham stuff or the Chuck Norris stuff :)
'Mentifex' on Sun, 10 Feb 2008 02:33:13 GMT, sez:
The entire LISP language can be one single word in Forth.
'MMA' on Tue, 29 Apr 2008 05:31:50 GMT, sez:
glod to read ur article , it's very good !
'CaseClosed!' on Tue, 06 May 2008 22:08:54 GMT, sez:
Loved it! Been on a long road to Lisp myself - and recently found a spanking new Lisp that roundhouse kicks the others to smithereens.
Check it out:
'sinbad' on Mon, 11 Aug 2008 04:16:40 GMT, sez:
Haha I bet Paul Graham regrets all the money he made with Lisp now dude!
'roscoecasita' on Mon, 11 Aug 2008 23:52:07 GMT, sez:
'kyaw kyaw naing' on Fri, 12 Sep 2008 12:29:25 GMT, sez:
http://ethicminds.blogspot.com/ has a nice post on why Lisp is not ready for useful programming.
'Kaveh Shahbazian' on Mon, 05 Jan 2009 23:20:19 GMT, sez:
You should check out http://www.iolanguage.com/; it is just fabulous!
'James Kenwood' on Fri, 30 Jan 2009 22:36:47 GMT, sez:
Hi everyone. I am 17 year old and I know a little about the basis of computers and programming. I know very little C. I understand very well topics like memory-management, CPU architecture and the factors of the difference in speed and memory between High-Level and Low-Level Languages (or between two "Same-Level" Languages). I have just started learning a little Lisp, and I found it very interesting, especially about it's reflectiveness (not saying I feel I am just starting to love it). However I haven`t gone into the process of learning and using it profoundly. I just wanted to know your opinion about some things that make me unsure about this language:
Is this language worth using, or at least learning it? Should I concentrate into learning it deep into its bases??
Is it's speed and computer resource management comparable or acceptable in comparison with other market/industry mainstream programming languages?
Sorry for my bad english and thanks in advance!
'lb' on Sat, 31 Jan 2009 00:46:38 GMT, sez:
>Is it's speed and computer resource
>management comparable or acceptable in
>comparison with other market/industry
>mainstream programming languages
i would say yes to this.
'mat roberts' on Tue, 03 Feb 2009 18:35:50 GMT, sez:
I know someone who implemented a Lisp interpreter in Perl. Which brings to mind the words sublime and ridiculous.
'Jessica Simpson Boots' on Sun, 12 Jul 2009 16:50:25 GMT, sez:
I would love to learn lisp. I bet it's a tough programming language to learn.
'(stringNameOfPerson Lispunit)' on Sat, 28 Nov 2009 11:39:27 GMT, sez:
((((LispunitFromPersonsName "Ben F Rayfield")
'Alpheus' on Tue, 04 May 2010 15:59:20 GMT, sez:
I've been convinced that I need to learn Lisp, but am still in the early (and very oh-where-are-the-libraries-I'm-used-to? painful) stage of learning it.
Nonetheless, I'd still consider myself a Smug Lisp Weenie--yet I really enjoy this page. In an odd sort of way, it reminds me that I should be learning Lisp!
'Ben F Rayfield' on Tue, 29 Jun 2010 18:20:13 GMT, sez:
I'm less confused about it now, having thought about how to build a Lisputer... I'll explain the plan. First, build Schrodingers Network Router (a peer-to-peer networking software), the build Lisputer to control it, as a plugin.
Copy/pasting from: http://sourceforge.net/projects/lisputer
Plugin for Schrodingers Network Router that chooses the next hop in the path through p2p net. Multiverse branch at even/odd millisecond packet is received (XOR the bit). Many pasts to many futures, aligning sometimes when Lisp code and data overlap
Statistically modifies random numbers generated by Global Consciousness Project, theoretically. They use quantum quality hardware to generate random numbers in many locations across the Earth, sent to Princeton University's computers. No direct connection. Just a change in the gradient of the wavefunction we call reality, caused by small changes in the electricity in the wires of the internet.
Based on the theory that the Kolmogorov-Complexity of the universe is 0, Lisputer will be a tool to statistically cause there to be more or less Newcomb-Paradoxes based on derivatives between Aleph-Numbers (similar to recursion on Cantor Sets) as different ways to view reality, and to write Lisp code to research the effects of those, as measured by Princeton's Global Consciousness Project (Noosphere) and self-measured from network packets received even/odd millisecond.
My intuition (just guessing here) is that if you used a Lisputer to do anything except change "random" numbers (like Princeton's Global Consciousness Project / Noosphere) then it would not work as well (or not at all?) because it would violate Heisenberg Uncertainty, but by using the Lisputer only to create patterns in "random" numbers, and having already decided to do things based on those "random" numbers, you have not violated Heisenberg Uncertainty because you went around it directly to the relevant place/time/thing you wanted to affect... like if you had gambled 10 dollars on Noosphere outputting more 1s than 0s.
Copy/pasting from: http://sourceforge.net/projects/schrouter
Research framework for interactions between UDP packets as exponential amounts of uncertainty build up in divergently branching recursions (EQ XOR) through many computers on the Internet. Set AI goals more/less uncertainty for multiverse blur/sharpen
Small changes in timing of UDP packets generate random numbers.
Uses existing Internet hardware instead of expensive quantum physics equipment.
Most quantum scientists think wavefunctions collapse too fast to flow across the internet indefinitely, but that does not mean they can not reverse that collapse half a second later when you're not looking.
This research framework is basic access to low-level reality, below the level of space and time, based on the theory that the Kolmogorov-Complexity of the universe is 0. This software just provides access, not the software to interact with it. This is all based on the theory that the Kolmogorov-Complexity of the universe is 0. It has never been proven to be 0 or nonzero.
I've got a lot of work to do... collective intelligence related stuff, to increase the intelligence of all 7 billion people enough that they can figure out the laws of physics and then build some intergalactic starships for me.... The 2 softwares above are very easy to build. Can somebody build them for me? Its open-source... why does it matter who builds it? Lisputer is you're idea. I just added some technical stuff to the plans for how to build it. I'll build it later if nobody else does. Lisputer.
'Krutika' on Thu, 09 Sep 2010 20:29:54 GMT, sez:
Wow............ <a href="http://www.kaneesha.com/KaneeshaJewelry/Indian-Fashion-Jewelry.cfm">Gold polki sets</a> are the latest trend in Indian jewelry. I would like to share the site www.kaneesha.com from where I recently purchased one traditional gold polki set and it's simply stunning. I will highly recommend this site if you are looking for the exclusive designs.
'Kazimir Majorinc' on Sat, 25 Sep 2010 21:47:59 GMT, sez:
Check Lispers political orientation, compared to other programmers.
'thinkt4nk' on Tue, 14 Dec 2010 20:09:44 GMT, sez:
Who would win in a fight: Lisp or a tornado? The only catch is that the tornado's name is tornado Lisp.
'k' on Mon, 10 Jan 2011 00:07:58 GMT, sez:
You have no idea what you are talking about. Learn the language. Research more on the language. Know the things that you are saying first.
'Marc' on Mon, 10 Jan 2011 01:20:30 GMT, sez:
Lisp is Chuck Norris
'Robert Smith' on Mon, 10 Jan 2011 08:31:48 GMT, sez:
Incredibly funny. Gives good laughs at 3:30 AM. Cheers!
'tohuwabohu' on Mon, 10 Jan 2011 19:13:23 GMT, sez:
You forgot the most important bit:
Lisp has neither been invented, nor has it been 'discovered', as the ignorant say.
Lisp loved itself, and the baby was both the daddy and mother of both the son and daughter which became the Lisp as a fact (because before it was only a theory).
'no' on Mon, 10 Jan 2011 21:42:39 GMT, sez:
From a movie called "Good Morning, Vietnam":
-- Why do you drink so much?
-- So that I can be THIS funny.
-- It's not funny at all.
'Ben F Rayfield' on Wed, 19 Jan 2011 00:08:33 GMT, sez:
"the universe itself is a lisp program so trivial that no true lisper would even both implementing it."
Yes. The kolmogorov-complexity of the universe is 0, which means the universe is the sum of all possibilities you can write in math, as this multiverse theory says http://en.wikipedia.org/wiki/Multiverse#Level_IV:_Ultimate_Ensemble
The universe equals the following Lisp program: (), also known as NIL. Therefore the universe is a subset of every Lisp program since every list ends with NIL.
I was building a software called Lisputer (as described in my post above) which would have been a plugin to Schrodinger's Network Router (also described above), but I've decided to do it all in that root project.
As for the time travelling algorithms and things like that which a Lisputer, by definition, must do, many people are aware of the precognitive effect in some peoples' brains (like you know who is calling before picking up the phone sometimes), and based on my "Gravity For Patterns" theory ( described on a few websites including http://spacecollective.org/benrayfield/6543/Gravity-For-Patterns-a-theory-of-everything ), I think the best way to implement a Lisputer is on top of a network of Human minds connected subconsciously through artificial intelligence psychology software through the internet, which I will do in my Human AI Net software, which will include Schrodingers Network Router (described above). So I am still planning to build a Lisputer, just not the way I thought. Schrodingers Network Router will be the backup plan.
While there are other ways of implementing a Lisputer, part of my plan is... A peer-to-peer network where timing of receiving network packets is used as a source of quantum randomness. The main data in each packet is 1 bit. As a result of each packet received, the bit is flipped or not, and who it is sent to next is chosen, depending on what the artificial intelligence at that computer chooses. It chooses based on the statistical history of bits received. If there have been 51% 1s and 49% 0s, and the current target is .52, then it would choose to flip its output bit or not toward the goal of receiving more 1 bits (which has no apparent connection to what it sends since its based on network timing XOR what the sending computer chooses). 1 bit in. 1 bit out. To get some target ratio of received 1s and 0s. That's the game each AI plays. On top of that, to set the target ratio, Lisp code moves between these computers and is evolved with other Lisp code, depending on these 1s and 0s. Add to that the other mad-science things I wrote above, and in my Human AI Net software (still an early version), and a Lisputer forms on top of the schrodingers-cat effects of the specific kind of uncertainty generated by the evolving Lisp code. That's my theory on how to build a Lisputer on top of the biggest quantum computer which is the whole universe.
'Maverick' on Thu, 17 Mar 2011 18:08:13 GMT, sez:
I started Learning LISP just couple of days ago nad landed on this page using Google Search. Anyway, I read all these comments here and now confused. This article is very funny but now I am in two minds.. Are you guys saying Go with LISP or do not even think about LISP?
'Jim' on Wed, 06 Apr 2011 04:50:02 GMT, sez:
Don't forget ABCL, that damned bear is armed, so treat him with respect or he'll be gunning for you!
'Sparkles, professional make model' on Wed, 21 Dec 2011 17:55:45 GMT, sez:
Lisp would be how you pronounce "lips" after Chuck Norris punches you in your mouth. As in Chuck Norris gave me "fap lisp".
Not long ago when I was an unenlightened imperative language snob I came across an article of someone talking about how a computer is for "counting" and functional languages were suited for this purpose. Of course being a resident of imperative land I disagreed and spewed my stance on how imperative languages allowed one to think more like the machine and therefore program better. After I discovered Lisp I realized that functional languages (especially Lisp) makes the computer think more like humans.
'Rajeev Jha' on Mon, 16 Jan 2012 03:57:34 GMT, sez:
Great post! I believe the world needed such a post after Paul Graham's tireless tirade of how Lisp will fix everything in your life. That too after the fact that even his origin Lisp software (what became Yahoo shopping ) does not survive.
'gcbenison' on Fri, 25 May 2012 14:00:45 GMT, sez:
Yes, there is the "lisp nod". But let's not forget about the "Java handshake". Seriously. What is the Java handshake? It is what happens when one gets hired for having the line "Java programmer" on one's CV. Yet many Lispers choose to exclude themselves from these jobs by never learning Java, a language that most of them could probably pick up in a few days.
'Lisa' on Wed, 08 May 2013 20:21:26 GMT, sez:
Maverick: Lisp is just fascinating. After the first high you hit the macro wall. You realize simplicity is the only way, Forth.
'man' on Sun, 09 Jun 2013 14:37:59 GMT, sez:
if chuck norris were a computer language, lisp would program in chucknorris.
'Alessandro Ogheri' on Wed, 06 Nov 2013 09:02:27 GMT, sez:
Real programmers can implement a LISP interpreter in assembly, or even in machine language directly with POKE and PEEK a la Commodore 64 ways...
the best do not even use hexadecimal numbers, they use only binary numbers, and the supreme hackers do not even use both "1"s and "0"s: they use only one of them!
'total anihalation' on Mon, 03 Mar 2014 01:09:50 GMT, sez:
run the following by loading into the REPL and then typing (print-combos *combo* *table*) and you will see the power of lisp in a lispy program.
(defun next (symbol data)
(cond ((eq data nil)'(print "Out of data and no matches"))
((eq symbol (car data)) (cadr data))
(t (next symbol (cdr data)))))
(defparameter *combo* '(1 2 3 4 5 6))
(defparameter *table* '(0 1 2 3 4 5 6 7 8 9 0))
(defun inc-combo (draw digits)
(setf number (last draw))
(setf next-number (next (car number) digits))
(setf (nth 5 draw) next-number))
(defun print-combos (redraw redigits)
(dotimes (n 20)
(inc-combo *combo* *table*)
(cond ((> (nth 5 *combo*) 45) (setf (nth 5 *combo*) 45)
(setf (nth 4 *combo*)(1+ (nth 4 *combo*)))))