Microsoft and C#

Whoops, I guess I was thinking of the data grid when I wrote that. I don’t know enough about InputPanel to say whether you could fix this particular problem by subclassing.

Subclassing lets you replace any virtual method from the base class. If the problem you’re having is caused by one of InputPanel’s virtual methods, then you may be able to solve it, as long as you can rewrite the method without having to access any of InputPanel’s private members.

Patching the source code is the best way to fix bugs, yes. But you can’t blame this on OOP; procedural compilers can ship without the source code for their libraries too. If one of the functions in a C library is broken, and you don’t have the source, you have to rewrite that function and every other library function that refers to it.

Are you honestly saying that it’s unusual to find a bug in a Microsoft control? I don’t know if the object is buggy or not. It may be the a bug in the IDE code generator. Or it may be that I did something wrong. I don’t know. But I do know that we’ve had to write around bugs in VBCE and SQL Server CE. So I wouldn’t be at all shocked to discover problems in C# for CE.

Cerowyn
Thanks for your unsolicited testimonial Mr Gates. :smiley:

Try reading what I wrote again.

Sorry if it upsets you that I don’t mindlessly bleat the ignorant anti-Microsoft bullshit that seeps out of so many knuckle-draggers these days. Unlike most, my opinions are objective. Here’s what those notorious Microsoft synchophants at Novell have to say (via the Mono [.NET for Linux] project site) about .NET:

At my company, I have Macs, BSD boxes and Windows. I choose the tools and environments best suited to the needs of my users and the costs involved… not based on knee-jerk prejudices and misguided agendas.

Er, excuse me…?

I’ve found DOZENS of bugs in MS products. And I’m not talking “this didn’t work the way I think it should.” I’m talking weirdo bugs that cause all sorts of bad things to happen. Bugs that are certified by Microsoft AS BUGS.

Background: I worked for years at a very large company that had a working relationship with Microsoft, and previous to that at a company that had a contract with Microsoft to develop code that eventually found its way into Win2K. In both cases, we had very close relations with Microsoft. When we found bugs that appeared to be in MS’s code, we called up our contact and worked it through with Microsoft itself. Sure, not everything we found turned out to be MS’s bug, but we found plenty of real bugs in MS’s code.

Aside from that, Microsoft has a HUGE knowledge base out there, with thousands of known bugs documented there. Why is it so nutty that a coder might run across one of these?

For what it’s worth, I’m no MS basher, either. I more or less like most MS products. However, to say the development tools are not buggy is not at all true.

Cerowyn
*Sorry if it upsets you that I don’t mindlessly bleat the ignorant anti-Microsoft bullshit that seeps out of so many knuckle-draggers these days. *

Well I gues I am one of those “knuckle-draggers” to whom you refer and so forgive me for failing to see the brilliance of the corporate entity known as MicroSoft™. Actually my remark was meant in good-natured fun. However this is “the Pit” and so recieving a less than courteous reply is to be expected.

Okay, it was kind of late when I wrote that and I admit that I did skim over the part about “a basic, simple piece of code”. So I did end up inadvertently attacking a strawman. You didn’t say that bugs in general were unusual. But I have to disagree with even your more limited claim. I’ve run across any number of problems in Microsoft code that seemed like obvious things that should have been found in QA. I’m not necessarily blaming Microsoft, I’ve seen the same thing in non-Microsoft products. Don’t get me started complaining about Cognos’ scripting language, for example. Bugs happen and, IMHO, the more complex things get, the more likely bugs become. And the more likely bugs become, the more likely it becomes that something stupid will slip past QA. To me this seems to be almost a mathematical certainty.[sup]*[/sup] So I wasn’t specifically slamming your precious Microsoft.

One more point, neither I nor anyone else here is a “knuckle-dragger”, if that’s what you were implying.

[sup]*[/sup]This raises an interesting question that might be worthy of it’s own thread. Is there some “critical mass” of complexity beyond which you get nothing but diminishing returns?

