3 ms·
> I think conceptually, Lisp was an interpreted runtime. This is a strange statement. The manual for Lisp 1.5 describes a compiled language. Lisps have been co
by Jtsummers 2mo ago
> I think conceptually, Lisp was an interpreted runtime.
This is a strange statement. The manual for Lisp 1.5 describes a compiled language. Lisps have been compiled for over 64 years now using just that version as a baseline. Why do you think Lisp was meant to be interpreted instead?
- yubblegum 2mo agoYou are ignoring his "conceptually" bit and that is a reference to R.E.P.Loop which is what interpreters do: they read, they evaluate, they output, and loop.
- Jtsummers 2mo agoConceptually is doing a lot of heavy lifting there, then. The evaluation step of many (I won't say most) mainstream (not academic, and not toys people create in class) lisps will do a compilation step. It is not being interpreted any more than gcc interprets your C code. Describing it as interpretation is often wrong, and leads people to the extremely common (even here on HN) mistaken belief that Lisps are strictly interpreted and never compiled. No reason to leave a mistake (if it was one) or a confusing statement (if it was meant in your, hah, interpretation) unaddressed.
- yubblegum 2mo agoDisagree. Concepually is lifting according to its weight class here. It is entirely irrelevant whether all or most implementations compile. The germinal fact is that a "naive" interpreter implementation of LISP does not in anyway alter the semantics of the language or the code being executed. > No reason to leave a mistake (if it was one) or a confusing statement (if it was meant in your, hah, interpretation) unaddressed. Look buddy, I'm not here for snarking others. I am here to learn and exchange ideas.
- sroerick 2mo ago> Describing it as interpretation is often wrong, and leads people to the extremely common (even here on HN) mistaken belief that Lisps are strictly interpreted and never compiled. Well, I literally said in my post that basically all Lisp was compiled. And I was replying to a guy saying that I thought all lisp is compiled. So hopefully I'm not contributing to that misconception.
- kazinator 2mo agoBetween 1958 and 1960, it took them a good part of two years to get a compiler going. Little did they know that this costly delay would still have people saying that Lisp is fundamentally interpreted in 2026. Delaying the publication of key papers in major journals until 1960, and loudly mentioning Lisp compilation as the first application of Lisp, didn't help; too late!
- sroerick 2mo agoThis is just the Wikipedia page for "interpreters" so perhaps this is fake news but > The first interpreted high-level language was Lisp. Lisp was first implemented by Steve Russell on an IBM 704 computer. Russell had read John McCarthy's paper, "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I", and realized (to McCarthy's surprise) that the Lisp eval function could be implemented in machine code.[3] The result was a working Lisp interpreter which could be used to run Lisp programs, or more properly, "evaluate Lisp expressions".
- kazinator 2mo agoI.e. his realization that the Lisp eval function would behave as an interpreter came at the same time as his realization that the Lisp specification of the eval function can be translated to machine language. Though he did that by hand, within a short time, they had code doing that.
- sroerick 2mo agoHey, I'm probably punching out of my weight class here - I'm basically a Lisp beginner. But I will say that I don't think the manual for Lisp 1.5 gets as much airtime as the original John McCarthy eval statement, which does describe an interpreter. I do think there's a lot of conceptual overlap between an interpreter and a REPL. And while I've not read SICP my understanding is that they teach a Lisp interpreter. And also I think the author of this article is describing an interpreted language. So I don't think I'm over my skis here. But I appreciate your clarifying point! I've not read the Lisp 1.5 manual but I probably should!
- kazinator 2mo agoEVAL was described in Lisp, on paper first. Steve Russel realized that the Lisp specification of EVAL can be translated to machine language to produce an interpreter. So he did exactly that, by hand, surprising MacCarthy who had only expected his EVAL to be a reference specification, not source code. In other words, before there was an interpreter, a manual compilation step already took place with Lisp being translated to code. Several years later, they had code doing that, and it was mentioned in the 1960 paper "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I": > The LISP programming system is a system for using the IBM 704 computer to compute with symbolic information in the form of S-expressions. It has been or will be used for the following purposes: > 1. Writing a compiler to compile LISP programs into machine language. > 2. Writing a program to check proofs in a class of formal logical systems. > 3. Writing programs for formal differentiation and integration … > 4. [...] Conceptually, the specification of EVAL is a kind of term-rewriting system which indicates what is to be calculated from what, without asserting how.
- sroerick 2mo ago> Steve Russel realized that the Lisp specification of EVAL can be translated to machine language to produce an interpreter. So just to be clear, you are here confirming that the first implementation of Lisp was in fact an interpreter?
- 2mo ago