Talk:Lisp (programming language)
| WikiProject Computing | (Rated B-class) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|||||||||||||||||
| WikiProject Computer science | (Rated B-class, High-importance) | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
||||||||||||||||||||||
|
This page is listed on the bounty board maru dubshinki has pledged to make a donation of $10 to the Wikimedia Foundation when this page is improved to featured article status. |
Archives |
|||
|---|---|---|---|
|
[edit] Random "citations needed" are not
There are several places where someone has put the [citation needed] annotation, but it's just a language feature being described. For example, that symbols may appear in more than one place, but refer to the same object. I assert that example, for instance, needs no citation. Any of the language references will back that up (as will anyone who knows Lisp). I'd remove the silly ones myself, but I am not a Wikipedian and don't know how or what the protocol is. —Preceding unsigned comment added by 75.198.239.200 (talk) 08:24, 21 January 2009 (UTC)
[edit] License
Proprietary or not --Melab-1 21:12, 4 September 2008 (UTC)
[edit] Qi manual
The Qi manual pages 18-31 [1] has a good discussion of the history of Lisp in terms of creating an RS for discussing the why various things happened. jbolden1517Talk 15:40, 12 April 2009 (UTC)
- I took a look at this. Though I suppose it is an OK potted history for an introductory computer science book, it is not very good as history. Besides ignoring all work in early programming languages other than Lisp, it also makes the completely incorrect claim that it was Lisp machines which introduced windowing, computer mice, and personal computing. And simply on technical grounds -- it is self-published by someone who is not a published expert in the history of computer languages -- it doesn't meet WP:RS criteria. --macrakis (talk) 20:39, 12 April 2009 (UTC)
-
- OK thanks for taking the time to consider it. I found the windowing claims odd as well, but wasn't sure since smalltalk did have those (several years later) and those two communities were friendly.... But if that claim is wrong then no reason to endorse the history of LISP aspects. jbolden1517Talk 21:15, 12 April 2009 (UTC)
[edit] Influenced
The "influenced" list is getting rather long and vague. Some of these are not confirmed either in the article on the language referenced or in the timeline of programming languages. I think the list should be restricted to languages whose primary influence was Lisp where Lisp was specifically mentioned as a primary influence by the language designer(s). Otherwise, we may end up with a list containing nearly every post-Lisp language, which is hardly useful. Yworo (talk) 15:27, 2 August 2009 (UTC)
Well, there are a lot of languages that are influenced by Lisp - no wonder, since Lisp is 50 years old and has lots of dialects. ML was first implemented in Lisp, Perl mentions Lisp as an influence, Python mentions Lisp, Smalltalk mentions Lisp, Ruby mentions Lisp, Dylan mentions Lisp,Mathematica does not mention Lisp but is influenced by it (Wolfram implemented an earlier version, SMP, in Lisp), Rebol mentions Lisp, Qi is implemented in Lisp, Lua mentions Lisp, Javascript mentions Scheme, Forth mentions Lisp, Nu mentions Lisp, ...
There are lots of languages that are not or very little influenced by Lisp: C, C++, Ada, Oberon, Modula 2, Pascal, Visual Basic, C#, PHP, D, and so on...
Joswig (talk) 23:34, 6 December 2009 (UTC)
[edit] Symbolic expressions, form a Recursive Functions system
The main influence is the use of lists in Functional Languages. Other influential work in modern languages (mainly functional) is APL that influenced John Backus seminal FP and FFP, and P.Landing work. Milner also influenced with ML. Prolog also uses lists, but is based in predicate logic.
I think it is enough to say that Lisp is one of the more influential programming languages.
However we may say the same of Fortran, all programming languages with assignment an control structures.
Is this genealogy the main subject about programming languages? It is not.
Procedural languages have a bottle-neck, the assignment. See John Backus, Can Programming Be Liberated From Von Neuman Style?, CACM, 1978.
I think it is more important to mention how Lisp evolved to a language based on Lambda-calculus, due to the work on denotational semantics (in the beginning of lisp it was not based on lambda-calculus). Scheme is a good example of that, and how it can be used to implement many programming languages, knowing it's denotational semantics. It could be included an example implementation of the while language from its denotational semantics.
This is to me a more influential role of this language, than a simple genealogy. — Preceding unsigned comment added by Elias (talk • contribs) 04:58, 9 March 2011 (UTC)
[edit] Who uses Lisp?
I think it would be nice to see a section on industrial uses of lisp. I.e., companies, etc which use Lisp in internal or for-sale software. Scheme (programming language) has such a section. 174.99.120.127 (talk) 20:30, 22 August 2009 (UTC)
[edit] Object-Oriented Language?
The term "object-oriented" has been morphed over the years. Lisp did pioneer it. It used to be more about the issue of objects being data structures referred to by pointers and having identity (not just being value copied all over the place), like the C# ref types, and less about how they were programmed. In the old meaning of "object-oriented", even things like symbols were thought to be "object-oriented" things, I claim. It wasn't until later that programming style and encapsulation came to use that term (and inappropriately, I think, but that's something we can debate elsewhere--for here all that matters is that there was an older usage and that it changed). I object to the recent change by Macrakis (22 Aug 2009 22:07) removing this reference, but didn't want to get into an edit war by changing it back, so am just noting my concern here: Just because someone has repurposed the name doesn't mean Lisp should claim no credit here, at least not without highlighting the shift in terminology. Articles that use "object-oriented" in the original way are not making up a false reality. See my essay What's in a Name? -- Uses and Abuses of Lispy Terminology from Lisp Pointers, Volume VI, Number 1, January-March 1993, where I discussed the terminological shift as it was starting to gain a foothold. --Netsettler (talk) 16:58, 24 August 2009 (UTC)
[edit] Lisp based on lambda calculus?
In the second intro paragraph this article states that lisp was based on lambda calculus. I just read a transcript of a lecture McCarthy gave in which he said that he didn't understand lambda calc at the time and that lisp was not based on it.
2. Click on the link that says "LOVE" (Don't ask me why it says that)
3. Page 29
If the fact that it is a common misconception that lisp is based on lambda calc is not noted in the article, I think at the very least the statement that it WAS should be removed. — Preceding unsigned comment added by 198.29.2.254 (talk) 06:32, 18 September 2009 (UTC)
I think it is fair to say that Lisp is influenced by Lambda Calculus, but not based on Lambda Calculus.
Joswig (talk) 23:33, 6 December 2009 (UTC)
- Yes, I thought I had edited this article to make this plain, but looking again I think the edit I made was on Scheme (programming language), where I wrote:
- Alonzo Church's mathematical notation, the lambda calculus, has inspired Lisp's use of "lambda" as a keyword for introducing a procedure, as well as influencing the development of functional programming techniques involving the use of higher-order functions in Lisp. But early Lisps were not suitable expressions of the lambda calculus because of their treatment of free variables.
-
- The introduction of lexical scope resolved the problem by making an equivalence between some forms of lambda notation and their practical expression in a working programming language. Sussman and Steele showed that the new language could be used to elegantly derive all the imperative and declarative semantics of other programming languages including ALGOL and Fortran, and the dynamic scope of other Lisps, by using lambda expressions not as simple procedure instantiations but as "control structures and environment modifiers." They introduced continuation-passing style along with their first description of Scheme in the first of the Lambda Papers, and in subsequent papers they proceeded to demonstrate the raw power of this practical use of lambda calculus.
- Of course that's a very Scheme-oriented way of looking at things, and obviously there's more to modern Lisp than Scheme. However it does show that lambda calculus inspired or influenced Lisp, but that at least originally lisp was not based on it. Scheme can lay fair claim to being a dialect of Lisp that does implement a full-blooded form of lambda calculus, but that's another story. --TS 05:27, 7 December 2009 (UTC)
-
- I think this is not quite true: "But early Lisps were not suitable expressions of the lambda calculus because of their treatment of free variables." The earliest, a-list-based Lisps (e.g. Lisp 1.5) did support lexical scope, but at the cost of expensive variable lookup. Later lisps used implementation shortcuts that did not support full lexical scope (in the terminology of the time, they supported downwards but not upwards funargs). See Joel Moses, "The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem", M.I.T. Project MAC Memo AI-199/MAC-M-428 (June 1970) full text. --macrakis (talk) 15:30, 7 December 2009 (UTC)
- Thanks. I think you're right, and have for some time been vaguely aware that lexical scope was supported to a certain extent by Lisp 1.5 and even MACLisp. I'm pondering how to express that in the Scheme article. Ultimately this concern will be part of the article on the history of Scheme and (if we ever get around to writing one) an article on the broader history of Lisp. I think the key may be the level of consistency with which lexical scope is enforced in Scheme, in contrast to earlier Lisps. --TS 08:54, 8 December 2009 (UTC)
- I think this is not quite true: "But early Lisps were not suitable expressions of the lambda calculus because of their treatment of free variables." The earliest, a-list-based Lisps (e.g. Lisp 1.5) did support lexical scope, but at the cost of expensive variable lookup. Later lisps used implementation shortcuts that did not support full lexical scope (in the terminology of the time, they supported downwards but not upwards funargs). See Joel Moses, "The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem", M.I.T. Project MAC Memo AI-199/MAC-M-428 (June 1970) full text. --macrakis (talk) 15:30, 7 December 2009 (UTC)
[edit] I also though that I have written this part :)
I came here because the entry McCarthy Formalism has many mistakes and I propose to remove that article. It is about the relation between Recursive functions and symbolic expressions.
As I told there, since McCarthy wrote "Recursive Functions of Symbolic Expressions ...", he presented a system equivalent o recursive functions. There is a correspondence between Zero an Nil, Succ and Cons, U and Car,Cdr, etc. McCarthy said in an article about Lisp circa 1980 in the CACM that he did not understood lambda-calculus at that time. Otherwise he did not had the error of dynamic binding the only thing that he would change if he could make time back.
This mistake should be fixed in this article (Lisp (programming language)). Besides that choice of Lambda expressions by McCarthy. There is another reason that makes many people (I was one of those) who think Lisp is based in lambda calculus. Newer dialects, maybe Scheme is the more elegant in this aspect, are used to teach programing languages by implementing it's Denotational semantics. Friedman et-al Esentials of programming languages, is a very good book with that approach. They show how to implement fixed point combinators in that strict language. You can teach how to write the factorial function using fixed point combinators, as it is done in the lambda-calculus. But that is another thing. I just say that such approach reinforces the myth that lisp was based in lambda calculus.
Anyway, I think both of you agree with me to correct this. In general I think this article is fine. Although it is more biased to a practical programmer point of view. That may introduce some resistance to make this correction. — Preceding unsigned comment added by Elias (talk • contribs) 05:17, 14 February 2011 (UTC)
[edit] BEE Lisp, possible spamming
Beware that anon users (194.154.66.35, 212.5.80.7, 212.5.80.7 again, others?) are adding BEE Lisp to various places in the article, including "Dialects" and "External links".
BEE Lisp is a commercial Lisp compiler, hence my worry that it's spam. If it is indeed a notable dialect - my apologies. 75.45.97.117 (talk) 12:04, 27 January 2010 (UTC)
BEE Lisp is indeed a totally new commercial product (likely based upon a free GPL implementation) and does not relate to any relevant dialect. I believe it is spam and should be removed. —Preceding unsigned comment added by 76.238.143.15 (talk) 21:11, 24 June 2010 (UTC)
[edit] "somehow compatible" ?
At the bottom of the History section, where Common Lisp is first mentioned, shouldn't "somehow compatible" be changed to "somewhat compatible"? Peter Delmonte (talk) 06:24, 20 February 2010 (UTC)
[edit] Lisp dialects
Why is there no information about muLisp? Why is it ommitted? —Preceding unsigned comment added by 84.193.134.35 (talk) 10:59, 11 July 2010 (UTC)
- Probably just an oversight. I agree mulisp is historically interesting. muLisp is mentioned in three entries but not as a hyperlink. It deserves its own page if someone has information on it. Portable Standard Lisp (PSL) is not mentioned either, and should be. --Netsettler (talk) 16:28, 12 July 2010 (UTC)
[edit] History -> "at"?
The first line of the History section:
- "Lisp was invented by John McCarthy in 1958 while he was at the Massachusetts Institute of Technology (MIT)."
"At" is ambiguous – was McCarthy attending MIT, or teaching there? Looking briefly over his article, it seems that it was the latter, but as I don't actually know, I thought I'd bring it up here and let someone with a bit more knowledge on the subject fix it. 69.105.38.18 (talk) 02:37, 4 August 2010 (UTC)
[edit] Lisp is the second-oldest high-level language in use?
The article states Originally specified in 1958, Lisp is the second-oldest high-level programming language in widespread use today; only Fortran is older.
Is Lisp really in "widespread use" today? I mean, the modern dialects (eg, Common Lisp) are, but the Lisp dialects in use today are entirely different beasts than the Lisp that was created in 1958 - one could argue that they are derived languages, rather than dialects (or is C an ALGOL dialect?). Thats like saying that ALGOL is still in widespread use because ALGOL-derived languages are in widespread use today. —Preceding unsigned comment added by 89.101.42.6 (talk) 19:18, 10 September 2010 (UTC)
- The Lisp dialects used today are a rather closer descendant of the early ones than C is of Algol. There wasn't a single Lisp standard in the early days; rather, every university or research group that built a Lisp system had a slightly different one -- but all of these were mutually recognized as being "Lisp". It's probably worth noting that CL was considered an effort to find common ground among existing dialects, rather than to create a wholly new language. In any event, '60s Lisp is recognizable as a Lisp today, whereas Algol doesn't really look like C. --FOo (talk) 21:08, 6 November 2010 (UTC)
[edit] Spelling?
Is the number 1178 in section "Historically significant dialects", link "IEEE Scheme – IEEE standard, 1178–1990 (R1995)" meant to be a year? —Preceding unsigned comment added by 130.92.9.55 (talk) 12:36, 4 November 2010 (UTC)
- No, it really is 1178, not 1978. The number 1178 is part of the name of the standards document, the number after the dash denotes a specific revision (or the year, that revision was published). The IEEE Standards Association uses (mostly) numerical codes to identify the individual standards it publishes, like IEEE 754-2008 for the 2008 revision of the binary floating-point arithmetic standard, IEEE 1394 for FireWire, or IEEE 1541-2002 for the document defining standardized binary prefixes. Strictly speaking, I think, the number denotes the respective IEEE standards committee. — Tobias Bergemann (talk) 15:06, 4 November 2010 (UTC)
[edit] Asymptotic complexity of appending two lists.
I didn't want to change anything since all I know about lisp is what I've read so far in this article. But to me, it sounds fishy that the asymptotic complexity of appending two linked lists is O(n). — Preceding unsigned comment added by Enisbayramoglu (talk • contribs) 16:48, 8 September 2011 (UTC)
- O(n) where n is the total length of all but the last list being appended. Append is O(1) for the last list. It takes n cdr operations just to get to the end of a length-n list in the standard representation; also O(n) to copy it (which you have to do for 'append'). Of course, it's possible to use other representations (see CDR coding and unrolled linked lists), but they have worse performance characteristics when modifying lists (RPLACD). --Macrakis (talk) 17:30, 8 September 2011 (UTC)