Memes
Joe Armstrong on OOP
think the lack of reusability comes in object-oriented mguages, not in functional languages. Because the problem with object-oriented languages is they've got all this implicit environment that they carry around with them. Vou i wanted a banana but what you got was a gorilla holding the banana and the entire jungle. If you have referentially transparent code, if you have pure iinctions—ail the data comes in its input arguments and everything goes out and leaves no state behind—it's incr...The problem with Object Oriented Programming is that it forces you to take a larger collection of properties when all you want is a smaller subset.
Peter Norvig: How Well Does the Program Run When it Isn't...
And think about failure modes—I remember one of the great lessons I got about programming was when I showed up at the airport at Heathrow, and there was a power failure and none of the computers were working. But my plane was on time. Somehow they had gotten print-outs of all the flights. 1 don't know where—there must have been some computer off-site, i don't know whether they printed them that morning or if they had a procedure of always printing them the night before and sending them ...An important use-case for any software, what's the work-around for when the program isn't running?
Guy Steele on Base Ten and Base Two
If I could change one thing—this is going to sound stupid—but if I could go back in time and change one thing, I might try to interest some early preliterate people in not ! using their thumbs when they count It could have been the Standard, and it would have made a whole lot of things easier in the modem era. On the other hand, we have learned a lot from the struggle with the incompatibility of base-ten with powers of two.Our Base ten number system is the bane of computer scientists.
Dan Ingalls Wonders how Genius Finds Time to Do Its Work
Often, reading about famous people, the side of it that I'm interested in is, how do they make their life work? All the things that weren't their passion, and how did they deal with that and with their family, and with their finances, and balancing that Or did they just hole up and say, "To hell with everything else," and let it just come crumbling down until they had their work done?How does genius deal with all the distraction of life, or does it simply ignore the outside world and let it come crashing down.
L Peter Deutsch on Why Programing is so Hard
One of the things that I've been thinking about off and on over the last five-plus years is, "Why is programming so hard?" You have the algorithmic side of programming and that's i close enough to mathematics that you can use mathematics as the basic model, if you will, for what goes on in it. You can use mathematical methods and mathematical ways of thinking.That doesn't make it easy, but nobody thinks mathematics is easy. So there's a pretty good match between the material you're working ...Programming is very alien to anything in the physical world.
L Peter Deutsch: Computer Science is Not Science
I have a little bit of a rant about computer science also. I could make a pretty strong case that the word science should not be applied to computing. I think essentially all of what's called computer science is some combination of engineering and applied mathematics. I think very little of it is science in terms oft of the scientific process, is, where what you're doing is developing better descriptions of observed phenomena.It is applied mathematics and engineering.
L Peter Deutsch on Software as a Capital Asset Versus Exp...
The problem being the old saying in the business: "fast, cheap, good—pick any two." If you build things fast and I you have some way of building them inexpensively, it's very unlikely that they're going to be good. But this s|s school of thought says you shouldn't expect software to last. I think behind this perhaps is a mindset of software as expense vs. software as capital asset. I'm very much in the software-as-capital-asset school. When I was working at ParcPlace and Adele Goldberg was...Sell software to customers as a capital asset, and as such, it requires maintenance costs, but not as a throwaway expense.
Ken Thompson on Obfuscation in Modern Code
Suppose someone describing something to me from postulates like. "Here's a computer and here are the op codes." I can visualize the structure of programs and how things are efficient or inefficient based on those op codes, by seeing the bottom and imagining the hierarchy. And i can see the same thing with programs. If someone shows me library routines or basic bottom-level things, I can see how you can build that into different programs and what's missing—the kinds of programs that would st...Modern programming principles involve a great deal of delegation, resulting in code that is very hard to follow.
Bernie Cosell on Java
Java didn't feel right. My old reflexes hit me. Java struck me as too authoritarian. Thats one of the reasons why I mentioned that Perl felt so good, because it's got the safety and the checks but it is so damn multidimensioned that the artist part of me has a lot of free board to express things early and to think about the right way do things. I have some freedom. When I first messed with Java—^this was /vhen it was little baby language, of course—I said, "Oh, this is just another one...Describing his first impressions of it as authoritarian and designed for not-so-good programmers.
Bernie Cosell on the Complexity of Modern Programming
So I don't envy modern programmers, and It's going to get worse. The simple things are getting packaged into libraries, leaving only the hard things. That stuff is getting so complicated, but the standards that people are expecting are stunning. One of the ones ^i^ey showed me stunned me. He was showing me Google Maps that will do I routes for you. One of the things you can Jo is you can grab a piece of the route with ^our mouse and drag that piece of the route somewhere else to tell Google t...Provides a great example of complexity in Google Maps functionality and being thankful that he no longer must contend with such increasing difficulty.
Donald Knuth on Complexity in Computer Science
In other words, there's still so much more beyond any five pages of my book that you can make a lifetime's worth of study, because there's just that much In computer science. Computer science doesn't all boil down to a bunch of simple things. If it turned out that computer science was very simple, that all you needed to do was find the right 50 things and then learn them really well, then I would say, "OK, everybody in the world should know those 50 things and know them thoroughly." But It ...The realm of computer science goes on and on, too expansive for anyone to remember it all.
Donald Knuth on Getting to the Source Material
Seibel: Do you feel like programmers and computer scientists are aware enough of the history of our field? It is, after all, a pretty short history. Knuth: There aren't too many that are scholars. Even when I started writing my books in 1963, I didn't think people knew what had happened In 1959. I was reading in American Scientist last week about people who had rediscovered an algorithm that Boyer and Moore had discovered in 1980. Ii happens all the time that people don't realize the glorio...The joy of going to the primary documents for understanding how people throughout history thought.
Peter Norvig: From Books to Paragraphs
You look at Knuth's original Literate Programming, and he's really trying to say, "What's the best order for writing a book," assuming that someone's going to read the whole book and he wants it to be in a logical order. People don't do that anymore. They don't want to read a book, they want an index so they can say, "What's die least amount of this book that I have to read? I just want to find the three paragraphs that I need. Show me that and then I'll move on." I think that's a real change.People don't want books anymore, they want direct answers to their questions found in an index.
Fran Allen Sees Computer Science as Science
Seibel: Do you think of yourself as a scientist, an engineer, an artist, or a draftsman? Allen: I think of myself as a computer scientist I was involved in my corner of the field in helping it develop. And those were interesting times—the emergence of computer science—because there was a Ic lot of question about, "Is this a science? Anything that has to have science in its name n't a science." And it was certainly unclear to me what it meant. But compilers were a very old field—olde...Allen started out as a programmer, but became a scientist to perform her job well.
Spend 20 Percent of Your Time Learning New Things
He says things like, "Do good stuff." He says, "If you don't do good stuff, in good areas, it doesn't matter what you do." And Hamming said, "I always spend a day a week learning new stuff. That means I spend 20 percent more of my time than my colleagues learning new stuff. Now 20 percent at compound interest means that after four and a half years I will know twice as much as them. And because of compound interest, this 20 percent extra, one day a week, after five years I will know three time...From Joe Armstrong, the "compound interest" on this learning will result in big gains in the future.
Research Subjects Expand Naturally on Their Own
John Washbrook, who was himself a senior academic in the department, took me under his wing and he told me something that very important. He said, "Just start something, no matter how humble." This is not recall; about programming, this is about research. But no matter how humble and unoriginal and unimportant it may seem, start something and write a paper ab about it So that's what I did. it turned out to be a very significant piece of advice. I've told that to every research student I've e...Simon Peyton Jones tells research students to just start researching, and the subject will extend out before you for exploration naturally.
Brad Fitzpatrick on What Makes a Great Programmer
Seibel: What do you think is the most important skill for a programmer to have? Fitzpatrick: Thinking like a scientist; changing one thing at a time. Patience and trying to understand the root cause of things. Especially when you're debugging something or designing something that's not quite working. I've seen young programmers say, "Oh, shit, it doesn't work," and then rewrite it all. Stop. Try to figure out what's going on. Learn how to write things incrementally so that at each stage you...A programmer must think like a scientist.
L Peter Deutsch: Everyone Will Need to Become Computer Li...
You know the old story about the telephone and the telephone operators? The story is. sometime fairly early in the adoption of the telephone, when it was clear that use of the telephone was just expanding at an incredible rate, more and more people were having to be hired to work as operators because we didn't have dial telephones. Someone extrapolated the growth rate and said, "My God. By 20 or years from now, every single person will have to be a telephone operator." Well, that's what happe...Just as everyone had to become telephone operators.
Programming as the Fifth Discipline
Seibel: You mention four disciplines: music, graphics, mathematics, and text those are about as old as humanity. Clearly there are powerful ideas there that are independent of computers—the computer just provides a way to explore them that might be hard without the computer. Is there also a set of interesting, powerful ideas inherent in the computer? Is programming or computer science another deep discipline—a fifth area we can only do we have computers? Ingalls: Yes, I think that's wha...Dan Ingalls sees computer programming taught along with math, music, graphics and text, with computers bringing the other four together within it.
Guy Steele: Computers are Too Complex to Know it All
I guess to me the biggest change is that nowadays you can't possibly know everything that's going on in the computer. There are things that are absolutely out of your control because it's impossible to know everything about all the software. Back in the '7Os a computer had only 4,000 words of memory. It was possible to do a core dump and inspect every word to see if it was what you expected. It was reasonable to read the source listings of tine operating system and see how that worked. And I ...It was once possible to know all aspects of the computer, but the system has grown too large and complex for that now.
Guy Steele on Programming as Magic
I think it's not an accident that we often use the imagery of magic to describe programming. We speak of computing Wizards and we think of things happening by magic or automagically. And I think that's because being able to get a machine to do what you want is the closest thing we've got in technology to adolescent wish-fulfillment. And if you look at the fairy tales, people want to be able to just think in their minds what they want, wave their hands, and it happens. And of course the fair...Programming computers provides the individual total control over a system, a kind of magic that appeals to young minds.
Douglas Crockford on Reading Code
One of the things I've been pushing is reading. I think that is the most useful thing that a community of programmers can do for each other—spend time on a regular basis reading each other's code. Then are's a tendency in project management just to let the programmers go off independently and then we have the big merge and if it builds then we ship it and we're done and we forget about it.An important exercise for programmers is to read each other's code.
Are Programming Solutions Inherent?
If you give two programmers the same problem—it depends on the problem, but problems of a more mathematical nature, they can often end up writing the same code. Subject to just formatting issues and relabeling the variables and the function names, it's isomorphic—it's exactly the same algorithms. Are we creating these things or are we just pulling the cobwebs off?Joe Armstrong suggests that programming solutions are isomorphic when tackling the same problems.
Jamie Zawinski on Different Kinds of Programming
There's obviously different kinds of programming. Without people who are not like me none of this would exist. But I've always seen much more in common with writing prose than math. It feels like you're writing a story and you're trying to express a concept to a very dumb person-the computer—who has a limited vocabulary. You've got this concept you want to express and limited tools to express it with. What words do you use and what does your I thing.Programming has much in common with prose.