Most active commenters
  • SoftTalker(4)
  • liontwist(3)
  • tharne(3)

←back to thread

389 points kurinikku | 24 comments | | HN request time: 1.754s | source | bottom
1. richrichie ◴[] No.42164857[source]
Has anyone read the new SICP with Javascript as language of choice?
replies(3): >>42165037 #>>42165082 #>>42165465 #
2. wrycoder ◴[] No.42165037[source]
Yes. But, I prefer the regularity of the Lisp syntax.
3. 0xpgm ◴[] No.42165082[source]
Isn't scheme with close to zero syntax so easy to learn?

Why did someone think it was a good idea to switch to JavaScript?

I think the person who'll get value out of SICP will not have any problem picking up scheme syntax on the fly.

replies(5): >>42165182 #>>42165278 #>>42166724 #>>42168084 #>>42168675 #
4. liontwist ◴[] No.42165182[source]
I agree. Being self contained helps make it timeless. In contrast are books with a CD in the back with an outdated Java compiler you will never be able to setup. And then you have to migrate the snippets yourself.

If you study any other related field like math or physics you become accustomed to learning a formal system for the context of a particular problem.

CS students tend to have this weird careerist view where every page just directly help them get a job.

replies(2): >>42165303 #>>42165549 #
5. SoftTalker ◴[] No.42165278[source]
Because knowing scheme isn't going to get you a job at most places. Employers overwhelmingly want JavaScript or Python these days. Trailing that would probably be Java, C++ and C#, and regular old C.

When I did my undergrad CS degree, the fact that scheme was so heavily used was a common complaint they received from students. It just wasn't a marketable skill.

replies(1): >>42165654 #
6. SoftTalker ◴[] No.42165303{3}[source]
Most undergrad CS students want a practical/engineering curriculum. They are not really there for theory, but for a long time that's how CS departments operated, unless maybe you were at an engineering school.

Schools are so desperate to keep up enrollment numbers today that many have capitulated and are giving students what they want instead of what the faculty thinks they need.

replies(4): >>42165476 #>>42165761 #>>42165848 #>>42166858 #
7. easeout ◴[] No.42165465[source]
I haven't, but you can compare editions with this SICP Comparison Edition:

https://sicp.sourceacademy.org/

8. tharne ◴[] No.42165476{4}[source]
> Most undergrad CS students want a practical/engineering curriculum.

If all someone wants is the practical benefits of programming and has no interest in the underlying theory, they shouldn't waste their their time and money on a CS degree. All the practical information is available for free or at very low cost.

replies(2): >>42165550 #>>42165555 #
9. lupire ◴[] No.42165549{3}[source]
You are comparing mathematicians to programmers.

A more fair comparison is engineering or applied math major, not pure math at MIT.

replies(1): >>42166802 #
10. SoftTalker ◴[] No.42165550{5}[source]
But, a lot of employers demand a degree.
replies(1): >>42165968 #
11. lupire ◴[] No.42165555{5}[source]
The same applies to CS, so you're missing something else -- skilled tutors and the campus experience.
replies(1): >>42165985 #
12. Jtsummers ◴[] No.42165654{3}[source]
Four year CS degrees usually require something around 20 (maybe even more) CS courses. Are you saying that all of those courses at your school were taught in Scheme? You never had a chance (in the classes, ignoring hobby or internships) to use other languages? That'd be a pretty unique school.

But even if that were true and you did take 20+ classes in Scheme, you're still a college educated computer scientist. You can't pick up JavaScript or Python in time for a job interview for an entry level job? They're easy languages to learn. If you survived four years of exclusively being taught with Scheme, they'd be a breeze to pick up.

replies(1): >>42165853 #
13. liontwist ◴[] No.42165761{4}[source]
There is a big difference between being practically minded and the allergy to learning anything which doesn’t translate to resume keywords. SICP will teach you more about JavaScript, python, etc than most anything.
14. JTyQZSnP3cQGa8B ◴[] No.42165848{4}[source]
> They are not really there for theory

Is that why they are so bad at adapting to foreign languages and frameworks? Maybe they should go back to the basics.

