News for hackers. Stuff that matters.
Re:How to Design Programs (2023) by kiitos on Monday August 28, 2023 @06:10AM (#37291926)
After more than 30 years of professional software engineering experience, I have to say that the software model described by this document is applicable and/or useful to only an extremely narrow subset of software in general. I would not recommend taking this advice too seriously.
Re:How to Design Programs (2023) by andric on Monday August 28, 2023 @06:41AM (#37292136)
Which narrow subset in particular, and why do you say that?
Re:How to Design Programs (2023) by w4lker on Monday August 28, 2023 @06:37AM (#37292109)
What would you recomend to someone starting at this area?
Re:How to Design Programs (2023) by kiitos on Monday August 28, 2023 @05:22PM (#37300558)
John Ousterhout's "A philosophy of software design" and Fred Brook's "The design of design"
Re:How to Design Programs (2023) by cuchoi on Monday August 28, 2023 @06:36AM (#37292097)
Any other resources you recommend?
Re:How to Design Programs (2023) by discreteevent on Monday August 28, 2023 @07:01AM (#37292260)
John Ousterhout's "A Philosophy of Software Design". But this does prompt the question: If these two books about software/program design are so different then which is correct and why is there such a gap? In my experience (like kiitos above) I don't see much scope for HtDP for most industry programming and I have worked in few different domains.
Re:How to Design Programs (2023) by jonjacky on Monday August 28, 2023 @10:21PM (#37302798)
This is a textbook for the introductory programming course, the first programming experience for many students. Maybe it would be better titled, "How to solve the programming exercises in an introductory course"

I see a lot of value in this. It gives a step-by-step method that students can follow, which often works. The prevailing alternative seems to be, "Look at a lot of examples, pick one that looks similar to the exercise, and change it around by trial and error until it kind of works." This does not generalize to professional level programming either.

At this initial stage, the goal is to build the students' confidence that if they work systematically, they can solve problems. As their education and experience continue, they can take on more realistic problems and methods.