4 ms·
Technical Issues of Separation in Function Cells and Value Cells (1988)
- sidpatil 5y agoFrom the title, I thought this was going to be about something like Lotus Improv [1]. [1] https://en.wikipedia.org/wiki/Lotus_Improv https://en.wikipedia.org/wiki/Lotus_Improv
- ncmncm 5y agoWe may study this document to help us understand what it was about Lisp and its user community that made Lisp untenable as a production language. Javascript suffers from all of Lisp's technical awkwardnesses, and many more, but became a mainstream language anyway.
- MathMonkeyMan 5y agoYou probably know the reason. Javascript is the one thing that allows you to control the behavior of the browser, and the browser is the thing that makes you the money.
- j-pb 5y agoSamantically javascript is a mixture between self and scheme though, with a Java like syntax on top. Despite all it's warts caused by bad APIs and awkward standard library. The fundamental language is (semantically) quite nice. It really put a focus on data and data-literals, and having abstract arrays and associative array literals at the very core of the language has had a huge impact on programming languages in general. (more so than s-expressions had)
- MathMonkeyMan 5y agoWell put. As an admitted Crockford fanboy, I reach for Javascript in a number of non-web situations. When I don't use Racket :) Also, thank God for node and deno.
- blacktriangle 5y agoHow do you figure? Both Scheme and CL have had their occasional great successes, suggesting fundamental technical issues are not what is holding them back. But also, this article is about lisp-1 vs lisp-2 (or as it jokes more accurately lisp-5 vs lisp-6). Given neither Scheme(lisp-1) or CL(lisp-2) have had mass market success, I can't imagine the debate over namespaces has anything to do with lisp not taking over the world.
- ncmncm 5y agoThat Lisp advocates thought this difference was worth agonizing over at length seems to indicate something diagnostic. That the two namespaces were unnecessary had been demonstrated. That should have sufficed. C also has two namespaces, one for structs and one for literally everything else, that C++ abandoned without looking back. I doubt you can find anything written that more than notes the backward-compatibility hack that made it workable.
- blacktriangle 5y agoThis has nothing to do with Lisp advocates. The X3J13 committee agonized over most every detail of CL to this degree over a period of years that is long gone. That level of agony is what has created a language that has architecturally stood the test of time. Sure it has warts, but warts are preferable to reinventing the wheel every few years in search of some platonic idea of a language. The only reason this particular paper is noteworthy is that people see to love to argue about lisp-1 vs lisp-2 just like they do about syntactic whitespace and tabs vs spaces.
- ncmncm 5y agoThe point is that they agonized pointlessly. The result sits on a shelf, obscure.
- kazinator 5y agoThat it's not necessary to put everything into one namespace is also demonstrable. In terms of C compatibility, C++ still has different namspaces for goto labels, macros and structure members. In C++, every class scope is a namespace (whereby if there is an ambiguity or clash, we can use the class name together with the scope resolution operator to qualify a name). If that's not enough, there is the namespace keyword. All programming factions agonize over something. C programmers agonize over, do I always have to make macros in ALL CAPS or not? Should the leftmost argument always be the destination? Intrusive container, or void * pointer to data? uint32_t here, or just int will do?
- kazinator 5y agoJavascript is mainstream because if you don't write code in Javascript, or generate it, then you don't run on the browser. If line-numbered BASIC had been chosen as the browser extension language, that's what you'd be spewing today as a web developer.