Great Programmers Answer Questions From Aspiring Student
NathanBFH writes "Many of the questions that make it to the Ask Slashdot pages come from young and aspiring programmers wanting to know the role math and education play in the profession, or what makes certain programmers so much more productive than others, or what the future of the craft will look like. One young programmer by the name of Jarosaw "sztywny" Rzeszótko decided to ask these types of questions (and more) to the programmers he admired the most who also, it turns out, happen to be some of the most influential computer scientists and programmers of the last several decades. The result? Most of them happily responded. The results include the following: Linus Torvalds (Linux), Bjarne Stroustrup (C++), James Gosling (Java), Tim Bray (XML, Atom), Guido Van Rossum (Python), Dave Thomas (Pragmatic Programmer), David Heinemeier Hansson (Rails Framework), and Googlers Steve Yegge and Peter Norvig."
What makes a programmer great? The software they produce? The influence they have in the markt? The money they earn?
Heh. I missed that the first time around.
That everybody on the list just started programming, and most enhanced programming with education.
I firmly believe that programming is something that you are born with, and can do or pretty much can't do. Like everything else, its something where you can always learn more tricks, tips, and techniques, but I don't believe that it is something that can really be "learned". The attention to detail, troubleshooting, and all of those little skills that are necessary to program are tough.
To put it another way, I can program just fine. I can draw a stick person or something and another person can recognise it, and whatnot. I am by no means an artist, and never will be.
I also find it interesting that K&R is the only book mentioned by more than one responder.
Has anybody else noticed that Knuth looks like Yoda?
Not only that, but it shows something about the field of CS which to a large extent is unique, which is that many of the big names are still around and are emailable! I mean, you can't do that in math -- let's see you email Newton and ask him a question. Or ring up Einstein and ask about something in his paper. But just the other day I emailed an author of a paper I read with a question, and he got back in just a couple hours. It's really pretty neat.
And yeah, you can do this with modern stuff in other sciences, but with CS *most* of the field is modern. (There are some notable exceptions of course.)
I think you're right, in many cases it's a matter of perception. In my experience (pure maths/software eng. combined degree grad), there was no part of what I did in maths which is directly relevant now to software. Most of it I don't even remember. Perhaps that would have been different if I'd done discrete maths instead. What I did find was that pure maths was a series of incredible mental exercises. You were reasoning about complicated systems, and the best proofs came from lateral thinking and reaching a deep understanding of the system you were studying. I think pushing your abstract reasoning abilities to that level helps to manage complexity and abstraction in software. As it is pointed out, the best programmers are able to turn a complex problem into a simple one [through reaching the right abstraction]. For me, that is why maths was helpful. Perhaps the experience is also different for different areas of maths. Discrete maths may be better for algorithms, pure maths for abstraction, applied maths/physics for ??? (scientific programming/game dev/very specific areas of software)...
He missed Larry Wall, creator of Perl. Not that Perl makes for great programs (though the fact that Perl works so much, so often, says a lot). But because Wall's C programming of Perl is some of the best programming out there. Perl, an interpreted language, runs faster than most equivalent C programs written by lesser programmers than Wall. It runs on more hardware than almost any language, including Java (and runs better on more HW than Java). Perl has the largest free, open source archive and one of the best FOSS communities, and has since before that was considered a feature of the language. Including the source to the language itself.
Wall also wrote rn, which was equivalent to Usenet for thousands of people for many years, and patch, on which practically everyone outside the MS programming world depend.
These programs are long-lived and popular because Larry programmed them so well to do their essential function. And since he's had to deal with so many obfuscated Perl programs, even winning the Obfuscated C Programming Contest twice, I expect he has a lot of wisdom to deliver to aspiring programmers with question.
He's also probably still available to answer these questions.
--
make install -not war