Comment Choices, choices (Score 1) 997
- If your goal is to create a "production system" of some sort, then you should pick pretty carefully from one of the following lists:
- A scripting language, with Bash, being really ubiquitously available, being a good first choice, and fallback options being Perl, Python, PHP, Ruby
- A "compiles-to-native" language, either C or C++
- If you favor dynamic frameworks, then Java.
(Or perhaps Mono...)
- If you are trying to learn, are in a position to consider the results "throwaway code," and are interested in learning programming concepts, then you should look quite a bit more widely:
- For heavy concurrency, consider Erlang
And it would be well worth taking a side-trip to do something non-trivial in Prolog to see how backtracking works.
- If you want something that compiles down to pretty fast object code that might be a bit stricter than C or C++, then it would be well worth taking a peek at Modula-3, Ada, or Eiffel.
- It would be well worth taking a look at Common Lisp and/or Scheme, as they offer considerably different object models from what is "traditional" in C++/Java, and, as long as you don't merely play the academic game of "just doing list processing" or "just doing recursion", you can learn some very different approaches to programming.
- Icon was the string processing language from the makers of SNOBOL that looks quite a lot like C (which SNOBOL doesn't!), and which introduced, to computer languages, having generators (which Ruby & Python have since adopted, and which you can also find in the Common Lisp SERIES package), as well as coroutines, which are a more event-driven-ish way of handling concurrency (probably nicer than threads).
- Haskell or OCAML provide more "conventional" (e.g. - somewhat more Algol/C-shaped) views on functional programming than do Lisp or Prolog, and have interesting bits to them.
- For heavy concurrency, consider Erlang
There are a lot of interesting computer languages out there!