Clean wraps, corners square, lay flat. No creases to the spine, or hinge. Small frayed spot at the top of the spine. No previous owner's name, no other marks in text. Well kept copy.
Edsger Wybe Dijkstra was a computer scientist. He received the 1972 Turing Award for fundamental contributions to developing programming languages, and was the Schlumberger Centennial Chair of Computer Sciences at The University of Texas at Austin from 1984 until 2000.
Shortly before his death in 2002, he received the ACM PODC Influential Paper Award in distributed computing for his work on self-stabilization of program computation. This annual award was renamed the Dijkstra Prize the following year, in his honor.
His influential 1968 paper "A Case against the GO TO Statement", later published by Niklaus Wirth with the title "Go To Statement Considered Harmful", introduced the phrase "considered harmful" into computing.
This book delivers what I had expected to get from Stepanov and McJones's Elements of Programming (Elements of Programming is great; it's just a different book than I thought it would be).
Dijkstra is a programming legend. Aside from "Goto statement considered harmful" he made a mark in just about every field of programming: from Dijkstra's shortest paths to Dijkstra's banker's algorithm to semaphores to coloring garbage collectors to several others. The opportunity to learn from him really shouldn't be passed up.
A Discipline of Programming presents both (1) ways to reason about programming with predicate calculus and (2) demonstrations, with false starts and all.
I can't do Dijkstra justice with one quick read of this book but what I will say is that Dijkstra impressed upon me immensely the power of abstraction. Abstractions are not nebulous ideas. They are how we're absolutely precise. It is this precision which is at the very nature of a discipline. Dijkstra knew acutely the power of abstraction and of its real role to play in programming. Discipline leads to purity; purity leads to composability; composability is the path to correctness in code. It is this a priori correctness, and use of language that Dijkstra exposed that is simply beautiful. Read this book to understand, on a fundamental level, your own limitations.
This short book is one of the finest ever written on the subject of programming. Dijkstra's examples are deceptively simple; his solutions are beautiful and elegant. Every programmer should read this: Dijkstra was our progenitor: everything he wrote was relevant and always will be. Dijkstra once stated, "If a programmer can look at his code and say, 'Dijkstra would not have liked that,' then that is immortality enough for me." This book shows us why.
very nice book. It gives you new insights on how to program, what is programming, and what is a program. Dijkstra's ideas about programming, were, and still are, very different from the "conventional wisdom". Even if you don't agree with him, i think it's worth checking out.
note. i'm not gonna pretend that i understood all of the text, heck, maybe not even half of it. (end of note)
sad remark. as Dijkstra himself said in the preface, this book is best read with a friend or colleague, wish there was someone i could read this book with (end of sad remark).
I found Dijkstra's writing style wordy and boring, making what he is saying harder to understand. Ignoring that, this seems like a pretty good programming book (I read only 8 chapters and skimmed a few more), but better learning aids exist now. For the formal methods side, the advent of proof assistants like Coq or verified languages like Dafny make Dijkstra's philosophy of reasoning about programs on paper so meticulously a bit obsolete. For the algorithms side, books like Competitive Programming 3/4 or Introduction to Algorithms are much more comprehensive and accessible.
It's clear that Dijkstra was a great thinker who had bad tools available to him. It's a wondrous thing to imagine what he'd get done with a proof assistant in his tool-belt. This book is... dated. It has lots of good ideas at the beginning and at the end, but the middle is a bunch of EXTREMELY IMPERATIVE SOLUTIONS to problems, with long digressions on features of his make-believe programming language's features.
The first part is very approachable and filled with Dijkstra's finest nuggets of wisdom. Overall, a challenging but worthwhile book. I'd only recommend it in its entirety to seasoned programmers or those deeply interested in the theory of computer science.