-
Notifications
You must be signed in to change notification settings - Fork 0
/
iflisp.html
90 lines (90 loc) · 10.2 KB
/
iflisp.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><script type="text/javascript">
<!--
(new Image).src="http://store.yahoo.net/cgi-bin/refsd?e=http://www.paulgraham.com/iflisp.html&h=www.paulgraham.com&v=1.0&dr=" + escape(document.referrer);
-->
</script>
<head><title>If Lisp is So Great</title><!-- <META NAME="ROBOTS" CONTENT="NOODP"> -->
<link rel="shortcut icon" href="http://ycombinator.com/arc/arc.png">
</head><body bgcolor=ffffff background="http://ep.yimg.com/ca/I/paulgraham_2202_1603" text=000000 link=000099 vlink=464646><table border=0 cellspacing=0 cellpadding=0><tr valign=top><td><map name=17d164f661dbb5f><area shape=rect coords="0,0,47,21" href="index.html"><area shape=rect coords="0,21,47,42" href="articles.html"><area shape=rect coords="0,42,47,63" href="http://www.amazon.com/gp/product/0596006624"><area shape=rect coords="0,63,47,84" href="books.html"><area shape=rect coords="0,84,47,105" href="http://news.ycombinator.com"><area shape=rect coords="0,105,47,126" href="http://ycombinator.com"><area shape=rect coords="0,126,47,147" href="http://startupschool.org"><area shape=rect coords="0,147,47,168" href="arc.html"><area shape=rect coords="0,168,47,189" href="lisp.html"><area shape=rect coords="0,189,47,210" href="antispam.html"><area shape=rect coords="0,210,47,231" href="faq.html"><area shape=rect coords="0,231,47,252" href="raq.html"><area shape=rect coords="0,252,47,273" href="quo.html"><area shape=rect coords="0,273,47,294" href="rss.html"><area shape=rect coords="0,294,47,315" href="bio.html"><area shape=rect coords="0,315,47,336" href="nsearch.html"><area shape=rect coords="0,336,47,357" href="ind.html"></map><img src="http://ep.yimg.com/ca/I/paulgraham_2202_1998" width=49 height=357 usemap=#17d164f661dbb5f border=0 hspace=0 vspace=0 ismap></td><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=1 width=26 border=0></td><td><a href="index.html"><img src="http://ep.yimg.com/ca/I/paulgraham_2202_4835" width=410 height=45 border=0 hspace=0 vspace=0></a><br><br><table border=0 cellspacing=0 cellpadding=0 width=455><tr valign=top><td width=455><img src="http://ep.yimg.com/ca/I/paulgraham_2202_10287608" width=144 height=18 border=0 hspace=0 vspace=0 alt="If Lisp is So Great"><br><br><font size=2 face="verdana">May 2003<br><br>If Lisp is so great, why don't more people use it? I was
asked this question by a student in the audience at a
talk I gave recently. Not for the first time, either.<br><br>In languages, as in so many things, there's not much
correlation between popularity and quality. Why does
John Grisham (<i>King of Torts</i> sales rank, 44) outsell
Jane Austen (<i>Pride and Prejudice</i> sales rank, 6191)?
Would even Grisham claim that it's because he's a better
writer?<br><br>Here's the first sentence of <i>Pride and Prejudice:</i>
<blockquote>
It is a truth universally acknowledged, that a single man
in possession of a good fortune must be in want of a
wife.
</blockquote>
"It is a truth universally acknowledged?" Long words for
the first sentence of a love story.<br><br>Like Jane Austen, Lisp looks hard. Its syntax, or lack
of syntax, makes it look completely <a href="http://lib.store.yahoo.net/lib/paulgraham/acl2.lisp">unlike</a>
the languages
most people are used to. Before I learned Lisp, I was afraid
of it too. I recently came across a notebook from 1983
in which I'd written:
<blockquote>
I suppose I should learn Lisp, but it seems so foreign.
</blockquote>
Fortunately, I was 19 at the time and not too resistant to learning
new things. I was so ignorant that learning
almost anything meant learning new things.<br><br>People frightened by Lisp make up other reasons for not
using it. The standard
excuse, back when C was the default language, was that Lisp
was too slow. Now that Lisp dialects are among
the <a href="http://shootout.alioth.debian.org/benchmark.php?test=nestedloop&lang=all&sort=cpu">faster</a>
languages available, that excuse has gone away.
Now the standard excuse is openly circular: that other languages
are more popular.<br><br>(Beware of such reasoning. It gets you Windows.)<br><br>Popularity is always self-perpetuating, but it's especially
so in programming languages. More libraries
get written for popular languages, which makes them still
more popular. Programs often have to work with existing programs,
and this is easier if they're written in the same language,
so languages spread from program to program like a virus.
And managers prefer popular languages, because they give them
more leverage over developers, who can more easily be replaced.<br><br>Indeed, if programming languages were all more or less equivalent,
there would be little justification for using any but the most
popular. But they <a href="icad.html">aren't</a> all equivalent, not by a long
shot. And that's why less popular languages, like Jane Austen's
novels, continue to survive at all. When everyone else is reading
the latest John Grisham novel, there will always be a few people
reading Jane Austen instead.<br><br></font></td></tr></table><br><table border=0 cellspacing=0 cellpadding=0 width=455><tr><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=5 width=1 border=0></td></tr><tr valign=top><td width=6><center><img src="http://ep.yimg.com/ca/I/paulgraham_2202_256631" width=6 height=14 border=0 hspace=0 vspace=0></center></td><td width=8><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=1 width=8 border=0></td><td width=206><font size=2 face="verdana"><a href="http://www.shiro.dreamhost.com/scheme/trans/iflisp-j.html">Japanese Translation</a><br><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=2 width=1 border=0><br></font></td><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=1 width=8 border=0></td><td width=6><center><img src="http://ep.yimg.com/ca/I/paulgraham_2202_256631" width=6 height=14 border=0 hspace=0 vspace=0></center></td><td width=8><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=1 width=8 border=0></td><td width=206><font size=2 face="verdana"><a href="http://ro.goobix.com/pg/iflisp/">Romanian Translation</a><br><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=2 width=1 border=0><br></font></td></tr><tr><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=3 width=1 border=0></td></tr><tr><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=5 width=1 border=0></td></tr><tr valign=top><td width=6><center><img src="http://ep.yimg.com/ca/I/paulgraham_2202_256631" width=6 height=14 border=0 hspace=0 vspace=0></center></td><td width=8><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=1 width=8 border=0></td><td width=206><font size=2 face="verdana"><a href="http://cibercalli.com/erick/hackingnews/lispnews/si-lisp-es-tan-grandioso">Spanish Translation</a><br><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=2 width=1 border=0><br></font></td></tr><tr><td><img src="http://ep.yimg.com/ca/Img/trans_1x1.gif" height=3 width=1 border=0></td></tr></table><br><table border=0 cellspacing=0 cellpadding=0 width=455><tr><td><font size=2 face="verdana"><br><br><hr></font></td></tr></table></td></tr></table></body>
<script type="text/javascript">
csell_env = 'mud';
</script>
<script type="text/javascript">
// Begin Y! Store Generated Code
</script><script type="text/javascript" src="http://l.yimg.com/a/ult/ylc_1.9.js" ></script><script type="text/javascript" src="http://l.yimg.com/a/lib/smbiz/store/csell/js/beacon-1.3.6.4.js" >
</script>
<script type="text/javascript">
// Begin Y! Store Generated Code
csell_page_data = {}; csell_page_rec_data = []; ts='TOK_STORE_ID';
</script>
<script type="text/javascript">
// Begin Y! Store Generated Code
function csell_GLOBAL_INIT_TAG() { var csell_token_map = {}; csell_token_map['TOK_ITEM_ID_LIST'] = 'iflisp'; csell_token_map['TOK_BEACON_TYPE'] = 'prod'; csell_token_map['TOK_RAND_KEY'] = 't'; csell_token_map['TOK_SPACEID'] = '2022276099'; csell_token_map['TOK_IS_ORDERABLE'] = '2'; csell_token_map['TOK_STORE_ID'] = 'paulgraham'; csell_token_map['TOK_URL'] = 'http://geo.yahoo.com'; csell_token_map['TOK_ORDER_HOST'] = 'order.store.yahoo.net'; c = csell_page_data; var t = csell_token_map; c['s'] = t['TOK_SPACEID']; c['url'] = t['TOK_URL']; c['si'] = t[ts]; c['ii'] = t['TOK_ITEM_ID_LIST']; c['bt'] = t['TOK_BEACON_TYPE']; c['rnd'] = t['TOK_RAND_KEY']; c['io'] = t['TOK_IS_ORDERABLE']; YStore.addItemUrl = 'http%s://'+t['TOK_ORDER_HOST']+'/'+t[ts]+'/ymix/MetaController.html?eventName.addEvent&cartDS.shoppingcart_ROW0_m_orderItemVector_ROW0_m_itemId=%s&cartDS.shoppingcart_ROW0_m_orderItemVector_ROW0_m_quantity=1&ysco_key_cs_item=1§ionId=ysco.cart&ysco_key_store_id='+t[ts]; }
</script>
<script type="text/javascript">
// Begin Y! Store Generated Code
function csell_REC_VIEW_TAG() { var env = (typeof csell_env == 'string')?csell_env:'prod'; var p = csell_page_data; var a = '/sid='+p['si']+'/io='+p['io']+'/ii='+p['ii']+'/bt='+p['bt']+'-view'+'/en='+env; var r=Math.random(); YStore.CrossSellBeacon.renderBeaconWithRecData(p['url']+'/p/s='+p['s']+'/'+p['rnd']+'='+r+a); }
</script>
<script type="text/javascript">
// Begin Y! Store Generated Code
var csell_token_map = {}; csell_token_map['TOK_PAGE'] = 'p'; csell_token_map['TOK_WS_URL'] = 'http://paulgraham.csell.store.yahoo.net/cs/recommend?itemids=iflisp&location=p'; csell_token_map['TOK_SHOW_CS_RECS'] = 'false'; csell_token_map['TOK_CURR_SYM'] = '$'; var t = csell_token_map; csell_GLOBAL_INIT_TAG(); YStore.page = t['TOK_PAGE']; YStore.currencySymbol = t['TOK_CURR_SYM']; YStore.crossSellUrl = t['TOK_WS_URL']; YStore.showCSRecs = t['TOK_SHOW_CS_RECS'];</script><script type="text/javascript" src="http://l.yimg.com/a/lib/smbiz/store/csell/js/recs-1.3.2.2.js" ></script><script type="text/javascript" >
</script>
<script type="text/javascript">
<!--
if (document.referrer && (document.referrer!='') && window.Image)
{
(new Image).src="http://redirect1.vip.store.yahoo.com/cgi-bin/referadd?spcl=1&et=50ddb7ca&catalog=paulgraham&r=" + escape(document.referrer) + "&v=1"; }
// -->
</script><script type="text/javascript">
<!--
if (document.referrer && (document.referrer!='') && window.Image)
{
(new Image).src="http://redirect1.vip.store.yahoo.net/cgi-bin/referadd?spcl=1&et=50ddb7ca&catalog=paulgraham&r=" + escape(document.referrer) + "&v=3"; }
// -->
</script></html>