

Ask HN: The Hacker skillset - krmboya

Eric S. Raymond says in his primer:<p>http://www.catb.org/~esr/faqs/hacker-howto.html<p>"It's best, actually, to learn all five of Python, C/C++, Java, Perl, and LISP. Besides being the most important hacking languages, they represent very different approaches to programming, and each will educate you in valuable ways."<p>Is there any language you feel should be included/excluded, and why?
======
iuguy
Unless you're planning on going into enterprise software development, I'd
argue that the similarities between Java and C++ are sufficient enough to
ditch one of the two (at least in terms of fundamentals).

You could also substitute Java for C sharp, if you're so inclined, or Python
for Ruby. I'd definitely switch Perl for a decent shell (and sed and awk). I
know it's not fashionable here but I'd probably bail on Lisp. While it's a
great language it's not that widely used and you'll either pine for lispness
in other languages or you may well hate it like I did (although I do recognise
it's power, I was spoilt with python).

Ultimately though, the hacker skillset isn't a skillset at all, it's a
mindset. It's the ability to bend the world to your will. The ability to say,
"There are no rules and there are no limits that are not self-imposed". That
for me defines the difference between regular people and hackers.

~~~
prodigal_erik
> you'll either pine for lispness in other languages

Any language is a waste of time if it doesn't have any features you'll miss
when you aren't using it. At that point it's just a Blub you're applying out
of expedience, not learning anything from to expand your repertoire.

------
RiderOfGiraffes
I'd suggest a lazy language as well, Haskell being the obvious choice. Having
lazy infinite lists changes the way you think.

Apart from the obvious commercial benefit, if you have C++ and Python I don't
really see the need for Java, but I might just be being bigoted there.

Perl could be substituted with Awk - I've had this debate and I don't feel
strongly about it. Perl is more wide-spread and common, making it a better
choice if you want to go hacking things that are there, but I find Awk nicer
to program.

I'd also start looking for massively parallel languages of one form or
another. The ability to think not just in threads or co-routines, but
genuinely in async-parallel is becoming more important.

So that's my $0.02 of free advice. Probably worth what you paid for it.

------
jacobroufa
Javascript

Read Javascript: The Good Parts by Douglas Crockford. After reading this, I
can't help but agree that JS has always gotten a bad rep and been undervalued.
It really can be an elegant language, and Crockford found the perfect way to
demonstrate that.

------
hasenj
I'd take off Java. Perl is optional. Add Ruby as an optional alternative to
python (e.g. "Ruby or Python").

I'd also add 'git', or just decentralized version control tools in general.
Although not a language, it's definitely a must-have skill.

------
xiaoma
I'd put Ruby on the list. I don't think it was really on the radar (outside of
Japan, at least), when ESR wrote that. Javascript is also a lot more important
than it used to be.

