News for hackers. Stuff that matters.
Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @06:13PM (#34659444)
This is sad But not because of What you say.

I think the course has merits. BUT treating engineering artifacts as magic black boxes is the ONLY way we can manage complexity. Attempting to engineer something highly complex while trying to understand everything is a fools errand.

Re:Sussman Explains the End of SICP by lisper on Saturday February 04, 2023 @06:21PM (#34659514)
> treating engineering artifacts as magic black boxes is the ONLY way we can manage complexity

No, it isn't. And this is exactly the kind of throwing-in-the-towel that I'm talking about.

The other way to manage complexity is to include it as one of the considerations when designing a system. You can design for simplicity just as you can design for any other desirable feature (speed, cost, power consumption). Complexity is not an unavoidable consequence of the laws of physics, it a consequence of poor choices and complacency.

Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @06:29PM (#34659578)
It is the only way.

Imagine if you were designing an operating system: GNU Linux.

There is no one person in the entire world who understands All of GNU Linux as a whole. Most people understand what they need and everything else is an abstraction. Sussman was right.

Re:Sussman Explains the End of SICP by Jtsummers on Saturday February 04, 2023 @07:00PM (#34659899)
It's not the only way. The alternative is to recognize when complexity is a consequence of extraneous structure versus the things actually needed for the system. Rube Goldberg devices are complex, and the bulk of their complexity is spent (though intentionally humorously) to accomplish simple tasks. Many, if not most, real world software systems are the same way. They're Rube Goldberg devices but done accidentally rather than intensionally through the accrual of many decisions (both good and bad) over years and decades with no or insufficient effort to distill and simplify them.

Treating everything as "magic" black boxes as you want is tantamount to sweeping dirt under a rug. It doesn't address the problem, it just creates a wrinkle for you to trip over later.

Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @07:18PM (#34660041)
>Treating everything as "magic" black boxes as you want is tantamount to sweeping dirt under a rug.

No it's not. Why do game developers often not write an entire game engine from scratch? Instead they use out of the box solutions like unity and or unreal?

Because they cannot hope to build an entire game engine that is as complex as existing commercial solutions within the available time and budget.

This isn't just software engineering. All forms of engineering work this way. Not just engineering either. Society works this way.

Re:Sussman Explains the End of SICP by inimino on Saturday February 04, 2023 @08:28PM (#34660600)
Sometimes you don't need something as complex as existing commercial solutions.

But you are correctly repeating the standard wisdom of the day, which is that first-principles understanding is inefficient (because people don't have time for it) and the best thing is to treat software as pluggable units.

> All forms of engineering work this way.

As far as I know, engineers still learn physics.

Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @09:39PM (#34661137)
I mean is the standard wisdom wrong? The standard wisdom is right.

The way I see it is this. Sicp is good to know. But as an introduction to programming python and applications are more relevant to the modern age.

>As far as I know, engineers still learn physics.

So? Human society is overwhelmingly made up of specialists. Engineers who learn physics doesn't change the fact that within engineering, there are specialties.

Re:Sussman Explains the End of SICP by inimino on Saturday February 04, 2023 @10:55PM (#34661674)
The standard wisdom is absolutely right.

The standard wisdom tends to keep the bureaucratic beast in control, not you. That is why it is the standard wisdom, and not the outsider minority opinion. That is why increasing your professional competence, year over year, with SICP and similar courses of study, is anathema to any engineering culture that has been totally taken over by bureaucracy, which is a majority. That is why there is a consulting industry serving Uncle Bob's ideas that comp-sci is not actively harmful to know about but certainly not something you need to be encouraged to learn. According to this school, anyone making a claim that "every programmer should study X" would make their co-workers uncomfortable, and this is the kind of toxicity that must be managed out of a modern (that is, bureaucratically-controlled) company.

The standard wisdom is not for you if you want to look back on your career and say that you did meaningful work, that you tried to advance your field, even if you failed, or that you worked on one of the hard problems of your time. If you want to look back and say that you navigated FAANG and retired early, then the standard wisdom and making yourself amenable to the super-organism may be just the ticket.

SICP, by the way, isn't something good to know, because it's not something you know. It's something you do, and the experience (all the exercises) will rewire your brain, unless you've already had sufficient experience so that those patterns are already wired in, in which case you may find it kind of trivial and beginner-ish. The difference is whether you're oriented towards things like writing compilers as scary and best left to specialists, or whether you regard them as basic tools of any programmer, which is more empowering for you, not for the bureaucracy, which diminishes in purpose as individual variance in competence grows.

The point about engineering is that there's no movement saying that engineers should stop studying physics, and consume physics knowledge in special packets prepared for the use of the "engineering industry" by physicists. Yet this absolutely fantastical idea is how the work done by computer scientists is supposed to be distributed to software engineers. They need not study the fundamentals, because they need not understand them, just consume the artifacts produced by those who do. Most of the low standards of modern software can be traced directly to this attitude.

Re:Sussman Explains the End of SICP by kilgnad on Sunday February 05, 2023 @03:02AM (#34662902)
>The point about engineering is that there's no movement saying that engineers should stop studying physics, and consume physics knowledge in special packets prepared for the use of the "engineering industry" by physicists. Yet this absolutely fantastical idea is how the work done by computer scientists is supposed to be distributed to software engineers. They need not study the fundamentals, because they need not understand them, just consume the artifacts produced by those who do. Most of the low standards of modern software can be traced directly to this attitude.

Do whatever you want. Nobody is stopping people from studying multiple fields. The main point is that the human brain has limitations. In general the majority of people can master only a few specialties. This is the MAIN reason behind the "standard wisdom".

Re:Sussman Explains the End of SICP by hnfong on Sunday February 05, 2023 @09:06AM (#34664985)
> As far as I know, engineers still learn physics.

That's interesting, do they learn about all the properties of newly discovered quarks and derive Newtonian physics from quantum theories? Because if that's what they do, it's new to me.

Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @08:28PM (#34672054)
I believe engineering majors at any prestigious institution will be up to date on every one of the currently-known quarks, yes. If your point is that it's not the same as a physics major, that's also true.
Re:Sussman Explains the End of SICP by armitron on Saturday February 04, 2023 @07:11PM (#34659981)
Linux is a bad example, complexity-wise, being based on the behemoth of terrible design that is Unix.

Look at Alan Kay's work with VPRI to see what a few brilliant minds can accomplish when looking at things from radically new perspectives.

Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @07:15PM (#34660015)
You think elegance in design can negate complexity? Complexity has no ceiling.

Good design can only lower complexity. Complexity itself cannot be negated. I can point to a million more examples, here's one:

Red Dead Redemption 2 the video game. Name one programmer who understands every single system in that game.

Re:Sussman Explains the End of SICP by wrycoder on Saturday February 04, 2023 @11:25PM (#34661847)
Yeah, agreed, but sadly VPRI blew up for an unknown reason and the work was never completed or properly published.
Re:Sussman Explains the End of SICP by inimino on Saturday February 04, 2023 @07:16PM (#34660032)
I think this is a reasonable position, but the reason people are downvoting you is it's a defeatist position, and there's reason to be more optimistic.
Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @07:59PM (#34660359)
I just regurgitated Sussmans position from the article/video...

Sussman co-wrote SICP.

Re:Sussman Explains the End of SICP by inimino on Saturday February 04, 2023 @08:44PM (#34660739)
Your words were "the only way" and "fools errand", what I actually see in the clip is that the course was due for a refresh, both the original professors quit, the administration had no idea what to do after that, and the department head had to teach it while they figured it out, meanwhile committees were formed and in the end Python won because ("for reasons no-one understands") it had all of the libraries.
Re:Sussman Explains the End of SICP by kilgnad on Saturday February 04, 2023 @09:34PM (#34661099)
Sussman exactly said what I said. He quit because engineering changed, the course was no longer relevant.

Perhaps the words are too harsh. But is there any other way to build something more complex then you can understand? Using pre-existing libraries is the only way.

Additionally if you tried to say build a triple A game without using any libraries would that not be a fools errand?

Re:Sussman Explains the End of SICP by inimino on Saturday February 04, 2023 @11:33PM (#34661895)
He says "although still important intellectually, it was no longer relevant to the kinds of things people needed." What people? The students? Working programmers? Companies? The university administration? Notice how he tells the anecdote about quitting "I suppose Hal and I basically walked into the department head's office sometime in the end of 97 and said, 'We quit. On this. Okay? Figure out what to do'.", and then the department couldn't figure out what to do.

The story here isn't that a course that had been the same for over a decade was out-of-date, the story is that the organization didn't know where to go from there, they still don't know, and the people that were originally passionate about teaching the class were of retirement age, and both the profs and the textbook were retired from the class at the same time. If you want to read more into it than that, then we're reading the tealeaves of university administration decisions that not even the people making them are often in a position to understand.

How do you know that building something more complex than you can understand is necessary, or is a good idea? Feynman said "What I cannot create, I do not understand," which seems like a better approach to me.

I recently ran across Jonathan Blow's effort to create a new programming language, because he noticed that C++ is bloated to the point of buing unfit for purpose, and supposed that he could do better, despite being just one person (or perhaps, because of that). As I understand it, he's interested in working on games with the engine that he's writing in his new language. So the jury is still out on that fool's errand. Of course, he's still using the standard libraries provided by the OS, and he is after all writing an engine (and not just a standalone game) so your point stands.

Re:Sussman Explains the End of SICP by kilgnad on Sunday February 05, 2023 @12:28AM (#34662227)
Bro, let's say the world embraced FP and it was the dominant paradigm and the techniques and patterns of SICP were taught in EVERY computer science curriculum.

The change Sussman described that happened in engineering WILL STILL occur. He stated it didn't just happen with programming. It happened across the entire stack from the hardware all the way to software. What happens in this parallel universe? Most people won't spend the majority of there time using the techniques they learned in SICP.. instead they'll be trying to figure out how to get all these arcane libraries to work.

>How do you know that building something more complex than you can understand is necessary, or is a good idea? Feynman said "What I cannot create, I do not understand," which seems like a better approach to me.

How is what Feynman said a technique? He stated a fact about himself. If he can't create it, he can't understand it. So I'm pretty sure Feynman doesn't fully understand how an airplane works because he's never created one. This is not a technique this is fact. That being said, pilots ALSO don't understand how airplanes work. But that doesn't mean pilots can't use an airplane; in the same way I can use a library.

>I recently ran across Jonathan Blow's effort to create a new programming language, because he noticed that C++ is bloated to the point of buing unfit for purpose, and supposed that he could do better, despite being just one person (or perhaps, because of that). As I understand it, he's interested in working on games with the engine that he's writing in his new language. So the jury is still out on that fool's errand. Of course, he's still using the standard libraries provided by the OS, and he is after all writing an engine (and not just a standalone game) so your point stands.

It's a bit of a fools errand depending on how you look at it. If he had a boss, and was working for a company he'd be fucked because it'd take too long. Let's be real... he's more doing that for fun. If your goal was to fly an airplane, do you start off by building one? The only type of person who would do this is someone who does it as a sort of "fun" project.

We all know C++ is a gigantic piece of garbage and we all can sort of visualize the better way in our imagination, but it doesn't change the fact it is still the most practical choice for many applications.

Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @01:24AM (#34662497)
First of all, pilots absolutely do know how airplanes work, and they make you study the aerodynamics and pass a course before you get your first hour of flight time, even as a student going up.

Feynman understood how airplanes work better than I understand how the internet works, and that's reasonably well.

The way it's a technique: first understand it, then you can try to create it.

Did Feynman understand commercial jets well enough to build one from scratch? Certainly not. But if dropped off by time machine a decade before the Wright brothers, could he have saved everyone some time and gotten something off the ground, given similar resources? Yes.

When pilots don't understand how airplanes work, you get MCAS, and we can all agree that can't be allowed to happen again (and was not entirely the pilot's fault, as they were lied to about the systems, in the service of getting one by the regulator).

Rust was good for Graydon Hoare, as he got his ideas about safety out into the world. Later he burned out. Mozilla is one of the champions of mismanagement and squandering of every kind of technical and non-technical opportunity, and somehow the Rust juggernaut became its own thing that's quite extraordinary and hard to characterize. I'm sure there are a lot of stories there. As to the people choosing Rust today for non-systems programming work, because of fashion, that doesn't seem to be good for anyone, but opinions obviously differ there as well.

Re:Sussman Explains the End of SICP by kilgnad on Sunday February 05, 2023 @02:48AM (#34662837)
>First of all, pilots absolutely do know how airplanes work, and they make you study the aerodynamics and pass a course before you get your first hour of flight time, even as a student going up.

But they can't build an airplane. This follows Your quote from Feynman.

>Feynman understood how airplanes work better than I understand how the internet works, and that's reasonably well.

Feynman can't build an airplane. Again you quoted him Admitting that if he can't build it, he doesn't know how it works.

>The way it's a technique: first understand it, then you can try to create it.

Except No pilot ever uses this technique. They fly a plane, but they mostly never build one.

>Did Feynman understand commercial jets well enough to build one from scratch? Certainly not. But if dropped off by time machine a decade before the Wright brothers, could he have saved everyone some time and gotten something off the ground, given similar resources? Yes.

What does this have to do with anything? Basically the point is the logic you following from that quote doesn't apply. A pilot CAN know how a plane works, so can Feynman, AND they both don't have to build one to know. The whole point of the plane and pilot thing is to show you the flawed logic.

>When pilots don't understand how airplanes work, you get MCAS, and we can all agree that can't be allowed to happen again (and was not entirely the pilot's fault, as they were lied to about the systems, in the service of getting one by the regulator).

They don't have to build an airplane to know about MCAS do they? That's the point here. They don't even have to know how to program. That is essentially what MCAS is: a program. Instead pilots deal with an abstraction. They have a very rough idea of how it works. Sort of like how programmers deal with libraries, but they don't have to build the libraries from scratch.

>Rust was good for Graydon Hoare, as he got his ideas about safety out into the world. Later he burned out. Mozilla is one of the champions of mismanagement and squandering of every kind of technical and non-technical opportunity, and somehow the Rust juggernaut became its own thing that's quite extraordinary and hard to characterize. I'm sure there are a lot of stories there. As to the people choosing Rust today for non-systems programming work, because of fashion, that doesn't seem to be good for anyone, but opinions obviously differ there as well.

Good for the community. Epic business mistake. A fools errand for Mozilla who basically conducted a charity for the community.

>As to the people choosing Rust today for non-systems programming work

Performance is a metric worth going after even if you're not directing calling any system calls. Honestly it's not even that hard or far away from a non-systems programming language.

Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @07:32AM (#34664398)
Conducting a charity for the community is Mozilla's mission, so that part worked out. How good it will be for the community remains to be seen, at least it is probably replacing C++ on a lot of new projects.

Nobody's saying you have to build an airplane to know how it works, the point is you have to know how it works to either build it, or fly it effectively. You won't know why it stalls if you don't know what makes it stay up.

The point of the time travel story is that Feynman understands it to the level that would let him recreate the technology from scratch in a society without powered heavier-than-air flight, not that he can compete, John Henry-like, with a Boeing assembly line. That's a good enough level of "can create" to reasonably say you understand something. Nobody outside of Boeing has the built-up engineering expertise to replicate their assembly line, and any equally advanced design would have to be evolved forward over many years.

The problem with MCAS is that the abstraction combined with a lack of specific awareness of the issue made it unclear to the pilots what was going on exactly, or what that meant. Abstraction isn't the problem, but abstraction that masks relevant parts of what's going on (like how many distinct sensors are going into a reading) has to be treated with appropriate respect.

Re:Sussman Explains the End of SICP by hnfong on Sunday February 05, 2023 @09:11AM (#34665010)
There's probably a million lines of code in your self driving car today. You might think knowing high school physics help you become a better driver, but you're delusional if you think you know how your modern car works.
Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @09:23AM (#34665117)
I certainly do not own or want a self-driving car, at least not until they work!

High school physics certainly does help you understand momentum, which is the cause of all crashes.

Re:Sussman Explains the End of SICP by kilgnad on Sunday February 05, 2023 @10:55AM (#34665863)
Majority of drivers don't need to understand physics to drive. It doesn't help.

Instead humans rely on visual intuition, which everyone has with or without learning physics.

Re:Sussman Explains the End of SICP by kilgnad on Sunday February 05, 2023 @10:42AM (#34665757)
Mozilla's mission wasn't to conduct charity to the point of self annihilation which is what would've occured had they not spun off the rust division. Non-profits cannot sustain themselves without positive cash flow. Just look at Ikea, they're a non-profit.

>Nobody's saying you have to build an airplane to know how it works, the point is you have to know how it works to either build it, or fly it effectively. You won't know why it stalls if you don't know what makes it stay up.

You said it. You quoted Feynman saying it. So if you didn't mean that then you made a mistake here. Ok the. I agree with the rest of your post then.

However my main point still stands the systems we build as humans are too complex for a single person to understand. In order to deal with this complexity most of programming involves investigating and testing libraries that abstract away this complexity. It is more.important to know this then it is to construct highly modular fp style code.

Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @08:50PM (#34672233)
It depends what you want to do. If you want to work on problems that we know how to solve and that we have solved many times, then the npm xenobiology skill set is sufficient; if you want to do things we haven't done and don't know how to do, it isn't. I've acquired knowledge by poking at libraries and databases and OSes, and those are sunk costs. Apart from the instrumental value at the time, most such knowledge has had no lasting or further use to me. I've acquired other knowledge and skills from books including SICP, and those have continued to pay lifelong dividends with compounding interest over decades.
Re:Sussman Explains the End of SICP by kilgnad on Monday February 06, 2023 @12:48PM (#34681172)
Domain knowledge can shift but not always. npm and javascript are around to stay. Same with most of the linux API.

It is true that the fundamentals that SICP teaches will be around forever, but the fact of the matter is, if I'm an employer I'd rather hire a specialist in some arbitrary ephemeral domain relevant to my business then to hire someone who is a generalist.

Re:Sussman Explains the End of SICP by inimino on Monday February 06, 2023 @04:58PM (#34685043)
You're in good company, that's an extremely popular perspective. Those of use who are more generalist often have to find our own ways. The rewards are usually worth it.
Re:Sussman Explains the End of SICP by selimthegrim on Sunday February 05, 2023 @12:28PM (#34666711)
>The point of the time travel story is that Feynman understands it to the level that would let him recreate the technology from scratch in a society without powered heavier-than-air flight, not that he can compete

see my remark above

Re:Sussman Explains the End of SICP by selimthegrim on Sunday February 05, 2023 @12:27PM (#34666705)
Planes flying along with siphons are bad example to ask theoretical physicists - most of them wouldn't be able to give you the right answers. Feynman was closer than most because he did think about things like what would happen if a rotating sprinkler sucked in water, etc.
Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @08:36PM (#34672110)
All you need is very rudimentary fluid mechanics, some vague idea of attack angle, and the conservation of momentum with a compressed column of air under the plane. I think most theoretical physicists could come up with that.

The siphon one is funny because many people will start with air pressure, which is wrong.

Re:Sussman Explains the End of SICP by selimthegrim on Sunday February 05, 2023 @11:20PM (#34673303)
Yes, first and second year undergrads when I taught intro labs and diff eq.

My understanding is there is a rather tortuous explanation involving viscosity (for lift and wing shape)

Re:Sussman Explains the End of SICP by murdoze on Sunday February 05, 2023 @04:32AM (#34663356)
Like DOOM?
Re:Sussman Explains the End of SICP by hnfong on Sunday February 05, 2023 @09:09AM (#34665003)
It feels good to be naïve.

It bogles my mind how, after years of learning about complexity theory, people who learned CS cannot comprehend the fact that maybe this wonderful world is perhaps more complex than a single person could comprehend.

Re:Sussman Explains the End of SICP by inimino on Sunday February 05, 2023 @09:46AM (#34665299)
Well that's certainly a perspective, but you don't know what you don't know.
Re:Sussman Explains the End of SICP by JonChesterfield on Sunday February 05, 2023 @11:29AM (#34666161)
Those magic black boxes need to be implemented too. Relying on the strategy "someone built them in the before times so we don't need to worry" has severe failure modes.
Re:Sussman Explains the End of SICP by kilgnad on Monday February 06, 2023 @12:45PM (#34681120)
As if the techniques in SICP was the only way to build those black boxes?

Do you honestly think someone who just learns python really well without touching SICP can't build a library?

They can. It's just they can't build the library in the idealized lego like modular way that SICP is promoting. This style is definitively better, but it is in no way required.