Hacker News new | past | comments | ask | show | jobs | submit login

C++ is configurable in all the wrong ways. Its orthogonality is only with respect to a C-oriented perspective on the world; it doesn't have a philosophy, so much as "like C but let me customize most of the underlying operations". That it is usable at all is mostly down to enormous amounts of effort and careful selection of idioms. Writing C++ reminds me a bit of playing chess: if you're deep in the idiom, there are only a handful of moves to consider, but if you're out of it, there are so many mistakes you can make.

I like the "pit of success" analogy. In design (whether it's API or language, or even physical mechanisms), doing the right thing should be the easiest way to go. C++ has a narrow ridge of success, with cliffs not far from either side.

A more orthogonal, more powerful and even more controllable language, to me, would be some variant of Scheme or Lisp that let you produce fully typed ASTs or even target code for the places where you need absolute control over performance, but high level enough to focus on the business domain problems most of the time. C++ demonstrably simply can't climb very far in the abstraction stack; people don't write web apps in C++. That's the metric that matters in the end.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact