I’m an experienced programmer, but I’ve never done much on the Windows platform, and none at all on XP or Vista. Now I want to start trying some DVD-element programming, and I want to know what people’s opinions are on the easiest client programming environment and API and other related tools are.
Is .NET 2.x the best way to go? Isn’t .NET 3 available, too?
What about programming environments? What books do you consider the best?
No. ASP.NET is intended for network programming. The .NET framework supports desktop programming, as well. I’m sure there are way more desktop applications written in .NET than web ones.
VB.NET is generally considered the easiest of the languages to learn, but if you know one .NET language, you know them all – the framework does most of the work, so the language you choose is just a little syntax. .NET itself, and all of its calling languages, are object-oriented.
C# is probably the trendiest language these days. All .NET apps have the limitation that your application won’t be portable to non-Windows platforms unless you rigidly stick to the portion of .NET implemented by Mono – tough to do, usually.
But if you’re really trying to do low-level work, you won’t be happy with any of the .NET languages, and you’ll want to use the Win32 SDK and C or C++.
Great stuff, thanks! Just the kind of information I’ve been looking for.
So since I won’t be doing topmost-level stuff and will be working with data streams at a reasonably low level (such as calling DVD-related library routines if I can find them), I should stick to C++ (or C).
What about MFC? I’m not *certain *what that is, but it *sounds *like a set of classes you can use with C++ code to perform various system level functions such as file I/O and GUI stuff. Is that right? Can you recommend a good MFC book?
And what about programming environments? I would want an integrated environment with built-in debugging and perhaps code management. Any suggestions there?
As far as easiest, I’d go with Python . It’s pretty mature nowadays and has quite a few GUI frameworks to choose from. It has libraries such as PyMedia that may suit your purposes.
MFC is a library that wraps portions of the Windows API into C++ classes.
It’s not a good idea to use it for new development. You should use .NET, if you’re going to go with a Windows only framework.
If you’re going to go with .NET, and don’t feel like spending money, Microsoft has express versions of Visual C++, C#, VB, etc. The debugger in the express versions are rather limited.
For Python development, I’d recommend ActiveState’s Komodo. They have Komodo Edit which is free, or Komodo IDE which you pay for.
Actually, I’d recommend looking for that first. The API you find will likely dictate the language. (Most low-level API’s have a C interface. That’s easy to call from C or C++, a little harder from Java, a little harder still from Perl/Python, and quite a nusciance from .NET. If the API uses exotic data types, you’ll pretty much be stuck with C/C++.
Yes, MFC is an older, lower-level C++ application framework from Microsoft. It’s a very thin OOP layer over top of the Win32 SDK. I find it easier to write directly to Win32 for anything that doesn’t involve a lot of windows/dialogs; if you want to do complicated window things (splitting panels, especially), MFC is easier. There probably haven’t been many MFC books written recently; it’s not a very common API for new code any more (although at one time it was what almost everything for Windows was written in).
ambushed, I’m more or less in your boat, but my interest is in scientific programming of Windows apps rather than DVD anything.
I opted for the object-oriented C-family languages (which are all so very nearly the same I think they’re more like dialects). I’m concentrating on C# but also doing some C++. I started with the free Microsoft VisualStudio C# Express Edition and the free DigitalMars C++ compiler but a couple weeks ago spent $300 on VisualStudio 2005, which has C++ and C# and J# (which is Java-like) and Visual Basic. I’m having a blast. Experience is always good but if starting over I’d have done VS2005 first.
I read Jesse Liberty’s Programming C# and some of Bruce Eckel’s Thinking in C++ vol 1 and 2. Also Prata’s C++ book and a few others, and some O’Reilly Nutshell guides and Pocket guides. I also am reading up on Object Oriented programming, Design Patterns (look for the Gang of Four book by Erich Gamma et al), and the UML (Universal Modeling Language).
And I think the .NET framework is a big advance, maybe an inevitable one.
Napier: Good to see you’re getting along. FYI J# is a dead end that will not be included in the next version of VS (“Orcas”) to be released 4Q07 / 1Q08. So don’t invest too much effort there.
OP: Some thoughts:
Since you have a narrow application area in mind, find the/a library that does the functionality you want. You don’t want to be reinveinting low-level DVD handling. Library availability may dictate your choice of dev environment.
.NET is the way to go for all future Windows development above the hardware level.
Hey, yeah, everybody, that’s right - LSLGuy took all sorts of time to answer similar questions when I posted them weeks ago. And it was a huge help! Thanks again! I’ll always be somewhat in your debt, LSLGuy.
Another thought - there are a right proper boatload of people working in the Object Oriented C family of languages, and several forums where you can get excellent help and see excellent activity and discussions. Microsoft has forums at msdn.com (that’s “Microsoft Developer’s Network”). Codeproject.com is another great collection of forums. I got very insightful answers to problems I posted in both forums just the other day.
It does look like VisualBasic is a popular easy starting point too, and Python is very active and popular and perhaps less work than the C family. Perhaps all choices are equally good. But I am still happy to feel so much in the mainstream with the C family.
LSLGuy, do you think they’ll replace J# with something else Javalike? Or do you guess they think C# is sufficiently Javalike as it is?
I’m guessing they think Java is sufficiently Java-like. There was some litigation a few years back about making “Java” languages that were incompatible with real Java (hence the name change to J#), and given the popularity of C#, I just don’t think they’re interested in Java compatibility in .NET any more.
My take is simply that J# and C# occupy a similar niche. J# did not have the popular uptake they hoped for, so they’re killing it for lack of interest. The fact that anything J-like just might have a litigation tail attached just makes the “kill it” decision easier for the bean counters.
Ultimately, MSFT is much more a sales-driven company than a technology-driven company. They throw a lot of stuff out there & see what the market backs. The stuff that gets popular survives to version 2, then 3, etc. The stuff that doesn’t attract a following dies shortly after v1.0 SP1.
I highly recommend using C# and .NET. If you need to use C or C++ libraries, you can write .NET wrappers to traverse the managed/unmanaged code boundary, and combine your C++ with C# when needed.
But C# is A) much easier to learn, B) much better supported these days in terms of web resources for learning and finding sample and free code, C) Much better integrated with the .NET environment.
.NET 3.0 adds some new tricks such as a messaging engine and WPF (a wonderful replacement for Wndows Forms). We’re building large, high performance enterprise applications in it.
The only exception is if you’re having to do a lot of real-time stuff with very high performance requirements. Managed code can have problems when performance has to be absolutely deterministic. But if you don’t need that, save yourself the headaches of writing in C++ and go straight to C# and .NET.
If you want to work in C++ I strongly recommend Borland’s CBuilder which as a nice VB-like front end with a C++ engine.
I really like C# as a language, but when I want to do something lower-level I still prefer C++. CBuilder will let you build a very rich front end quickly and also allow you to access the power of C++.
However don’t rule out VB. Many of us who were trained in comp-sci are snobs when it comes to the BASIC language, but VB can do quite a bit and might get you up and running more quickly than other languages.
On the C# versus C++ question, I second what the last posters said. However, there are more books and libraries out there that are specific to C++, for example Bruce Eckel’s Thinking in C++, which many people rave about (according to the reviews on Amazon.com). I started reading Vol1 and do like it a great deal. Bruce Eckel’s web site does refer to a Thinking in C# project, but says simply that it is suspended (?). I found a draft of this work elsewhere, but after scanning it briefly I wondered if it was just an edit of his C++ book wherein he marks out all the material that will have to change.
People who are new to object oriented programming will find that that is its own entire topic, as is also the topic of design patterns, and for that matter the Universal Modeling Language that people use to diagram OOP classes and objects and design patterns. Most of the books about these further topics use C++ or Java (or both) as the language, when they do discuss specific code examples (which is not all the time). Further perusing the Amazon reviews I see the small numbers of books that discuss design patterns using C# examples are not the ones people rate most highly (and there are a few more such books listed with publication dates in the coming months).
I take from all these observations that one might find it necessary to try some things in C++, and maybe Java, or at least feel comfortable enough with reading them to enjoy the examples.
Which is fine. They really are very similar in many ways. From this beginner’s point of view, one could read code for a class without really noticing which language it’s in, or one might notice whether the get and set accessors are built in, or whether Main is capitalized, or notice which library call is used to write to the console. Most of the spirit of the thing is the same. Maybe the biggest difference is that C# requires that everything be inside a class, with no open C code, and C++ considers pointers kind of necessary whereas C# considers them kind of illegal. But some programming languages change more between major versions than C++ changed to be Java or Java changed to be C#, in the HO of this beginner.
It’s great this thread is still going, thanks everyone!
I’ve pulled my GoogleFu muscle out trying to find a code or object library that parses DVD data, but the ONLY thing I’ve found is the PyMedia library mentioned above.
I’ve asked at Doom9, but nobody has provided any links or references to such a library. Until I can find one (and I very much would like to find another besides PyMedia, since it may not be adequate to my needs), I think I’ll have to stay with Python.
Does anyone have any ideas where else I can ask besides doom9? I’m not getting any help from VideoHelp Programming forum either.
And, I think Standard Edition is all you need, except that you should check the license for that edition to make sure it lets you sell products without royalties. The more advanced editions have extra tools for team project management and other high-level advantages. MS’s web site had a pretty clear comparison.