Live data from Hacker News

Why SICP Matters

cs.berkeley.edu

61–70 of 130 posts

Re: Why SICP Matters

#61
post #47
post #28

Earlier quoted context omitted.

Dynamic typing is outdated?!

Yes, since at least 80s or so. Languages based on Hindley-Milner type system ( https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner ) are static and nice to work with. E.g. OCaml or Haskell. I have some professional experience in rewriting Python and Ruby programmes in Haskell. I make the same amount of stupid mistakes in Python as in Haskell. But whereas Python blows up at runtime / test time, in Haskell it's the co…

I wrote a simple OCaml compiler for a class in college. I particularly enjoyed using different operators for floating-point and integer math — brilliant usability there, really sold me on static types. Haskell does better with its type classes, except my four attempts to understand monads and arrows have, so far, met with rather mixed success.

Static typing has its place in some people's hearts, and I respect that, but saying that dynamic typing has been outdated since the 80s is (1) trolling, and (2) happens to also just be, like, your opinion, man.

Re: Why SICP Matters

#62

I was working through the coursera functional programming course on scala which is modeled on SICP. While the content is really good, it suffers from the same problems pointed out by Dr Harvey. Getting used to scala syntax takes time while Scheme was a breeze.

Yeah, Scala is the new C++ - immensely powerful but there's ten different ways to do everything. I like the language, but I'm simultaneously disgusted by it.

Trying to have a small language sometimes results in allowing (or having to allow it in the sense of not outlawing it) multiple ways to do the same thing, especially as the expressiveness increases.

As an example, I don't think Python's “there's only one way to do it”-approach would have a chance of surviving if the language was as expressive as Scala.

In the end, as long as Scala stays simpler than Java 8 and vastly simpler than F#, C# and C++, it's good enough for me.

Re: Why SICP Matters

#63
post #28

Earlier quoted context omitted.

Dynamic typing is outdated?!

