Programming Quotes

Quotes tagged as "programming" Showing 331-351 of 351
Edsger W. Dijkstra
“The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.”
Edsger W. Dijkstra

Michael C. Feathers
“Programming is the art of doing one thing at a time”
Michael Feathers, Working Effectively with Legacy Code

“It should be noted that no ethically -trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.”
Nathaniel S. Borenstein

“It is far easier to design a class to be thread-safe than to retrofit it for thread safety later.”
Brian Goetz, Java Concurrency in Practice

Ellen Ullman
“The corollary of constant change is ignorance. This is not often talked about: we computer experts barely know what we're doing. We're good at fussing and figuring out. We function well in a sea of unknowns. Our experience has only prepared us to deal with confusion. A programmer who denies this is probably lying, or else is densely unaware of himself.”
Ellen Ullman, Close to the Machine: Technophilia and Its Discontents

Rasheed Ogunlaru
“Our life stories are largely constructed and without mindfulness can prove destructive.”
Rasheed Ogunlaru

“Just as it is a good practice to make all fields private unless they need greater visibility, it is a good practice to make all fields final unless they need to be mutable.”
Brian Goetz, Java Concurrency in Practice

Neal Stephenson
“He has reverted, in other words, back into a pure balls-to-the-wall nerdism rivaled only by his early game-coding days back in Seattle. The sheer depth and involution of the current nerdism binge would be hard to convey to anyone. Intellectually, he is juggling half a dozen lit torches, Ming vases, live puppies, and running chainsaws. In this frame of mind he cannot bring himself to give a shit about the fact that this incredibly powerful billionaire has gone to a lot of trouble to come and F2F with him.”
Neal Stephenson, Cryptonomicon

“Programmers are isolated. They sit in their cubicle; they don't think about the larger picture. To my mind, a programmer is not an engineer, because an engineer is somebody who starts with a social problem that an organization or a society has and says, "OK, here's this problem that we have- how can we solve it?" The engineer comes up with a clever, cost-effective solution to address that problem, builds it, tests it to make sure it solves the problem. That's engineering.”
Philip Greenspun

“Sometimes abstraction and encapsulation are at odds with performance — although not nearly as often as many developers believe — but it is always a good practice first to make your code right, and then make it fast.”
Brian Goetz, Java Concurrency in Practice

Michael C. Feathers
“Legacy code. The phrase strikes disgust in the hearts of programmers. It conjures images of slogging through a murky swamp of tangled undergrowth with leaches beneath and stinging flies above. It conjures odors of murk, slime, stagnancy, and offal. Although our first joy of programming may have been intense, the misery of dealing with legacy code is often sufficient to extinguish that flame.”
Michael Feathers, Working Effectively with Legacy Code

“Locking can guarantee both visibility and atomicity; volatile variables can only guarantee visibility.”
Brian Goetz, Java Concurrency in Practice

“Whenever more than one thread accesses a given state variable, and one of them might write to it, they all must coordinate their access to it using synchronization.”
Brian Goetz, Java Concurrency in Practice

“When a field is declared volatile, the compiler and runtime are put on notice that this variable is shared and that operations on it should not be reordered with other memory operations. Volatile variables are not cached in registers or in caches where they are hidden from other processors, so a read of a volatile variable always returns the most recent write by any thread.”
Brian Goetz, Java Concurrency in Practice

“From the perspective of a class C, an alien method is one whose behavior is not fully specified by C. This includes methods in other classes as well as overrideable methods (neither private nor final) in C itself. Passing an object to an alien method must also be considered publishing that object. Since you can’t know what code will actually be invoked, you don’t know that the alien method won’t publish the object or retain a reference to it that might later be used from another thread.”
Brian Goetz, Java Concurrency in Practice

“Immutable objects are simple. They can only be in one state, which is carefully controlled by the constructor. One of the most difficult elements of program design is reasoning about the possible states of complex objects. Reasoning about the state of immutable objects, on the other hand, is trivial.

Immutable objects are also safer. Passing a mutable object to untrusted code, or otherwise publishing it where untrusted code could find it, is dangerous — the untrusted code might modify its state, or, worse, retain a reference to it and modify its state later from another thread. On the other hand, immutable objects cannot be subverted in this manner by malicious or buggy code, so they are safe to share and publish freely without the need to make defensive copies.”
Brian Goetz, Java Concurrency in Practice

“The possibility of incorrect results in the presence of unlucky timing is so important in concurrent programming that it has a name: a race condition. A race condition occurs when the correctness of a computation depends on the relative timing or interleaving of multiple threads by the runtime; in other words, when getting the right answer relies on lucky timing.”
Brian Goetz, Java Concurrency in Practice

“Compound actions on shared state, such as incrementing a hit counter (read-modify-write) or lazy initialization (check-then-act), must be made atomic to avoid race conditions. Holding a lock for the entire duration of a compound action can make that compound action atomic. However, just wrapping the compound action with a synchronized block is not sufficient; if synchronization is used to coordinate access to a variable, it is needed everywhere that variable is accessed. Further, when using locks to coordinate access to a variable, the same lock must be used wherever that variable is accessed.”
Brian Goetz, Java Concurrency in Practice

“Debugging tip: For server applications, be sure to always specify the -server JVM command line switch when invoking the JVM, even for development and testing. The server JVM performs more optimization than the client JVM, such as hoisting variables out of a loop that are not modified in the loop; code that might appear to work in the development environment (client JVM) can break in the deployment environment (server JVM).”
Brian Goetz, Java Concurrency in Practice

“Once an object escapes, you have to assume that another class or thread may, maliciously or carelessly, misuse it. This is a compelling reason to use encapsulation: it makes it practical to analyze programs for correctness and harder to violate design constraints accidentally.”
Brian Goetz, Java Concurrency in Practice

“Accessing shared, mutable data requires using synchronization; one way to avoid this requirement is to not share. If data is only accessed from a single thread, no synchronization is needed. This technique, thread confinement, is one of the simplest ways to achieve thread safety. When an object is confined to a thread, such usage is automatically thread-safe even if the confined object itself is not.”
Brian Goetz, Java Concurrency in Practice

1 2 3 4 5 6 7 8 9 10 12 next »