Live data from Hacker News

SICP is Under Attack

vedantk.tumblr.com

91–100 of 207 posts

Re: SICP is Under Attack

#91
post #78

Whoa, stop. There's a lot of issues in this article. First of all, Berkeley is NOT getting rid of SICP and SICP ideas. This is flat out untrue. I'm a recent instructor for the course, and I've spoken to several TA's about this course. Below is a rough summary of what we've discussed. This should not be construed as the "official line", but take from it what you will. First, Berkeley are not getting rid of SICP. ‎For…

Hi! As a member of the Python community, could you please pick a better textbook than Dive into Python? Think Python is a far better book, off the top of my head, but nearly anything's better than DiP for people not acquainted with the language. (http://greenteapress.com/thinkpython/)

Re: SICP is Under Attack

#92
post #26
post #2

The obvious solution: rewrite SICP to use Python rather than Scheme. It is CC attribution and non-commercial, so I don't see any legal barrier to outsider revision.

SCIP winds up making sure that you understand what is going on by writing Scheme interpreter in Scheme. How would your translation handle that material? Writing a Scheme interpreter in Python would force people to learn all of that Scheme anyways, and it wouldn't feel like such a revelation that you understand what the interpreter is actually doing. Writing a Python interpreter in Python would force people to learn a…

Why not write a python(subset) interpreter in scheme?

The point is once you scan,tokenize and parse you get an AST. You already got a language that works on AST. I don't think python's AST is gonna differ a lot from scheme's.

Re: SICP is Under Attack

#93

Good god. I took Sussman's course when SICP was still in the notes phase. I never would have predicted that it would have such a following almost 30 years later.

Agreed.

I took Sussman's course in '87 with a $30 used copy of SICP which still sits on my shelf, surviving many other books that have long since faded into obsolescence.

From the preface: "Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, not even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems."

Classic.

Re: SICP is Under Attack

#95

Earlier quoted context omitted.

If that's what a school wants to do, then it should just discontinue CS and rename it software engineering. Actually, my old school had such a major...

It's not an either/or. Software Engineering is a part of Computer Science.

I dispute that. Mechanical engineering isn't physics and neither is electrical engineering. Chemical engineering isn't chemistry (it is, in fact, more thermo- and fluid-dynamics). So, in the same way, software engineering isn't computer science. At best, it has a relationship analogous to that between applied mathematics and pure math.

Re: SICP is Under Attack

#96
post #26

Earlier quoted context omitted.

SCIP winds up making sure that you understand what is going on by writing Scheme interpreter in Scheme. How would your translation handle that material? Writing a Scheme interpreter in Python would force people to learn all of that Scheme anyways, and it wouldn't feel like such a revelation that you understand what the interpreter is actually doing. Writing a Python interpreter in Python would force people to learn a…

Why not write a python(subset) interpreter in scheme? The point is once you scan,tokenize and parse you get an AST. You already got a language that works on AST. I don't think python's AST is gonna differ a lot from scheme's.

The problem is that Python's AST looks different than Python. In Scheme there is no such intermediate step.

They don't write a scheme(subset) interpreter in scheme. They write a scheme interpreter in scheme.

Re: SICP is Under Attack

#97
post #74

There is a rather breathless presumption that underlies many of the comments to this article, and it is this: that the only way to learn anything thoroughly is to learn it from the inside out: to start from first principles and gradually pile up complexity and abstraction. There is something very compelling about this approach, probably because it purports to model the mind after nature. Just like complex phenomena i…

Agreed.

I also think that bottom-up learning might lead to a false sense of completeness, a sort of "now I know everything". But in reality, there is always some other perspective that will really improve understanding.

That being said, I think learning fundamentals is very valuable, of course.

Re: SICP is Under Attack

#98
post #43

This is one of a very very small number of programming-related articles I've ever been glad to read. Programming should be taught as an approach to problem-solving and structured logical thinking, not as an approach to a particular language. If you can understand the core concepts of programming, the individual languages begin to matter a lot less. Python is great. Java is great. C++ is great. But they are just tools…

It's not "what the school wants to teach" but more "what the student needs to know at the end of the semester". I love SICP -- for me it was a revelation which opened a new world, and is still my favorite book -- but not everyone is like that. 90% of my colleague in my university would hate that book.. (As they hated the dragon book and anything less practical). So, as they say, "Hate the game, not the gamers". What…

