Hacker News new | past | comments | ask | show | jobs | submit login
The Beauty of Programming (2001) [pdf] (bowdoin.edu)
94 points by MaxLeiter on July 12, 2017 | hide | past | favorite | 20 comments



A lot of the same reasons that Fred Brooks listed in The Joys of the Craft in The Mythical Man-Month:

1. The sheer joy of making things.

2. The pleasure of making things that are useful to other people.

3. The fascination of fashioning complex puzzle-like objects of interlocking moving parts, and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning.

4. The joy of always learning, which springs from the nonrepeating nature of the task.

5. The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination.

Not inclued in the list above is the insight "find the right approach and suddenly the problem just goes away". It ties in with this quote from Linus that I really like:

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

https://henrikwarne.com/2012/06/02/why-i-love-coding/


I enjoy programming games and other things as a hobby, but the work can fall short of your points especially in my experience in web development:

2. After days of work, your entire branch can be discarded when the feature spec changes 4. Repetitive tasks abound 5. Not so much creating from pure thoughtstuff, but rather intractable legacy codebases on top of bothersome system configuration

Your last quote sounds nice, but ignores the reality of coding. Even good coders have to write ugly (hard to maintain regardless of data structures) code sometimes. The real world just introduces edge cases which make even the most beautiful system have warts in places. Web development exposes concurrency, scaling and other things which can lead to tradeoffs against code cleanliness.


I'm maintaining an old, sprawling Django app right now. It's decidedly un-fun.


Besides bad font and no technical insight, it is a beautiful piece of text full of truth. I can feel how he did not write it for someone else (to impress or similar), but for himself only.


Thanks; I hadn't seen this. It's reminiscent of Tolkien's characterization of an author as "sub-creator".


> when you tell the computer to do something, it will do it.

I have read this so many times. Telling students that - "when you write a program, you are ordering computer to do something"

This should fascinating. But initially its not. Because after writing 8-10 lines of code and explaining for more than 30mins make things boring to students.


Not sure how old your students are but I'm teaching my 8 year old daughter programming (just been few days). I started exactly by telling "when you tell the computer to do something, it will do it." But instead of showing her any piece of code or explaining variables etc programming concepts I showed her how to command computer by writing simple 1 step commands like clear, date and echo in a terminal.

After she saw how she was asking computer to clear a screen of terminal, asking computer to tell current date or simply echoing what she typed, I moved to scratch programming editor https://scratch.mit.edu/

With scratch, I showed her how to tell computer to move an image to the right and left with single "move 10 step" and "moved -10 steps" command (still on single commands to computer to do what she want)

Then I showed her how to ask computer to do something repeatedly by introducing "repeat" block (it helped that I asked her to physically imitate a pony moving on screen by few steps to right and left). And by using "repeat" block she learned to make onscreen pony dance. By this time she understood how to piece together multiple commands together and loop concept, X-Y axis as I also showed her on computer she can move a subject in 4 directions by manipulating X-Y axis values)

Next she wanted to spin the onscreen pony so I introduced her the concept of direction and the whole degrees measurement. After that it was pretty simple for her to grok that by turning 1 unit clockwise and then doing it on "repeat" made the pony spin.

During the whole process I didn't type a thing. I let her drive the whole thing by clicking/adding/removing and making mistakes to learn. It has been great fun and she already has tons of ideas about what she want to try and make computer do it for her.


I like both concepts - Introducing first terminal command then Scratch. And that's what I basically like.

But unfortunately they ( students ) are first year graduate with no computer experience and the language that need to teach them is C!


> As any mathematician knows, you literally can have a set of mathematical equations in which three plus three equals two.

What does that mean?


In the cyclic-4 group (integer arithmetic modulo 4), 3 + 3 = 2.


Did he deliberately choose a font that resembles Comic sans - just to offend us? (http://www.identifont.com/differences?first=Chalkboard&secon...)




> If you're good enough, you can be God. On a small scale. And I've probably offended roughly half the population on Earth by saying so.

Which side of population Religion's or Atheist's?


Probably the religious side more so. Atheists would just laugh at that, most likely. If anything, it'd prove their point.

Religious people on the other hand, might be much more interested in defending the sanctity of that title.


Evenly distributed pairs.


Am I the only one bothered by the blank last page and the comic sans like font? I hope not because then I will be lonely.


I think the font is Comic Relief Regular. I have a hard time taking anything using a Comic Sans-like font seriously, especially when it's something technical. And the blank last page, yeah...


[flagged]


I feel when you go on a forum like HN, you lose nerd-calling privileges.


Why is this perceived negative it was a compliment ayy'lmao




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: