Print

Print


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