Reddit 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.

Computers & Technology
Books
Computer Science
Information Theory
A Discipline of Programming
Check price on Amazon

5 Reddit comments about A Discipline of Programming:

u/multiquine · 5 pointsr/programming

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.

u/ominous · 2 pointsr/programming

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.

u/CSMastermind · 2 pointsr/AskComputerScience

Senior Level Software Engineer Reading List


Read This First


  1. Mastery: The Keys to Success and Long-Term Fulfillment

    Fundamentals


  2. Patterns of Enterprise Application Architecture
  3. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
  4. Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML
  5. Systemantics: How Systems Work and Especially How They Fail
  6. Rework
  7. Writing Secure Code
  8. Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries

    Development Theory


  9. Growing Object-Oriented Software, Guided by Tests
  10. Object-Oriented Analysis and Design with Applications
  11. Introduction to Functional Programming
  12. Design Concepts in Programming Languages
  13. Code Reading: The Open Source Perspective
  14. Modern Operating Systems
  15. Extreme Programming Explained: Embrace Change
  16. The Elements of Computing Systems: Building a Modern Computer from First Principles
  17. Code: The Hidden Language of Computer Hardware and Software

    Philosophy of Programming


  18. Making Software: What Really Works, and Why We Believe It
  19. Beautiful Code: Leading Programmers Explain How They Think
  20. The Elements of Programming Style
  21. A Discipline of Programming
  22. The Practice of Programming
  23. Computer Systems: A Programmer's Perspective
  24. Object Thinking
  25. How to Solve It by Computer
  26. 97 Things Every Programmer Should Know: Collective Wisdom from the Experts

    Mentality


  27. Hackers and Painters: Big Ideas from the Computer Age
  28. The Intentional Stance
  29. Things That Make Us Smart: Defending Human Attributes In The Age Of The Machine
  30. The Back of the Napkin: Solving Problems and Selling Ideas with Pictures
  31. The Timeless Way of Building
  32. The Soul Of A New Machine
  33. WIZARDRY COMPILED
  34. YOUTH
  35. Understanding Comics: The Invisible Art

    Software Engineering Skill Sets


  36. Software Tools
  37. UML Distilled: A Brief Guide to the Standard Object Modeling Language
  38. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development
  39. Practical Parallel Programming
  40. Past, Present, Parallel: A Survey of Available Parallel Computer Systems
  41. Mastering Regular Expressions
  42. Compilers: Principles, Techniques, and Tools
  43. Computer Graphics: Principles and Practice in C
  44. Michael Abrash's Graphics Programming Black Book
  45. The Art of Deception: Controlling the Human Element of Security
  46. SOA in Practice: The Art of Distributed System Design
  47. Data Mining: Practical Machine Learning Tools and Techniques
  48. Data Crunching: Solve Everyday Problems Using Java, Python, and more.

    Design


  49. The Psychology Of Everyday Things
  50. About Face 3: The Essentials of Interaction Design
  51. Design for Hackers: Reverse Engineering Beauty
  52. The Non-Designer's Design Book

    History


  53. Micro-ISV: From Vision to Reality
  54. Death March
  55. Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft
  56. The PayPal Wars: Battles with eBay, the Media, the Mafia, and the Rest of Planet Earth
  57. The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad
  58. In the Beginning...was the Command Line

    Specialist Skills


  59. The Art of UNIX Programming
  60. Advanced Programming in the UNIX Environment
  61. Programming Windows
  62. Cocoa Programming for Mac OS X
  63. Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals
  64. lex & yacc
  65. The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference
  66. C Programming Language
  67. No Bugs!: Delivering Error Free Code in C and C++
  68. Modern C++ Design: Generic Programming and Design Patterns Applied
  69. Agile Principles, Patterns, and Practices in C#
  70. Pragmatic Unit Testing in C# with NUnit

    DevOps Reading List


  71. Time Management for System Administrators: Stop Working Late and Start Working Smart
  72. The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services
  73. The Practice of System and Network Administration: DevOps and other Best Practices for Enterprise IT
  74. Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at Scale
  75. DevOps: A Software Architect's Perspective
  76. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations
  77. Site Reliability Engineering: How Google Runs Production Systems
  78. Cloud Native Java: Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry
  79. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  80. Migrating Large-Scale Services to the Cloud
u/phao · 1 pointr/algorithms

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.

  • MIT has a course on math for CS, which include several topics which serve as a foundation to, among many things, proving things correct in CS. I don't believe the course will directly help you, but it seems worth to take a look (http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/ - notice the video lectures link on the side).
  • "Foundations of Computer Science", this is a book (http://www.amazon.com/Foundations-Computer-Science-Principles/dp/0716782847/) and they cover the topic of proofs in there too. It's a very good book for all I can remember.
  • Dijkstra's books. He has two books that I know can help you on this: "Structured Programming" (http://www.amazon.com/Structured-Programming-P-I-C-studies-processing/dp/0122005503/) and "The Discipline of Programming" (http://www.amazon.com/Discipline-Programming-Edsger-W-Dijkstra/dp/013215871X/).

    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.
u/nullsucks · 1 pointr/programming

> 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.