Was it? Most console games are written in C++ in that period of time. A very popular desktop office suite is built on C++. The most popular design and photograph edition tool for Windows is written using C++.
So you are suggesting that all those guys who picked C++ for those popular piece of software are a sort of lucky morons?
It is a strong and risky assertion don't you think?
That is C. Lots of C compilers supported // comments, like watcom which they used. Notice the file extension says it is C. Notice it uses absolutely no C++ features at all.
http://en.wikipedia.org/wiki/RollerCoaster_Tycoon Still using ASM in 1999. Go look at quake 3 which was when id started into C++. Notice how it is barely C++. It seems odd to "suspect I am mistaken" rather than look at the evidence which lines up exactly with what I said.
I don't think RollerCoaster Tycoon is a good piece of evidence because it's famous largely for being written in assembly at a time when most games had already abandoned it.
(Sadly, I don't think it would be odd at all to ignore the evidence, but I aspire to better than that.)
There are still a lot of problem areas where GC is unacceptable, or you need precise control over memory, or access to things like Cuda, along with the high order programming constructs you get in C++.
Maybe Rust will take over some day ...
I'll just say I'm not a fan of C++ and would rather write my own language similar to the source-to-source compiler idea of HaXe ( http://haxe.org/ ).
It's the catbirds in the gallery that don't actually have to write the kind of apps that require a language like C++ that "bash" it.
The kernel and git are in C
And if you've been programming C for 20 years or more, writing git with C feels like a natural solution.
It's not always about writing stuff with the most high definition solution, it's more about expressing ideas with the tools you know also.
Quintessential Linus, but I wouldn't call this an "evaluation"... :)
As a side note: I think we as a community should promote the catchphrase "You've Been Torvalds'd".
But since lava layering is caused by cultural and architectural issues I cannot claim that the system would be in any better shape just if some other language had been used.
Let's do something simple, a function that returns a reference to an array of a known size.
Some of C alternatives would be:
int (*foo())[2] {
}
or maybe if you have the length somewhere else: int** foo ()
{
}
or you could try to implement or use an existing implementation of a dynamic array (nothing in the standard as far as I know)vs.
std::vector<int>& foo() {
}Yes. C is very small and simple. You can learn all of C in a very short time. C++ is the most complex programming language in existence. It is unlikely that there is any person in the world who actually knows it all, including the creators.
>or you could try to implement or use an existing implementation of a dynamic array
Imagine that. You could use libraries that implement things you want. What a concept.
I think I didn't explain myself, but something that basic in these days should be on the standard library in my opinion.
>"Yes. C is very small and simple. You can learn all of C in a very short time."
I don't think C is simple at all. Its syntax can be really cumbersome at times (see my first example). Also it is very annoying to debug, and C code is very prone to contain memory corruption bugs and leaks.
C has great advantages but being simple is not one of them.
Ok well you hop in your delorian and go back to 1970 and let them know. In the mean time, how does that in any way make C not capable for the same tasks as C++?
>I don't think C is simple at all
Then you don't know C. The entire point of C is that it is simple.
>Its syntax can be really cumbersome at times
That has nothing to do with simplicity, and C++ has far more complex syntax.
>Also it is very annoying to debug
C is very simple and straight forward to debug. C++ is much more difficult to debug. Have you ever used either language?
>and C code is very prone to contain memory corruption bugs and leaks.
Because it is so simple.
>C has great advantages but being simple is not one of them.
Well your opinion is in the vast minority, and does not seem to have any basis in reality. The C spec is a tiny fraction of the size of the C++ spec.
Well they could have added in C99 or more recently in C11. What's wrong about updating a language?
> In the mean time, how does that in any way make C not capable for the same tasks as C++?
I would rather prefer not reinventing the wheel and a language that actually ship with it.
> Then you don't know C. The entire point of C is that it is simple.
I know C fairly well to recognize it quirks (just like all languages have). I think your definition of simple is very different of mine. Scheme is simple, InteractiveC is simple, C it is not.
> That has nothing to do with simplicity, and C++ has far more complex syntax.
cumbersome(adj): difficult because of extent or complexity
simple(adj): 1.easily understood or done; presenting no difficulty. antonyms: complex
How come something cumbersome has nothing to do with simplicity?
Also I am not saying that C++ is simple. But it has a subset that it is well defined, type safe and easy to understand.
> C is very simple and straight forward to debug. C++ is much more difficult to debug. Have you ever used either language?
Yes, I have used both in my formal job, and I can avoid memory leaks and memory corruption easily on C++. Not the case on C, specially when working in medium size teams where always people forget what they should cast a void* into and why they should not.
>>and C code is very prone to contain memory corruption bugs and leaks.
>Because it is so simple.
Seriously? It is a feature now? Well Scheme is a good example of language that is order of magnitudes simpler than C and it is not prone to memory leaks nor memory corruptions
>"Well your opinion is in the vast minority, and does not seem to have any basis in reality. The C spec is a tiny fraction of the size of the C++ spec."
If by simple you mean simpler than C++, yeah. You could say the same of Perl. Does is it make Perl a simple language?
Nothing, they do update the language. But fundamentally changing the language to be completely different is not the same as adding some small thing. C is simple on purpose. Adding complexity is not just an update, it is making it no longer suitable for its intended goal. So they choose not to.
>I would rather prefer not reinventing the wheel and a language that actually ship with it.
You don't have to reinvent the wheel, use a library like you already said.
>I think your definition of simple is very different of mine
Clearly. But mine is the same as 90% of the people who have commented on the subject. People overwhelmingly describe C as simple.
>Scheme is simple
Yes it is. As is C.
>How come something cumbersome has nothing to do with simplicity?
You just quoted how. Are you joking?
>Also I am not saying that C++ is simple
But you are arguing that C is complex and thus not appropriate, while C++ is appropriate. You can't have it both ways.
>Yes, I have used both in my formal job, and I can avoid memory leaks and memory corruption easily on C++
Which has what to do with debugging? And why are you incapable of avoiding those problems easily with C when everyone else does it just fine?
>Not the case on C, specially when working in medium size teams where always people forget what they should cast a void* into and why they should not.
Yes, clearly there's no way groups of people could work together on large complex software in C. I'll go tell linux, apache, X, all 4 BSDs, nginx, postgresql, postfix, etc, etc, etc that they don't exist. I'm sure they'll be glad to know.
>Well Scheme is a good example of language that is order of magnitudes simpler than C and it is not prone to memory leaks nor memory corruptions
Scheme is not even one order of magnitude simpler than C. Go read the specs. And scheme is not prone to memory leaks and "corruption" because it is higher level. This also makes it much slower. Even more importantly, it makes it a ridiculous comparison.
>If by simple you mean simpler than C++, yeah.
You are the one advocating C++ over C while claiming C is too complex. What are you blaming me for?
(It's entirely possible that all six of these languages are terrible, but that would be six separate claims.)