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."
Ada nuff said.
The war with islam is a war on the beast
The war on terror is a war for peace
I'm suprised they didnt say "go into sales kid".
What makes a programmer great? The software they produce? The influence they have in the markt? The money they earn?
or what makes certain programmers so much more productive than others
The most productive programmers have slashdot.org pointed at 0.0.0.0 in their hosts file.
liqbase
I don't think i've seen it on /. yet (but I may very well err). Your feeling is more likely to exist because this thing's several month old (23rd of july)
So it's less of a dupe and more of a "slow news day" thing.
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
without Donald Knuth this list is *SO* incomplete.
Google passes Turing test : see my journal
I hear he's really approachable in person.
We recently had heard in the office over one of the Yellow Machine that's made by Anthology Solutions.
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.
He asks such age-old questions as, "Why am I forced to learn the LISP programming language? Seriously? What the hell? I can program in C just fine."
Push Button, Receive Bacon
Heh. I missed that the first time around.
My work here is dung.
Jarosaw "sztywny" Rzeszótko
That's it... I resign!!
- suv4x4's spellchecker.
...it's all about answers. Those guys answered them - and everybody knows how busy they are. I think it shows something about them - their character, the way they treat other people, how helpful they're trying to be. When I was younger I met many times people who claimed to be good programmers, but every time I asked them any kind of questions answer was fairly the same: you noob go to books, online, and other abuse. That effectively prevented me from joining OSS club. If we want more good programmers, people with passion - we need to allow them to enter mainstream - by helping them, not rejecting. Everybody started some time ago, and all of us know how hard was to get over some, now basic, problems. If we show them positive way - they will learn it - and do the same to other. jackharrer
"an experienced, industrious, ambitious, and often, quite often, picturesque liar" - Mark Twain
What I found interesting were the books these guys listed as favourites or recently read. Hofstadter, Dennet, Dawkins, Diamond, Gaiman, Vonnegut, Orwell... are all my favourites too.
Strange no one mentioned Pinker, though.
"Blah blah blah." - [citation needed]
What's this?! The great hacker god Eric Raymond is not in this list?!
- the-codea ymond2.jpg. jpgm l
http://geekz.co.uk/lovesraymond/archive/show-them
http://catb.org/jargon/html/S/suit.html
http://www.self-gov.org/celebrities/images/eric-r
http://pepelucho.blogsome.com/images/eric_raymond
http://www.sacred-texts.com/bos/bos086.htm
http://www.catb.org/~esr/writings/sextips/sexy.ht
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.
Edsger Dijkstra died in 2002.
Alan Turing committed suicide in 1954.
Charles Babbage and Ada Lovelace died in the 19th century.
I'm sure you _could_ ask questions of each of these people, but getting the responses may prove problematic...
Everyone knows that dead people are shit at filling out questionaires.
Great voters - but questionaires? It's just not their thing.
Genesis 1:32 And God typed
Are you kidding? I was talking to Babbage the other day!
Honary mention perhaps? I don't know, to have a list described as "most influential computer scientists" should include some dead people, even if they can't talk back.
I also find it interesting that K&R is the only book mentioned by more than one responder.
Some of those are hard to ask questions of these days...unless you want to hold a seance.
Computational Chemistry products and services.
Where are Turing, Knuth and Parnas
At least two of them are very definitely unavailable for email interviews...
Alan Turing committed suicide in 1954.
Yes, but I built a Turing emulator, and it's indistinguishable from Alan Turing. Acording to the Turing test, this means for all intents and purposes, it is Alan Turing. Does need a working Turing machine though. Anyone know where I can get an infinitely long, infinitely erasable paper tape?
How about a Ouiji board with binary and a hex responses?
Sure, send them an e-mail. Let us know how that works out, and if there's any titty bars in the afterlife.
"Build a man a fire warm him for a day, set a man on fire and warm him for the rest of his life."
You're right. If one doesn't take the time to exhume bodies, how can he even pretend to present a complete set of interviews. What an idiot! Why must we constantly discriminate against the dead?
I want this account deleted.
The anonymous hero at IBM that wrote hero.bas for qbasic.
DECLARE FUNCTION ExplodeGorilla (x#, y#)
But who would be the top programmers to interview? A lot of the famous names are (a) dead, and (b) never actually wrote a line of code in their lives.
Then they said, in unison, "one word for you young man, Plastics".
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
what Jarosaw "sztywny" Rzeszótko is worth at scrabble....
cat and lister playing scrabble
cat places sztywny on the board
Lister: is that a word?
cat : yes it's a cat word for when you get you privates caught it your zip
Lister: is it in the dictionary
cat: could be if you're reading it in the nude and close it quickly cat demostrates the action and result
With appropriate apologies
;-]
Not yet. Give it time.
Stoustrup was inspired by Simula, not Smalltalk (allthough Smalltalk also was inspired by Simula)
Why is it that Smalltalk users think Smalltalk invented everything?
Communication being stated as a very important skill by more than one of the Greats was a definite surprise to me, since it is, IMHO, not addressed usually. Thats the thing which almost all the just-out-of-the-greatest-college-with-the-best-gra des programmers seem to lack.
-- Prem
Aiming to tweet on a rice
A Suffusion of Yellow.
You're claiming that software standards are decaying. Do you have any objective measurement that illustrates that unabiguously? What is it?
An interesting thing I noticed is the disagreement of what is "math" when talking about programming. I think it's a matter where you come from. If you started with mathematics and went into programming, then I guess everything is math.
On the other hand, a self-taught programmer often sees pretty much everything as "programming". "Math" is then algebra and all that boring stuff they learned in school like trigonometry, which they never use when coding. From this point of view, graphs, trees, recursion, etc are just programming concepts and not seen as necessarily related to the underlying mathematics.
This seems to explain the confusion that occurs when a student asks "do I need math?" to an experienced professional. The student understands math as in elementary algebra, trigonomery, derivation and matrices, and wonders what's the point all of all that when probably nowhere in the Linux kernel there's any need to derivate anything.
What are your accomplishments in the CS field?
Why did the submitter think an article that was created on July of 2006 fresh enough to be posted on a forum which is News for nerds. An article that old is hardly news.
A witty signature proves nothing
It is better to remain silent and be thought a fool than to speak (write) and remove all doubt 8-)
Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
I noticed a commonality in some of their answers. More I guess the way they answered them. When they didn't know an answer, they said "I don't know". I think the ability to admit you actually don't know the answer to something is very important. How many actors, salesman, or politicians have you ever heard use those words? Not too many!
If an officer ever threatens to taze you, say you have a pacemaker.
It was featured on reddit.com .. perhaps that's what's confusing you
- Leon Mergen
http://www.solatis.com
D.E. Knuth is then indefinitely unavailable for an email interview.
Je me souviens.
Perhaps "Dave Thomas (SCTV)"
Dedicated Cthulhu Cultist since 4523 BC.
Knuth is great for his theoretical work, but I don't know if he'd rank up there as an important programmer. Although I suppose someone could make an argument for it based on his work on TeX.
The real great programmers omissions I see are Ken Thompson and Dennis Ritchie. It's hard to top creating the most influencial programming language and the most influential OS of all time. (C and Unix, obviously).
When it comes to the OS, Thompson would be a thousand times more interesting to talk to than Torvalds.
Happy people make bad consumers.
I have excellent karma and a low user ID on Slashdot.
What a funny mis-type
- - - - - - - - - - -
I am a programmer. I am paid to produce syntax not grammar. Deal with it.
Gotta say that I didn't see that one coming.
Or Dave Thomas the Wendy's guy... even though he's dead.
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
... to see that Larry Wall didn't make the list.
I agree with you. When I entered my freshman year into a computer science program there were probably 70+ people in my "class" but nearly every semester the amount of people was cut in half. In this particular school the number of people graduating with a CS degree each year was only about 5. This was not a super intensive school, yet the professors all knew what they were talking about and did a good job of helping students.
While, yes, you can learn a programming language that doesn't mean you can speak it. Simply knowing syntax will get you absolutely no where. A matter of point regarding my current job; While we do ask some questions to new programmers about syntax most of our questions revolve around trouble shooting and strong mental cognitive ability. We want to know how someone thinks, their ideas to solving a problem, what they do when they don't know the answer. These types of things, while they can be enhanced are not something that everyone has innately, this has been proven. Some people are right brained others are left brained. All in all you are an analytical type person or you are not. And that's not saying this is all a good programmer requires...
Anyone can learn a programming language not everyone can program effectively.
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. ~Albert Einstein
I was also going to post about the disagreement but you beat me to it. Honestly, though, I think how much mathematics that you need is dependent on what you are doing. Most programmers really only need small amounts of discrete mathematics and logic, and some programmers won't even need that. If you're designing a 3-D engine you need a lot of geometry and matrix theory. Physics engines need physics (which is really just applied mathematics). Kernels, embedded systems, and other core devices often need to be optimised to run as fast as possible on minimal hardware, which requires a good grasp of run-time complexity (which goes back to the discrete math and logic). I work in the manufacturing industry myself, and I use huge amounts of 3-D geometry/trig in my work. I've only used Calculus once in the workplace so far, but Calculus is useful for simulations of real-world events.
Basically, what I'm telling aspiring programmers out there is that a strong Math background gives you more options- but that you don't need it to be a successful programmer.
You are reading a copy of my copyrighted post.
nearly all non trivial Java programs depend on non portable C++ libraries to do the critical stuff
This is a beauty... always nice to hear that all the work I did the last couple of years is trivial.... do me a favour, and keep this insight under wraps.... I have a family to feed.
PageTurner Reader: open-source e-reader for Android with cloudsync. http://pageturner-reader.org
I'd argue that Stroustrup was more influenced by Simula-67 than by Smalltalk.
Fascism starts when the efficiency of the government becomes more important than the rights of the people.
Interesting answers, but more because of the different take on things than any individual specifics.
However, I wasn't too impressed with the answers to the productivity question.
While general intelligence doesn't hurt, I think the real key to productivity comes down to maintaining an interest/passion in the craft of designing and writing code. If you care about it then you will always be trying new techniques and paying attention to lessons that can be learned. At the neurological level, one only learns (lays down new memories) for something if one is paying attention to it, and form the strongest memories when there is emotion attached to the experience (totally different areas of the brain are used for emotional memories).
A "blah" programmer just trudges through his/her work without ever really paying attention and trying to learn - they just want to get the job done and go home. A programmer more likely to climb the productivity curve will be always be excited about what they are doing, trying to do it in the best/most consise way (I'd even say correct - many probloems do have minimal solutions that can be found), trying new techniques, etc.
It's too bad that the reality of difference in programmer producticvity isn't better understood, or there might be less outsourcing. The whole premise of outsourcing is that programmers are equivalent and therefore cheaper means better value... Personally I'd prefer to seek out the programmers who are 10-20x more productive than the herd and pay them 2 x normal rather than outsource to some Indian college graduate and pay them 1/3 x normal.
who hates the direction that email has taken.
Attachments, MIME, signature blocks written
by lawyers, blah blah blah.
The world would be a better place if all email
were plain text.
Linus uses Pine. And he's right.
Depends. It's extensible. If you write an interpreter for it, you can program in it. That's what we did. Complete with branching, loops, external calls, etc.
I like how Linus says "taste" is the most important quality for a programmer, but then listens to "various classic-rockish things, ranging from Pink Floyd to the Beatles to Queen and The Who". I guess, like operating systems, there hasn't been anything good since 1980s?
things are so bad we can no longer make objective measurements of software standards. QED
..because she was simply brillant!
With great power comes great electricity bills.
I agree with most of the responses to the questions. But, I would say one of the most import attributes any programmer/developer must have is the ability to get shit done.
Yes, it is a dupe, from a few months back though.
Need help treating your acne? Come here!
The kid did't ask Dr. J.A.N. Lee, Dr. George Gorsline, or anyone relating to Grace Hopper. Oh, I guess they are a bit old now -- Dr. Lee was my compiler professor at Va Tech 29 years ago. Things have changed a lot in the past 30 years - including most of the players, but supprisingly the languages are not all that different. C the ultimate simplification of assembler is still here somewhere. PL/1 never really became objective, but C++, Objective REXX, Ruby, Perl, and most of the rest are syntactic relatives of PL/1 and it's brother / sister pascal. PERL is exec2 on steriods - even has all the crazy @#$ stuff that exec2 and CLIST needed to tell the parser it was looking at a variable. I have written some incrediably complex stuff in PL/1 for TIRKS, DPRS, etc., which really would have been easier to manage with an objective compilier, but if you are not pushing the edge of the programming envelope you do not need it. Perl works just fine for most of the stuff I do these days, but I will be glad when PERL 6 arrives with the grand universal virtual machine thing in the background, so all the "new" languages can devolve their output into some common assemblage. If we learn this new virtual machine code maybe we can skip learning all the new languages which look like all the old languages, and thus confuse us old guys out of what is left of our minds after five years of unemployment. BTW tell the kid that in a couple years we will have programs writing the programs, so we wont need anymore programmers, let him pass that on to those guys offshore too - they need to git the rates up while the gitting is good, cause like all good things computer program code too will pass.
Like anything else, it's only useful when you need it. I was terrible at trig in high school until I needed to build a staircase.
Ada 2005. Available now from a compiler near you: GNAT GPL Edition
That is quite the old wive's tale that wasn't even true when it was much more common twenty years ago or so. The last C++ code I touched was a multi-tiered billing system engineered to run on Unix and only on Unix. Not to mention that all the large Unix vendors have been on board C++ for quite some time. IIRC the STL, as but one example, was built almost entirely work by SGI and HP.
The answer to "Do I need math?" is, as usual "It depends."
In this case, it depends on what you mean by "math", and what you want to program. For programming in general, you need to be able to think logically; you need to have a clear idea of what operations a computer can perform, and phrase your programs in terms of those. In that sense, programming is just like logic or mathematic proofs. So, if you count logical thinking skills as math, yes, you need math to be a good programmer.
Do you need to take any math courses? No; you can learn programming just fine without math courses.
Do you need any of the other stuff in math, like algebra or trig? No.
Does math knowledge and experience help with programming? Probably.
Please correct me if I got my facts wrong.
I suck at math, but still like to program 3D engines and ray tracing. I don't have anything against math, and try to learn it as i code.
Who is John Galt?
Whether or not you should have a solid mathematics background is not a static question and depends on what field you wish to work in. Fundamentally, to be a skilled programmer in any field means being able to bridge the gap between the problem domain and practical solutions to problems in that domain. If that problem domain is inherently mathematical in its formulation (e.g. signal processing), then acquiring a background in mathematics is essential to being a highly effective programmer. If you interests lie elsewhere, then gaining a background in whatever the foundational material is in that particular field will probably be more beneficial.
At the very least, you should have enough of a background in mathematics to be able to read the foundational resource/journal for your problem domain and understand the gist of the articles and algorithms. This ability will be the critical enabler in allowing you to incorporate new ideas in the field into novel software, and will ultimately be a limiter to your success in the field.
No RMS, what a pity.
Did anyone verify that the responses listed on this blog really came from the people that are listed? Is there anyway to verify that? I also was impressed that so many of them would have responded. Then I have to ask, did they really? This guy's blog, with ads on it, is getting a lot of hits. Hmm....
OK, I know enough Hebrew to spot "let there be light", but I'm in the dark (so to speak) about the Chuck Norris part. Care to explain?
Media that can be recorded and distributed can be recorded and distributed.
-kfg
Of course software standards AREN'T decaying, all those Indian and Chinese programmers are doing brilliantly and should code all the next American generation software....
I'm curious. Why would you ever want to write an interpreter for an XML-based programming language? It seems like re-inventing the wheel, very poorly, unless there were very strong domain-related reasons to do so. (I admit the question is vague. I guess I'm asking why your choice was appropriate given the domain you work in. Any additional insight would be appreciated.)
After all, I am strangely colored.
What are your accomplishments in the CS field?
I can cook an egg for breakfast!
Man is the animal that laughs.
And occasionally whores for Karma.
"IQs are measurements of rate, not of capacity."
Proof by contradiction: Consider a mentally retarded human with an IQ of 60. Such a person is capable of doing routine work under supervision. Assuming a normal human reaches full adult functioning at age 18, then our example person should be capable of the normal adult functioning at the age of 30. Clearly this is not so, hence IQ is also a capacity measurement.
Expecting a human to become "more intelligent" is akin to expecting your computer to suddenly run faster because you really, really want it to. There is a finite amount of processing power that can be accessed. The human brain is a machine with finite capabilities based upon its particular genetic developmental program.
-- Too lazy to get a lower UID.
.. for the posts like this. Really.
Well, you didn't ask me, but I'm going to give you the secret to my success anyway:
Learn to type fast!
The faster you type, the faster you write code:-) It also helps you when you're typing stuff in the debugger.
Jesus Christ! Would someone please remove the large stick from Stroustrup's ass?
What a buzz kill that guy is.
Why are you letting these clowns ruin our country?
It is interesting to see "A day in the life of Ivan Denosavich" and "1984" in the list of books. It suggests that there is a greater recognition of the dangers posed by totalitarian regimes among programmers. Whether this is paranoia or far-sighted-ness is an exercise for the reader...
meh
Was TFA corrupted? I didn't find the list of "influential computer scientists" in it. Just a bunch of "great programmers."
"But all your emitter and collector are belong to me!"
> Jarosaw "sztywny" Rzeszótko
Wow, I bet he's from Qwghlm.
Because, 1) Perl programmers intentionally avoid best practices, and 2) Perl programmers are the ones most likely to be offended by the ommission - having as they do, an extreme culture of personality and of being the Great Hacker.
Note that "influential computer scientists" seems to have been gratuitously added by the Slashdot poster. At least Gosling does fit that description, so maybe the poster should have said "influential computer scientist."
Doug Jensen
Peoples' brains develop differently and different task competencies arise from parts of the brain that are more or less effective in different people.
I call bullshit on this, because I doubt you can actually substantiate this claim. (And citing somebody like Pinker doesn't count, you know.)
Let me close with by stating that the Standard Social Science Model (where all intellectual skills are culturally determined) is bunk.
Ah, I see where you're coming from. You'll certainly get me to agree that your precious Standard Social Science Modal is a strawman, which makes the fact that it's bunk not particularly interesting.
Are you adequate?
Perhaps you just haven't found the right email gateway yet...
Deven
"Simple things should be simple, and complex things should be possible." - Alan Kay
Does anybody else hate those bizarre quotation symbols? What's the deal with that?
They should have sent the interview questions to him, being one of the foremost programmers on the other side of the fence. Mind you, I'm no M$ fanboy but it would have been nice to read from a programmer who doesn't cut his (/her?) teeth on Unix every day.
Absolutely great interview otherwise.
Cheers,
Ben
The overwhelming majority of Windows code is VB. Sure, there is quite a bit of C++, but I'd bet the amount of C code alone rivals, if not surpasses, the amount of C++ Windows code.
By a single word, even?