old days, when there was a distinction between code and data

I've been reading quite a few language rants recently, and have been trying to look at why it is I'm (relunctantly) C++ bound.

Here is a selection of the links I enjoyed reading:
- Linus Torvald explaining why he favours C for kernel coding: http://www.realworldtech.com/beta/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2
- a lovely put rant I can relate to very much: http://apenwarr.ca/log/?m=201007#21
- Rob Pike (Google) on Go vs C/C++/Java: http://news.techworld.com/applications/3232945/google-engineer-calls-java-and-c-too-complicated
(just to mention my most recent ones)

I started programming on a TI-59 calculator (it was lovely). Then came BASIC, then Pascal, then C, then C++. Each change of language came with something so useful I just had to embrace the new language. Basic brought code you could read, Pascal brought functions, I was very happy with Pascal, wrote a lot of commercial apps with it. But at some point, my Units were growing too big and I wanted to break them down, and C had the perfect method for that: separate .h and .c files. Converted all my Pascal libraries to C, in a few weeks work and lived happy for a while. But then my libs started to rely so much on pointers to function it was a bit of a pain, and I embraced C++ because of virtual functions. And here we are, a bit over twenty years later, most of what I code still goes through a C++ compiler... Have I stopped being curious ?

Looking around, it's amazing how much production code actually runs on PHP or Javascript. Things that "don't run in the same league", some would say. But, then, a language is a language. It's not crazy to imagine that there could be a language syntax that works just as well for low-level performance coding as for app scripting or even disposable gets-the-job-done batch-file type of things...

It's actually what made me love C at the time: I could write the bits that were high level in a coder friendly manner, and I could code the low level stuff in a machine friendly manner. And I still see C++ very much like that today. But things have grown, we've all gone down OOP boulevard and ended up celebrating abstraction as the way to go. But is it? looking at heavily templated code, I'm not so convinced it is coder friendly, and as much as people can explain why all these clever specialisations and tricks make them produce the fastest code, it would seem compilers have got to be very clever to be sure to make the expected sense out of them...

I feel nostalgic of the days when there was a distinction between code and data.
I feel nostalgic of the days when newbies could pick up BASIC or LOGO and get something interesting done in their first hour.
I feel programming has become unnecessarily complicated

Actually, there is one such toy that I find intriguing: processing (http://processing.org). It lets you play with data and visualisation in a straightforward, no-nonsense, get-things-done way that is very addictive.

Hopefully, all these rants around C, C++, C#, Java, Go and their cousins will lead to some amazing thing that will be to now what Turbo Pascal was to the 80's...

For more complete information about compiler optimizations, see our Optimization Notice.