Ventures of an ex indie game developer

Strike a balance

"Why do you live in a house? Perhaps it's because living in caves is quite different to living in a house, and so requires different thinking, methods and ways, which makes it seem very awkward to live in for the unfamiliar. Caves keep rain and most animals out, some versions even running water. What more could you ever ask for?" Everybody shared this view. For millennia! Then they died; that's what thinking like this does to people.

I moved out of my assembler cave long ago, and moved on C++ which I've preferred since. I feel very confident with that choice. After C, C++ is the most portable language, and performance-wise it's managed to strike a balance between "high enough level" without giving up any real performance. I now live in a minimalistic house instead of a cave.

From the first moment I tried Java I considered it joke, and still more than a decade later I stick with that analysis and gut feeling. I've learnt more about the language and the language have evolved some, but the basics were wrong from the beginning: it runs a VM, sacrificing performance for what used to be stability (but since x86 protected mode this isn't an issue any more) and portability (C is often just as portable), the JIT compiler uses more power than it returns and the language itself encourages architect astronauts performing benevolent tasks (i.e. developing frameworks instead of components/toolkits; one size fits all and so forth).

The same is true for .NET or course; and Microsoft, with their money muscle, haven't been able to push it even half-way to Java in the popularity contest. Java and C# are big houses. Built under the surface of the planet, sort of like storage rooms. Big, sure, but without any toilets. And with no exists (keep it object-oriented folks).

Python is wonderful and elegant for scripts, and contains enormous amounts of functionality in the standard lib, but lack of typing doesn't work; not for real, big things. But I use it a lot for all the small hacks I need. Python is a garden shed but in a huge, wonderful garden filled with nymphomaniacs on LSD. JavaScript is not as clean nor elegant as Python, it doesn't have a big and mature standard lib. (Brython unfortunately does not change that.) PHP, of course, is by far the most inferior one; if you haven't tried it you should just to see how deficient it actually is! PHP is two sheets of paper: one is the roof, the other a wall.

I once made a programming language of my own (not a DSL, but a general purpose, object-oriented one) back in the day when I still did procedural C most of the time. The assignment drove me into making a scripting language from scratch. And man, it came out icky! Seriously badly done in all the unthinkable ways a man can create a programming language without basic understanding of compiler theory, lexing or parsing. And as fundamentally broken as it was, it was still better than PHP is today. Hell, I even built a remote debugger with breakpoints, step into/over/out, variable inspection and so forth; something that is still missing from all if these dynamically typed languages to date. Test might be king, but it sure as hell ain't queen, and you need both to sustain a royal flush.

I still haven't tried Lisp, which I'd like to do one day, but unsure where that would fit into my life. What do I need it for? I can build small hackish things in Python and big portable and performance-intensive projects in C++. What else is there? Where does Lisp strike the balance? Am I still living in a cave, and not knowing? Probably. But one of these days I'll find a plentiful load of spare time laying around somewhere (not just now though, I need to add explosion effects in C++ first)...

About the author

Mitt foto
Gothenburg, Sweden