|
>> it does not take much for less-technically-experienced upper
>> management types to jump on the Buzzword Bandwagon.
>
> Between the bandwagon and the simple fact that MFC is unlikely
> to grow much more, I'd say that MFC developers in two years
> will be as common as Win32 developers now
Good point. I did not look at it that way (Denial, perhaps? )
> A lot of the 'simplicity' of C# seems to come at the expense
> of flexibility, and the assumption that I'm too stupid to do
> stuff for myself.
Same with Java, IMHO. Now I may be considered a control freak, but I believe that to fully utilize the power of something, I have to have precise control over it.
> There are things I like about the language, [...]
I like the "dream" of the .Net subsystem (CLR, CLI, etc.): all these different languages (hell, you could even create your own programming language!) used to create components that can be assembled into applications with ease. And although I may not like what it takes to get there, there may be no other way!
> [...] Because a language implimenter cannot decide what will
> be the best approach to every problem the language may be
> used to overcome, nor should they presume their ideas about
> style are the only valid ones.
Amen, Brother!
'Ya know, I believe you and I may have had words in the past, I agree with you 100% here.
Peace!
-=- James.
|
|
|
|
|
A lot of the 'simplicity' of C# seems to come at the expense of flexibility, and the assumption that I'm too stupid to do stuff for myself. There are things I like about the language, from what little I have read, but I've also been reading 'Design and Evolution of C++' and I particularly love Stroustrups statement that a language should not constrain a user from doing something because it's a bad idea, it should instead be as flexible as possible and then education is the key to making sure programmers code well. Why ? Because a language implimenter cannot decide what will be the best approach to every problem the language may be used to overcome, nor should they presume their ideas about style are the only valid ones.
****
It *is* true that the simplicity of C# comes at a cost of less low-level control.
Whether that's a good thing or a bad thing depends on your perspective. Using a language like C is simpler than programming in assembly language, but you do lose some of the flexibility of assembler.
I think the real question is how much you're willing to pay for that flexibility. I was a C++ programmer for a number of years, and I liked that I could do things like custom allocators, but after writing almost exclusively in C# for a couple of years, I've found that I usually don't mind the loss of control. And I can write apps in less than half the time it took me in C++.
I also find, for the most part, that I flow better with C#. Part of that's the language, and part of that's the richer framework (I'm very happy with the .NET Regex class).
The logical extension to the "more flexibility" is better is Intentional Programming, where you get to decide what your programming language is. I think that Stroustrup's wrong.
The important thing for a language to do is provide enough flexibility so the programmer can be efficient without providing so much flexibility (and complexity) that it makes things harder.
In other words, flexibility implies complexity. A more complex language can be used to solve more problems than a less complex language, but it won't be as good at solving the 90% of the applications that don't require the extra complexity.
In my C++ career, I wrote hundreds of classes that had arrays of object pointers in them, and for each of those I had to write a destructor that cleaned things up. I find a language that rids me of such work a very nice thing indeed.
Of course, your mileage will vary. If you need to count clock cycles in your application, you need full control.
****
|
|
|
|
|
Eric Gunnerson (MS) wrote:
Using a language like C is simpler than programming in assembly language, but you do lose some of the flexibility of assembler.
You're obviously right, and this is obviously the point to a degree - people who learn C# now won't even notice what they have lost, but conversely I'd suggest VC does a pretty good job of optimising my code to the point that asm would largely be a waste of time.
Eric Gunnerson (MS) wrote:
I've found that I usually don't mind the loss of control.
Hell, I *usually* don't do things the hard way in C++ either, the point is not the general state of affairs, but the time that that loss of control makes it very difficult to impliment something as you would like.
Eric Gunnerson (MS) wrote:
The important thing for a language to do is provide enough flexibility so the programmer can be efficient without providing so much flexibility (and complexity) that it makes things harder.
That's Stroustrup's point as well. Where-ever a construct is considered bad, it is not removed, but an alternative mechanism is provided so that the bad way of doing things is not needed. How many C++ programmers are dumb enough to use malloc instead of new, for example ? It doesn't make things harder to provide features to the language, so long as they can be hidden. For example, a programmer can learn C++ for some time without knowing about templates, or namespaces. On the other hand, I am amazed how much time people spend learn C style strings before they get the ease of std::string.
Eric Gunnerson (MS) wrote:
In other words, flexibility implies complexity. A more complex language can be used to solve more problems than a less complex language, but it won't be as good at solving the 90% of the applications that don't require the extra complexity.
I disagree strongly, for the reasons I give above. Another point Stroustrup makes is that if you free new programmers from having to understand memory management, for example, will lead in some degree to uneducated programmers who will show their inabilities in other, harder to track down ways, because there bad code will probably compile and run, it will be more likely to have scalability, reusability or simple design issues.
Eric Gunnerson (MS) wrote:
In my C++ career, I wrote hundreds of classes that had arrays of object pointers in them, and for each of those I had to write a destructor that cleaned things up. I find a language that rids me of such work a very nice thing indeed.
You should have used std::vector, written one functor that called delete on every item in the vector, and used it over and over. I suppose working for Microsoft you were forced to use the ugly MFC container classes ? I'm told C# essentially has containers of void *'s that need casting ( in effect, I realise there are no pointers ). Is that the case ? Can you tell me what will happen on the container front when generics arrive ?
Eric Gunnerson (MS) wrote:
Of course, your mileage will vary. If you need to count clock cycles in your application, you need full control.
In the past that has been the case, but in my new job, I suspect we will be using C# a lot, and I have therefore started taking a more serious look. I suspect C# will make a compelling case for itself in a lot of cases for the work I will now be doing.
I suspect when Strousturp wrote C++ he was dealing with a far more educated user base, and it is the idea of dumbing down languages that scares me, not because things should be hard for their own sake, but because making it easy at the expense of power only degrades both the products we create, and our profession as a whole. For all that, I am interested enough in C# that others here accuse me of being a zealot, so I guess I'm sufficiently between camps for anyone to find a reason to hate me I guess that's what I get for thinking for myself...
I'm really interested to hear your comments on C# container classes especially, because what I have heard concerns me, and no matter what, I'm expecting less than the STL, which it's not hard to tell I love dearly.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
Christian Graus wrote:
If you think they are going to be so different, you're left completely unable to comment.
Well, I don't care to be honest - I'm not buying them and I will rather wait and see what will come out of it rather than pretending anything else. People buy it just to justify their n-years of "experience" in .NET and C# on their resumes. I guess idiocy never ends - companies expect people to have a real-life experience on the non-released product, what a nonsense!
Christian Graus wrote:
So you don't use COM either ? Or MFC ( a technology whose days are now most certainly numbered ) ? How long did it take you to go from C to C++ ?
Well, interesting you would mention COM. I thought that COM was supposed to solve and overcome all the same problems that .NET is claiming to solve. It was supposed to be ported to other platforms and conquer the world...
Eh, dreams and promises...
|
|
|
|
|
George wrote:
companies expect people to have a real-life experience on the non-released product, what a nonsense!
I couldn't agree more - but it's great, because this is a good time to write a list of companies you would never consider working for because they are obviously clueless.
On the other hand the company I am about to start with did not ask for C#, but when I asked they said they had run some internal case studies and liked what they saw. THAT is the sort of thinking I like - not racing to use something new, but having the sense and foresight to evaluate it so when it is released, they understand what it has to offer, and have the skills they need to impliment it.
George wrote:
Well, interesting you would mention COM. I thought that COM was supposed to solve and overcome all the same problems that .NET is claiming to solve. It was supposed to be ported to other platforms and conquer the world...
Back then Bill Gates was not quite as annoyed with Scott McNealy, I think the cross platform thing is much more likely to occur this time.
Are you saying you've never experienced the benefit of component technology because you knew one day it would be replaced with something, which you again intend not to use ? I can probably guess your age from this - if you were programming before 1985 you'd still be using C, and before 1972, who knows ?
The point is that regardless if .NET lives forever or not, it's a technology that is being released now, and if it helps to solve problems you come across, you only give your competitor an advantage by refusing to consider it.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
Christian Graus wrote:
Are you saying you've never experienced the benefit of component technology because you knew one day it would be replaced with something, which you again intend not to use ?
No, I was just giving an example in order to learn from history - not all the promises and hype from MS is going to happen, simply because it's...well..hype and promises
As a matter of fact I use COM for quite some time and recently I wrote a really cool ActiveX component to centralize the user input processing and error checking. I used ATL also with no problems. Heck, I even used VB for about a year - it was one of those application where VB was used for GUI and VC++ / C++ for business logic. GUI was a crap and a pain in the ass to maintain and I promised myself to avoid VB or anything like it in future.
I did started to use COM more intensively only about a year ago thought. At the begining I was still learning the quirks of it, but now I beat all the people around in that area simply because I had a solid ground in C++ and software methodology and so I could understand how the things work instead of being a monkey and only use the wizards.
Christian Graus wrote:
I can probably guess your age from this - if you were programming before 1985 you'd still be using C, and before 1972, who knows ?
You are not even close
To be precise I started the commercial programming around 1995 just when Windows 95 came out - in order to make money to cover my study at the Univeristy. Right now I'm working on a web-enabled application that uses a lot of ActiveX stuff, it's all in VC++ and I laught at anyone telling me that VB is better for GUI.
|
|
|
|
|
George wrote:
that write useless books about the product that was not even released yet (and it's not even released as of today)
Actually, the .NET SDK has been available for some time Click Here to download. MSDN subscribers can download VS.NET (which is NOT required to create .NET applications, just the SDK) and the CD's came in the mail today for our MSDN shipment.
There are several books on the market for C# that are about the final version, not the beta, including Professional C# by Wrox Press and Programming Microsoft Windows with C# by Charles Petzold from MS Press.
George wrote:
Why waste time to learn yet another temporary technology?
Java isn't a temporary technology is it? It has been around for a while now and it is here to stay.
Your lack of knowledge about .NET makes you no better than the average Slashdotter with your skewed view of reality.
Jason Gerard
"I can't take his money, I can't print my own, I have to work for money. Why don't I just lay down and die?" -- Homer Simpson
|
|
|
|
|
George wrote:
To help to make money to all that people that write useless books about the product that was not even released yet (and it's not even released as of today)?
Actually you're quite wrong here. C# 1.0 has been released for almost a month now; Visual C# hasn't yet been released
I've never seen why you stress the point about it not being released yet; there is a two fold reason to using beta software
- help debug it thus making it better
- you get familiar with it while your competition (say in my case, you) ignore it
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
James T. Johnson wrote:
Actually you're quite wrong here. C# 1.0 has been released for almost a month now; Visual C# hasn't yet been released
You know what - release my ass
James T. Johnson wrote:
I've never seen why you stress the point about it not being released yet
Well, it's because MS and many others are pretending that beta technology is good to create a product already. It's not!
With new technologies is like with discovering the new land - the first pioneers always do something stupid and die. It's the "second wawe" that walking other the pioneer's dead bodies achieves the success - learning from their mistakes...
|
|
|
|
|
George wrote:
You know what - release my ass
You let go first!
George wrote:
the first pioneers always do something stupid and die. It's the "second wawe" that walking other the pioneer's dead bodies achieves the success - learning from their mistakes..
What are you doing then?!?!? You should be pushing those technologies on your competitors!
In all honesty though, you do have a point.
However not everything dealing with .NET is a risk; the basis of it was COM+ 2.0 so it has/had a firm basis already. Because .NET can interface with COM and the Win32 API via P/Invoke its risk factor is reduced. You can continue to develop the main part of your apps with COM/C and then try .NET out on it to see if it works for you.
Or if you prefer you can write your COM components with .NET for your testing.
Now, most of my work is done server side with a few client apps here and there; I also don't do programming full time so I can make an evaluation of .NET without putting the company I work for at a risk. So far my evaluation has been great with a strong community already out there to help answer picky questions when needed.
Of course, who cares what I think though; only you (or your boss) can decide if .NET works for you; but you absolutely positively cannot make that decision without trying it. Until someone within your company tries it you only rely on what your competitors say, and why should you listen to them?
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
James T. Johnson wrote:
What are you doing then?!?!? You should be pushing those technologies on your competitors!
Hm, maybe I should clarify a bit - we are making an in-house applications, we have no compatitors and the only factor we are battling is time
|
|
|
|
|
Well in that case, good luck and God speed
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Christian Graus wrote:
Have you bought any books on C# ? Have you used it at all ? If not, then your statements have more to do with technofear than any basis in fact. I may well decide that C# sucks, but I will learn it first, and then decide. I may well decide that .NET is useless for me, but I'll decide based on fact, not hearsay, and ultimately that means trying it for myself.
I have the same attitude. My problem is I have a big fat book on C# (Troelsen's C# and the .NET platform), but so much more is happening in the C++ world regarding templates -- STL, ATL 7, WTL, Loki, Boost, etc. that I find more exciting and interesting. For example, the ability to use policy classes to customize template code offers much more reusability than what is offered with C# or Java. I see the trend in the C++ world shifting to designing quality focused libraries that can be fine-tuned to the task at hand, rather than using a big monolithic class library that takes months to explore and offers only a single take-it-or-leave-it approach.
C++ is still so dynamic that it's where I end up spending most of my time.
CodeGuy
The WTL newsgroup: over 1200 members! Be a part of it. http://groups.yahoo.com/group/wtl
|
|
|
|
|
CodeGuy wrote:
My problem is I have a big fat book on C# (Troelsen's C# and the .NET platform),
I chose that book as well, it's pretty damn good IMO.
CodeGuy wrote:
but so much more is happening in the C++ world regarding templates -- STL, ATL 7, WTL, Loki, Boost, etc.
STL is hardly 'happening', it's been here for a while. But I get your drift, and I agree to some extent.
CodeGuy wrote:
For example, the ability to use policy classes to customize template code offers much more reusability than what is offered with C# or Java.
Loki apparently compiles under VC++.NET internally at Microsoft, so I'm looking forward to their releasing the service pack. I bought that book as well on my travels and I agree it is amazing stuff. Of course all .NET languages are getting generics, so who is to say the technique won't work in C# soon enough ?
CodeGuy wrote:
C++ is still so dynamic that it's where I end up spending most of my time.
I tend to put my home time into things I don't get to play with at work. I'll be learning ATL at work in my new job, and using MFC in my other job, so I'll focus my hometime equally between working through 'Modern C++ Desgin' and my C# book, but probably put more coding time into C#, simply because my new work is already using it internally and will use it for release software when the compiler is released.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
>>My problem is I have a big fat book on C# (Troelsen's C# and the .NET platform),
>I chose that book as well, it's pretty damn good IMO.
Oh, I agree -- it's super. I just wish I could get to it! Troelsen is a great writer.
Of course all .NET languages are getting generics, so who is to say the technique won't work in C# soon enough ?
I'd sure be happy if they implemented it, but I wonder if they will drag their feet. I think they might wait until the C++ community hashes out some of the problems and restrictions on templates in the Standard. It could be too much of a moving target, especially since they will have to support all that generic typing in the CLR. (Just thinking out loud; don't mind me.)
CodeGuy
The WTL newsgroup: over 1200 members! Be a part of it. http://groups.yahoo.com/group/wtl
|
|
|
|
|
Christian Graus wrote:
Of course all .NET languages are getting generics, so who is to say the technique won't work in C# soon enough ?
And when (if?) they implement generics, then their current collection classes will become "deprecated", so .NET framework classes will look pretty much like Java library - full of deprecated classes and interfaces. Anyway, the whole .NET is just Java in the mirror.
I vote pro drink
|
|
|
|
|
Nemanja Trifunovic wrote:
And when (if?) they implement generics, then their current collection classes will become "deprecated", so .NET framework classes will look pretty much like Java library - full of deprecated classes and interfaces. Anyway, the whole .NET is just Java in the mirror.
I agree that .NET is largely Bill Gates trying to outdo Scott McNealy, but I'd suggest that just because they impliment the ability to code in genercis does not mean they will replace what container classes they have. Adding generics is different to adding libraries that use them. I dunno how their current container classes work, but if they work, then there's no need to replace them, surely ?
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
Christian Graus wrote:
Adding generics is different to adding libraries that use them.
I agree. There is much more to generics than container classes.
Christian Graus wrote:
I dunno how their current container classes work, but if they work, then there's no need to replace them, surely
If you ever worked with MFC collection classes, then you can say that .NET collections work pretty much like CObArray. When the generics are included, they will make something like CArray.
CObArray is bad because it does not give you type-safety, and you need to do some casting whenever you pull anything from it. Same goes for .NET collection classes: they contain only objects, which must be casted to whatever-we-think-they-really-are at the time you pick it.
I vote pro drink
|
|
|
|
|
Nemanja Trifunovic wrote:
If you ever worked with MFC collection classes, then you can say that .NET collections work pretty much like CObArray. When the generics are included, they will make something like CArray.
Yuck, yuck, yuck. In that case, I have no doubt generics will be with us soon.
One would hope they would provide something like STL instead of something like the vile containers that come with MFC. Hell, if they give me generics and they provide more sucky CArray type classes, I'll sit down and write my own.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
MS has provided us with a collection generator which will produce a typed collection class for us to use. The downside is that you'd have to run the generator for every type you generate.
I wish I could find the link, but back for Beta 1 or Beta 2 someone had come up with a library that created typed collections at runtime; if I remember correctly you applied an attribute to a class, then at runtime you could create that class using the type you specify.
*James' eyes strain as he looks through 2000 e-mails*
Found it!
http://www.newtelligence.com/downloads/ntf/ntf01.asp
Now I'm gonna have to see if this works any better for me than using the generator for every collection I need.
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Cool - thanks for the link.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|
Nemanja Trifunovic wrote:
Anyway, the whole .NET is just Java in the mirror.
EXACTLY!!!
- Khaled
In C we could create our own bugs. Now with C++ we can inherit them.
|
|
|
|
|
What do you mean M$ "Bob notwithstanding"??? Bob was one of the finest products Microsoft ever produced! I'm on the edge of my seat waiting for the XP version.
|
|
|
|
|
I'll be honest - I've never seen it, try though I might.
Christian
I have come to clean zee pooollll. - Michael Martin Dec 30, 2001
Picture the daffodil. And while you do that, I'll be over here going through your stuff.
|
|
|
|
|