Paul Graham (computer programmer)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Paul Graham
Paulgraham 240x320.jpg
Born (1964-11-13) 13 November 1964 (age 50)[1]
Weymouth, Dorset, England[2]
Alma mater Cornell University
Harvard University
Rhode Island School of Design
Accademia di Belle Arti Firenze
Thesis The State of a Program and Its Uses (1990)
Doctoral advisor Thomas E. Cheatham, Jr.
Spouse Jessica Livingston

Paul Graham (born 13 November 1964)[1] is an English programmer, venture capitalist, and essayist. He is known for his work on Lisp, for co-founding Viaweb (which eventually became Yahoo! Store), and for co-founding the Y Combinator seed capital firm. He is the author of some programming books, such as: On Lisp[3] (1993), ANSI Common Lisp[4] (1995), and Hackers & Painters[5] (2004).


In 1996, Graham and Robert Morris founded Viaweb, the first application service provider (ASP). Viaweb's software, originally written mostly in Common Lisp, allowed users to make their own Internet stores. In the summer of 1998 Viaweb was sold to Yahoo! for 455,000 shares of Yahoo! stock, valued at $49.6 million.[6] At Yahoo! the product became Yahoo! Store.

He later gained fame for his essays on his popular website Essay subjects range from "Beating the Averages", which compares Lisp to other programming languages and introduced the word Blub, to "Why Nerds are Unpopular", a discussion of nerd life in high school. A collection of his essays has been published as Hackers & Painters [5] by O'Reilly, which includes a discussion of the growth of Viaweb and what Graham perceives to be the advantages of Lisp to program it.

In 2005, after giving a talk at the Harvard Computer Society later published as "How to Start a Startup", Graham along with Trevor Blackwell, Jessica Livingston and Robert Morris started Y Combinator to provide seed funding to a large number of startups, particularly those started by younger, more technically oriented founders. Y Combinator has now invested in more than 400 startups across over 30 distinct markets, including, Xobni, Dropbox, Airbnb, and Stripe.[7]

In response to the proposed Stop Online Piracy Act (SOPA), Graham announced in late 2011 that no representatives of any company supporting it would be invited to Y Combinator's Demo Day events.[8]

BusinessWeek included Paul Graham in 2008 edition of its annual feature, The 25 Most Influential People on the Web.[9]

In 2008, Paul Graham married Jessica Livingston.[10][11][12]


Graham has a Bachelor of Arts in philosophy from Cornell University[13][14] (1986).[15] He then attended Harvard University, earning Master of Science (1988) and Doctor of Philosophy (1990) degrees in Applied Sciences with a specialization in computer science.[13][16] He has also studied painting at the Rhode Island School of Design and the Accademia di Belle Arti in Florence.[13][16]

Arc programming language[edit]

Paul Graham in 2007.

In 2001, Paul Graham announced that he was working on a new dialect of Lisp named "Arc". Over the years since, he has written several essays describing features or goals of the language, and some internal projects at Y Combinator have been written in Arc, most notably the Hacker News web forum and news aggregator program.

In the essay Being Popular Graham describes a few of his goals for the language. While many of the goals are very general ("Arc should be hackable," "there should be good libraries"), he did give some specifics. For instance, he believes that it is important for a language to be terse:

It would not be far from the truth to say that a hacker about to write a program decides what language to use, at least subconsciously, based on the total number of characters he'll have to type. If this isn't precisely how hackers think, a language designer would do well to act as if it were.

He also stated that it is better for a language to only implement a small number of "axioms", even when that means the language may not have features that large organizations want, such as object-orientation (OO). In fact, Graham feels that OO is not useful as its methods and patterns are just "good design", and he sees the language features used to implement OO as partially mistaken.[17][18]

A controversy among Lisp programmers is whether, and how much, the S-expressions of the language should be complemented by other forms of syntax. Graham feels that additional syntax should be used in situations where pure S-expressions would be overly verbose, saying, "I don't think we should be religiously opposed to introducing syntax into Lisp." Graham also feels that efficiency problems should be solved by giving the programmer a good profiler.


Hello world in Arc :

 (prn "Hello, World")

A program used by Paul Graham to illustrate Arc's terseness.[19] It produces a form with one field at the url "/said". When the form is submitted, it leads to a page with a link that says "click here", which itself leads to a page with the value of the original input field.

