I love it when people down vote my replies anonymously and without giving a reason. If you hit that button, please also add a sentence explaining why you consider my answer wrong...

Career summary:

  • First line of code: Applesoft Basic on Apple][ (was it 1984?)
  • First line of machine code: 6502 (On Apple ][ around the same time as my first basic lines) "call -151" was the bang!
  • First line of PASCAL code: UCSD Pascal (on Apple ][, a little while after getting that thing)
  • First line of C-Code: Turbo C (version forgotten, was on Atari ST)
  • First line of C++ Code: Borland C++ 2.0 on a windows 2.0 i386 (Was it 1987?)
  • First line of Visual Basic code: In the great times of COM, ATL and VB5.0-VB6.0. VB the container language for C++ components!
  • First line of C# code: Cannot remember - must have been right after VB 6 era ended ;)
  • First line of Functional language code: Haskell, soon after F#, must have been around 2010.

Languages I will never touch: Perl, Python, Ruby and all those other "superlanguages".

Main interests (in programming): Portable embedded solutions. It is easy to write code with a specific environment in mind, not so easy to write code which should work on a wide variety of systems and non-systems. C got old quickly, C++ a sharp tool on the rack.

But with C++11, doubt creeps upon me. The rift between embedded and "PC" programming shows, cracks open and it will be harder in the future to do cross platform development. Never was a fan of "generic programming" in C++ (well customer - build a hardware with MORE ROM!), never liked STL ever since a router component for a navigation system broke after STL updates. (The rest of the code base worked. Secret: Not using STL).

If you think you like C++11, here is the cure: Look at the implementation of std::function. Multiple re-include of headers, preprocessor continuations (# is the symbol you will see in abundance), a malloc() to get a polymorphic type, ... and then in the end, you cannot do much with those nifty lambdas without that std::function crap. Sorry guys, but C++11 is a big failure in my (embedded) view.

Time to consider to switch to D language. Only problem: Does not install out of the box on 64 windows and I would not even try to investigate if D can be used cross platform (ARM, ...).

Re-visited haskell briefly and - no sir - I do not think monads are worth littering your mind with. Nor is haskell as such. If it takes 5 times longer to write fewer lines, just because of language idiosyncrasies and constructed roadblocks, it is a bad deal. Then, typically you end with compiled code which is SLOWER than f# running on a virtual machine?! Cute!

In contrast, Erlang looks very pragmatic and worth having a closer look at. Always liked actor model and message passing style concurrent programming.