On Jul 27, 2011, at 10:32 PM, Bill Janssen wrote:
> If I'm hiring a programmer, I want them to know C and Python. [...]
> Various flavors of C are acceptable: Objective-C is OK with me, and
> C++ is a plus -- it's an order of magnitude more difficult than C to
> use properly, and people who can sling it properly are rare.
I wouldn't say that C++ is an OOM harder than raw C to use properly;
it just adds so many more ways to use it improperly, and templates are
the work of the devil. The problem with learning C++ is that it can
be hard to predict what sort of code will be generated for very
similar constructs, which is not a good thing for a low level
language. It's still always possible to fall back on C and inline
assembler when you need it.
That's really the advantage of learning straight C as as low level
language- it lets you see what sort of machine code corresponds to
what sort of source code. When combined with a good performance
measuring suite you can get a much better feel for how different types
of data access have completely different performance, what sort of
things get optimized/vectorized cleanly, etc. It also gives you an
appreciation for how nice it is to be able to ignore these things most
of the time when using higher level languages.
Objective-C (counting the NS Foundation classes as part of the
language) is a cleaner language, with a more dynamic object model;
however, in current implementations the overhead of method calling is
much too high, making the OO features only usable for relatively
coarse grained methods. One thing that the Foundation classes show is
how valuable it can be to have long method names.
> Additional languages which carry weight with me on a resume are
> OCaml, Processing, and any of Common Lisp, Scheme, or Clojure.
Did you mean Clozure? The other two are kinds of lisp. :-P
Also, java should no more be considered in isolation from IntelliJ
Idea that a lisp should be used without an emacs.
Simon
|