Athena, first of all, please re-read what I posted. I have no doubt that Microsoft products are full of bugs – it is a truism that no non-trivial piece of code is ever bug-free. What I pointed out was that on balance, when a programmer suggests to me that a trivial piece of straight-forward code exposes that a shipped component does not work, chances are that the problem does not in fact lie with that component. And that has nothing to do with Microsoft in particular, it applies to all commercial software.

wolf_meister, if you’re not spouting mindlessly uninformed opinions, I wasn’t accusing you of being knuckle-dragger. Given that I hold Gates in pretty low regard, I guess I didn’t see the humour in your attempt. I apologize if I misconstrued your attempt, but I suspect that you wouldn’t be thrilled if I addressed you as Mr. McNealy, either.

I dunno…the datagrid is a powerful object but faced with coding 500 lines to get the damn column color to change dynamically or just writing out a table and populating its rows with data…I might choose creating the table. I have chosen this method many times. Of course it all depends on the situation, yours of which I have no idea.

But you’re right. Microsoft made a really cool, powerful object, but then made it freaking difficult to work with. I wish it had more types of attributes, with more control over what those attributes are. I wish for god’s sake, they put some kind of aggregation capability in it.

Cerowyn
Geez I did not think that I was spouting mindlessly uninformed opinions, to use your vernacular.

Basically, my ape’s brain has come to 2 conclusions about MicroSoft:

  1. They release their products LONG before they have been properly debugged.
  2. Their alleged “help” files are bloated, disorganized, incomprehensible paragraphs of “tech-speak” written by people who either want to sound self-important or don’t really care if anyone understands their “help” or not.

Heck, I can cite a great example. A few years ago, I wanted to set up a home network. So, I went to the Windows 2000 Help section. I wanted to learn some fundamental concepts so I thought I’d look up router. Here, without changing 1 word, is their definition “In a Windows 2000 environment, helps LAN’s and WAN’s achieve interoperability and connectivity and can link LAN’s that have different network topologies (such as Ethernet and Token Ring). Routers match packet headers to a LAN segment and choose the best path for the packet, optimizing network performance”.

Well with help like that, a home network practically builds itself doesn’t it? :rolleyes:
I was glad I could get the 2 computers to share the modem connection.

And davidm thanks for defending all the people who posted on this thread. I don’t think they are knuckle-draggers either.

I’m curious as to why you seem to keep identifying with the target of my scorn, when nowhere did I even hint that I considered you to be included. Had I thought that you were, I definitely would not have bothered posting to the thread; there are dozens of threads every day on this board that don’t merit responding to because they are mindless spoutings.

Microsoft are no better and no worse than most of the other big software vendors. There are certainly examples of much better ways of producing and packaging software than Microsoft seems capable of, but there are also much worse. My company has recently been doing integration with another company’s technology, and we spent weeks banging our heads against their documentation (which includes numerous examples, not one of which worked with their latest release). It took numerous emails back and forth with their engineers before we finally worried the missing details out of them to get things to work.

Except that the whole point of Java was to be platform-independent, and the whole point of C# is to lock you into Microsoft. Aside from that, I guess I could see your point.

That simply isn’t true. C# and the CLI are ECMA standards, and there’s already more than one implementation for Linux (Mono and Portable.NET).

