Reddit reviews A Discipline of Programming
We found 5 Reddit comments about A Discipline of Programming. Here are the top ones, ranked by their Reddit score.
We found 5 Reddit comments about A Discipline of Programming. Here are the top ones, ranked by their Reddit score.
I will accept that the premise of the post is
> In today’s post I will cover which messages we shuffle between
> the server and clients and their purpose, how the game world is
> fundamentally managed, and how we use an Actor class to help
> manage scene objects.
and therefore accept that the post does comply with its expression of intent.
However, I feel that there is something worthwhile to add, namely
expressing how a solution came to be about; in particular, I have always shared Dijkstra's sentiment from the back of A Discipline of Programming, namely
> "A second reason for dissatisfaction was that algorithms are
> often published in the form of finished producs, while the
> majority of the considerations that had played their role during
> the design process and should have justified the eventual shape > of the finished program were hardly mentioned. ..."
>
> — Edsger W. Dijkstra
For me the takeaway of the above quote is that when the design process is missing from the content matter assimilating the knowledge into one's own self becomes the labour of the reader as opposed to the challenge that the author has to overcome, thereby distributing the burden on the many as opposed to the few.
A Discipline of Programming. Classic but expensive. Read the first few chapters at your library before buying.
Polya's How to Solve It!
The Mythical Man-Month
Finally, The Pragmatic Programmer.
Senior Level Software Engineer Reading List
Read This First
Fundamentals
Development Theory
Philosophy of Programming
Mentality
Software Engineering Skill Sets
Design
History
Specialist Skills
DevOps Reading List
You can come back to it later, yes. Why though? You'll need them "now", won't you? I mean, you're going through the book (Skiena's) now, not later. Isn't that right? If you learn it now, you will go through the book better equiped to get its message.
And, besides, it isn't that difficult. It's not trivial by any means. You can try some alternative resources.
I'm not sure why you're interested in deferring this to later. Personally, I believe having seen how proofs of correctness are somewhat done is way more worth it than seeing the algorithms themselves, although some algorithms are pretty educational (like quicksort and also binary search for example). Because even though you won't prove programs correct in practice, knowing how a proof might be devised helps you in writing programs that are easy to prove, and those have to be simple. The whole idea of structured programming that Dijkstra had in mind was to help with this. It's way more intuitive to reason about "while (i < 10) { <do something> }" than a bunch of goto's. In the while-loop case, you can clearly see that upon termination, i >= 10 is true for example. And you can also clearly derive some properties about the body of the loop inductively by analyzing previous iterations.
A lot of good readable code techniques can be put in terms of easy to prove code. Like small functions that do very little, are very cohesive, and work collaboratively. Same for objects. It's way easier to prove correct a bunch of small pieces that work together by some simple means of combination, than a huge big thing.
Good luck.
> All I'm saying is that you can't just take a mutable data structure, never mutate it and say "look how bad immutable data is!"
I haven't done that.
You started this subthread with some hand-wringing over how "The problem with (mutable) values is that they can create a lot of overhead".
It's unseemly for you to back away from that now with "Yes, you make a slight performance tradeoff by going persistent, but that tradeoff is much smaller than you might think – in most cases it is dwarfed by the I/O you do."
It is also possible to reason about imperative code with mutable state. That's the main topic of EWD's A Discipline of Programming.