Hacker News new | past | comments | ask | show | jobs | submit login

Were you going to let the rest of us mere mortals in on the reason?

I think it's good to offer a version of SICP adapted to a language that's used today very prominently and is relevant to many current jobs in the industry.




A long essay could be written about that. A few quick things. There's Scheme's simple syntax, which doesn't get in the way of what the book is actually teaching. The fact that, of the mainstream programming languages, Javascript is the most crufty and full of gotchas, with all kinds of weird, unexpected behaviours even experienced developers can't always keep track of, many caused by bugs in the first version. Javascript's tendency to fail quietly when other languages would shoot out error messages makes it an awful language to experiment and play around in. Javascript Stockholm Syndrome. Decades of tradition. The entire last section of the book's intimate relationship with Scheme.

The fact that this is a book about learning to program, not about maximizing your potential for jobs. It's a compsci book to learn to be a good programmer, not a book about synergizing industry trends to build your resume.

When SICP was written, most people still wrote in Assembly for most things but COBOL, ADA, and old-school FORTRAN were also popular. Part of the longevity of the book is its appropriate choice of language.

Would it be as enlightening to write a series of JS compilers in JS? Or are they writing Lisp compilers in JS? Doesn't that miss the entire point of the book?


> Were you going to let the rest of us mere mortals in on the reason?

Scheme (in contrast to Java etc) is special because of its very easy syntax and how it is evaluated. Since SICP is about syntax/structure and its evaluation/interpretation you should really stick to lisp.

> I think it's good to offer a version of SICP adapted to a language that's used today very prominently and is relevant to many current jobs in the industry.

I don't. Maybe this Javascript-Version is also a great book, but if you don't know scheme/lisp and wonder why scheme is a better choice for SICP I encourage you to read the original.


Why? Why does a textbook about fundamental principles need to be 'adapted' to technology currently in use in industry?

The Feynman Lectures uses an example of a screw jack with 10 threads per inch, and a 20" lever. Should we update this to a name brand screw jack with 8 or 16 threads per inch, and an 18" breaker bar, because those are common in industry today?

Be sure to extend the introduction of that chapter to include a history of this particular screw jack company, and who currently holds the trademark, and all the major companies that make screw jacks today, and typical uses of jacks, and how they're constructed [1].

[1]: https://sicp.comp.nus.edu.sg/chapters/1


> The Feynman Lectures uses an example of a screw jack with 10 threads per inch, and a 20" lever

Well, it would certainly help to change the examples to proper SI units.


In America, at least, that's still not what we use in industry. So the top response to my comment is a proposal to make this classic American book even less practical here!


> Why? Why does a textbook about fundamental principles need to be 'adapted' to technology currently in use in industry?

Because it's widely used in the industry.


Why does that matter? You are not going to get paid to work through the SICP exercises on a job. Rather, you are going to use the things you learned through SICP on a job. Like deciding when JavaScript is the right tool and when it isn't.


> Rather, you are going to use the things you learned through SICP on a job.

That's my point. Is that bad somehow that it's written in a familiar and accessible language for the majority?

One can sharpen its knowledge without the barrier to understand a new language and syntax.


If learning a new language and syntax is a barrier, you will not be able to follow SICP anyway, since it includes developing multiple languages in various paradigms.


Oh, okay. I thought I was just lazy, not dumb. My bad.


Come on, I'm not putting anybody down. Just pointing out that you cannot avoid learning new languages anyway, since the exercises in the book requires you to design multiple different languages. It is basically a book about language design.


I don't know anyone who first read this book outside of college. Its concepts aren't exactly directly applicable to typical work. If you're given the task to build something in Javascript for work, it's probably not a metacircular evaluator or a register machine simulator, or even a closure-based object system.

I'm curious who's reading SICP who finds it difficult to grok in Scheme, or more useful in Javascript. What are you doing in the industry that familiar syntax is top priority?

I would think that other books, specific to Javascript, would be a much better fit for people writing pretty much anything in Javascript.


That might change now. Someone might pick this up after completing a few JavaScript chapters in a JS specific book. I haven't read the book yet so I can't comment on the concepts, but based on your list it's a great resource for any newbie programmer, especially to those who are self taught like me.

> What are you doing in the industry that familiar syntax is top priority?

The question is more like: "Do I want to invest time into learning a new language just to read and comprehend new and interesting concepts?".

With endless knowledge out there, I usually gravitate towards the least friction.

> I would think that other books, specific to Javascript, would be a much better fit for people writing pretty much anything in Javascript.

I don't think of this book as the ultimate JavaScript book. It just uses it as the most accessible language out there, and that matters a lot imho.


It is a great book for self-taught programmers. But the book is about programming language concepts and paradigms, and explores these though the development of multiple languages, interpreters and compilers. It is fundamental to the book that you have to learn a bunch of small languages. Scheme just makes it really easy to implement new languages.


That makes sense looking at it from this angle.


SICP is about exploring various programming concepts and paradigms like functional, object-oriented, constraint-based, lazy evaluation and so on. Scheme happens to be the perfect vehicle for this, since its support for code-as-data makes it much easier to implement new sub-languages and evaluation forms.

SICP is not about learning any particular language, it is about learning concepts which will make you understand JavaScript much better than anyone who only knows JavaScript.

If having to learn a new language like Scheme is an impediment to starting SICP, then you will not get past the first chapter anyway.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: