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