Arc (programming language): Difference between revisions

Content deleted Content added
m Categorization
Jorbettis (talk | contribs)
Revert to redirect to Paul Graham by Splash from 14 July 2005, per VfD.
Line 1:
#REDIRECT [[Paul Graham]]
'''Arc''' is a dialect of [[Lisp programming language|Lisp]], currently developed by [[Paul Graham]]. He wants to make it a language for [[Hacker#Hacker:_Highly_skilled_programmer|hackers]], because "a programming language is good as a programming language (rather than, say, an exercise in denotational semantics or compiler design) if and only if hackers like it."
 
His essay [http://www.paulgraham.com/popular.html Being Popular] describes some of its aims:
* Code should be brief: <blockquote> 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. </blockquote>
* Arc should be hackable: you should be able to do what you want.
* The design should rest on both the least number of axioms (ie. core features) and the least number of restrictions possible. The former allows more of the language to be defined in itself, leaving the core cleaner and increasing hackability, the latter is a consequence of Arc being "a language for smart people", making it undesirable to forbid potentially dangerous, but meaningful and logically consistent actions.
* The language should be good for writing throwaway programs, because "many evolve into real programs, with real features and real users."
* There should be good [[Library (computing)|libraries]] for Arc: "Of course the ultimate in brevity is to have the program already written for you, and merely to call it."
* There should probably be syntax: it would make code shorter and easier to read. <!-- FIXME: was that right? --> "I don't think we should be religiously opposed to introducing syntax into Lisp, as long as it translates in a well-understood way into underlying s-expressions."
* [[Object orientation]] is not a design goal, nor is it a part of the language as such. Graham sees much of the OO-related discussion and features attributed to OO partially as an obvious follow-up to good design, and partially as mistaken<ref>[http://www.paulgraham.com/noop.html Why Arc Isn't Especially Object-Oriented]</ref><ref>[http://www.paulgraham.com/arcfaq.html Arc FAQ]</ref>.
* Arc should generate fast code. The key for this is more in good [[Performance analysis|profiling]] and optional type declarations than in, say, making the entire language [[strongly typed]].
 
As part of his work on Arc, Paul Graham began developing an email client and decided it needed a good [[Stopping e-mail abuse|spam filter]]. It has a simplified [[naive Bayes classifier]] he described in "[http://www.paulgraham.com/spam.html A Plan for Spam]". The first 'non-trivial' application in Arc, as described by Graham in [http://ycombinator.com/announcingnews.html its announcement], was [http://news.ycombinator.com Y Combinator Startup News], a web-based application supporting a user-ranked list of links related to [[Startup_company|startup companies]].
 
==Implementation Details==
There exists a preliminary ARC implementation, currently on top of [[MzScheme]]<ref>[http://news.ycombinator.com/item?id=11994 YCombinator post]</ref><ref>[http://www.paulgraham.com/arc.html Main ARC page]</ref>, which is a variant of plt-scheme.
 
==References==
<references/>
 
==External links==
 
* [http://news.ycombinator.com/item?id=32766 Latest bit of news]
* [http://www.paulgraham.com/arc.html Arc website]
* [http://www.paulgraham.com/arcfaq.html Arc FAQ]
* [http://www.paulgraham.com/hundred.html The Hundred-Year Language], an essay
[[Category:Dynamically-typed programming languages]]
[[Category:Functional languages]]
[[Category:Lisp programming language family]]
[[Category:Vaporware]]