15. SoftTalker ◴[] No.42165853{4}[source]
No not all scheme. That's an example. The intro course and programming languages course was scheme. There were a number of other languages used. I guess I should have been more nuanced in that a number of students wanted to be taught the currently popular progrmmming languages so they could use them on a resume. They complained about using scheme (or whatever "teaching" language a professor might require) and did not yet appreciate that the concepts/theory they were learning applied to any programming language they might need to use.

They wanted a trade school/practical education in something immediately marketable, not a theoretical education.

The reason I remember this is that in my "exit interview" as a senior I mentioned that I appreciated the exposure to these languages and theory and my advisor remarked "we don't hear that very often, the usual feedback is that we don't teach the languages employers want"

16. tharne ◴[] No.42165968{6}[source]
Maybe so, but we shouldn't be doubling down on expensive and time consuming degrees in the name of ill-conceived credentialism. That hurts everyone except the universities profiting off of it.
replies(1): >>42166533 #
17. tharne ◴[] No.42165985{6}[source]
At least in the U.S., many students are paying upwards of a $100k for a four-year degree. That better be one hell of a "campus experience" and some next-level "skilled tutors".

Call me a hopeless optimist, but I think there's a better way out there.

replies(1): >>42168438 #
18. xelamonster ◴[] No.42166533{7}[source]
How does that mean anything to the people who need to be employed to continue living? We're not the ones with the ability to change this.
19. wonnage ◴[] No.42166724[source]
JS is easier to read IMO. And of the widely-used interpreted languages I can think of, it's actually got the least confusing implementation of first-class anonymous functions. Python lambdas are limited to one expression, Ruby has that confusing block vs. proc vs. lambda problem, etc.

I do feel like the value of using Scheme is teaching students early on that syntax doesn't really matter. Those that are actually interested in CS theory will find this enlightening, those that are simply in it because investment banking is so 2007 will churn out.

20. liontwist ◴[] No.42166802{4}[source]
I dont think so. SICP isn’t abstract algebra, it’s just unlikely to be the exact syntax you will use at your job.

Engineers rarely do laplace transforms by hand either.

The book is written for 1st year stem undergrads at MIT. So maybe 2nd or 3rd year at state school.

21. wonnage ◴[] No.42166858{4}[source]
> Most undergrad CS students want a practical/engineering curriculum.

Somewhat understandable considering that student loans put you into indentured servitude unless you have rich parents. Although I still think they're shortsighted. A good CS graduate should understand that programming languages are just syntactic sugar over the underlying concepts and have little trouble translating/picking up the basics of new languages.

22. zahlman ◴[] No.42168084[source]
It's also useful to be able to understand how the idioms map into the syntax of programming languages that one is actually going to use going forward. The point of SICP isn't what language you use, but how you use it, and how you think about the process of using it. Lisp itself exists because someone had the idea of taking the theoretical abstraction and actually realizing it, in notation similar to what the theorists were already using. But that similarity isn't actually relevant to core concepts like "functions as first-class objects", or referential transparency, or the substitution model of computation, or the complexity introduced by mutable state, etc. (Or, dare I say it: to the mind-expanding effects of contemplating the Y combinator.) These ideas can make you a better programmer in any programming language.

Nor is there any good reason to filter people out preemptively. If seeing `foo(x)` instead of `(foo x)` makes the student more receptive to a proper understanding of recursion, that's just fine.

23. galaxyLogic ◴[] No.42168438{7}[source]
How about an AI-tutor? Actual professors don't have time to adapt their teaching to every indfividual studen's knowledge background. But AI might.

Universities should start their own AI-tutor development programs, in co-operation with others because, only way AI-tutors can become better is by practice practive practice.

So I'n not sure if this is a new viewpoint or not, but it is not only students that need training, it is also teachers who need to be trained more in teaching. AI is all about "training", understanding is about training. Training is the new paradigm for me.

24. richrichie ◴[] No.42168675[source]
Then it does not matter what language SICP chooses to illustrate timeless concepts? Even if some JS stuff changes down the line people should be able adapt what’s on the book on the fly?