(defop said req
  (aform [onlink "click here" (pr "you said: " (arg _ "foo"))]
    (input "foo") 

Official version[edit]

The first publicly released version of Arc was made available on 29 January 2008,[20] implemented on top of Racket ("PLT-Scheme" at that time). The release comes in the form of a .tar archive, containing the Racket source code for Arc. A tutorial[21] and a discussion forum[22] are also available. The forum uses the same program that does, and is itself written in Arc.

Unofficial versions[edit]

Due to the slow development of the official Arc branch, some members of the Arc community started unofficial repositories with unofficial emendations, extensions and libraries. One version, Anarki,[23] permitted [24] anyone to submit changes to the project. The community-managed wiki[25] is a better source of information than the official site at this point.[citation needed]

Rainbow[26] is an implementation of Arc in Java.

Arcadia[27] is an easy implementation of Arc in C.


Blub is a hypothetical programming language; it is an average language "right in the middle of the abstractness continuum. It is not the most powerful language, but it is more powerful than Cobol or machine language."[28] It was used by Graham to illustrate a comparison of power between programming languages that go beyond Turing completeness, and more specifically, to illustrate the difficulty of comparing a programming language one knows to one that one does not:[29]

"Our hypothetical Blub programmer wouldn't use either [Cobol or assembly]. Of course he wouldn't program in machine language. That's what compilers are for. And as for Cobol, he doesn't know how anyone can get anything done with it. It doesn't even have x (Blub feature of your choice).
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
When we switch to the point of view of a programmer using any of the languages higher up the power continuum, however, we find that he in turn looks down upon Blub. How can you get anything done in Blub? It doesn't even have y.
By induction, the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one. (This is probably what Eric Raymond meant about Lisp making you a better programmer.) You can't trust the opinions of the others, because of the Blub paradox: they're satisfied with whatever language they happen to use, because it dictates the way they think about programs."

The concept has been cited by writers such as Joel Spolsky.[30]

Graham's hierarchy of disagreement [edit]

Graham proposed a "disagreement hierarchy" in a 2008 essay "How to Disagree",[31] putting types of argument into a seven-point hierarchy and observing that "If moving up the disagreement hierarchy makes people less mean, that will make most of them happier."

Although originally written as a simple list, Graham's hierarchy can be represented as a pyramid with the most convincing form of disagreement at the top, and the weakest at the bottom:

Graham's Hierarchy of Disagreement-en.svg

Following this hierarchy, Graham notes that articulate forms of name-calling ("The author is a self-important dilettante") are no different from crude insults.

See also[edit]


  1. ^ a b "Graham, Paul 1964- Authorities & Vocabularies (Library of Congress Name Authority File)". U.S. Library of Congress. 11 March 2005. Retrieved 12 March 2012. (Paul Graham, b. Nov. 13, 1964) 
  2. ^ "No; I was born in Weymouth, England. My father's Welsh though. | Hacker News". Retrieved 2013-01-23. 
  3. ^ Graham, Paul (1994). On Lisp: advanced techniques for Common Lisp. Englewood Cliffs, N.J: Prentice Hall. ISBN 0-13-030552-9. 
  4. ^ Graham, Paul (1996). ANSI Common Lisp. Englewood Cliffs, N.J: Prentice Hall. ISBN 0-13-370875-6. 
  5. ^ a b Graham, Paul (2004). Hackers & painters: big ideas from the computer age. Sebastopol, CA: O'Reilly. ISBN 0-596-00662-4. 
  6. ^ "Yahoo! to Acquire Viaweb". Yahoo! Inc. 8 June 1998. Retrieved 14 April 2008. 
  7. ^ "Y Combinator Companies - Y Combinator Universe". Retrieved 13 March 2013. 
  8. ^ Tsotsis, Alexia (22 December 2011). "Paul Graham: SOPA Supporting Companies No Longer Allowed At YC Demo Day". TechCrunch. Retrieved 23 December 2011. 
  9. ^ "The Papa Bear: Paul Graham". BusinessWeek. 29 September 2008. Retrieved 29 September 2008. 
  10. ^ "Where are we going?". 26 October 2008. Retrieved 14 November 2008. 
  11. ^ "Congrats to PG on getting hitched". 2 June 2008. Retrieved 14 November 2008. 
  12. ^ Graham, Paul (January 2009). "California Year-Round". Y Combinator. Jessica Livingston and I (who are married despite our different last names) are expecting our first child any day now. 
  13. ^ a b c "Paul Graham biography". Retrieved 22 July 2011. 
  14. ^ Undergraduation. Paul Graham. Retrieved 22 July 2011.
  15. ^ EZRA: Cornell's Quarterly Magazine (Fall 2011) "Paul Graham '86"
  16. ^ a b "Paul Graham biography". Retrieved 6 March 2012. 
  17. ^ "Why Arc Isn't Especially Object-Oriented". Retrieved 2013-01-23. 
  18. ^ "Arc FAQ". Retrieved 2013-01-23. 
  19. ^ Take the Arc challenge
  20. ^ Arc's Out (29 January 2008)
  21. ^ tutorial
  22. ^ discussion forum
  23. ^ Anarki Repository on Github
  24. ^ May 2013 announcement: anarki is no longer world-committable
  25. ^ The arc language wiki
  26. ^ Rainbow, an implementation of Arc in java by Conan Dalton
  27. ^ Arcadia
  28. ^ Paul Graham (2001). "Beating the Averages". Retrieved 28 April 2007. ; published in Hackers & Painters, 2004; the essay was also reprinted in The Planning and Scheduling Working Group Report on Programming Languages, by JM Adams, R Hawkins, C Myers, C Sontag, S Speck
  29. ^ "...These studies would like to formally prove that a certain language is more or less expressive than another language. Determining such a relation between languages objectively rather than subjectively seems to be somewhat problematic, a phenomenon that Paul Graham has discussed in “The Blub Paradox” [6]." "An Introduction to Aspect Oriented Programming in e", D. Robinson; see also "Expressive power of recursion and aggregates in XQuery", by J Hidders, J Paredaens, R Vercammen, S Marrara
  30. ^ See "The Perils of JavaSchools", in his book More Joel on Software.
  31. ^ Graham, Paul (March 2008). "How to Disagree". Retrieved 2 May 2011. 

External links[edit]