If you make a degree a prerequisite to getting a specific job, or even a specific job at a specific (higher) pay scale, you always end up with people treating traditional four-year programs like trade schools. Especially if you also make people think of trade schools as where you go if you only barely passed high school, or if you failed high school and wound up with a GED. (And we could recurse and talk about how one-size-fits-all high schools aren't the only option, either, but we won't.)

Now you have four-year programs becoming the only option. This leads to a mix of philosophies, and by 'mix of philosophies' I mean 'raucous all-out war between two different groups punctuated by useless tracts calling for peace like this one.' The two different groups are the people who want to understand the theory at a respectable university level and the people who are on a fetch quest to get the paper to get the best ending (uh, job).

Neither group is wrong, but one group would be much better served by a non-stigmatized trade school system.

This fight invariably leads to the airing of two philosophies:

One, the student-as-customer philosophy, says that as long as tuition costs money the schools damned well better dance to the students' tune chop chop. They're more sympathetic than that once you realize how eager companies are to shitcan anyone who doesn't have enough letters after their name, which might actually be the real problem.

The other, the university-as-noble-institution philosophy, says that universities are places apart from the world where real research can be done and grants can be funded and, incidentally, there are these undergrad things running around that the exterminators refuse to extirpate so we might as well rope some researchers into making them the next generation of people educated enough to further our culture and, incidentally, keep our technical society from collapsing. In this model, the students don't get to influence pedagogy and coursework and so on because they, as per hypothesis, aren't educated enough to know what they want: If they were they could teach themselves and save everyone a lot of money.

Like I said, neither philosophy is wrong. It's just that one of them should be in a completely different set of institutions.

Re: SICP is Under Attack

#99

This is kind of sad, like an english department no longer teaching Shakespeare because it is written in archaic language and can't hold the student's interest. But computer science isn't like english, so I guess it is a bit of false analogy. Fortunately the text and lectures are available for free online, so there is nothing to prevent the curious student from digging in. edit: now that I've more time to reflect, I w…

The first sentence on diveintopython.org is:

Dive Into Python is a Python book for experienced programmers.

Deciding it's an appropriate choice for an entry-level Computer Science course is baffling to me.

Re: SICP is Under Attack

#100
post #27
post #23

Earlier quoted context omitted.

Well, the question was about Python, which definitely doesn't have those things. If you want to me to justify Scheme, how about code-as-data, which is the entirety of chapter 4? > That is not an uncontroversial opinion, and does little to make the case for SICP to people not already convinced. That was not an unconsidered viewpoint, if you read what I wrote. I said "for its fans". I am not attempting to make the case…

CPython doesn't have built-in tail call optimization, but that's not a fundamental property of the language, just a limit of that particular implementation. One that can even be hacked around in Python with a decorator. A decorator, by the way, is a Python feature that depends on closures, which are themselves quite commonly used in Python. You have some very strange ideas about Python that appear to have little rela…

Python has things they call closures but they aren't what Scheme (or Lisp, or Perl, or Ruby, or Smalltalk, or JavaScript, or C#...) would call a closure. I think it's fair to say that Python is the odd language out here. The scoping rules are different unless you use the relatively recent "nonlocal" keyword.

http://stackoverflow.com/questions/141642/what-limitations-h...

And Guido has said that he intentionally crippled the lambda keyword.

http://www.artima.com/weblogs/viewpost.jsp?thread=147358

Anyway, why are you getting offended? Python is a great language.

Some people just think Scheme teaches certain aspects of programming better for various reasons. For instance, in Scheme, the program listing is a representation of the parse tree. Python will construct a similar tree, but this is not revealed to the programmer as much. So if you learn Scheme you can imagine how what Python is really doing (and writing parsers is much simpler because you have an intuitive sense of how they work).

And the ability to manipulate code as data is exclusive to s-expression based languages. This enables (for instance) truly hygienic macros. You don't get that in Python.

On the other hand, object-oriented programming in Scheme is pretty terrible. The part in SICP where they try to simulate it in Scheme is a travesty. Although it is somewhat illustrative of what's "really" going on, without the syntactic support it just looks ridiculous. So that's a win for Python.

Similarly, whipping up a complex data structure takes far fewer keystrokes, and is more transparent, in Pythonic syntax. Just as Scheme benefits from having built-in lists, Python wins even bigger for having lists and dictionaries everywhere. And overall Python is objectively more practical, with its vast array of libraries and ease of use.

I honestly don't know if you're trolling or are just being partisan. Not all languages are the same and there isn't any one "winner" language.

Post reply on HN