C++ Programmers unite!
-
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
C++ is not better, it is different. In being different you should always consider what its purpose is before dismissing it. C# is designed for the Business world, as CPU's are splitting left and right and doubling faster than stocks best dreams who is using that horse power? who is demanding it? why is it happening? Certainly if the world revolved around MS office and SQL searches one a minute and slowdowns directly related to the speed that a user can read and then type a response, we'd still be running a 286 at 25Mhz on an RLL drive. So what drove these machines we use every day? Games, military, scientific, video, analysis processing. High tech, math driven, monsters that are never satisfied no matter what you feed them. In the lead? Games. yes, games, not your solitaire that the business folks pride themselves as the supreme example of their mouse using talent. We're talking GAMES, en masse, in 3D with physics, realistic world textures, massive examples of math use. In this market every second counts, your compiler better be good, and your people talented. Even the military bows its head to the power of games, learn how to take advantage of that market, learn how to benefit from their lead, learn how to make it tick, and give us the benefit! That is the power of that market, even the powerful military nod their heads in amazement to the technology it drives. Eight cores will not be enough, physics processors will not be enough, 3D graphics and 128bit color will NOT be enough. It will never be enough, because this machine is driven by the real world. They want realism, and they want it bad. Not just looks the same, they want shattering glass that behaves like shattering glass? have you any idea the physics processing required for that tiny special effect to look real? amazing. And we are doing it. Soft body physics, the bounce of jello, the drape of cloth, the flex of a rope, and all related materials that follow these rules. Let alone, the kingpin of lovelies: fluids! Accurate fluid dynamic behaving liquids. This was not even done on Crays accurately when I entered the business! We are doing it on your laptop!! Why is C++ alive and well? because it never died. To the business programmer that prides himself in beating solitaire, C++ is dead because will never need to use it. Fine. But there is a drive to use performance on a massive scale. And that drive will not tir
5! And I thought Halo 3 was written on VB .NET :laugh:
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->Rajesh<-·´¯`·. Codeproject.com: Visual C++ MVP
-
Not to spit a fellow C++ian in the soup, but here[^] is a nice summary of Raymond Chen (C++) vs. Rico Mariani (C#)
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
blog: TDD - the Aha! | Linkify!| FoldWithUs! | sighistWhat a trivial example, you don't have to split anything, just install Oracle 200MB Client Install and do some work with it. Then try against OLE DB, even via ADO.NET. Anyway, you want to talk I/O, you better get MS to ship managed IIS, and http.sys in next service pack, sqlserver.exe and ntfs too, oh and managed mscoree and the entire i386 directory. All I/O is native, by definition, it ends up native (you know, the thing that exists with or without managed TM LTD COM), and most of it out there is untyped.
-
James R. Twine wrote:
I would suggest learning about machine and/or CPU architecture/micro-architecture
I've already learnt that kind of stuff. I'm not saying I could sit down and write a few pages of assembly that actually did anything useful, but I understand the archtechture, registers, memory addressing, etc. I try to understand as much of whats going on as possible. I use reflector to look through the .net framework now and again. I peek at the IL my code generates now and again. I think I'm gonna test drive C++ on my next personal project. Just for the fun of it really.
Simon
I mis-wrote my original post - you learned machine architecture I believe (did they use RISC processors as examples? :)), but you should also learn CPU micro-architecture. Not just all the parts of a CPU, but how they work together. How out-of-order execution works, the Decode-Execute-Dipatch cycle, how to cause and prevent pipeline and cache stalls, etc. All those things help greatly when writing multithreaded/multicore code so you can prevent each one of your threads from effectively stepping on each other. Unless you do know all that already, then nevermind! :) Peace!
-=- James
Please rate this message - let me know if I helped or not! * * *
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
See DeleteFXPFiles -
Rajesh R Subramanian wrote:
You have to draw a line somewhere and the line is drawn at C++
I thought lines were drawn with Logo. :rolleyes:
Dad always thought laughter was the best medicine, which I guess is why several of us died of tuberculosis. I can picture in my mind a world without war, a world without hate. And I can picture us attacking that world, because they'd never expect it.
Nic Rowan wrote:
I thought lines were drawn with Logo.
No you're thinking of a pencil and ruler.
-
What a trivial example, you don't have to split anything, just install Oracle 200MB Client Install and do some work with it. Then try against OLE DB, even via ADO.NET. Anyway, you want to talk I/O, you better get MS to ship managed IIS, and http.sys in next service pack, sqlserver.exe and ntfs too, oh and managed mscoree and the entire i386 directory. All I/O is native, by definition, it ends up native (you know, the thing that exists with or without managed TM LTD COM), and most of it out there is untyped.
User of Users Group wrote:
Oracle 200MB Client Install and do some work with it
Hell no, I've never seen such shite.
User of Users Group wrote:
OLE DB, even via ADO.NET
Thanks quite... brings tears to my poor eyes. Try using pure COM with OLE.
-
5! And I thought Halo 3 was written on VB .NET :laugh:
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->Rajesh<-·´¯`·. Codeproject.com: Visual C++ MVP
Rajesh R Subramanian wrote:
And I thought Halo 3 was written on VB .NET
Now you're being silly :)
-
Chris Maunder wrote:
"My compiler compiled your compiler"
5 For that!
Chris Maunder wrote:
And to me that says it all. C++ is still like driving a manual (sitckshift) car versus an automatic.
I remember I said this, may be a year ago: "Real men drive manual transmission". .NET is undeniably good for developing business applications. But most of the .NET devs ignore (or even don't know) the fact that there are other languages and every language has its own applicability.
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->Rajesh<-·´¯`·. Codeproject.com: Visual C++ MVP
Rajesh R Subramanian wrote:
.NET is undeniably good for developing business applications. But most of the .NET devs ignore (or even don't know) the fact that there are other languages and every language has its own applicability.
That, is the single biggest and most enduring point of debate I have with any developer that had never known anything other than VB or .Net based languages.
"Every time Lotus Notes starts up, somewhere a puppy, a kitten, a lamb, and a baby seal are killed. Lotus Notes is a conspiracy by the forces of Satan to drive us over the brink into madness. The CRC-32 for each file in the installation includes the numbers 666." Gary Wheeler "The secret to a long and healthy life is simple. Don't get ill and don't die." Pete O'Hanlon, courtesy of Rama "I realised that all of my best anecdotes started with "So there we were, pissed". Pete O'Hanlon
-
Rajesh R Subramanian wrote:
You have to draw a line somewhere and the line is drawn at C++
I thought lines were drawn with Logo. :rolleyes:
Dad always thought laughter was the best medicine, which I guess is why several of us died of tuberculosis. I can picture in my mind a world without war, a world without hate. And I can picture us attacking that world, because they'd never expect it.
Did you get your car back? :)
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->Rajesh<-·´¯`·. Codeproject.com: Visual C++ MVP
-
Nic Rowan wrote:
I thought lines were drawn with Logo.
No you're thinking of a pencil and ruler.
More like turtles :rolleyes:
"Every time Lotus Notes starts up, somewhere a puppy, a kitten, a lamb, and a baby seal are killed. Lotus Notes is a conspiracy by the forces of Satan to drive us over the brink into madness. The CRC-32 for each file in the installation includes the numbers 666." Gary Wheeler "The secret to a long and healthy life is simple. Don't get ill and don't die." Pete O'Hanlon, courtesy of Rama "I realised that all of my best anecdotes started with "So there we were, pissed". Pete O'Hanlon
-
Well put! You know, Torvalds' impression about C++ compared to C is similar to Maunder's impresion on C# vs C++.
Except for the fact that Linus Torvalds is a complete doofus and I actually respect Chris. Also Chris was being facetious, where as Linus's "complaints" were actually meant seriously, underscoring how big of an idiot he actually is.
¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog
-
I do mainly business app developmetnnt at the moment, so C# is good in terms of productivity, but like you say, maybe C++ knowledge will give me a better understanding. Maybe I'll give it a go on my next personal project. Thanks
Simon
The biggest thing you can learn: use the right tool for the job. Sometimes that's C++, sometimes it isn't.
¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog
-
So there's all this talk of why C# is better than VB and why Ruby on Rails is just the peachiest thing ever, except that PERL is way hard core and blah blah blah. I found an old C++ T-shirt that I love: "My compiler compiled your compiler" And to me that says it all. C++ is still like driving a manual (sitckshift) car versus an automatic. C++ still kicks any .NET language's bum in terms of speed. C++ still allows you far more annoying and impressive errors than most other modern languages. So C++ devs: Tell us why C++ is just plain old better.
cheers, Chris Maunder
CodeProject.com : C++ MVP
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
'Cause only your friends can handle your private parts.
Cheers, Vikram.
Zeppelin's law: In any Soapbox discussion involving Stan Shannon, the probability of the term "leftist" or "Marxist" appearing approaches 1 monotonically. Harris' addendum: I think you meant "monotonously". Martin's second addendum: Jeffersonian... I think that should at least get a mention.
-
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
I'm not sure that "better" applies to all situations, but, at least in many of the systems I've developed, C++ kicks .NET's butt. Mostly, I'm talking about performance, memory management and scalability. char* pBuffer = malloc(WHATEVER), while unpopular, mistreated and oft abused is quite a powerful construct. If I had to pick one feature that .NET needs, that would be simple: destructors. Who decided that deterministic finalization was a bad thing????? Oh yea, *pBuffer, pBuffer++ and all pointer related arithmetic, access, etc, is just plain fast & elegant, when used right. Personally, I like .NET just fine and plan to use it for just about any web applications I build. However, I also have written several Windows services and some mission-critical number crunching applications (and even one CGI application). I even tried to develop one of these in .NET, but the performance was abysmal. (BTW, don't tell me that I wrote the .NET app wrong, I asked around, sought advice from "experts", etc and ultimately, the architecture of .NET and the .NET framework were just in the way.) I would love to see a system come along that is evolutionary/revolutionary that actually produces faster code, not slower code, with each progressive release. This whole "layer cake" approach is getting quite heavy. And the current mantra of throwing hardware at performance problems is getting very very old. (Re-reading my post, I'm starting to feel old now.) :-D
Matt Gullett wrote:
ystem come along that is evolutionary/revolutionary that actually produces faster code,
That's been my whole beef all along with .Net, is that it seems that performance gets clunkier and clunkier with each release, and more and more crap gets added.
¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog
-
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
I'm not sure that "better" applies to all situations, but, at least in many of the systems I've developed, C++ kicks .NET's butt. Mostly, I'm talking about performance, memory management and scalability. char* pBuffer = malloc(WHATEVER), while unpopular, mistreated and oft abused is quite a powerful construct. If I had to pick one feature that .NET needs, that would be simple: destructors. Who decided that deterministic finalization was a bad thing????? Oh yea, *pBuffer, pBuffer++ and all pointer related arithmetic, access, etc, is just plain fast & elegant, when used right. Personally, I like .NET just fine and plan to use it for just about any web applications I build. However, I also have written several Windows services and some mission-critical number crunching applications (and even one CGI application). I even tried to develop one of these in .NET, but the performance was abysmal. (BTW, don't tell me that I wrote the .NET app wrong, I asked around, sought advice from "experts", etc and ultimately, the architecture of .NET and the .NET framework were just in the way.) I would love to see a system come along that is evolutionary/revolutionary that actually produces faster code, not slower code, with each progressive release. This whole "layer cake" approach is getting quite heavy. And the current mantra of throwing hardware at performance problems is getting very very old. (Re-reading my post, I'm starting to feel old now.) :-D
>>I would love to see a system come along that is evolutionary/revolutionary that actually produces faster code, not slower code Yes that would absolutely be nice and all. but that is not what the marked demands. The market wants tools that enable them to build and maintain apps with with as little effort as possible. Ofcourse c++ is better if you want to build 3D studio max. But for some web developer with 6 months of coding experience, that slow chunk of .NET framework will get his job done. And the result will even work fairly well. The layer cake approach exists just because there are more people building web/desktop data entry apps than there are people making compilers or 3d studio like tools. >>And the current mantra of throwing hardware at performance problems is getting very very old. It might be old, but its still cheaper to have bad/inexperienced developers developing in an easy environment and throw hardware at the apps when they are too slow than it is to have hardcore c++ hackers developing the same stuff.
Blog: http://www.rogeralsing.com Projects: http://www.puzzleframework.com
-
I mis-wrote my original post - you learned machine architecture I believe (did they use RISC processors as examples? :)), but you should also learn CPU micro-architecture. Not just all the parts of a CPU, but how they work together. How out-of-order execution works, the Decode-Execute-Dipatch cycle, how to cause and prevent pipeline and cache stalls, etc. All those things help greatly when writing multithreaded/multicore code so you can prevent each one of your threads from effectively stepping on each other. Unless you do know all that already, then nevermind! :) Peace!
-=- James
Please rate this message - let me know if I helped or not! * * *
If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong!
Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road!
See DeleteFXPFilesI certainly don't know all of that in detail. Maybe I'll added a CPU construction book to my bedtime reading list. :)
Simon
-
By analogy: C++: Arnold Schwarzenegger C#/VB/Ruby: Wally Cox C++: This Old House C#/VB/Ruby: Queer Eye for the Straight Guy C++: Bugs Bunny C#/VB/Ruby: Teletubbies C++: Iron Maiden C#/VB/Ruby: Menudo C++: Porsche 911 Turbo Cabriolet C#/VB/Ruby: Yugo
Software Zen:
delete this;
Gary Wheeler wrote:
C++: Porsche 911 Turbo Cabriolet C#/VB/Ruby: Yugo
Now, you are insulting Yugo :mad:
-
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
'Cause only your friends can handle your private parts.
Cheers, Vikram.
Zeppelin's law: In any Soapbox discussion involving Stan Shannon, the probability of the term "leftist" or "Marxist" appearing approaches 1 monotonically. Harris' addendum: I think you meant "monotonously". Martin's second addendum: Jeffersonian... I think that should at least get a mention.
Vikram A Punathambekar wrote:
'Cause only your friends can handle your private parts.
In C# .NET, friends assembled in a group (friend assemblies) gets to *handle* my private parts. :omg: Now, I know why a lot of pervs choose .NET :suss:
Nobody can give you wiser advice than yourself. - Cicero .·´¯`·->Rajesh<-·´¯`·. Codeproject.com: Visual C++ MVP
-
>>I would love to see a system come along that is evolutionary/revolutionary that actually produces faster code, not slower code Yes that would absolutely be nice and all. but that is not what the marked demands. The market wants tools that enable them to build and maintain apps with with as little effort as possible. Ofcourse c++ is better if you want to build 3D studio max. But for some web developer with 6 months of coding experience, that slow chunk of .NET framework will get his job done. And the result will even work fairly well. The layer cake approach exists just because there are more people building web/desktop data entry apps than there are people making compilers or 3d studio like tools. >>And the current mantra of throwing hardware at performance problems is getting very very old. It might be old, but its still cheaper to have bad/inexperienced developers developing in an easy environment and throw hardware at the apps when they are too slow than it is to have hardcore c++ hackers developing the same stuff.
Blog: http://www.rogeralsing.com Projects: http://www.puzzleframework.com
I agree with your comment concerning market demands. That is what drives the development. However, the layer cake approach seems, at least to me, to be fundamentally flawed. There's got to be a better way to build software than this. I don't claim to have all the answers, so I'm not saying we should stop using what we know and understand, just that we should be screaming louder and louder for something better. I personally believe that the whole PC/OS/software architecture is fundamentally flawed. Deleting data??? Why should that even be possible? When I try to think about how computers should work, if we lived 400 years from now, I tend to think in terms of evolutionary data, not evolutionary software. Data grows in a layer-cake like system (e.g. new data on-top of old data, but old data not gone/deleted.), while software and systems are more universal and flat. It just feels like our current system is up-side down. How much of our security and privacy problems are caused by a fundamental problem in the way we look at and manage data? I need to stop, or I'll get myself into a fury.
-
So there's all this talk of why C# is better than VB and why Ruby on Rails is just the peachiest thing ever, except that PERL is way hard core and blah blah blah. I found an old C++ T-shirt that I love: "My compiler compiled your compiler" And to me that says it all. C++ is still like driving a manual (sitckshift) car versus an automatic. C++ still kicks any .NET language's bum in terms of speed. C++ still allows you far more annoying and impressive errors than most other modern languages. So C++ devs: Tell us why C++ is just plain old better.
cheers, Chris Maunder
CodeProject.com : C++ MVP
Chris Maunder wrote:
So C++ devs: Tell us why C++ is just plain old better.
Because it is like a Sting's song: It takes a man to suffer ignorance and smile Be yourself no matter what they say
-
CPallini wrote:
If you really enjoy C#, be stuck with it.
C# is nice, but I'm too curious, I want to know more
CPallini wrote:
'classic' (managed C++ is a crap
Classic it is then. Might take the chance to learn some DirectX at the same time, I've been meaning to do that for ages.
Simon
Simon Stevens wrote:
Might take the chance to learn some DirectX at the same time
When you do, don't ignore the quaternions! they are worth the time to master, 2/3rds the math, 1/10th on a SLERP animation. It may not help you make a web app, but it is an amazing jump when your CPU line goes from 100% to 20% and you go: :doh: now I understand what all this hootodo is about performance!
_________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)