Yeah? But which language gets the job and earns the bucks
-
Sorry, the second version sucks, because: 1. It's completely incompatible with previous versions. 2. I cannot write production code with it: it's still beta. There's no way I will use a buggy beta version on a production system. It's not even a "Release Candidate" (aka "feature freeze version") yet, so all the features can change, and there's no way to assure that even the sample you showed will work on the final version. Press "Next" two or three times on CP and you'll see someone complaining about the IDE deleting code. This could lead to really subtle bugs. BTW, could you please post a version of your example that compiles on VS.NET 2003, so that we could compare C# with something that compiles with the current version of C++ on .NET? I see dead pixels Yes, even I am blogging now!
Daniel Turini wrote: Sorry, the second version sucks, because: By "second version", do you mean second version of MC++ aka C++/CLI, or the second version of the code from my message? Because the second one is C# and it does suck ;P
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
You're correct. The guide is only applicable for North America. Is it different for down-under folks? Most people are willing to pay more to be amused than to be educated--Robert C. Savage, Life Lessons Toasty0.com Ladder League (beta) My Grandkids
Toasty0 wrote: Is it different for down-under folks? No idea. I left programming in 1998 to be a over paid consultant flying around the world. Got retrenched at the end of 2001 and couldn't get a mainstream computer job. After 13 months unemployed I became a Work For the Dole supervisor running a computer refurbishing project. Couple of months ago I got retrenched from that. Now I pull beers for a living in a pub and a club. Michael Martin Australia "I controlled my laughter and simple said "No,I am very busy,so I can't write any code for you". The moment they heard this all the smiling face turned into a sad looking face and one of them farted. So i had to leave the place as soon as possible." - Mr.Prakash 24/04/2004
-
Daniel Turini wrote: Sorry, the second version sucks, because: 1. It's completely incompatible with previous versions. If you mean MC++, I agree. But C# isn't compatible with anything. With C++/CLI you can still reuse tons of tested and production ready C/C++ code. Daniel Turini wrote: I cannot write production code with it: it's still beta. Sure thing. But you can't really say that something "sucks" because it is still beta. Does ASP.NET 2.0 suck? Daniel Turini wrote: BTW, could you please post a version of your example that compiles on VS.NET 2003, so that we could compare C# with something that compiles with the current version of C++ on .NET? Well, yeah :)
#include "gc_scoped.h" //use google to find this little header file
...
String* ReadFirstLineFromFile( String* path ) {
gc_scoped <StreamReader*> r (new StreamReader(path) )
return r->ReadLine();
}
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
Nemanja Trifunovic wrote: #include "gc_scoped.h" //use google to find this little header file Using external include files is cheating... Please, include the full source... I see dead pixels Yes, even I am blogging now!
-
Daniel Turini wrote: C++ on .NET sucks Compare[^]:
String^ ReadFirstLineFromFile( String^ path ) {
StreamReader r(path);
return r.ReadLine();
}with
String ReadFirstLineFromFile( String path ) {
using ( StreamReader r = new StreamReader(path) ) {
return r.ReadLine();
}
}Which one "sucks" here in your opinion?
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
You don't even need to use the new operator for reference types? Like
StreamReader^ r = new StreamReader(...);
I do understand RAII and that StreamReader's destructor will serve the purpose of Dispose but not calling new for a reference type seems kinda weird to me. Particularly since in C++ (pure C++), your code will create an instance of r on the stack and new StreamReader will create one on the heap. In your case, r will be created on the managed heap and won't be deallocated till it gets GC'ed, right? Regards Senthil _____________________________ My Blog | My Articles | WinMacro
-
Daniel Turini wrote: Sorry, the second version sucks, because: 1. It's completely incompatible with previous versions. If you mean MC++, I agree. But C# isn't compatible with anything. With C++/CLI you can still reuse tons of tested and production ready C/C++ code. Daniel Turini wrote: I cannot write production code with it: it's still beta. Sure thing. But you can't really say that something "sucks" because it is still beta. Does ASP.NET 2.0 suck? Daniel Turini wrote: BTW, could you please post a version of your example that compiles on VS.NET 2003, so that we could compare C# with something that compiles with the current version of C++ on .NET? Well, yeah :)
#include "gc_scoped.h" //use google to find this little header file
...
String* ReadFirstLineFromFile( String* path ) {
gc_scoped <StreamReader*> r (new StreamReader(path) )
return r->ReadLine();
}
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
Nemanja Trifunovic wrote: Sure thing. But you can't really say that something "sucks" because it is still beta. You misunderstood me: C++ on .NET sucks. There will be a next version, which is currently on beta, that may or may not suck. No one can say now anything but "it looks like it will be cool". Any feature can be removed or added on the final feature (if you don't believe me, look at Longhorn removed features), so nothing can be said yet. I see dead pixels Yes, even I am blogging now!
-
Nemanja Trifunovic wrote: #include "gc_scoped.h" //use google to find this little header file Using external include files is cheating... Please, include the full source... I see dead pixels Yes, even I am blogging now!
Daniel Turini wrote: Using external include files is cheating Why? The code is already there and people are using it without even looking at the source code. One of the strongest point of C++ is the availability of external libraries that are easy to reuse in new applications. Who would use C++ without any external libraries? If we were to write everything from scratch each time we write a new software, I would at least use a more interesting language, like OCaml ;)
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
You don't even need to use the new operator for reference types? Like
StreamReader^ r = new StreamReader(...);
I do understand RAII and that StreamReader's destructor will serve the purpose of Dispose but not calling new for a reference type seems kinda weird to me. Particularly since in C++ (pure C++), your code will create an instance of r on the stack and new StreamReader will create one on the heap. In your case, r will be created on the managed heap and won't be deallocated till it gets GC'ed, right? Regards Senthil _____________________________ My Blog | My Articles | WinMacro
Yep :) The key point here is to distinguish between object destruction and memory reclamation. We are used to think that these two things happen at the same time, but it is not really a necessity. In this sample,
r
has stack semantics and it is irrelevant that memory really comes from GC heap, and that it will be reclaimed in non-deterministic future. The object is destroyed (meaning - the destructor is called) at the and of scope, and that's the point.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
Daniel Turini wrote: Using external include files is cheating Why? The code is already there and people are using it without even looking at the source code. One of the strongest point of C++ is the availability of external libraries that are easy to reuse in new applications. Who would use C++ without any external libraries? If we were to write everything from scratch each time we write a new software, I would at least use a more interesting language, like OCaml ;)
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
I was expecting this question. Because we're talking about language features here, using external files is cheating: you either include it, or you'll need to accept that C# has natural language processing features: NaturalLanguage.English.Process(sr.ReadLine()); Now, you just need to search the web and find some NLP library and I'll prove it to you. Hiding code in an external file to reduce the code size is cheating. I see dead pixels Yes, even I am blogging now!
-
In a thread ( http://www.codeproject.com/lounge.asp?forumid=1159&select=1121633&fr=51#xx1121181xx[^] ) started by Nish some suggests that C# is dead. Yeah? But which language are the majority of employers looking for when hunting for .Net developers. Bet it is C# and VB.Net and not C++. In fact, reading one head hunter's pamplet on salaries C++ is not even mentioned for .Net developers and the section on C++ developers talks about a 5 to 10% decrease in earings from last year. Maybe it is fun to be a C++ developer, and a blast from the past to work with legacy code, but it cain't be fun earning less than them managed code guys. Jerry Most people are willing to pay more to be amused than to be educated--Robert C. Savage, Life Lessons Toasty0.com Ladder League (beta) My Grandkids
As a slight aside, I've always found if you want job security write everything in Perl. Especially good if you are a contractor and are renegotiating a contract. :laugh: A good Perl programmer makes sure nobody can read what he has done.
"Je pense, donc je mange." - Rene Descartes 1689 - Just before his mother put his tea on the table. Shameless Plug - Distributed Database Transactions in .NET using COM+
-
In a thread ( http://www.codeproject.com/lounge.asp?forumid=1159&select=1121633&fr=51#xx1121181xx[^] ) started by Nish some suggests that C# is dead. Yeah? But which language are the majority of employers looking for when hunting for .Net developers. Bet it is C# and VB.Net and not C++. In fact, reading one head hunter's pamplet on salaries C++ is not even mentioned for .Net developers and the section on C++ developers talks about a 5 to 10% decrease in earings from last year. Maybe it is fun to be a C++ developer, and a blast from the past to work with legacy code, but it cain't be fun earning less than them managed code guys. Jerry Most people are willing to pay more to be amused than to be educated--Robert C. Savage, Life Lessons Toasty0.com Ladder League (beta) My Grandkids
Toasty0 wrote: ...when hunting for .Net developers. Bet it is C# and VB.Net and not C++. Of course. They are meant for .NET. Toasty0 wrote: Maybe it is fun to be a C++ developer, and a blast from the past to work with legacy code, but it cain't be fun earning less than them managed code guys. You are contradicting yourself. You talk about managed C++ for .NET and then talk about earning less than the managed code guys. Managed C++ is managed code. If you mean C++ in general earning less than managed code guys then you're comparing apples to oranges. Your head hunter's pamphlet talks about .NET developers. There's a whole world out there that doesn't care about .NET. (I'd venture a guess that it's the vast majority of the programming world) There are millions of embedded system developers, game programmers, scientific developers, kiosk terminal developers real-time critical application developers and on and on who still program in C, assembler and C++ (among other languages). .NET isn't anywhere on their horizon and likely never will be. A recent CP poll is a good example of this: of the millions and millions of mobile phones out there, how many use .NET? Very, very few (if any). I think the reason you can make a good living programming for .NET is that many educational institutions don't even teach it yet; competition is scarce. About 18 months ago I hired a .NET developer for a mapping extension we were building. Not a single applicant had any experience with .NET despite the presence of a very good college (now a university) in town with a computer science program! The fellow I ended up hiring had worked with Delphi programming real-time GPS related code. Did I care about .NET? Not really. Learning languages and frameworks is fairly easy compared to learning about GIS, GPS, mapping projections and GIS frameworks. He transitioned to C# fairly quickly. Earning money in a programming field is not just dependent on the programming languages you work with; your knowledge of the industry's specifics is just as, if not more, important. My 2c. Cheers, Drew.
-
I was expecting this question. Because we're talking about language features here, using external files is cheating: you either include it, or you'll need to accept that C# has natural language processing features: NaturalLanguage.English.Process(sr.ReadLine()); Now, you just need to search the web and find some NLP library and I'll prove it to you. Hiding code in an external file to reduce the code size is cheating. I see dead pixels Yes, even I am blogging now!
Daniel Turini wrote: Because we're talking about language features here, using external files is cheating: Not exactly. With C++ you can find a library that would produce the effect we were talking about, because C++ has language features (in this case templates and "__nogc" classes) that make this library possible. With C#, you can't find such a library because the language does not offer capabilities to make it (and believe me, I have tried). That's why C++ is a better language than C#: it offers more capabilities and puts less restrictions on libraries' writers.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
As a slight aside, I've always found if you want job security write everything in Perl. Especially good if you are a contractor and are renegotiating a contract. :laugh: A good Perl programmer makes sure nobody can read what he has done.
"Je pense, donc je mange." - Rene Descartes 1689 - Just before his mother put his tea on the table. Shameless Plug - Distributed Database Transactions in .NET using COM+
Giles wrote: A good Perl programmer makes sure nobody can read what he has done. In that case, I shall devise a programming language based around my handwriting, for as sure as night follows day, not only will other programmers be unable to read it, I won't be able to either :-D
-
Daniel Turini wrote: C++ on .NET sucks Compare[^]:
String^ ReadFirstLineFromFile( String^ path ) {
StreamReader r(path);
return r.ReadLine();
}with
String ReadFirstLineFromFile( String path ) {
using ( StreamReader r = new StreamReader(path) ) {
return r.ReadLine();
}
}Which one "sucks" here in your opinion?
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
BTW, you can also write the C# version like this:
string ReadFirstLineFromFile(string path)
{
using (StreamReader r = new StreamReader(path))
return r.ReadLine();
}Regards, Alvaro
Victory means exit strategy, and it's important for the President to explain to us what the exit strategy is. -- GWB, 1999.
-
John Cardinal wrote: Why support a few die hards with a munged together bastard child of C++ and .net? Because the federal government has not fully adopted C#, in fact C++ was only "recently" adopted, Ada requirements only died out a few years ago, and I have seen "new" stuff written for fortran only 4 years ago. .Net will be a tough one to convince someone to adopt 100% in US federal architectures. So a few of those "die hard" C++ users carry some massively big bucks to keep C++ alive and kicking. I don't necessarily agree with the federal MS only adoption of 3 years back, but this is part of that. _________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
Jeffry J. Brickley wrote: Because the federal government has not fully adopted C#, Which federal government are you talking about? The U.S. one? That's hardly relevant in the global scheme of things is it? The rest of the world is moving on, if the U.S. govt want's win32 apps they can build them themselves (which I'm sure they do anyway). So far no one has given any credible reason why MC++ should even exist. It's a product in search of a market which is always a bad sign. I understand people using c++ for win32 apps etc, but for .net apps? That's just completely pointless.
"A preoccupation with the next world pretty clearly signals an inability to cope credibly with this one."
-
sure it's not used that commonly anymore but what about game devs ? they use mostly C/C++ and that's a huge industry with f$%!loads of money in it. besides that, there are still a few places where C++ is used almost exclusively (OS/Kernel development, industrial strength graphics, etc etc) it aint just for fun(!) and legacy stuff. also, weren't java devs paid alot more than most a few years back ? :-D
Ummm...I think you're missing the point which is Managed c++ vs c#, NOT c++ versus c#. Game devs can use whatever the hell they want, but it's unlikely to be .net based is it?
"A preoccupation with the next world pretty clearly signals an inability to cope credibly with this one."
-
In a thread ( http://www.codeproject.com/lounge.asp?forumid=1159&select=1121633&fr=51#xx1121181xx[^] ) started by Nish some suggests that C# is dead. Yeah? But which language are the majority of employers looking for when hunting for .Net developers. Bet it is C# and VB.Net and not C++. In fact, reading one head hunter's pamplet on salaries C++ is not even mentioned for .Net developers and the section on C++ developers talks about a 5 to 10% decrease in earings from last year. Maybe it is fun to be a C++ developer, and a blast from the past to work with legacy code, but it cain't be fun earning less than them managed code guys. Jerry Most people are willing to pay more to be amused than to be educated--Robert C. Savage, Life Lessons Toasty0.com Ladder League (beta) My Grandkids
Wow... This whole thread sounds scarily like the C++ vs. VB debates from a few years back. With VB replaced by C#. What's scary is the number of people who've apparently switched sides... :suss:
You must be careful in the forest Broken glass and rusty nails If you're to bring back something for us I have bullets for sale...
-
Yep :) The key point here is to distinguish between object destruction and memory reclamation. We are used to think that these two things happen at the same time, but it is not really a necessity. In this sample,
r
has stack semantics and it is irrelevant that memory really comes from GC heap, and that it will be reclaimed in non-deterministic future. The object is destroyed (meaning - the destructor is called) at the and of scope, and that's the point.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
Does C++/CLI have the C# equivalent of structs? Or are structs just normal C++ classes (without the ref keyword)? Regards Senthil _____________________________ My Blog | My Articles | WinMacro
-
Wow... This whole thread sounds scarily like the C++ vs. VB debates from a few years back. With VB replaced by C#. What's scary is the number of people who've apparently switched sides... :suss:
You must be careful in the forest Broken glass and rusty nails If you're to bring back something for us I have bullets for sale...
Shog9 wrote: What's scary is the number of people who've apparently switched sides... Nah. As far as I can see, the "converts" were using C++ for wrong purpose anyway (form based, business data-centric apps). They should have switched to VB long time ago. VB6 is perfect for this kind of development, IMHO better than .NET.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
Does C++/CLI have the C# equivalent of structs? Or are structs just normal C++ classes (without the ref keyword)? Regards Senthil _____________________________ My Blog | My Articles | WinMacro
Equivalent of C#
struct
isvalue class
. Of course, you can usestruct
in place ofclass
just like in Standard C++, with the same meaning: the default access would be public rather than private.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
-
Jeffry J. Brickley wrote: Because the federal government has not fully adopted C#, Which federal government are you talking about? The U.S. one? That's hardly relevant in the global scheme of things is it? The rest of the world is moving on, if the U.S. govt want's win32 apps they can build them themselves (which I'm sure they do anyway). So far no one has given any credible reason why MC++ should even exist. It's a product in search of a market which is always a bad sign. I understand people using c++ for win32 apps etc, but for .net apps? That's just completely pointless.
"A preoccupation with the next world pretty clearly signals an inability to cope credibly with this one."
John Cardinal wrote: So far no one has given any credible reason why MC++ should even exist. Ever use the
#import
extension in VC++? That's the one that takes a good deal of the drudgery out of using COM from C++, by automatically generating wrapper classes for you. Sure, if your app is going to spend most of its time interacting with various pre-written COM objects, you're probably better off using VB6 or some other language intended to make this more or less seemless... but, for that 1% of your C++ app that benefits from using some COM stuff,#import
rocks. IMHO, that's why MC++ is important. It's the new#import
.You must be careful in the forest Broken glass and rusty nails If you're to bring back something for us I have bullets for sale...