Quote:
So hey Nick...while I'm wasting (everyones) time...what do you think of .net and C# and all that?
Hmmm - before I got a chance to reply the thread jumped a whole page size. :)
It's nice to see the old OS wars start up again, with some mild Microsoft-bashing thrown in.
My answer is that I haven't touched C# and .net and don't intend to, in the near future. Microsoft mean well in many cases, but they seem to be huge juggernaut that keep changing the operating system, interfaces, rules and everything else, just when people are getting used to them.
When I go to help people with their XP installations, for example, I have to hunt around to see under what nice "friendly" spot Microsoft have hidden their Network control panel, or their shared folders.
My problem is that I understand what the operating system is trying to do (eg. send data from one PC to another) but can't work out under what "wizard" or "helpful walk-through" thing they have hidden the configuration to it.
I had the same problem a few years ago with database access. First there was proprietary interfaces, then ODBC, then Microsoft added DAO, and then ADO, and then something else (Active Database?), each time changing the way you access a database, and just about when I was used to using the previous version. They may have thousands of programmers inventing all these new "better" way of doing database access, but I only have one brain, and can't keep up with their rule changes every year.
What Microsoft seem to be doing, intentionally or not, is to keep pushing you down a proprietary path. VB is a great example. Try running your VB programs (or MUSHclient plugins) on Linux. You can't, can you, because VB is proprietary. However C and C++ are not. I am guessing that C# and .net are also another attempt to bite at the "let's keep it proprietary" cherry.
Let's look at MUSHclient for an example. When I wrote that I had done (a year or so earlier) a programming course *run by Microsoft* in which they recommended using MFC (Microsoft Foundation Class library). It actually was a nice development environment, and made doing dialog boxes, menus etc. nice and easy.
However now that people as saying "how about MUSHclient on Linux?" or "MUSHclient on the Mac?" and I now see what has happened. MFC is Microsoft, and it is *not* simple to change to another way of doing things (eg. STL which I am gradually learning). Even STL (Standard Template Library) does not solve all the things that MFC does (like doing dialog boxes easily).
Someone had written something that did a similar thing to MFC and called it wxWindows, which I experimented with. Apparently Microsoft's lawyers got to them and it is now renamed wxWidgets. Seems you can't use the word "windows" these days any more. I suppose those things on the wall of my room will have to become "transparent viewing panels" now. ;)
An interesting comparison is the "help" given by Microsoft for the STL library compared to the help for their own MFC library.
Here is their description for "for_each":
for_each
template<class InIt, class Fun>
Fun for_each(InIt first, InIt last, Fun f);
The template function evaluates f(*(first + N)) once for
each N in the range [0, last - first). It then returns f.
The call f(*(first + N)) must not alter *(first + N).
See the related sample program.
To be honest, that description does not get me very excited, or even give me much idea of how to use it. Compare that to my description given on the web page:
http://www.gammon.com.au/forum/?bbsubject_id=2899
My description there shows how to actually use for_each and gives examples of how useful it can be.
However Microsoft's help for its own MFC functions are much more detailed, with example programs, and example source supplied for complete solutions.
My point is that now I want to steer away from proprietary tools, and use "standard" tools. These would be:
- C
- C++
- STL
- Open source operating systems (eg. Linux, OpenBSD)
- Open source web generation (eg. PHP)
- Open source SQL databases
In recent projects, eg. writing a MUD server, whilst I compile on Visual C++ for ease of use, I make sure that the code compiles, and executes also under g++ on Linux, making any minor changes needed to ensure this happens. That way I know the server will also run on Linux, Mac OS/X and so on.
|