Live data from Hacker News

Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

norvig.com

91–100 of 114 posts

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#91
post #83

Earlier quoted context omitted.

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…

Programming and bit fiddling are different. One is a logical analysis and breakdown to simple elements while the other is a method of implementing that breakdown in a specific manner. 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'v…

All I wanted to point out is how legacy computer use[1] shapes your understanding, and how candid introductory courses can bounce against that like a rubber ball.

[1] growing with computer as a user, what amaze you is what you can perceive : gui, games, external devices. Which are all designed to amaze. When you get to know how computers are made, your first desire is to reproduce these things. Abstraction, expressiveness aren't on your map yet.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#92

Earlier quoted context omitted.

While nothing uniquely "requires' Javascript, replacing it in an existing browser is no easy feat. Look at how much work has gone into making Dart work just in Chrome. And if any browser is going to replace Javascript, it's going to be Chrome (first), not Firefox - Mozilla is doubling-down on Javascript with both asm.js and FirefoxOS. Google is doubling-down on efforts to replace and/or subvert Javascripts, with both…

I'm not sure asm.js is a bet on JavaScript, per se. It makes using other languages easier without resorting to a whole new language like Dart, or dependencies on certain platforms with NaCl.

It's not fair to claim NaCl is restricted to any platform since all implementations now use PNaCl.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#93
post #80

I 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…

Brendan Eich made the statement (speaking of JS as the asm of the web): "Source as 'bytecode' also avoids the big stupid Java bytecode mistake: freezing a poorly designed lowered form of Java, then being unable to evolve the high-form source, i.e., the Java programming language for fear of breaking Java bytecode compatibility. This severely messed up the design of inner classes and then generics in Java -- and then S…

> though for the record, I've seen more nested parenthesis/braces in JS code than I've seen in a lot lisp code

I saw a presentation once, where they compared the amount of parenthesis/braces in mainstream languages vs Lisp, with Lisp having less in most algorithms being compared.

For example,

    func_call(args) vs (func_call args)
    array_access[index] vs (array_access index)
The thing is, since in other languages parenthesis/braces tend to be scattered along the source file, it looks like less than Lisp based languages.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#94
post #83

Earlier quoted context omitted.

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…

Programming and bit fiddling are different. One is a logical analysis and breakdown to simple elements while the other is a method of implementing that breakdown in a specific manner. 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'v…

> 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.

And nowadays they cannot runaway as functional programming concepts begin to infect their languages as well.

They are left with:

- stay in the past, hoping to retire before being forced into newer versions of their languages

- learn and embrace FP and get to discover how OOP and FP can work together

- try to jump to other languages that are still friendly to old school developers

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#95
post #83

Earlier quoted context omitted.

Programming and bit fiddling are different. One is a logical analysis and breakdown to simple elements while the other is a method of implementing that breakdown in a specific manner. 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'v…

All I wanted to point out is how legacy computer use[1] shapes your understanding, and how candid introductory courses can bounce against that like a rubber ball. [1] growing with computer as a user, what amaze you is what you can perceive : gui, games, external devices. Which are all designed to amaze. When you get to know how computers are made, your first desire is to reproduce these things. Abstraction, expressiv…

> Abstraction, expressiveness aren't on your map yet.

Not only that, there are multiple levels of abstraction to fully grasp everything.

For some people thinking in the abstract way of computing is already too much.

Then those think they have mastered the basic concepts of computer abstractions like loops, decisions, data structures, there is the next level of meta-abstractions.

Meta-abstractions used to manipulate the said abstractions to fully mold the whole computer system like clay. The same way mathematical abstractions reason about the common man mathematics.

Very few are able to move between abstraction levels, and those that do forget how it was their view of the world before they fully grasped it.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#96
post #95

Earlier quoted context omitted.

All I wanted to point out is how legacy computer use[1] shapes your understanding, and how candid introductory courses can bounce against that like a rubber ball. [1] growing with computer as a user, what amaze you is what you can perceive : gui, games, external devices. Which are all designed to amaze. When you get to know how computers are made, your first desire is to reproduce these things. Abstraction, expressiv…

> Abstraction, expressiveness aren't on your map yet. Not only that, there are multiple levels of abstraction to fully grasp everything. For some people thinking in the abstract way of computing is already too much. Then those think they have mastered the basic concepts of computer abstractions like loops, decisions, data structures, there is the next level of meta-abstractions. Meta-abstractions used to manipulate t…

Agreed. It's similar to music where you can reach proficiency with scales, and then stop thinking of them as rules but play with them as you see fit.