I'm a big fan of Clojure but I think this is true. I expect that in this decade we'll start seeing a shift to programming languages with so-called algebraic type systems. Java, Python, Ruby, and Clojure will seem outdated just like C++ seems outdated now (not that it doesn't have its uses).

C++11 is not outdated. Except for backwards-compatibility artifacts like header files, it's actually quite modern and pleasant to use. If performance is a consideration, then, put bluntly, it's the only high-level language available.

Re: Why SICP Matters

#64
post #26

Excellent article. I'm immensely glad and lucky to have had Brian Harvey as a professor, and this echoes exactly what he taught us and the general teaching at Berkeley: that the concepts of programming and computer science were of paramount importance, and that you should understand them in the abstract. To this day, this is why I value a good theoretical CS education, why I value university education, and why I cont…

Sounds like Berkeley are making a huge mistake and losing sight of what a University is there for. They seem to have moved to a more practical approach than theoretical approach. This is the type of approach that is more appropriate to a Technical College than a major University. This new approach almost seems like teaching civil engineers how to weld and rivet in order to build bridges, rather than deeply understand…

Does MIT even use Scheme for their intro CS courses anymore? Harvey's article makes it sound like they switched to Python when they went from a "curriculum organized around topics" to a "curriculum organized around applications" - it seems to be the trend everywhere.

Re: Why SICP Matters

#65
post #2

When I was student, my school has decided to stop using Ada as teaching language. They were hesitating between CAML Light and Scheme. They asked me my feeling because I was one of the rare student to know well both of them. I like both of them, but I choose CAML Light. Scheme has a lot of parenthesis that makes it look very old fashion. Scheme type system was also outdated. Programming in CAML Light was more fun for…

The most useful didactic feature I've found in ML-like languages--Haskell for me, but they're all somewhat similar--was pattern matching. Honestly, pattern matching is what really got me to understand recursion. It also makes the language feel much more declarative than using `if` and `cond` statements.

Re: Why SICP Matters

#66

For those turned off by its mathiness, one of the coauthors explained, "There’s a tremendous amount [of math] in this 6.001 book. That’s partly because we were writing it for MIT. You want to talk about higher-order procedures, so the obvious thing you can do is you can express the idea of an integral. So that’s an obstacle for lots of places. Remember, at MIT the context we were writing in is every person who took t…

That is really a wonderful interview. Thanks for sharing.

You're welcome. You might also enjoy Rich Hickey's interview, as I did. http://www.codequarterly.com/2011/rich-hickey/

"And, once there [writing only code that matters], you are able to achieve a very high degree of focus, such as you would when playing Go, or playing a musical instrument, or meditating. And then, as with those activities, there can be a feeling of elation that accompanies that mental state of focus."

Re: Why SICP Matters

#67
post #28
post #2

When I was student, my school has decided to stop using Ada as teaching language. They were hesitating between CAML Light and Scheme. They asked me my feeling because I was one of the rare student to know well both of them. I like both of them, but I choose CAML Light. Scheme has a lot of parenthesis that makes it look very old fashion. Scheme type system was also outdated. Programming in CAML Light was more fun for…

Dynamic typing is outdated?!

Type inference like in ML languages can provide a similar development experience with the added benefit of performance and tooling.

Additionally when doing big projects where the team does not care for unit testing, dynamic typing can turn out to be a big problem.

Having said this, it has its places, I do use dynamic languages a lot, just not in big enterprise projects.

Re: Why SICP Matters

#68
post #12

I have to confess I just discovered you can order a relatively cheap copy (well, compared to Amazon) of SICP direct from MIT. I have only skimmed so far, but combined with the lectures I have to say that I really wish that had been my introduction to programming. Maybe it is just because of where I'm at, but it really feels like in the first 3 lectures some of the more elusive topics of programming are at least touch…

Years ago, I was very interested in having the physical book to read, but too cheap to buy a new copy. Every once in a while I would check half.com and book shopping comparison sites looking for a cheap used copy. One day in December 2006, there was a rift in The Matrix and Barnes and Noble was selling the hard copy 2nd edition for ... $7.00 (new). I ordered two copies and as soon as they were physically in my hands, I tried to order more. Alas, the glitch had been fixed by then. Sometimes I wonder if there shouldn't be a general price scanning app that will alert on wild changes in the price of a popular book.

Re: Why SICP Matters

#69

I was working through the coursera functional programming course on scala which is modeled on SICP. While the content is really good, it suffers from the same problems pointed out by Dr Harvey. Getting used to scala syntax takes time while Scheme was a breeze.

Yeah, Scala is the new C++ - immensely powerful but there's ten different ways to do everything. I like the language, but I'm simultaneously disgusted by it.

"there's ten different ways to do everything"

I believe this observation is a bit misleading. Indeed, Scala does offer some alternatives, but these are helpful in the transition from other languages with less powerful type systems. Idiomatic Scala is not really a hodge-podge of choices.

Re: Why SICP Matters

#70
post #64
post #26

Earlier quoted context omitted.

Sounds like Berkeley are making a huge mistake and losing sight of what a University is there for. They seem to have moved to a more practical approach than theoretical approach. This is the type of approach that is more appropriate to a Technical College than a major University. This new approach almost seems like teaching civil engineers how to weld and rivet in order to build bridges, rather than deeply understand…

Does MIT even use Scheme for their intro CS courses anymore? Harvey's article makes it sound like they switched to Python when they went from a "curriculum organized around topics" to a "curriculum organized around applications" - it seems to be the trend everywhere.

MIT did indeed switch from Scheme to Python for their introductory courses (though I've heard they still use Scheme in some more advanced courses).[1][2]

However, I recall that a little later some MIT graduate students started teaching their own version of the classic SICP-based course. I can't seem to find a link to it now, unfortunately. I wonder how that turned out, and if they're still teaching it now.

[1] - https://news.ycombinator.com/item?id=602307

[2] - https://news.ycombinator.com/item?id=530605

Post reply on HN