Earlier quoted context omitted.
> "Plus, the (classic intro-to-LISP) notion that "it has a simple syntax with few constructs so it must be easy to program in" has to die. Assembly has very simple syntax too. I wouldn't write a large program in it." Suppose we amend that to simple high-level constructs? I don't think I've ever picked up a language as fast as I picked up scheme. Not even python.
Scheme's extremely simple* but it's a perverse simplicity. My experience from tutoring CS students in Scheme back in the day was that it usually either clicked immediately, or not at all. The folks who'd perhaps never get good at it aren't necessarily poor programmers. I don't know that any of them were great programmers, but that might be my prejudice as someone who was having a hard time teaching them a programming…
Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
81–90 of 114 posts
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#82Earlier quoted context omitted.
If we had LISP, we wouldn't really need CSS or HTML either. Everything could be represented with s-expressions and we would all reach nirvana.
Only if every single designer who happens to write some styles has paredit installed. Ditto for every non-technical user who would want to customize some template or something. Sexps are cool, but you really, really need proper tools to edit them efficiently. Without them it's very easy to make a mistake, which of course will make it to runtime, because it won't be a syntax error in most cases. That's the downside of…
languages like haml and jade are very close to M-expression languages and could work as drop-in replacements for S-expressions just like they are used as replacements at present or s-expr could be used. In addition, in the presence of a lisp language, the code data relationship can be quite convenient.
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#83I wonder if any teacher already tried to teach LISP as a first language instead of java or C, and what there was to learn about it.
It's subtle. For instance my university taught us scheme basics (no higher order functions, no macros) in the very first computing module[1]. Before teaching us x86 assembly, HTML, VBA. [2] IMO nobody [3] considered it programming. I was a geek and thought it was pure vapor [4], programming needed to be cpp with graphics or GUI or memory cells. I don't know what other people thought about it but I'd bet they forgot a…
Student's inability to understand this is their own failure and ignorance.
As to the topic at hand, in JS, those ideas of higher-order functions which don't exist in C (to any meaningful extent) are the primary means of abstraction. I've seen very many C++ or Java programmers think they can handle JS just fine. It's never too long before those functional concepts they considered useless (or even worse, were never taught) begin to haunt them.
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#84> The syntactic and semantic simplicity of LISP enables non-experts to quickly master a basic level of LISP programming. For Scheme this might hold true. But most Common Lisp programs I've seen are beyond hairy. Plus, the (classic intro-to-LISP) notion that "it has a simple syntax with few constructs so it must be easy to program in" has to die. Assembly has very simple syntax too. I wouldn't write a large program in…
> "Plus, the (classic intro-to-LISP) notion that "it has a simple syntax with few constructs so it must be easy to program in" has to die. Assembly has very simple syntax too. I wouldn't write a large program in it." Suppose we amend that to simple high-level constructs? I don't think I've ever picked up a language as fast as I picked up scheme. Not even python.
What ends up mattering most is how productive you are once you're familiar with it. This is where a language like Python, and most other widely used languages, tend to be much better than Scheme for most programmers.
Scheme may be easier to learn initially, but it's generally much less useful in the long run in most cases.
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#85Earlier quoted context omitted.
Scheme's extremely simple* but it's a perverse simplicity. My experience from tutoring CS students in Scheme back in the day was that it usually either clicked immediately, or not at all. The folks who'd perhaps never get good at it aren't necessarily poor programmers. I don't know that any of them were great programmers, but that might be my prejudice as someone who was having a hard time teaching them a programming…
I believe this is where Common Lisp got it right and scheme got it wrong. The scheme designers wanted a more pure language when often, the dirty imperative method is desirable. Common lisp has many features to make programming of real, large-scale projects easy (a great example is looping constructs which are often more obvious and easier than the more 'pure' tail recursion preference of scheme).
Predicates end with `?`, like `equal?`.
This naming and consistency makes it easier to learn Scheme.
What makes Common Lisp more practical is libraries. Hairy and crufty some may be, but many of them, and many of good quality. You know the old saying about how X is a badly implemented version of half of Common Lisp.
The Scheme-descendant Racket is, however, plenty practical in this regard.
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#86Earlier quoted context omitted.
I believe this is where Common Lisp got it right and scheme got it wrong. The scheme designers wanted a more pure language when often, the dirty imperative method is desirable. Common lisp has many features to make programming of real, large-scale projects easy (a great example is looping constructs which are often more obvious and easier than the more 'pure' tail recursion preference of scheme).
Scheme has plenty of dirty imperative methods, if you want. Their names end with `!`, like `set!` to mutate a variable. In most cases it's cleaner to be purely functional, but it's not required. Predicates end with `?`, like `equal?`. This naming and consistency makes it easier to learn Scheme. What makes Common Lisp more practical is libraries. Hairy and crufty some may be, but many of them, and many of good quality…
Non-standard, non-portable racket libraries aren't the answer to scheme's basic nature (though I believe r7rs-large will solve a lot of these issues). More serious dealbreakers in my work are the lack of declare, no built-in OOP, and no spec for optional and keyword parameters.
Scheme has other issues too such as the inability to turn off continuations (they are great in some situations, but can cause performance issues and specifically cause increased memory usage).
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#87Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#88> Simple debugging. This is an area where AI techniques could be quite helpful. Detecting and explaining common syntax and runtime errors is a crucial step in teaching a new language. Tools which provide this type of support could increase the interest in this language in the mainstream. Our current debugging support is minimal and provides only the basic commands: step, skip, and continue. I have given some thought…
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#89I was thinking about this too. I am somewhat of a lisp newbie, but one of the people on the LedgerSMB team also maintains Armed Bear Common Lisp (i.e. Lisp in the JVM). I remember talking with him about teaching languages to kids. Like me he has three kids. I was noticing that many of the beginner languages were quite Lispy, including Logo which I had been teaching my oldest and I asked about the suitability of vario…
In terms of the importance attached to language aesthetics, ANSI Common Lisp is probably closer to PHP than Ruby, ML, or Python. That doesn't mean that it isn't used to write beautiful code, only that it leaves doing so solely to the programmer's discretion.
Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]
#90Lately it seems like more people are doing compile to JS (like asm.js and Mozilla's emscripten work in Odin Monkey [2]) which fits in perfectly with LISP dialects. Programmers can still create their own DSLs, macros, compilers, etc. in LISP and use them for modern web apps today. Just because this is a less popular/documented route doesn't mean it isn't possible. I hope we'll see a rise in LISP web programming pretty soon.
It would be fun if someone could write a compiler for a new ClojureScript dialect that targets asm.js and takes advantage of CPS for recursion like Scheme does.
[1] https://github.com/jashkenas/coffee-script/wiki/List-of-lang...
[2] https://wiki.mozilla.org/Javascript:SpiderMonkey:OdinMonkey