From Rosetta Code
Languages I use
Language Proficiency
AWK intermediate
assembly low-intermediate
BASIC intermediate
C++ advanced
Delphi rusty
Java novice
JavaScript novice
Lua beginner
ME10 macro intermediate
Perl novice
SQL intermediate
UNIX Shell intermediate
Favorite Languages
Language Proficiency
C advanced
C sharp novice
Python advanced
Verilog intermediate
Languages I abstain from
Languages Reasons
Ada excess syntax & keywords
COBOL just plain ugly

About Me

Python code contributer to RC. Also have edited some C, C++, Java examples. ME10 is a 'macro' language used in CoCreate CAD products. Its libraries and syntax are pretty rudimentary, but it get's the job done. Verilog is a language used in designing and simulating hardware. Favorite editor - vi,vim, of course.

Added C example of Evolution Algorithm (as anonymous) and the Python example of Expression Evaluator. The funky recursion stuff in the Python Prime Decomposition task was started by me, although it's been modified since.

What Languages Should You Learn

Here's what I think and why (Not necessarily in any particular order).

C# - There's lots of organizations that run Microsoft & use their tools. This is the language of choice. It's a good language too. A bit better than Java IMHO. If you're really not into Microsoft stuff, then learn Java instead.

C - After 35 years, there's still no language that can replace it when you need to do nitty gritty stuff, or if you're working on embeded microcontrollers. Fast and efficient. And when you're learning assembly language, there's generally a compiler flag that causes compiler to emit assembly code for your C source. You can see what the compiler is doing. You can also see that all the talk about compilers producing code with quality comparable to hand crafted assembly ain't necessarily so.

Python - Easy to use and very, very powerful. Applicable to a wide range of applictions. A possible drawback is that it's not very fast. Lots of C based modules that you import mitigate this drawback. Look for Python to be the inspiration of future languages. You can also use it to get a taste of Functional programming ala APL and J.

JavaScript - If you're going to do web pages, you'll be learning this one, like it or not. And along with this you'll want to learn about HTML and CSS.

SQL - You won't be using this all the time, but you will do enough with it to need to learn it.

Assembly - At least a little, so you know what happens down at the machine level. I'ld recommend learning assembly for a microcontroller such as 8051, PIC, Z-80. Don't start out trying to learn the assembly for a Pentium class computer. There's too much hardware you'ld have to know in order to understand what most of the instructions are doing. Assembly for the 68000 would be a good one too.

VHDL or Verilog or other Hardware Description Language - It's a different way of viewing the world, where timing and sequencing rule. Of the two, I like Verilog better. A discrete event simulation language would be another option.

A Functional Programming language - Main Options: APL, Haskell - You might not use these much, but it may give you insight on alternative ways to implement something in another language.

What popular modern language should you not bother to learn?

Visual Basic or VB.Net. -It's on the way out, being supplanted by C#, Python, and occasionally C. There's no longer a good reason to use it on new projects. Python is easier for quick apps. C# would use the same development environment and is better for significant projects. If you need an exe, Delphi, C++, or C will give you that. When I've used Visual Basic, the library API's always felt 'kludgy', as a whole.

What about C++? - I still like C++. But I think there are other languages that will provide higher programmer productivity in practice. Try D, Objective-C, Java, or Delphi instead.