Live data from Hacker News

Why SICP Matters

cs.berkeley.edu

121–130 of 130 posts

Re: Why SICP Matters

#121

Earlier quoted context omitted.

It's also not just CS, though CS is the largest culprit because well... software is eating the world. No one cares about getting an education. They just want a job.

But there are still areas, lets say for example civil engineering, where you need to know about building materials, some physics and math to do your job. In CS, on the other hand, if you know how to put together a few web pages in Python and solve half a dozen brain teasers you may get a job in a very good company.

If you know those things... and are fresh out of Stanford, MIT, or Berkeley

Re: Why SICP Matters

#122
post #120

Earlier quoted context omitted.

You're missing my point, which was about priority order. Most people are going to college hoping to get a job. They're learning because they're told they have to learn, so they do a bad job learning. In a field like civil engineering, you can't graduate unless you pass classes that are simply unpassable without learning some stuff. (I have a friend going through aerodynamics right now and I'm hearing about everything…

We created elementary schools. The children who attended them surpassed their peers. Employers began to require them as a signal of competence. Eventually, being such a "universal good", elementary education became a public service of the state. Then we created secondary/"grammar" schools. The children who attended them surpassed their peers, who had only attended elementary school. Employers began to require a secon…

> Although the inductive step is valid, there's a problem in the assumptions

I'm really not sure who you're addressing. No one is claiming these assumptions.

Re: Why SICP Matters

#123
post #96
post #43

Earlier quoted context omitted.

I was just going to post that they are on my agenda. I have actually toyed with the thought of putting together a "book club" to go through them. I will probably have to put this off till the Fall, though.

https://groups.google.com/forum/?fromgroups#!forum/reading-s... is a reading group just starting up now if anyone is interested

I've put in my request to join. :) Apologies for leaving the body of the request blank. Didn't realize it was something that would get reviewed.

Re: Why SICP Matters

#124
post #112
post #46

I am revisiting SICP at the moment, because a friend uses it to learn programming. But I have to say, I am not nearly as impressed with the book as I used to be. Wadler's critique "Why calculating is better than scheming" ( http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.p... ) fully applies, and the book can be rather confused and ad-hoc in some places, e.g. section 1.3. A stronger focus on data structure…

Thinking on "Why calculating is better than scheming" vs SICP I realize that there is an axis where most programmer's ways of thinking can be placed, with 2 extremes: - the mathematician-programmers : the thinking in terms of "what is" extreme, or mathematical thinking inspired programming: people closer to this like to think in terms of types and usually dislike dynamic languages, they also like to be able to proper…

Interesting.

I prefer the "programming as magick" metaphor, and would say I have a playful mood regarding programming, but I still like static typing. Having said that, I love higher-order functions and macros as well.

Defining it as a continuum feels like I should be either on one end, or somewhere inbetween on the various traits, but I have rather strong attachment to some traits from each side.

I think you're right that a lot of the traits you mention tend to be clustered together in programmers though.

Re: Why SICP Matters

#125
post #61
post #47

Earlier quoted context omitted.

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, b…

Honestly, Python 2.x's dynamic typing doesn't make the experience of floating-point/integer maths much better.

The value of 3 / x changing depending on whether I pass 2 or 2.0 is the trade-off of the Python approach, and I honestly don't know which I prefer.

Re: Why SICP Matters

#126

Hi everyone, is there a kind of video/guided tutorial through Scheme and SICP? I have tried picking the book up on my own but have had a hard time retaining the information.

I'd like to add that the material covered is just hard to learn, and fairly mind-bending if you're used to traditional (procedural/OO) programming.

Take it slowly, don't be discouraged if it takes you hours to get something concept, and DO THE EXERCISES.

Re: Why SICP Matters

#127
post #124
post #112

Earlier quoted context omitted.

Thinking on "Why calculating is better than scheming" vs SICP I realize that there is an axis where most programmer's ways of thinking can be placed, with 2 extremes: - the mathematician-programmers : the thinking in terms of "what is" extreme, or mathematical thinking inspired programming: people closer to this like to think in terms of types and usually dislike dynamic languages, they also like to be able to proper…

Interesting. I prefer the "programming as magick" metaphor, and would say I have a playful mood regarding programming, but I still like static typing. Having said that, I love higher-order functions and macros as well. Defining it as a continuum feels like I should be either on one end, or somewhere inbetween on the various traits, but I have rather strong attachment to some traits from each side. I think you're righ…

...anyone grows to love static typing sooner or later, after endless debugging sessions in dynamic language codebases :)

But I think that higher-order functions don't belong to one extreme or the other - anyone uses them, even weekend-coders that do javascript or have been exposed to php 5.4's new features end up using them - they are something so basic that any language has it in one form or another, even C has function pointers. Macros, otoh are a very different creature: they may seem similar to higher order functions in Haskell where you can use hof for what you'd use macros in Lisp, but they are a whole different ball game because you can't reason (formally, or informally but within the "what is" mindview) about code that transforms/generates code (or you can, but it's just TOO HARD), and I guess this is why so many developers are afraid of them and language-designers omitted them or added them as an extra feature and not as core language defining features from day 0 (for example Scala - I bet the language would've been very different if macros would've been there since version 0.1, been more "usable", and used to build more core language features on top of them...).

Re: Why SICP Matters

#128

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…

"woah, this is unlike anything I've seen before." - it so totally isn't, if you know Ruby and to a lesser extent JS, both popular languages. It's a funky syntax coating on a fairly normal dynamic language, with about three quirks (tail calling, homoiconicity, and call/cc) all of which are more of interest academically than practically.

> JS

> a fairly normal dynamic language

You call this a "fairly normal dynamic language"?

0 == '' // true

0 == '0' // true

'' == '0' // false

Re: Why SICP Matters

#129
post #114
post #57

Earlier quoted context omitted.

My university (Helsinki University of Technology) changed the freshman course from SICP to Java in the beginning of the century. The reason was Nokia, who wanted Java programmers straight from the school. Nowadays they're using Python. I'm very disappointed I didn't have a chance to study that course. I read the book last year and did some exercises by my own. I never had so much fun with any CS book than I had with…

Nokia. That company just keeps giving. Some universities in Finland fell into that very same trap a second time and moved towards the holy triad of C#, .Net and Windows Phone. Utter shortsighted idiocy

It is the difference between encouraging plasticity (true creativity, etc.) and indoctrination (control), the latter which is considered must, when cranking out armies of soldiers, clerks and corporate programmers.

Re: Why SICP Matters

#130

Earlier quoted context omitted.

s/Berkeley/most universities in the States/

It's also not just CS, though CS is the largest culprit because well... software is eating the world. No one cares about getting an education. They just want a job.

> No one cares about getting an education. They just want a job.

Internal vs. external motivation? Maybe some day, when programming is no more needed for anything useful, it can really flourish as an art. Like painting, when its principal real-world reason-to-be was supplanted by photographing. E.g. I don't understand the obsession of quest to invent always _more and more_ optimal algorithms, because often the less optimal ones are more interesting and elegant.

Post reply on HN