Jump to content

Arc (programming language)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Bender235 (talk | contribs) at 14:46, 10 September 2016 (clean up; HTTP→HTTPS for Github using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Arc is a dialect of the Lisp programming language developed by Paul Graham and Robert Morris.

History

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. Arc itself is written in Racket.[1]

In the essay Being Popular[2] 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.[3][4] At Arc's introduction in 2008, Graham stated one of its benefits was its brevity.[5]

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.[citation needed]

Reception

Upon its release in 2008, Arc generated mixed reactions, with some calling it simply an extension to Lisp or Scheme and not a programming language in its own right. Others applauded Arc for stripping Lisp down to bare essentials. Shortly after its release Arc was ported to JavaScript, as well as being supported by Schemescript, an IDE based on Eclipse (IDE).[6]

Examples

Hello world in Arc :

 (prn "Hello, World")

A program used by Paul Graham to illustrate Arc's terseness.[7] 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") 
    (submit)))

Versions

Official version

The first publicly released version of Arc was made available on 29 January 2008,[8] 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[9] and a discussion forum[10] are also available. The forum uses the same program that Hacker News does, and is itself written in Arc.

Unofficial versions

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,[11] permitted[12] anyone to submit changes to the project. The community-managed wiki[13] is a better source of information than the official site at this point.[citation needed]

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

Arcadia[15] is an implementation of Arc in C.

Timeline

1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1, 1.5, LISP 2(abandoned)
 Maclisp
 Interlisp
 MDL
 Lisp Machine Lisp
 Scheme  R5RS  R6RS  R7RS small
 NIL
 ZIL (Zork Implementation Language)
 Franz Lisp
 Common Lisp  ANSI standard
 Le Lisp
 MIT Scheme
 XLISP
 T
 Chez Scheme
 Emacs Lisp
 AutoLISP
 PicoLisp
 Gambit
 EuLisp
 ISLISP
 OpenLisp
 PLT Scheme  Racket
 newLISP
 GNU Guile
 Visual LISP
 Clojure
 Arc
 LFE
 Hy
 Chialisp

References

  1. ^ "Arc Programming Language". GitHub.
  2. ^ Graham, Paul. "Being Popular".
  3. ^ Graham, Paul. "Why Arc Isn't Especially Object-Oriented". Retrieved 2013-01-23.
  4. ^ Graham, Paul. "Arc FAQ". Retrieved 2013-01-23.
  5. ^ "Arc Makes Programs Shorter". Linux magazine.
  6. ^ "Web pioneer hits critics with Lisp gauntlet". The Register. UK. 2008-02-07.
  7. ^ Graham, Paul. "Take the Arc Challenge".
  8. ^ Graham, Paul. "Arc's Out".
  9. ^ "Tutorial", Arc, Y combinator.
  10. ^ "Arc Forum". Arc language.
  11. ^ "Anarki". Arc language. GitHub.
  12. ^ "Announcement: anarki is no longer world-committable". Arc Forum. Arc language.
  13. ^ "Arc Lang Wiki". Sites. Google.
  14. ^ "Rainbow". Conanite. GitHub.
  15. ^ "Arcadia". Kimtg. GitHub.