The fact that very few web applications use C++ doesn't mean that using C++ is a bad idea. Most web applications are absolute garbage, both in terms of the concepts behind them and the actual implementations.
Personally, I write code in C. Does this mean I write fewer lines of code? Possibly. Does it mean that I write fewer GOOD lines of code? Definitely not. Working in C forces me to think about what I'm doing in a way that I wouldn't do if I were using a more flexible language like perl; and as I've written about before, I firmly believe that thinking before coding is a key ingredient in producing good code.
Returning to the original question: I would never work for a startup which was using C++ or Java, simply because those languages are too flexible. If you don't know what function pointers are, you shouldn't be using them -- and that applies doubly if you don't even realize that you're using them.
Does it mean your good lines of code achieve less than the good lines of code of someone with comparable experience in a high level language? I bet that's the case.
If you're such a believer in thinking before coding, why do you need your language to force you to?
boost::lambda still blows. I avoid using C++'s <functional> and friends because of the crap-tastic missing support for lambda expressions. Luckily there are a couple of sane proposals to fix this in the next version of C++ (aka "C++0x"). http://www.research.att.com/~bs/N1968-lambda-expressions.pdf
I'm happy to say that I no longer hack C++. I loved C++ until I realized that you have little hope of using C++'s features correctly unless you sink 5 years into becoming a C++ expert. Digital Mars D looks pretty damn good, but I haven't looked into it very deeply.
Yeah, I think that is precisely the problem with C++. The language lets you do some amazing things, but it is just way too complicated. Unless you've spent a long time becoming an expert at the language, it is all too easy to write C++ code that looks correct, but it is actually wrong (either poorly performant, or non-portable, or subtly buggy).
Whereas C doesn't give you all the wizzbang C++ features, but it has the important property that wrong code looks wrong; the language is simple, and there's often "one logical way" to implement a given algorithm. That translates into simpler code (albeit often less expressive), and fewer bugs.
I'd still use C++ over C... virtual functions, inheritance, RAII, and standard containers are too useful. The important thing is to not get caught up in C++ voodoo magic land, and spend 2 weeks trying to get a template with Alexandrescu typelists working correctly when nobody is going to even going to reuse the code, nor wants to learn your fancy interface, nor wants to maintain your fancy code.
I have programmed a little D, and although you will be stuck in the imperative/object-oriented mindframe as with C++, D is quite useable. The overall design is coherent, and anyone with a basic understanding of C++ should be able to pick it up very quickly. It even has some lambdaness.
Point taken, but mine still stands. Basically all of the software companies with market cap north of a billion dollars have web-facing apps written in C++ and Java.
Whether you admire them or not is another issue entirely.
"Basically all of the software companies with market cap north of a billion dollars have web-facing apps written in C++ and Java."
Not really true, unless you mean "have web-facing apps written in C++ and Java" in the same sense that they "have web-facing apps written in PHP and Python". I posted a list on Reddit, based on publicly available information (employee blog posts, mailing lists):
You're collapsing stuff down in an interesting way that makes these marginal languages look more important than they probably are. If you were to do it by lines of codes, organizational importance, financial pay off, number of engineers working in a language, or pretty much any metric other than "does ___ use ___ somewhere in their codebase?," I think you'll find that Java and C++ are huge.
That said, sure, folks use other languages, too. Yahoo and Facebook are particularly good examples of companies that have more than the typical share of a non-Java/non-C++ language for their apps. And even they use C++ (and maybe Java) elsewhere.
"If you were to do it by lines of codes, organizational importance, financial pay off, number of engineers working in a language, or pretty much any metric other than "does ___ use ___ somewhere in their codebase?,"
The flip side of that is that perhaps Java and C++ are huge because it takes more engineers and lines of code to accomplish the same task, and hence the potential financial payoff and organizational importance needs to be higher to justify their use. ;-)
It takes a while to get a billion dollar market cap. So if you use that test you're looking at old technology decisions.
A better test, for someone starting a startup now, would be to look at what's used by the companies started in the last year that seem most likely to one day have billion dollar market caps.
It's too hard to judge which apps started this year will most likely have billion dollar market caps - after all, if you'd done that in 1996, you'd think "AltaVista, Excite, Value America" and other similar nonsense.
Instead, how about looking at what companies with billion dollar market caps are buying. After all, that's the biggest statement of "We think this is really promising, but we can't build it internally, so we're going to fork over a billion dollars for it" that a big company can make.
Judging from this, the big languages seem to be Python (YouTube, Reddit) and Java (FeedBurner, Zenter). There are also a lot of recent acquirees where I haven't seen anything about their technologies - it's certainly conceivable that many of those are C++. Really, if I had to draw conclusions, it'd be "The language you use doesn't really matter - the important thing is that you build something people want."
I don't know if you're entirely correct on the old school/new school comparison. It's not as if Google decided way back in the late 90's that they'd (re-)implement Writely in Java just because it was en vogue. That's a newer technology decision than implementing reddit in python...
Ultimately, the question of what to code in is not nearly as crucial to success as we're making it out to be. And answering that question "correctly" has a lot to do with who's coding, how the code's used now, how you think it'll be used later, and many other questions.
I think it's at least worthwhile to know why other people use boring languages. Then feel free to use cool ones instead, not because you're impressed with how well Basecamp runs, but because you know you don't need Google-sized scalability right out of the box.
I suspect Google decided long ago to create a server infrastructure for programs written in certain languages, which in turn dictated how they rewrote Writely years later.
Choice of programming language may improve performance by a constant factor at best. I can't see how Google-sized scalability depends on that. I'd be happy to grow 1/10 or 1/100 of Google!
That's not necessarily significant unless you want to take it a step further and claim C++ and/or Java have a causal relationship with those market capitalizations.
There could be a lot of reasons why very large software companies are using the same languages.
It's certainly not coincidence that both Microsoft and Google use C++ for their big web apps. I'm suggesting that the opportunity to learn how and why their systems work as they do is a valuable one, even if you'd rather be coding in Python, Ruby, or Arc.
The poster talks about being the <10th employee, so I don't think he's considering going to work for Microsoft or Google.
It's questionable that there is much overlap between the "hows and whys" of the practices of these companies (that count their employees by the thousands and their bottom line by the billions), with the "hows and whys" of what you need for a startup.
Any opportunity to learn is valuable; whether learning the MS/Google way is a good choice depends on your alternatives.
If you look at what the Java world is doing, you'll see that experts try to keep their Java code as far away from the web layer as possible. That's what velocity, webmacro, cocoon, JSTL, etc. etc. etc. are for. There's probably a tool to keep Java away from the web for every letter of the alphabet.
Correlation is not causation. These software companies just happen to use C++ and Java. It's not because they use C++ and Java that they have market caps north of a billion dollars. They're making a product or selling a service that people want and if they used a different language, they would still be making a lot of money.