Paul Graham: Hackers and Painters
larsberg writes "Another wonderful article from Paul Graham on hackers, their lifestyle, and their tools. It's entitled "Hackers and Painters", and provides a great description of how the great hackers write code. The article is definitely worth a read, especially for those who have an inkling that any field that has to place the word "Science" in its name probably isn't really a science after all."
So, he's saying Political Science isn't Science?! No wonder everyone looks at me funny when I wear a lab coat around the office...
Safecracking is an "art" too.
I guess it depends on your inital reaction to the term hacker. It should be someone who hacks code, vs. a cracker that willfully circumvents security measures and breaks into a network. Unfortunately, you need to consider the source of the quote to get at the real meaning.
Feh.
May 2003
(This essay is derived from a guest lecture at Harvard, which incorporated an earlier talk at Northeastern.)
When I finished grad school in computer science I went to art school to study painting. A lot of people seemed surprised that someone interested in computers would also be interested in painting. They seemed to think that hacking and painting were very different kinds of work-- that hacking was cold, precise, and methodical, and that painting was the frenzied expression of some primal urge.
Both of these images are wrong. Hacking and painting have a lot in common. In fact, of all the different types of people I've known, hackers and painters are among the most alike.
What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.
I've never liked the term "computer science." The main reason I don't like it is that there's no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they're doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers-- studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department.
Sometimes what the hackers do is called "software engineering," but this term is just as misleading. Good software designers are no more engineers than architects are. The border between architecture and engineering is not sharply defined, but it's there. It falls between what and how: architects decide what to do, and engineers figure out how to do it.
What and how should not be kept too separate. You're asking for trouble if you try to decide what to do without understanding how to do it. But hacking can certainly be more than just deciding how to implement some spec. At its best, it's creating the spec-- though it turns out the best way to do that is to implement it.
Perhaps one day "computer science" will, like Yugoslavia, get broken up into its component parts. That might be a good thing. Especially if it meant independence for my native land, hacking.
Bundling all these different types of work together in one department may be convenient administratively, but it's confusing intellectually. That's the other reason I don't like the name "computer science." Arguably the people in the middle are doing something like an experimental science. But the people at either end, the hackers and the mathematicians, are not actually doing science.
The mathematicians don't seem bothered by this. They happily set to work proving theorems like the other mathematicians over in the math department, and probably soon stop noticing that the building they work in says ``computer science'' on the outside. But for the hackers this label is a problem. If what they're doing is called science, it makes them feel they ought to be acting scientific. So instead of doing what they really want to do, which is to design beautiful software, hackers in universities and research labs feel they ought to be writing research papers.
In the best case, the papers are just a formality. Hackers write cool software, and then write a paper about it, and the paper becomes a proxy for the achievement represented by the software. But often this mismatch causes problems. It's easy to drift away from building beautiful things toward building ugly things that make m
I highly doubt Picasso, Rembrandt or Cézanne strutted around saying "H3y d00dz, ch3ck 0u7 7h3 l337 p41n71ng5 1 h4x0r3d t0g37h3r l457 n1gh7! ph34r m3!
Trolling is a art,
Do you need a pressure sensitive mouse to code?
Is it just me or did I just waste 5 minutes of my life reading an overly verbose article based on a flawed analogy? Painters do not create something functional; hackers (read: programmers) do. Sure, code can be 'beautiful' to those who can appreciate it, but is it more art than science? Given the deterministic nature of digital computers, I think not. Are there creative elements to coding? Sure. That doesn't mean hacker==painter.
Just my ten cents. Your milage may vary.
WHAT??? I thought 'poke 53281,0' and 'poke 53280,0' made for a better contrast setting...
Programming is as an art as bridge buidling is.
Engineering is not an art. People who see's it as an art have ego problem. It's a science and there's nothing wrong with it. Art deals with human emotions, feeling, states of mind, philosophy. Computer programming do not. It's insulting art and science to say this kind of thing.
But computology was too cultish sounding.
Computics was overruled because it sounded too much like the future os Unix, and people didn't want to get sued for their domain names.
Programatics was taken by a musical group made up entirely of Stepford children.
Computer Engineering wasn't used because at the time engineers were all people who worked with things like buildings or cars.
Computer Science makes as much sense as metaphysics. Besides, in the begining, these folks were actually creating theories and discovering new ways to do things. And Computer Scientist sounds better than Efficiency Expert on a resume.
"For example, I was taught in college that one ought to figure out a program completely on paper before even going near a computer"
I absolutely despised this in high school and college. Maybe DESIGN on paper, not code. I think the professors missed this.
Good design will usually result in good coding.
Perhaps the reason he doesn't consider it engineering is that he is a hacker rather than someone who does things methodically?
Given a task to build a bridge, a "hacker" would run out and start sticking things together and seeing if it works, and patching cracks along the way. An engineer would plan and research, test and model, then build the bridge.
... you mean Scientology isn't.... crap. I was so close to the third level!
Posted as an AC because I'd rather not have to flee the country.
Admitedly I haven't RTFA but ...
This whole "hacker lifestyle genre" thingy is a bit too dramatizied by the geek wannabes. Go out and actually try to write software that must be supported and updated. That's hardly "movie-worthy" lifestyles that people think is useful.
Put it this way. If I were in a position to hire people I'd only hire those that look down on hackers for the sole reason hackers are not responsible software developers.
Someday, I'll have a real sig.
Another language trick I hate is when they stick 'arts' on something that is not artistic, like the 'Dental Arts' office down the street.
Would you like Van Gogh to work on your teeth?
love is just extroverted narcissism
"Only a small percentage of hackers can actually design software, and it's hard for the people running a company to pick these out"
As BArney would say, "imagination is more important than a college education in computer science"
A grumpy guy in blue overalls carrying a big brush, a bucket full of paint and painting a gazillion walls a day. At least that's how I feel at work. Yes, I am definitely a painter.
I wish more people who write computer code could transcend the medium and venture into creating art (as long as they comment their code ;).
Hell, I wish more would give a shit beyond "does it kinda work, at least without causing data loss".
I've seen so much code where the person writing it defines hack as "to cut or mutilate" that were I Baby Jesus I'd be crying right now.
Engineering, if you want to be anal, is all about engines. If you can take a term that has nothing to do with bridges, etc, and apply it to a field that has nothing to do with engines, then why can you not to Software?
one horrendously long article, screw RTFA!
--------
Free your mind.
Is architecture an art? At what point does a structural engineer become an architect, or a civil engineer become a landscaper?
I liked reading this article because lately I've started to work on my drawing skills. It's very humbling to do something I'm skilled at (coding) and then move to something where people can barely tell what I'm trying to draw.
One commonality I've seen so far is that you just have to jump in and do what you can before anyone can help you. Posting questions like "how do I write an OS?" or "how do I draw such-and-such?" will yield theory but not get you far. On your first tries it's going to look like a bunch of scribbles (or spaghetti code that is far from compilable), but you have to put something down for others to critique. And of course coding and art both take tons of practice time. This goes along with just trying and not worrying about the results. If I didn't code unless I was sure each line was perfectly bug free.. well, that's impossible.
I've been working on realistic and anime-style people. Humans are the most rewarding subjects and also one of the hardest to draw, but I wouldn't want to draw anything else. For anyone else wanting to start in this direction, I recommend the PolyKarbon BBS. There are some amazingly talented people there that are very helpful. This site with anatomy books is a good reference. If you have more helpful links, like a newsgroup for new artists (I haven't found any that are good), please post them.
Programming / Hacking is neither and art or a science and yet it is both. If you don't program you probably would not understand, but if you've ever implemented your own b-tree in an application, you'll probably agree. Most likely, whether or not you agree depends on what type of software you have written in the past.
Art and science are probably closer than most people believe. Leonardo da Vinci painted some of the most astounding scenes ever painted; yet, he also studied science, literature, and the Christian bible. Many mathematicians would say that math is an art, heck there are probably some artists that believe art is a science.
Knuth says that computer programming is an art, but I dare you to read his books and claim they are devoid of science.
In short... It's all depends on the application.
10: PRINT "Everything old is new again."
20: GOTO 10
Then I'm an ANSI poet!
;-)
Hey! it worked in that club last year
... whenever I first met people but I found their reply was "Oh" followed by a long pause. Now, whenever I introduce myself and have to say what I do, I tell people I'm an "artist": I take bits and bytes and create a masterpiece, or I colour-by-numbers.
do you even need a mouse to code?
If it evokes an emotional reaction, it's ART!
Using microsoft products evokes a raticaly diffrent reaction then using let's say an Apple product, or a Linux product.
Why would it be insulting for art and science to be the same thing. A good deal of science goes into art, and art into science.
There is no sanctuary. There is no sanctuary. SHUT UP! There is no shut up. There is no shut up.
The art isn't in the final product, but in the process. Its a fairly fundamental concept. If you have any kind of creative job you should understand the feeling of satisfaction from creating an elegant solution (as opposed to a clever one). Maybe you need a new job? {not criticizing, just questioning}
Is at The Pragmatic Programmers web site.
footnote 2 states:
;o)
I've been told that Microsoft discourages employees from contributing to open-source projects, even in their spare time. But so many of the best hackers work on open-source projects now that the main effect of this policy may be to ensure that they won't be able to hire any first-rate programmers.
but should surely read:
the main effect of this policy may be to ensure that they still won't be able to hire any first-rate programmers.
$ strings FTP.EXE | grep Copyright
@(#) Copyright (c) 1983 The Regents of the University of California.
As a musician as well as a wannabe hacker, I have to say the comparison of computer science and art is not completely bogus, although in this case very rambling. The problems you run in to are remarkably similar: Good ideas you can't find a way to actually make work, periodic epiphanies about why something isn't working, stuff like that.
Music in particular I like to look at as rigid logic in a system of your own definition. When hacking your doing the same thing, making up rules and leading them to their logical conclusion to produce the prettiest results possible.
Another thing to note is that different folks have different aesthetics when it comes to software. For instance, MS wants one gigantic integrated piece of software that you just turn on your machine and it works and does everything you need. GNU wants thousands of small programs with about 1500 command line options that you can pipe together yourself. Just like artists have different ideas about what works, so do programmers.
Tell me this is not art!_ yapc.html
http://domm.zsi.at/talks/obfu_yapc2002/obfu
Hey! That's my sig you're smoking there!
Lots of universities have computer science departments as well as information systems (or some variation of that term) departments. Like theoretical vs. applied mathematics or physics, the CS depts. concentrate on theory (algorithm development, etc.) and IS is geared toward practical applications (database application development, etc.).
Engineering isnt an art huh? So the things we design for the masses dont play on emotions when we sell them? Tell me that cars dont have an emotional role in most peoples lives, or that the old majestic buildings dont have a symbolic artistic beauty to them.
Choose wisely you must...
To make an analogy between programming and painting is a mistake, because "computer programming" is more like "putting paint on a canvas"
Neither is an art in itself, but a programmer or painter _can_ use their tools to create art.
In other words, saying "computer programming is art" is wrong just as saying "paint and brushes are art" but a painting or a program can both be art.
-- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz
This is nothing more than one of those compare and contrast essays which one has cranked out hundreds by the end of high school. Given any two professions, one could derive the same relationships: e.g.,
"When I finished grad school in blank I went to blank school to study blanking. A lot of people seemed surprised that someone interested in blanks would also be interested in blanking. They seemed to think that blanking and blanking were very different kinds of work-- that blanking was cold, precise, and methodical, and that blanking was the frenzied expression of some primal urge.
"Both of these images are wrong. Blanking and blanking have a lot in common. In fact, of all the different types of people I've known, blankers and blankers are among the most alike."
If Slashdot were chemistry it would look like this:Cadaverine
"Perhaps one day "computer science" will, like Yugoslavia, get broken up into its component parts"
This is already the case. There are people specializing in writing comp-sci software (compiler etc...), there all those double-majors who write software for their other degree specialization (software for given domains like geophysical etc...), there are people who specialise on the ergonomic of the GUI, etc....
This isn't that different from people designing a car, a thing that is both functional and can be beautiful. It takes engineer and designer to make a car.
Now don't tell me "I am the creative type", I am writting software, science doesn't apply to me. I once work in a software lab where the lab had been producing software for several decades. One day the person in charge of QA convinced the person in charge of development to bring some quality type tools like cyclomatic analysis (McCabe etc...). A few engineer came up with that argument that they were producing art, that a software couldn't / shouldn't judge them.
Well, they did two things: They ran McCabe against a lot of their software, some that have been in the market for decades, and there was a direct correlation between the "level" the tool was finding and the number of patches applied to the piece of software. Then they analysed code per current programers: The artsy types were writting complex code that the QA dept. kept sending back !!
Conclusion, there is a place for "out there" artsy type to inovated in a small shop, there is a place in ergonomic to write "beautifull software", but a serious piece of software does need some science.
Think about this, how beautifull would a car that looks good but keeps breaking down be ? Doesn't this remind you a lot of the software out there ?
anything that requires creativity, and not just observational descovery is an art.
You can do computer science, and you will get a bullet proof system, but it takes a hell of a long time. People arn't that good at science, that why we created computers. code-breaking and missile targeting and the nuke.
thank God the internet isn't a human right.
I've often fancied myself a painter. I've been told more than once that reading my code was like trying to interpret a Jackson Pollock painting.
What Graham doesn't understand is the distinction between those fiew people who can blend art and science and those of us who work in the trenches every day.
Here's the thing. It's great if you can create huge, scalable architectures from scratch. You have the chance to create art.
But if you're like me, spending days slogging through large codebases with relatively inexperienced developers, you NEED to be engineers. Otherwise, people who don't have 20+ years experience will do whatever they want and call it "art."
You NEED engineering processes (design, QA, etc.) to remain sane. Graham doesn't see this because he doesn't have to.
What a great quote. This is so very true.
Dynamic typing is a win here because you don't have to commit to specific data representations up front. But the key to flexibility, I think, is to make the language very abstract.
From what I've seen, very few people - espessially those with degress in computer science - share my views on programming. This article takes a different approach to it, but it's the same view I have, when it gets down to it. I usually say that when programming, you shouldn't be bothering with types, memory locations, pointers, and other nonsense that has nothing to do with how the program works. Or in other words, the formal 'scientific' aspects of programming.
Most people will disagree with me here, and I've been involved in many arguments over it. My programing language of choice right now? PHP. Why? Because it sucks less than the other choices. It still boggles my mind that C is used to do any high-level programming (ie, anything besides api's to system calls, and writing drivers and kernels). "But it's so much faster" I hear all the B.Sc's saying. And they're right, it does run faster. It also takes ten times as long to code. And ten times as long to find all the strange bugs and buffer overflows that eventually show up as exploits.
Paul Graham hints at it in his article, but there is no good language right now for writing applications in. PHP in itself is a nice language to write, although it's an interpreted language, not compilied. Perl is a bit too messy for my liking (Paul also mentions this when he says he knows people who wrote perl programs and came back and couldn't understand how they worked), although it is quite powerful. Java is nice in theory, but implemented a bit slowly, and it's a bit too scientific, really -- you spend so much time handling exceptions and making sure all your code is very formal.
So what's the answer? I don't know. But it doesn't exist yet, as far as I know. Until then I'll continue running my slow PHP programs on modern "slow" computers. That run at a mere 1.5 GHz.
Speak before you think
umm... thanks for posting that and all, but the reason it was slow might have been your 300 baud modem, since it seems to be fine on my t1 ;-)
This space for rent, inquire within.
Sometimes what the hackers do is called "software engineering," but this term is just as misleading. Good software designers are no more engineers than architects are. The border between architecture and engineering is not sharply defined, but it's there. It falls between what and how: architects decide what to do, and engineers figure out how to do it.
The above would have done nicely in the Are Programmers Engineers?topic.
And supported my point of view nicely.
My spelling isn't bad, I'm evolving the language
Art deals with human emotions, feeling, states of mind[...]
Excuse me, I've seen some pieces of code that are VERY beautiful and emotional. I'm not saying that a programmer and a painter should be grouped together, but there can be some extreme beauty in a piece of code. That's like saying that minimalists aren't artists because I think that a yellow dot on a red piece of canvas doesn't draw any emotions. Other people might look at that dot and see their entire life summed up, and get all teary eyed. Different people get emotional reactions to different things. I can still remember to this day the moment I first saw and understood recursion. I nearly creamed my pants when I read through my first recursive function. That's just one of many emotional reactions I've had to beautiful code.
remember, not everyone thinks just how you do.
This space for rent, inquire within.
that is being addressed partly by the research and practice of agile methodologies. The idea is to change the focus of software development to a new set of principles (for example favoring running software over documentation).
There is also a problem with the way that many managers and business people view software creation as a construction or engineering process. I wrote a paper about this: "The Software Construction Analogy is Broken". The summary is that software has so many attributes that are unlike physical things that its creation cannot be accurately mapped to the creation of buildings. For example, the economics of distribution are completely different: a building cannot generally be moved after it is constructed, yet software can not only be moved, but also can be duplicated for almost zero cost.
Ultimately, I think that software creation is actually the creation of completely new media of communication. Every program created defines a new set of communication interactions that didn't exist before. We don't really have any "science" for that.
Helping with organizational effectiveness is our job.
Anything that evokes an emotional response in the viewer could be considered an art. This is thrown around all the time. Personally I think it's too loose a definition. My dog shit on the rug - I definately had an emotional reaction, but I dont call him an artist.
I've also never had an emotional reaction to code. It's all about function. Maybe some would, maybe you could consider that art. You could consider anything art.
But, it is not a Fine Art, which painting is. Painting, sculpting, composing, mosaic tiling, etc, are the classical fine arts.
So there you go. Now quit fighting about whether its an art or not.
In short, you can call anything an art. The term fine art refers to a very specific set of functions.
I don't need no instructions to know how to rock!!!!
Paul Graham is a smart guy. He made millions selling his company to Yahoo. He's written several books on Lisp. He regularly has speaking engagements. And he does practice what he preaches, actually using high level languages rather just bashing away at C++, but still using it for everything, like most people do. He also manages to completely stay away from the usual topics, like Linux vs. Windows. Oh, all right, one more "and": And he has some unpopular opinions, like that of OOP being overrated smoke and mirrors.
That said, his view of what it means to hack is certainly different than what it usually means in geek circles. Actually, I should go further than that: Paul Graham isn't even a geek. Nobody would call Feynman or Dyson a geek, would they? Paul Graham is someone of high intelligence who happens to be applying that intelligence to computer programming (and writing, and speaking, and painting). This is much different from the typical hacker who pounds out C code because he has nothing better to do and revels in the geek traditions of arguing about Linux distributions, Star Trek movies, and yes, posting to Slashdot. In short, Paul Graham is a geek by association, because of what he decided he likes to do, whereas most hackers revel in their own geekiness, pointless and inbred though it may be.
If it has "engineering" in the title, it probably isn't engineering (darn, sorry all you so-called civil/electrical/chemical/... engineers).
Sound bites are meant to sound good, but sometimes, they're absolutely content-free. Like the "if it has science in the title..." quote. Move along, nothing useful to see here.
'nuff said
$ strings FTP.EXE | grep Copyright
@(#) Copyright (c) 1983 The Regents of the University of California.
My degrees (bachelors and masters) are in painting, and I've worked for the last 8 years writing code. I'd say my art background has definately been a benefit.
Art (can) be about seeing overall patterns and relationships between seemingly dissimilar things, as well as about organizing and processing information in a way that gives meaning to it.
Sounds like the skills I use everyday as a programmer.
No, just an 029 card-punch :-)
Computer Science is as much a science as Physics or Biology. The problem is that "Computer Scientists" rarely, if ever, do actual Computer Science after they get thier degrees.
How many people out there with C.S. degrees have gotten jobs that require them to develop, for example, a new compression algorithm? When's the last time you wrote your own language and a complier to go with it? I'm not saying it never happens, but the reality is that most Computer Scientists wind up being Software Engineers.
I mean, It's important to have the scientific background when being an engineer. How many civil engineers do you know that never learned static-state physics? But developing software systems is no more a science than designing cars or buildings. It's applied science, which is a different thing.
I am the only Hacker/Painter at my company. All of the other Hackers are Hacker/Musicians.
They act like I am really unusual. Util I read this article I was starting to think I was the only one.
Why are Musicians so common but Painter's not in the Hacker community?
The city is being overrun by a herd of Lucy Liu's.
Programming is as an art as bridge buidling is.
What about this?
Art or no?
www.6502asm.com - Code 6502 assembly or.. DIE!!
/. is turning into some parallel of the Dr. Dean Edell show. "I used to be a Doctor...."
/. is heading. Talking about whether programming is an art or science? imagine a programmer who'se employed at Wal-Mart as a non-programmer reading this story. DO you think he gives a fuck?
/. are invariably fluffy and disconnected.
/. becomming a parody site and this fluffiness about programming and art made up mind.
And this is bad. Once you stop having first hand experience, you must rely on the experiences of others. And there's and infinity of industry spin doctors, propogandists,lobbiests and institutes, who always have a ready supply of information for those media folks who are short on material.
Doctor Dean seems to just read from such reports. This is where
Our reality is becoming gritty and harsh. The topics on
"Oh, time to buy a new TIVO!"
"Time to buy some DVD's!"
"Let's watch some TV"
"Is programming art or science?"
"Time to buy an Ipod!"
I read the other day about
"I've seen some pieces of code that are VERY beautiful and emotional. ... I nearly creamed my pants when I read through my first recursive function"
:)
;) ) how plain old words or paint or whatever other medium can be turned into something so elegant.
Ok dude, I think you need a girlfriend.
I wouldn't really consider myself an expert coder or an excellent artist but I do enjoy both. For me, it's about the act of creativity and turning some basic components into something more complexe and elegant. When I finish a picture, I look at it and think to myself, wow that's really cool. I get the same type of feeling if I hack up some nifty little web app in PHP.
It amazes me (not in a sexual way though
Do hacking and painting share characteristics? Certainly. Are they the same? In some ways yes but in others, no. An average person that knows nothing about code or painting probably won't be able to look at a peice of code and appreciate it nearly as much as a peice of art.
Code has other advantages though. You can look at that recursive function for the first time and be amazed by it when you understand how it works because it stimulates your mind.
I agree with the article's assesment of programming, too. But for a language, I avoid PHP largely for the same reasons as Perl (and because is is largely for web stuff, and I've grown to hate web-stuff).
If you haven't given Objective-C or Cocoa a try, you should. The language is truly dynamic and very powerful. Sometimes I wish there was garbage collection, but the retain/release/autorelease mechanism is very easy to use and gives you the ability to release objects when you want to (closing file descriptors, etc.).
Naming arguments makes things much easier -- rarely is there a need to hit the documentation or use code completion to figure out what arguments are -- they are explicit in the names. This makes the code very readable.
Mark
It's not easy to define something like `art'. As the former Belgian band Noordkaap stated (link in Dutch, sorry) :
I've never liked the term "computer science." The main reason I don't like it is that there's no such thing.
Sure there is. Just because a term is overused doesn't mean it does not have legit application. Just because he doesn't like the term because it doesn't fit in with his vision does not provide a basis from which to dismiss the term.
Good software designers are no more engineers than architects are.
How many people today only design software, and never code or test it? How many people design software for software's sake, as opposed to people who design software that is supposed to do something and thereby provide a means to an end?
And he couldn't even 'splain the Desi-Lucy relationship correctly.
I know this is hardly the forum for discussion of "good design" when it comes to English, and I did enjoy the article very much, but come on - the last sentence in that paragraph is like a fart in a gourmet soup bowl.
http://www.ratajik.comt /
http://www.ratajik.net/ar
http://www.ratajik.com
http://www.ratajik.net/art/
Medical Science.
The Kruger Dunning explains most post on
Sometimes it's fun to read the slashdot reactions before RTFA. One poster header "painters" and assumes Graham is talking about the Bubba who shows up to cuss and slap cheap paint on apartment walls. Other people assumes he's talking about the code monkeys in the world. The "fun" thing about today is no one listens anymore. Maybe it's just me, but he's not comparing the techniques. He's comparing what makes these people tick. Einstein is one of the great Physics hackers, but he was also supposed to play a mean violin. The wiring that allows people to pull visions out of thin air works in both worlds. Graham isn't saying anything terribly new (at least to me). I was screwing with creating code in Junior High and writing short stories by High School. By the time I was done with college I had a degree in Physics, work in the humanities and published poems and paintings that had been in shows. I've been asked the same question and I always said Physics (or hacking) and the arts back up to each. More correctly the one that can create in Physics/thru hacking is often the same mind that could envision great art. Same mind, different techniques: creation ex nihilo.
the clock on the wall says 4 til 7
Thanks for posting. I *hate* skinny-ass columns. I just got a new 20" flat panel, 1600x1200. Let the text *flow*, dammit! :-)
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
i always felt that the most important issue, was not just being a maker, or constructivist, but being professional about my business conduct. if there was one and only one thing i learned it was that a proper presentation of one's self would decide if someone else will pay you to make things for them. after that, its all wine and roses, and blooshot eyes and doing what you love.
The supreme accomplishment is to blur the line between work and play. Arnold Toynbee (1889 - 1975)
"You never want a serious crisis to go to waste." - Rahm Emanuel
I've been saying exactly what this essay elequently expresses for a long time now.
I started out as a graphic artist, and by chance ended up doing it professionaly. I still love art and design, and still engage in it, but not professionally (I got fed up with the attitude that everyone thinks they have good taste and sense of esthetic, when that is the FURTHEST thing from the truth).
So, as something on the side many years ago, I taught myself Perl and Java and along the way picked up PHP and other languages and what I found is, the way I worked, and the thought process was EXACTLY the same when I was creating an indentity.
The developers I work with find this very difficult to fathom. I always tell them the what they do is really no different than what a designer or artist does, its just he medium is different.
Artists, designers, architects, hackers... all make things (as the article states) and solve problems CREATIVELY. How that creativity is expressed is the only difference.
Oh well, that's just my way of looking at it, which is 100% compatatible with this essay... go figure.
sad robot making broken music
Why do people feel the need to romanticize hacking? Do people need to validate the fact that they are programmers?
Some people love to do what they do and may have a skilled hand at it, but that does not make it like painting.
I am not so sure of the beautiful part, but I have seen very emotional code, as in:
print("why the FUCK doesn't this get called?????!!!!")
Then what are hello world programs?
You should figure out programs as you're writing them, just as writers and painters and architects do.
If this man ever comes near a real product shoot him! Schetches are fine for a small program, 1 MLOG+ programs you want a design for.
I get the impression this guy has never been near a serious product. Or at least not one I'd pay money for. His assumptions on the role of coding is all wrong for anything but the most basic of projects. It would be interesting to see what he makes of a proper project which has a 20+ year life span, has a couple of hundred people involved and needs coherancy.
However long lines of text go against fast reading... some 10 words per line is about the optimum for small eye movement and leverage of whole paragraphs comprehension by a single plank of your eyes...
when I maximize my browser in my 21'' monitor, it's always because the huge left menubars webmail sites have, but I ususally let open the history sidebar on my phonix/firebird, it makes for a good bookmark and makes sites easier to read [note]
best regards
Note: except when I open about 30 tabs in a single window, usually when googling, then I need all the space I have for the tabbar... I think that what NetCaptor does (several lines of tabs) is actually neater, even if it fiddles your vertical space for reading (i hate frames, the upper frames with banners also take much of the vertical space for fast reading.... :(
Introspection is not unwarranted in our field. Many things he said in his article were true. I view hacking and programming as two very different things. The way I see it, a Programmer is a code monkey who implements management's vision of how the software should be 40 hours a week and then has nothing to do with computers the rest of the time. A hacker can build something truly unique and will no doubt be working with computers at other times as well.
The IT industry does not recognize the difference. They have a very narrow slot that you get put in if you can program. For the hacker, work in the IT industry can be very unfulfilling. It is the very rare hacker who is given the ability to create what he wants (It is the very rare painter who is given the ability to create what he wants, either.)
I think this is why the Open Source movement has taken off like it has. There has been a lot of pent up demand to create, but programming is a collaborative field. One hacker might create something nifty, but when you get the synergy of him bouncing off thousands of other like-minded people, some truly amazing things can be made.
If you look at the indignation that arises here when someone goes on about the DMCA or software patents, it is very close to the anger and frustration a painter would feel if you told him he couldn't use a given color in his painting or paint a certain subject. I don't think cold and calculating science would become so enranged.
So I think that the entire process is much more about creativity than you give it credit for. Most large programming projects are extremely chaotic systems which seem to have a life of their own. It is far more fuzzy than you'd expect something that was made only of 1s and 0s to be.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
SO, if I slap you for being so stupid, would you call that art too?
I *am* a hacker. See, says "code monkey" on my card. And I can't READ that shit. So, here is a little snobol4 program to interpret hacker-speak. The hacker speak generator is left as an assignment for the reader...
/usr/local/bin/snobol4
:(FIRSTL) :F(DONE) :F(P2) :(NEXTW) :F(P3) :(NEXTW) :F(P4) :(NEXTW) :F(P5) :(NEXTW) :F(P6) :(NEXTW) :F(P7) :(NEXTW) :S(P8) :S(P9) :(NEXTW)
Am I a real hacker now? Please, pretty please!?!
[I just realized, this is probably too damn obscure -- this is meant as humour].
Ratboy.
#!
* dehack.sno
* Fix up hacker speak to english
&TRIM = 1
WORD = "'-" '0123456789' &UCASE &LCASE
WPAT = BREAK(WORD) SPAN(WORD) . WORD
NEXTL OUTPUT = O
FIRSTL O = ''
LINE = INPUT
WORD POS(0) '1' RPOS(0)
O = O ' I'
P2 WORD POS(0) SPAN('012345689') RPOS(0)
O = O ' ' WORD
P3 WORD POS(0) 'd00dz' RPOS(0)
O = O ' dudes'
P4 WORD POS(0) '1337' RPOS(0)
O = O ' elite'
P5 WORD POS(0) 'h4x0r3d' RPOS(0)
O = O ' hacked'
P6 WORD POS(0) 'h4x0r' RPOS(0)
O = O ' hacker'
P7 WORD = REPLACE(WORD, '307415', 'eotais')
P8 WORD 'ph' = 'f'
P9 WORD 'Ph' = 'F'
O = O ' ' WORD
DONE
END
Just another "Cubible(sic) Joe" 2 17 3061
Programming languages should be abstract. We should not be dealing with types, memory management, file I/O and any other implementation details. We should be coding abstract algorithms / architectures, which are later applied to data.
I have also battled it out here on Slashdot. C sucks!!! at first, it seems the all-out powerful language that you can do anything with it. And indeed you can!!! but it takes a lot of time, because the programmer has to define all details by hand.
I've caught myself thinking much more clearly when I did not have to consider implementation details. How come there is no real abstract compiled language around ?
Well I really believe you have to be a painter to really get the full analogy.
I didn't knew that painters had to know that much about chemical processes of paint for example. Just pick a nice color and that's it.
The part about sketches and evolving the model is to me the most accurate part of the analogy.
Anyway, it's an analogy, and that doesn't mean hacker==painter. But it means you can use some similarities between them in order to understand the big picture and not get lost in the boring everyday details of coding.
We are Turing O-Machines. The Oracle is out there.
I've used software that evokes an emotional reaction... it's just usually something along the lines of anger, rage or frustration.
When I have to code in Java (most of the time), I try to keep my applications as short as possible by first developing and testing low level class libraries to support a project - once these are tested, I find it easier to write much shorter application programs that I can tweak easily.
Still, I find Common Lisp to be my most productive language (Smalltalk is pretty good also :-).
-Mark
pg mentions john lions and his supressed Unix tome. this is a great feature article about it, and some (possibly not so anonymous) linux kernel hacker with a really kewl girlfriend.
"You never want a serious crisis to go to waste." - Rahm Emanuel
Sadly, one of the crafts of programming is to conceal the hand of the programmer. Like photography many programmers aim to make their products as transparent as possible to facilitate user interaction. So even a truly magnificent program shyly, slyly evades the user's direct gaze by hiding in the maze of code, and covering its tracks with easy interface.
Perhaps games or computer generated amination like Matrix aspire to art in their very best moments, but let me say one more thing about the history of photography; photographers started out imitating other art forms like painting and drawing. Many people now feel that though this was a natural starting point, photography couldn't become an art until photographers understood the real strength of their medium and exploited it.
I suspect that programmers are only starting to discover the real potential of their medium, and that the most complex, expressive uses of uses of computing are not yet finished imitating other media. True computer will not only be different from what we might imagine, and different from what we are capable of imagining right now; however, it is never-the-less what we WILL imagine.
I suspect that, as in all arts, it will not be the general public who decide what is great programming, but specialists, some of whom probably participate here. These experts have the insight to tell which programming is so elegant, so provocative, and expressive that it stands head and shoulders above the usual thing.
Keep an eye out.
I recently heard Pual Graham speak at my university, giving this very same talk; or, rather, a foreshortened version of it. And I have to say that I agree with many of the points that he makes. I, however, have recently begun to think of hacking as a modern-day alchemy. Not only are you trying to create new things with techniques and skill (the latter is where the science and engineering really come into hacking, as well as painting), but you're also trying to determine what the rules are. In my experience, much of hacking is poking at something to see what it does, seeing if I could make X do Y, and then while also doing Z. Computer Science is really more related to the arcane sciences than the modern "hard sciences."
09
Or is it only art if it's intended to evoke an emotional reaction? Do we then have to ask the creator what his intent was, to see if it's art?
Emotion is certainly the central feature of art from the Romantic period, but not all artists would agree with this perspective.... Right now I'm reading The Art of Interactive Design, by Chris Crawford, which does a great job presenting user-interface design as an art - software as a medium with which the designer communicates with the user.
The same can be true of really good sourcecode, a communication from one programmer to another...it may not be Beethoven, but it's not so different from Bach. It has nothing to do with evoking emotion, but it has a lot to do with the creation of beauty.
After spending years using Perl for my small ad hoc stuff, I realised that it just plains sucks. Too many basic things were needlessly difficult. I'm referring to things like defining functions, defining classes, defining and using data structures, plus the unreadable line-noise syntax and the 'under the covers' hidden variable stuff.
Anyway, after that started looking and even went through a PHP phase. Hoping to be also able to use it as a general scripting language. That little "fling" ended after I tried writting Object Oriented code in PHP... the pain!....PHP just does not scale.
So finally I got around to trying out Python. I had heard a few very high recommendations about it in the past. Wow! Everything is as simple as possible, meaning you can keep it in your head for quick access, while still being very powerful. After a few days at Python I tried some metaclass hacking, something I would never dream of in Perl, and it just worked, with almost no effort. Couldn't believe it. Everything is just so fast and simple, and it scales too. I can't praise it enough. I think that most application can and should be written in Python these days. It just makes sense. (Python + Qt is just sweeeet.)
Ok, I'm rambling now. stop
--
Simon
"C'est si n'est un pipe."
Yes, absolutely, architecture is an art. The point of conversion is the context in which actions occur.
The recognized form of art where the line first blurred is during the Bauhaus (~1912), and the formal arguments are in the Werkbund, the official book of the Bauhus written by the founder, Walter Gropius. "Modernism" from the Bauhaus, over 80 years old now, is the acknowledgement of the machine as a tool for artists, and everyone with a tool is potentially an artist.
The act of creation is always an art. It's the [De]Constuktivists of 1920's Russia who proved this systematically in a way mathematicans could appreciate. This group of artists was the first to literally reverse engineer, then forward-engineer to create something totally new, all the while focusing on Assembly techniques that are still in use today.
How is that unlike the art of hacking?
what's the difference between art and science? science is investigating "reality" to see what we can learn about it. the laws of nature existed before us, and will exist after us. art is investigating ourselves to discover what we are capable of. thus art is completely dependent on humanity (a priori); science is completely independent of humanity (a posteriori)
a) status. the rich have always sought prestige through status. all the rulers of the various great civilizations have commisioned artists and artisans to create monuments and artifacts to impress upon rivals and so on. and the beat goes on. many rich folks today use these artifacts to show off and get respect. you get invited to right parties. the right people become your friends. you make money.
b) history. the rich used portrait artists and sculptors to create a living embodiment of their greatness. they serve as the photograph of the past.
c) education. much of the religious painting that's gone on in the past was used as a means for the church to provide visuals to go along with the various stories. they didn't have charlton heston parting the red sea on tv. those images served to educate.
it's not such a bad analogy.
as others responding to your post have said and as you probably know... a lot of us still have to deal with programming as a matter of engineering. regardless of where you work, there are probably deadlines and demands for a something to show to somebody who's paying everybody.
and i seriously doubt we'll see the national endowment of the arts pay for the next tomcat implementation...
we might see someone get a grant for something less useful though because whether or not the analogy is true, the world at large sees these things as two very different things.
being an artist hacker might not get you very far $$$-wise in the coding world right away. not in the process side. they want code fast and cheap.
there's a big difference between a print journalist and a poet.
he wants hackers to be poets.
your boss wants you to be a journalist. tight. concise. and ready to print in tomorrow's edition.
m.
Otherwise, a fine and insightful article.
they can definitely evoke an emotional response and often have important messages to convey.
why they aren't protected by free speech is beyond me.
m.
I came to programming after years of painting (this guy did it the other way around), and have to agree with many of the analogies he draws, i.e. learning by experience rather than intensive studying; designing by code rather than specification; empathising with the user as part of the design process; &c.
Some folks ask me why I don't paint anymore, and I tell them I get my creative kicks writing software. Nice to know I'm not the only one who thinks this way (because you know the management won't understand!).
need a free COBOL editor for Windows?
For me, I thought the article meandered a bit and even outright contradicted itself in places.
To wit:
He espouses how important it is to keep the design fluid and to change it midstream as necessary, even being fast and loose with data types. While that may indulge the hacker in being creative, it also wreaks havoc on one conveniently omitted aspect of software: maintainability. Rare indeed is the code that is written and never touched ageain. I'm sure someone can toss in statistics about what percent of time or effort is invested in the creation of code, versus all the maintenance required in it later...
To ensure you are not shooting yourself in the foot with this method, the hacker/developer/maker needs to devote a certain amount of time in thought and design before beginning to code. If a stumbling block is detected, legitimate thought must be put into how much code must be *undone* and started over to ensure clean code at the finish. Merely exploiting the fact that you have sloppy data types that can be used in multiple ways will only lead to more convoluted (and certainly less intuitive) code.
Another issue that Paul just sort of tosses out as fact is his claim of how most mediums were at their peak "early on", as in "The paintings made between 1430 and 1500 are still unsurpassed.". Now, I'm no art expert, but doesn't painting predate this by several millennia? Wouldn't the use of perspective by the Greeks seem like a monumental echelon above the flat art of the Egyptians? And aren't the Eqyptians to be praised for their realistic portraits relative to cave art? I'm pretty sure that 15th century art only represents generation after generation of gradual improvements. The fact that the artists following that era began to explore more abstract approaches like impressionism, expressionism and whatnot (http://www.quizbowlonline.com/artmovements.html) does not automatically elevate the "realists" to the pinnacle of the medium.
In any case, it was oversimplifications like this that made the premise a little harder for me to swallow. Very valid points were made, but the analogies do break down in a few places...
But I still marvel at how effective Popfile is. Paul has his moments of genius, there's no doubt.
In the Portland, Ore area and like card games? Check out: http://groups.yahoo.com/group/portlandgames/
Best quote on why Worse is Better and other things that plague Open Source programmers, "It would be pretty easy to write a better word processor than Microsoft Word, for example, but Microsoft, within the castle of their operating system monopoly, probably wouldn't even notice if you did."
I don't understand why the guy gets treated with such high preference by /.
I know reading end to end across a whole screen is bad, but for me that column was a way too narrow. When I said 'flow' I meant let it be as wide as the window is, and I'll size it to my liking. To each his own. Personally, I don't like to move my eyes up and down as much, so skinny columns force me to scroll after nearly every paragraph. Not only is that manual labor ;-) it also keeps taking me out of the flow of reading. The web isn't a newspaper, but newspapers provide a good hint--they don't have columns the full width of the paper, nor do they go the full height.
Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
If hackers are painters, then text editors are the "bowl of fruit" painting. Check freshmeat if you don't believe me. :)
This is probably going to sound a bit repeatative, but I was reading your comment and I thought "here is someone looking for Python".
I've had people tell me about python before. I think at the time though, I was looking at web-based stuff, and I decided to stick with PHP. But now that you, and at least two other people have said Python to me again, maybe it's time to take a second look at it.
Any good reference-type books anyone can recommend?
Speak before you think
Given the paucity of topologists (the study of deep structure and relationships,) you can imagine how frustrating it is to try to get people to understand the structure under the covers when most CS/IT/MIS people don't even understand that information has topography (the study of the surface.)
They're thrilled to discover and use 2D tables in relational databases (when they don't turn relational integrity off.) Hey, its a step up from flat files, right?
Computing is fundamentally based on exploring the structure of and resolving the problems of expressing some mimetic subset of the universe using Boolean logic state machines.
That's all it can ever possibly be. You're using a computer, a fundamentally finite state machine with prescribed limits (remember the Y2K debacle, that's what it was really about,) you're NOT carving reality out of the ether.
There is no "magic" to it at all.
Anybody who tells you otherwise is the same kind of fool who says "At our company, our people are our biggest ASSET" when any accountant can tell you that, barring slavery, people are expenses paid from the LIABILITY side of a balance sheet.
People hack because its fun (a worthy pursuit.) Hacking creates new paradigms or algorithms for the presentation, storage and manipulation of data and possibly of information.
But the underlying structure will always be the definition and manipulation of objects and relationships in N-Dimensional topology.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
Initialise your fields in the __init__() initialiser. Assign the value 'None' to the "not yet used" fields, just like Java. No more "missing until assigned fields".
--
Simon
Bah! Of course it had to be something easy. ;) Glad I qualified that one as a nitpick. LOL
Painting a picture and writing a program are, in fact, quite analogous, although he doesn't quite expand this analogy quite as far as he should. When you paint a picture, you sometimes start by doing a bit of research into what the thing you're going to paint looks like. This corresponds to reading about similar programs, communication standards, user expectations, and so forth. Next you may do studies, which correspond to writing pseudocode for the interesting parts. Notice that you don't write pseudocode for the parts that aren't, in some way, novel, or that you already understand well. Next you start sketching. This is different from studies because it's actually on the canvas you intend to use. You're putting down lines which will guide your hand when you're putting down paint later. In computer terms, you're writing interfaces and stubs. You expect to rewrite all of the code, but you'll keep many of the function declarations. It doesn't make sense to do this on paper or in a different language from the one you intend to use. It is convenient if the language doesn't require static types for this, and it's also convenient if it's trivial to write code that doesn't run but does compile. Finally, you actually start to use paint, and produce the work that people will actually see as the finished product. This corresponds to doing the final implementation. You fill out the stubs and so forth. When you're most of the way through this, it is helpful if you can turn on more checks in the compiler. Lack of static typing becomes a bit of a liability, since you've now worked out what the outlines are, and static typing essentially keeps you inside the lines. While you may decide to change types and such, you should be kept from doing so accidentally.
Of course, hacking also has similarities to architecture, where, in addition to the steps in painting, you will have to follow constraints which allow the result to stand up; painting doesn't have anything which corresponds to "it looks nice, but it falls down if you build it."
Hear me now & believe me later, it is Ruby you are looking for.
h tml
"One of the many advantages of dynamic languages such as Ruby is the ability to introspect---to examine aspects of the program from within the program itself."
http://www.rubycentral.com/book/ospace.
"In Ruby, everything is an Object".methods.each{|s| puts s}
File.open("posterity", "w+") do |f|
Marshal.dump(anyObject, f)
end
The article is definitely worth a read, especially for those who have an inkling that any field that has to place the word "Science" in its name probably isn't really a science after all."
wtf, is that supposed to mean?
Software is obviously not a single subject: it is like language, and can be applied in many different ways.
Let me take a simple example. There are two main ways that people look at the world of problems: they search for the commonality, or they search for the particularity. Now, I would argue that good software is built by finding the common patterns and solving those, but that is just the way I make software. Other people I've worked with do the opposite: they focus on hundreds or thousands of individual cases. Clearly we have different types of mind - what I consider mindless and irrelevant detail is to my colleagues the only part worth solving.
Painters, artists obviously work the same way. So do writers, archietcts, and all creative people, including scientists. There are hacker chemists, and there are the synthesizing chemists.
Personally, I find that the best art comes from using standard patterns in new way: for instance, good photgraphy relies on excellent understanding of light and subject, but every image must be unique. The best science takes the other extreme: determined effort to find the core patterns and understand those. Ten experiments that are each unique are worthless. Ten experiments that give the same results each time are perfect.
Two more dimensions to this, in my experience. First, men and women tend to different approaches when it comes to creating and problem solving. More men like to hack, not because we're taught that but because our brains work that way. Second, with age our minds also seem to change: older brains can understand a depth of asbtraction that escapes younger minds. Software is all about abstraction, unlike science or art, but very much like language. Young geniuses may be able to hold thousands of details in their heads, but they cannot (generally) use them to build large-scale abstractions that work well. Again, the same for writers.
No accident that some of the best programmers ever are also linguists and writers.
Sig for sale or rent. One previous user. Inquire within.
How are these different?
Scientists start out doing work that's perfect, in the sense that they're just trying to reproduce work someone else has already done for them.
For hundreds of years it has been part of the traditional education of painters to copy the works of the great masters
He's wrong in thinking that scientists (Physicists at least) don't learn science by hacking science. He seems to know as much about traditional science as the average person knows about hacking. His examples of the 'makers' can be applied directly to most scientific research. Perhaps science should be replaced with engineering in the article. Although I know as little about engineering as he does about research scientists.
This essay goes on and on like this. Mr. Graham might be a very intelligent business man (I hear he made loads of money on some internet company), but I don't think he has much that's intelligent to say with regards to science and its relation to art. His opinions are anything but objective, and seem to be based on his negativity towards science and mathematics in academia. In fact, I suspect Mr. Graham used the ideas he described in the essay to write the essay itself. He started with a wrong assumption, and then wrote an extremely long essay to defend that assumption. "Nothing yields meaty essays like starting with wrong assumptions."
jl
It feels like the right word to me, but the reactions of others are interesting. Often it takes a bit of explanation (which is ok). But a few times (maybe three over the years I've used the term) I've had people respond with serious anger. I have no idea (despite explanations of a sort) why.
"While we're on the subject of static typing, identifying with the makers will save us from another problem that afflicts the sciences: math envy. Everyone in the sciences secretly believes that mathematicians are smarter than they are. I think mathematicians also believe this. At any rate, the result is that scientists tend to make their work look as mathematical as possible. In a field like physics this probably doesn't do much harm, but the further you get from the natural sciences, the more of a problem it becomes.
A page of formulas just looks so impressive. (Tip: for extra impressiveness, use Greek variables.) And so there is a great temptation to work on problems you can treat formally, rather than problems that are, say, important."
I must be a painter ninja then, because I have a combo computer AND math degree. Now, I can tell, you all automatically think that I am smarter than you! >:) Envy much? hehhehe
Ok, sorry.
I think it's all just Cowboy Neil envy anyway.
"We are the music makers, and we are the dreamers of dreams."
That's a great Idea! a pressure sensitive mouse! oh well, I guess it could be worse
Looking for Book Reviews? Check out Literary Escapism.
Yup, my HS art teacher used that one. First time in my life I drew a realistic-looking portrait.
Too much effort though. And I didn't see any rich portrait artists, so I went back to hacking.
The Web is like Usenet, but
the elephants are untrained.
The next time I go bug-huntin', I hope I remember that quote. It's true - you do always win in the end, but it hardly feels like that when you're pulling your hair and trying to contain frustrated screams.
Opinions stated are mine and do not reflect those of the Illuminati
Here we go...
The Web is like Usenet, but
the elephants are untrained.
I have a similar story to the author. I studied computer engenieering and work as a programmer (lately more web related stuff), and now since the economy is down, am studying painting and drawing at college.
There are many methodologies to painting that can be very benificial when programming. Painting (in the academic sense) is not completely about personal expression, there is in fact propper methods and steps that can be followed, for example:
1. Go from the general to the particular. First flesh out the general forms, the general structure that everything will have before going in and adding details. This is useful while programming, haven't you ever worked out the detail of somethign but then realized when you finished the project that it was unnecesary? Also, when adding details this may change the overall, but you do the overrall loosely.
2. Be bold and have confidence in every brushstroke. If you paint with no determination it will look soft and have no character to it. In programming, one has to make up your mind and start coding, you can't deliberate the best way of doing it forever.
Sargent (wonderful painter, look him up) would lay down very bold brushstrokes, if he didn't like it, he lifted it out and tried again. Programming should be similar in that you think of the best aproach and lay it down boldly, if it doesn't work you can rewrite or even take out.
3. For both programming and painting you need long hours of concentration.
4. Also, when working in the details of the project, it's important to step away from the canvas and see how it looks as a whole. Sometimes one forgets to do this while programming and gets caught up in a detail, without really seeing how it relates to the whole picture (the whole project in this case).
This isn't a troll question. It's a question a lot of people wonder about, and I'd be interested in genuine opinions.
...then why is it that even relative newcomers with no corporate backing or marketing budgets at all and that are never taught in the Great Halls of CS Learning -- like Perl or Python -- are significantly more popular than Lisp and growing moreso as Lisp fades into the sunset.
If Lisp is as great as the best and brightest often claim it is, and if it has been around longer than any of the major popular languages, and if it has been taught for years to the alpha geeks who become opinion leaders...
And don't say "Python is a lot like Lisp". If you take Lisp itself, Python, and Perl, rank them in order of Lispiness, then turn the list upside down, you'll have their relative popularities.
Again, though that's strong language, it's not a troll. I just can't figure out what I'm missing in this picture.
If Lisp is this great secret weapon, why aren't all those thousands of Lisp programmers from the major universities putting their code where their mouth is and destroying all their Java-, C-, and Perl-using competitors? Why isn't a small army of elite Schemers taking over the industry? Is it that their secret weapon isn't as much of an advantage in practice as their theory claims, or that they could but they just don't want to, or what?
I don't believe that popularity in a language is based simply on usefulness. Other factors such as first-mover lock-in, corporate backing, programmer egos (part of C's popularity), etc. play a big role. But it would seem as though Lisp has had all of those advantages at some point, so I just don't get it.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Yet.....
I disagree with you; paintings have the function of causing an interesting response on the viewer. This will depend on how their internal elements are laid down and related to each other. A painting can either work or not, just like a piece of software.
> when programming, you shouldn't be bothering with types, memory locations, pointers, and other
> nonsense that has nothing to do with how the program works. Or in other words, the formal
> 'scientific' aspects of programming.
Those are no more the 'scientific' aspects of programming than the wiring required to run a particle accelerator is the 'scientific' aspect of physics. Those are mere implementation details.
Even the algorithms and design involved in programming aren't 'scientific' aspects - that's engineering, just like using known tools to design a bridge.
Programming, per se, has _no_ scientific aspects, any more than using a wrench has scientific aspects. Programming is, to a scientist, a tool to accomplish a task. Sometimes that task is discovering what can be computed efficiently (new algorithms), or what computers can do to aid a task (create animations), or what the ocean's doing - a friend in oceanography does more programming than I do, and I'm in CS.
In a nutshell:
- Science is discovery
- Engineering is construction
- Art is communication
Programming itself is rarely anything other than engineering, but is often a part of all three. Don't say "programming is an art" when you really mean "programming is tricky". Creativity doesn't mean art; creativity means _talent_.
In short, Paul Graham is a geek by association, because of what he decided he likes to do,
Hmmm--that's interesting. You believe that people actually decide what they like to do. Couldn't you just as well say that not all people who like to program are geeks--that is, that the genetic components and/or life experiences related to skill and interest in algorithmic and system design are not necessarily linked?
Computer Science is a science. It needs to be called a science to differentiate it from the art of computing. Or just computing without thinking about it. Do i need to point out that saying "they're just mathematicians" doesn't hurt the case for the term computer science because *gasp* mathematics is a science? /Programming/, on the other hand, which is not what is referred to as computer science, is an art, when carried out by great programmers. But nobody I've ever met uses the term computer science to mean, or even include, the art of hacking or even the act of programming.
I've studied physics and computer science for several years, and they're basically the same. The way theorems are presented, tests are carried out, proofs are written, it's the same business. Lots of purely theoretical constructs for the purpose of making examples. That which is referred to as computer science has nothing in common with painting. It's a science.
All told, I found the article fairly ignorant. I liked the point it made, that hacking is an art, like painting, and I definitely agree, but the lesser point that computer science is a misnomer was full of hot air and poorly supported.
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
Have you looked at CMUCL (Carnegie Mellon University Common Lisp)? I believe it has what you want.
Part of the reason why I think Extreme Programming exists is to make a mundane task sound exciting again. I mean think of it. Sounds like something skater kids would do while chugging Dew, doesn't it?
While XP is hardly suitable for all applications, it does formalize the refine-the-design-as-you-implement process Graham talks about. Nevertheless, 99% of projects I've tackled, either for pay or on my own, have been achieved using othing more than GOFH (Good Old Fashioned Hacking).
N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
A car that looks good but breaks down is not very beautiful. But isn't that the point? Beautiful things are suppose to work.
there is a place in ergonomic to write "beautifull software", but a serious piece of software does need some science.
Maths is beautiful. Science is beautiful.
Beauty is when reality and mind connect. When abstractions resemble the concrete. When interacting concepts are mutually consistent. When expectations converge with results.
For us hackers, it is when the programmer, problem, design, code and execution are one.
It would be pretty easy to write a better word processor than Microsoft Word, for example, but Microsoft, within the castle of their operating system monopoly, probably wouldn't even notice if you did.
Then why hasn't anyone done it? If OpenOffice actually does someday become better than MS Office, people will take notice. No matter how rapidly Open Source you are, you have to realize that MS has the best word processor out there; it isn't going to be that easy to top them. However, I say all the more power to anyone who wants to do it.
Lack of eloquence does not denote lack of intelligence, though they often coincide.
...it seems to me that you are mostly describing the mystery instead of answering it.
It seems to me that you are saying that Lisp is excellent, easily available, the right tool for really hard jobs, and yet "relatively few programmers seriously use Lisp". In addition, using Java instead of Lisp for most work on the server side (where the architects are free to use whatever they think will give them a competitive advantage) is how you "ensure the value of the [project] over the long haul".
Guy Steele, the creator of Scheme, pushes Java instead of Scheme for server-side work just as you do. Of course, he works for Sun, but if Lisp were such a superior tools, why isn't Java an upgrade of Scheme?
So my question remains, if Lisp is so great (and a lot of impressive people make impassioned and yet solid-sounding arguments that it is), why isn't using Lisp the way to ensure the value of server-side projects?
I'm being persistent (but hopefully not obnoxious) because I can't figure out the reason for Lisp's unpopularity. If it were because it's really hard, then I'd be delighted and work hard to make it my secret weapon. I enjoy using a variety of languages, too. But if it's because it has failed to pay off in actual use after years and years of (flawed) theoretical claims, then I'd like to know that, too.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
I keep hearing those two examples over and over again whenever I ask about Lisp, and it just deepens the mystery for me. If Lisp really gives its users such an advantage (in actual practice), why are there so few examples, given the number of top notch CS grads who have learned it over the years?
As for taking time to master, it doesn't seem any harder to master than C++ (the federal tax code of programming languages), so I don't understand why it isn't more popular, especially for server-side apps. Do all of those MIT grads who spent years using it know something about its unsuitability for the real world that I haven't discovered yet?
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
In this article, Paul Graham speaks out of his arse.
There are so many things wrong with this its humorous.
I realize this won't be perceived as friendly, but I so looked forward to a really meaty discussion over this article and this just isn't.
Just because you can write code that works does not entitle you to call yourself an artist or a scientist.
If you strive to write elegant code, which embodies the simplest, shortest, most efficient means to an end, then you may proceed to the debate.
In the spirit of constructive criticism, there's a really excellent guide to presenting effective arguments here:
http://www.datanation.com/fallacies/
[Oh, I already feel stupid for not being able to figure out how to correctly post the link, so you needn't point that out. I'm off to pursue enlightenment now.]
"So why do universities and research labs continue to judge hackers by publications? For the same reason that "scholastic aptitude" gets measured by simple-minded standardized tests, or the productivity of programmers gets measured in lines of code. These tests are easy to apply, and there is nothing so tempting as an easy test that kind of works."
Did anyone else find this rather dyspeptic comment ironic given the author's views on hacking?
Hahaha... indeed!
Last afternoon, I told a local teen that he should start with simple programs and move on to more advanced stuff a bit later, when he feels confident enough. He immediately replied "Oh cool! I'll probably write myself a small text editor then."
I nodded and smiled :)
My other computer runs FreeBSD too.
It's great for quick prototyping - there is a very short time from idea to implementation. It has good string parsing constructs (not as general as regexp, but close), which means it is useful for systems tools programming. It is also very readable, as opposed to, say, Perl. You can actually go back to your quick, uncommented hacks months later and understand what they meant...
If you're using PHP as a processor module for Apache, you'll be pleased to know that there is a mod_rexx too.
What is the difference between a real song and a simulated song?
I don't understand why IT types, specially programmers, long for a more artsy, bohemian stereotype of themselves.
There can be beauty in almost any trade or activity if you have a positive attitude to life and to what you do, That does not make you an artist.
Your trade may require a lot of skill, but that deos not make your produced output art, specially if your production has only meaning if it compiles and solves a given problem.
Creativity can be found in any profession, programmers (and for that instance painters) nned it more than others, but they should come down of their high horse, anjoy what they are and branch to other stuff without implying that they are what they are clearly not.
If I want to be an artist I play an instrument, paint, write, film, photograph. But would never code. Code is not an artistic means of expression, no matter how you spin it.
IANAL but write like a drunk one.
The right comparison would be to compare the humble builders (thos that know how to build a brickwall, install a toilete,etc) with the programmers.
IANAL but write like a drunk one.
Wow, I'm floored that this was modded up to +5. Creativity alone does not make something art. I guess this is probably mostly the effect of the Slashdot crowd that would like to fancy themselves hackers and artists, but has little bearing on the world of art.
Anyway; it just happens that I was in a discussion for several hours about this last night. Here's the executive summary:
Art is something that happens by a creator when they consciously or subconsciously express something through their creation. It is an active process of expression, not something that merely has creative merit.
There's a difference between a clever technician and an artist. This isn't to say that forms not traditionally associated with art (i.e. programming) can't qualify to be art, but certainly most coding isn't art, despite requiring creativity. This same dichotomy exists in other fields -- think journalism vs. literature, graphic design vs. visual art, civil engineering vs. architecture.
Thanks for the excellent summary.
;-)
If the unpopularity of Lisp despite so many advantages is really the result of guilt by association (AI) and backing the wrong horse (LispM v. Unix) -- and that sounds plausible -- then maybe it is worth investing some time in.
You mentioned CMUCL as "high-quality" and CLisp as "up and coming". Would you mind explaining what you mean by that? Those are the two I hear mentioned most often (among free Lisps), but I don't know what the differences are among Lisps, nor how to evaluate them for suitability for commercial software dev (say, database-backed server-side web apps or natively compiled Windows GUI apps, for example).
And why would CL be more practical (as you suggested) than Scheme? Scheme seems to be taught even more than CL these days, and used even less in the real world: sort of the paragon of the overall Lisp phenomenon.
And thanks for the info. Lisp, for me, is one of those cases of something sounding too good to be true, so I'm grateful for any practical guidance from those with experience.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
Graham is confusing the arts and the crafts. You probably need to be a decent craftsman to be a good artist, but you just being an excellent craftsman isn't sufficient. Painting is not just a skillful depiction of objects and people, it's about the human condition. Most software is not.
People often try to define what they don't understand.
Art in particular.
"And the things I had to do the other three quarters of the time ranged from tedious to terrifying. I have a benchmark for this, because I once had to leave a board meeting to have some cavities filled. I remember sitting back in the dentist's chair, waiting for the drill, and feeling like I was on vacation."
"When Yahoo bought Viaweb, they asked me what I wanted to do." "If universities and research labs keep hackers from doing the kind of work they want to do, perhaps the place for them is in companies."For those with reading comprehension problems (as the parent poster appears to have), what Graham is saying can be summarized as follows: Computer Science the term and university faculty (since when was "Programming" a separate degree program?) groups the unrelated fields of mathematics and hacking, which isn't always good.
Wow, you sure back your point up with objective evidence (how many people have you met, anyway?).Excellent info. Thank you so much. I find lots of lists of pointers to various implementations, but it's pretty hard to find "reviews" of the pros and cons of each, informed opinions on which would be best for what and why, what direction each appears to be going, which appears to be obsoleting which, and so on.
These must qualify as frequently asked questions, so I'm hesitant to ask them on online forums, but they aren't addressed in any FAQ I've seen so far because, presumably, it's politically incorrect for a FAQ to pick favorites. So, information like your posting here is greatly appreciated.
Thanks.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."