Sure, some of the .NET libraries are only available on Windows (for now), but the same is true of many C++ libraries, and there are portable, open source replacements (e.g. Gtk# instead of Windows Forms).

The MSDN is not a “Learn C++ in 21 days”. It’s a reference manual which assumes the user already has a mastery of the basic concepts of the language and is just looking for particulars to fill in the blanks. It sounds like your asking MS docs to be what they aren’t.

And I still don’t think you get Cerowyn’s point, he/she’s not denying that MS bugs exist, he/she is pointing out the overwhelmingly human tendancy to instantly attribute blame to foriegn code when you hit a bug and then spend hours looking in that specific region when the real answer might be several dozens of lines away and would have popped out at you if you took a step back for a moment.

Sure, its POSSIBLE that you may have found a bug in windows form code and it’s POSSIBLE that it may be a bug that a simple google search would not bring up but the chances of that are vanishingly small. MS library code is not much more or less buggy than code by other vendors of a similar nature and has generally been checked over by thousands of previous users using that same control trying to do exactly what you are doing. If there was a bug, chances are it’s been reported and probably fixed. Your code has been looked over by 1 pair or sleep-deprived, not too careful eyes. If I had to bet money on it, I would say the error lies in your code and not theirs.

Interestingly, one of the primary reasons the GNOME project is staving off using Mono in its desktop is because the legal ramifications of doing so are unclear. They’re waiting to get some kind of guarantee from Microsoft that any patents they might have on the .NET framework won’t be used against them.

It freaks me out to see files with names like “blam.exe” on a Linux box.

Shalmanese
I know it is very rare for code to generate errors because of bugs in a utility or compiler. I was merely stating that MS releases products that have not have a sufficient QA review and it seems everyone in this posting is in agreement.

The MSDN is not a “Learn C++ in 21 days”. It’s a reference manual which assumes the user already has a mastery of the basic concepts of the language and is just looking for particulars to fill in the blanks. It sounds like your asking MS docs to be what they aren’t.

You mean something that is only 2 keyclicks away (click START then HELP) is something that is intended for advanced users of Windows 2000 ?
Wow, maybe I should try and find a “Help” section that is only a tenth of a keyclick away. :rolleyes:
As I said, I was only looking up a definition of “router”. Sorry Doctor Morbius.
“The fool, the meddling idiot. As though his ape’s brain could contain the secrets of the Krell.”

According to the Mono project, only ASP.NET, ADO.NET, and Windows Forms are questionable in that respect. Any patents on the core parts of .NET are licensed under royalty free, reasonable, and non-discriminatory terms, according to Jim Miller of MS:

As a .Net developer my take on the Framework 1.1 is that it remains somewhat immature. Not buggy, or bad as such, but rather something that should be taken as a good start instead of the ultimate end of the system.

What’s there is, by and large, good, though I do agree wholeheartedly with the criticisms levelled at the DataGrid control. I’ve been there with the DataGridStyle subclasses and it’s a lot of effort to return something that should have been there in the first place. The Framework should have shipped with more options than “Simple text box” and “Simple check box”. I can see why it happened; the control itself is flexible to the nth degree, but ships with too few Style subclasses, quite possibly due to time or resource constraints.

In my work with .Net so far I’ve found that I have often to resort to calling unmanaged APIs, with all the associated danger of memory leakage and buffer overflows you expose yourself to when using the Runtime.Interop library. Version two of the Framework takes up some, but not all, of this slack.

The Framework will continue to develop over time and the controls and libraries will mature as MS receives feedback on their performance.

As regards the more open nature of C# and the core Framework, I think MS is, for a change, following the right path and appears to have genuine intentions. The ingrained mistrust of MS by the open source community will take some overcoming, of course, but hopefully time will enable people to set aside their ideological differences. The core Framework needs to grow to encompass portable forms and data access systems as part of the standard in order to become truly useful, but hopefully this will come with time.

I sometimes suspect that MS exporting C# as an ECMA standard is a tactic to show up Sun and some of the hypocrisy in the open source community. Java remains a proprietary system owned and managed by a single company who have, in the past at least, aggressively defended that ownership in court (against MS, among others). It invites those who condemn MS software for its proprietary nature to put their money where their mouth is and embrace the open C# standard over proprietary Java.

It is a tool to expose those who condemn MS simply because they are MS (a group that has quite a few members - though, given MS’s behaviour in the past, it’s not hard to see how this became the case). Genuine believers in the pursuit of open standards should be happy to see C#, while those who condemn it are forced to come up with genuine criticisms that can drive the improvement of the language or admit that they do not like it simply because of its association with MS - a position unworthy of dispassionate consideration in the marketplace.

I’d like to think this move has the potential to let things progress beyond the endless throwing of FUD from all sides in the software community, but I fear that it will take a long time and many more good-faith moves from MS to see this happen.

Still, it’s a beginning and, I hope, a step on the road to a community ruled less by ideology and prejudice and more by the genuine and pragmatic kind of evaluations it needs.

Unfortunately, that’s not quite good enough for them. Here’s a melodramatic explanation of the opposing viewpoint:

http://www.gnome.org/~seth/blog/mono