Hacker News new | ask | show | jobs
by dreish 6250 days ago
Learning a programming language is easy. Learning to program well in a language takes a long time, and includes becoming familiar with its idioms, available libraries, best practices, and appealing but potentially dangerous features.

We tend to weed out, in Perl coding tests, people who are just transliterating C code to Perl, which is fairly common. In a group coding environment, no one wants to get stuck having to clean up someone else's ridiculously complicated code to do something the language lets them do in three or four lines.

4 comments

I think this is especially true for C++ - it takes a decade to become proficient with C++. And at the end of that decade you should realize that there's still a lot you don't know.

Of course, we could argue that if a language takes 10 years to get to proficiency that there's probably something wrong (and in the case of C++ I would tend to agree).

No, UncleOxidant, it is definitely not "especially true for C++". There are plenty of powerful languages out there, many with more subtleties than C++, and longer roads to mastery.

No one disputes that C++ has a long road to mastery, but there are plenty of other languages for which that is true. So, C++ is not special in that way.

What languages do you have in mind?
Haskell probably has a long road to mastery. That said I think it might still be shorter than that for C++. it is hard to think of a language that takes longer than c++ to master. Interesting!
I disagree. Haskell is more difficult to master. There's far more to it than C++. I am highly proficient in both languages, it so happens.
"I disagree. Haskell is more difficult to master"

Fair enough. I found haskell easier than c++ to grok. It may have helped that I had a good grasp on type theory before I learned Haskell (worked through TAPL a few years ago). Subjectively, I found the various components of Haskell almost always fit together in very logical fashion with a very clean syntax, while C++ felt arbitrary, (with exceptions to every rule and exceptions to those exceptions and exceptions to those). I share your intent of not starting a language war. Just expressing my experience.

Of course, there can be no objective measure easily made, and I do not want to engage in language wars.

That said, I am a C++ expert, but contend that each of Lisp, Haskell, and Scala are far deeper languages, with more involved in their mastery than C++.

In addition to idioms, libraries and best practices, there are also paradigms to learn. Learning OOP/Functional/Whatever _properly_ takes time and practice.

Company hiring is torn between the grand-corporate interest of having good long-term employees and the project/manager's pressing need to fill skill holes _last week_.

Learning to program well in language X can actually be done using language Y, for some X's and Y's, especially when Y has the features of X.

So, I continue to argue that asking precisely for language X may well exclude better applicants - ones smart enough to program in Y instead of X!

I did Perl mostly alone, so it took years before I wrote idiomatic Perl.

Let me put it like this:

The first time I needed a big parser, I wrote a C-style lexer out of habit... :-)