I believe that first the algol genealogy suffers from the ~difficulty of crossing metalevels, secondly, the people behind these languages were able to do so and see the language as a vehicle, a mean, not an end. But beginners see the finger, not the moon and end up thinking in terms of builtin constructs. Lisp being already unrelated to any machine, and with the serendipity of sexp easy homoiconicity you see swim in this universe of abstraction levels.

> Very few are able to move between abstraction levels, and those that do forget how it was their view of the world before they fully grasped it.

I enrolled Coursera MOOC teaching scheme and sml, watching many students being emotional (anger, despair) about interpretation (especially when circular) reminded me of myself in college. The worst part is that the best I could say was "keep trying, you will understand". I wanted to tell them about the beauty and the freedom you feel but our minds were too separate and my understanding not good enough yet.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#97
post #60
post #53

Earlier quoted context omitted.

> But this sort of thing already happens all the time. You don't have the right flash player, or the right silverlight player, or the right version of Java. For one, if you find it bad, then why would you want to add to this badness with extra web languages? If anything, what you say is a counter-example. Second, what you describe has stopped happening to 90% of web users for like 5 years or so. Nobody caresa bout Ja…

> if you find it bad I don't. (Presuming that by "it" you mean "having a lot of plugins floating around".) > Nobody caresa bout Java or Silverlight Netflix uses Silverlight. There are an awful lot of nobodies using Netflix. > we seem to be doing ok even with such a language That depends on what you consider "OK". Blub users always think that things are OK. > most languages cannot handle unicode strings properly The p…

>That depends on what you consider "OK".

What I consider OK is that we have had great growth in the breadth, scope and capabilities of the modern web. I've been on it professionally since 1996, and followed it even before, and I don't think there's anyone who would disagree with such a statement.

From a joke environment based on plain text circa 1993-4, we know have the ability to emulate whole CPUs inside a Javascript VM, AND with usable speed. And then there's ES6 with a whole lot of additions to the language.

>Netflix uses Silverlight. There are an awful lot of nobodies using Netflix.

Well, in the US. The world is 20 times bigger than the US. I'm not even sure why US users put up with Netflix pulling this shit.

>Blub users always think that things are OK.

Well, other's have it worse. They always think that the "blub" concept, a random idea in an essay, is something that's true, universal and settled, were it's just someones opinion. The blub idea, furthermore, is about the "expression problem", and it's condescending to people by assuming that that's all that matters.

People chose to write something in C, C++, Assembly, Lisp, Haskell whatever for lots of reasons, and the success of that undertaking involves a lot more reason than "expression". Things like community, libraries, toolsets, hireability, existing codebase, documentation, speed, heck, even familiarity, play a role as much, or even more, important than the mere "expression" capability of the language.

And, statistically speaking, the oh-so-expression language people don't have much to show for it, whereas the blub C/C++ people have tens of thousands of indispensable programs used by billions. Sure, they are much less, but at one point they were much more (Lisp existed before C/C++), and they also had nice funding going on until the mid-eighties, with not much to show for it. 3-4 C people in AT&T laid the foundation for most of what we use today. Were are the equivalent non-blub people, who had an impact in fields other than PL design?

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#98

As I was reading, I couldn't help but thinking about why the world didn't turn out this way, and I came to the conclusion that in 1998 the only two companies who realized that the future of the web was the browser were Microsoft and AOL. [1] The rough isomorphism between HTML and Lisp S-expressions [2] was an obvious technical advantage over JavaScript and among the Lisps, though tellingly not the case with Scheme, t…

> among the Lisps, though tellingly not the case with Scheme, the association list was already in place An association list is just a list which elements are conses. I'm fairly certain that cons, car and cdr were part of Scheme since the beginning and they are all you need to build assoc and friends. Scheme lacked a proper hashtable datatype though, which was present in some other Lisps.

he was talking about scope here. hashes do not help much.

assoc lists were important to implement dynamic environments simple and fast, which is not so easy with hash tables. In assoc lists you tolerate duplicates, but by putting new at the beginning you override/"shadow" the old ones, until you leave scope and use the old assoc list. and share the data! with hashes you have to actively delete or copy the tables. non-efficient and very complicated.

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#99
post #62

Earlier 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…

Remember DSSSL anyone? Obviously worse was better

Re: Lisp: A Language for Internet Scripting and Programming (1998) [pdf]

#100
post #2

I 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.

Lisps have been used continuously for university level introductory programming courses at least since MIT's 6.001 in the 1980's. Today, PLT (the group responsible for Racket) might be considered to be the leader in research into the pedagogy of computer programming and Felleisen's How to Design Programs and student language sequence are used by several schools. I believe they include Rice, University of British Colu…

Funnily enough, the PLT group is working on a new language for education called Pyret http://www.pyret.org/. It's not very similar to Scheme, it is very similar to Python.
Post reply on HN