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

Whenever I see Kierkegaard referenced, I can't help but think of Michael Swaine's comments (1998) on how it influenced Stroustrup as he developed C++:

> Is modesty a virtue in a programming language? Stroustrup thinks so. Invisibility, even. "If you know what language you are using," he says, "there is something wrong. You shouldn't be able to tell." The "you" in this case is the user, I guess. Even Bjarne isn't modest enough to suggest that the programmer shouldn't be able to tell the difference between C++ and Java. But he may be mystical enough. Red Herring notes that Stroustrup's thinking was heavily influenced by the Danish philosopher Sören Kierkegaard. Gosling, as we know, was influenced by an oak tree growing outside his window.


When I'm feeling contemplative, I really want to read something continental for the evening. But when I have shit to do, I snap into an analytic frame of mind.

I feel the same way about programming languages; the Kierkegaardian crowd (C++, Perl) are great for evening enjoyment, but I'd prefer something from the more analytic tradition to language design when there's work to be done.

I tend to agree... for me, C++ is a great solution for problems I don't tend to have in my workaday life.

For a lot of what I do (large-scale, scientific computing), C++ is exactly what I need: it's expressive/compact when I need it to be, and its compile-time metaprogramming lets me do things faster in ways no other language can.

For testing and interactive analysis, I can easily use pybind11 to generate bindings. And because python integration is so easy, I can know many other people will be able to use it.

That's the balance I like best.

so you program in prolog or coq when you really need to get stuff done?

It's just an analogy, and I didn't claim it's perfect :-)

But there's a divide between language authors who sound like engineers/mathematicians and language authors who sound like continental philosphers.

I'd include languages like Java, Python, Go, Haskell, OCaml to be in the "analytic tradition" as well. And yes. lots of people get lots of work done in those languages :-)

I'd agree that Python and OCaml are analytic. But personally I find Java much more "continental" than C++, in that it combines aesthetics and function in a way that is both time-tested/consistent and expressive. C++ has always felt like a programming language designed with the same philosophy in mind that Frankenstein had when creating his monster.

Comparing C++ to Frankenstein is a bit of a dis-service to the time spent developing this language.

There's some bad innards from C compatibility, but that's only a small sliver of the overall language. The language overall is very big, but has a high level of consistency and.... dare I say orthogonality.

The open-ness of the language at the outset, especially around the breadth of available overloading, means that future improvements can work in an extremely wide space. It's one of the few languages that stays true to the "every type is a class, no type is special" philosophy.

It's powerful stuff and gives you more control than you can find almost anywhere else, especially with the more modern improvements that pull in a lot of goodies from other languages.

I'd say the biggest wart is the compiler-linking process... the fact that the preprocessor is still a thing is rough.

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.

> Comparing C++ to Frankenstein is a bit of a dis-service to the time spent developing this language.

Bolting more bits onto Frankenstein wouldn't make him less of a monster.

Hm. I tend to think more in terms of how using the language makes me feel than in terms of what the language design reminds me of.

I see what you mean, though.

Whether or not you intended this as a joke: As a matter of fact, I actually do!

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