Paul Graham (computer programmer)

This article has an unclear citation style. The references used may be made clearer with a different or consistent style of citation, footnoting, or external linking. Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article.".(November 2013)

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.

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.

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 news.ycombinator.com does, and is itself written in Arc.

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]

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."

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:

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