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 the rise of C++11 I felt the urge to start a quest for alternatives.

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.

My latest discovery in my quest to find a worthy C++ 98 successor for embedded programming with style is RUST. Great as an idea but unfortunately not yet on a mature enough level. Don't like cargo and that idea of a package manager, don't like java-style enforced directory structures, don't like the idea of "whatever you find in the internet is your standard library" as it will create problems when really trying to port code to a constrained embedded system. I would prefer a set of profiles - like Ada has and conforming "standard libraries". Why not define profiles such as "BareBone Embedded, Embedded, Kernel/Driver, Application" and allow people to tag their crates with that and some check if the claimed profile is met? The traits syntax and the idea of traits either still takes me getting used to or will eventually end in my bad books.