|
-
May 5th, 2009, 05:35 PM
#1
C++ Being Left Out?
I just installed C++ 2008 .Net and it looks like there are not WPF, or LINQ options when making new projects and I don't know about WCF or XNA. In C# I have an option to add a Linq To C# class that let's me drag tables from the database explorer to it. In C++ I don't have any options to use linq or WPF.
Does that mean C++ is slowly being replaced by newer languages?
Thanks,
- pgrammer
-
May 5th, 2009, 06:46 PM
#2
Re: C++ Being Left Out?
C++ is very much alive and it will remain to be so for a very long time to come.
The main issue to remember here is that C++ is a standards language that is being 'maintained' by a large comittee so overall changes to the C++ language and core libraries tend to happen slowly.
C# however is a "closed standard" that is being entirely controlled by a single body (microsoft). As a result it's a lot easier for MS to implement language changes and language features to new technology.
There is a trend to move the UI part of the applications away from low level languages like C++, but use more UI oriented languages and environments like C# and the .NET framework. However the core "bussiness logic" of a large applications benefits from a lower level language like C++ because size and performance tend to matter more.
Note that even though you won't find C++ language features for some of these new technologies, that doesn't mean you can't use them. There's libraries and COM objects that offer the features you're asking for C++.
-
May 5th, 2009, 07:07 PM
#3
Re: C++ Being Left Out?
Does that mean C++ is slowly being replaced by newer languages?
No, a view that interprets the facts you mentioned would assume that Windows would remain the primary dominant force of the technology and industry, and that anything non .NET is of diminishing value, which isn't true.
I know it can be all too easy to focus heavily on a particular industrial subsection like .NET and get the impression that little else matters, but that's not true.
What may be true, however, is that C++ isn't primary a .NET development tool, despite early claims by VS developers at MS saying it was going to be a "first class .NET language" like all the others. You may be correct in saying that for .Net development, C++ is not going to be foremost in features. .Net is primarily a C#, VB and J# phenomenon, and it's genuine value ongoing may align with what happens with Microsoft in the years to come. It's difficult to image MS loosing dominance, I know - but there was a time when it was hard to imagine IBM wouldn't always be the only 'real' computer manufacturer (back in the 70's and early 80's).
I've always thought it was an odd fit to incorporate C++ in the .NET paradigm, as it was presented. The notion of managed memory is foreign to C++, the interface of an OS as objects is fine, but these aren't C++ objects, so the .Net API is foreign to C++. That's why the solution evolved out of "managed C++", now C++/CLI, but the results aren't comfortable for some of us, and I'm left wondering why bother? (Yes, I know the arguments pro and con).
C++ is dominant for use in certain application targets, particularly high performance, shrink wrap products, games and engines (SQL servers for example). It's not particularly suited for the application domain for which Java is most suitable, and C# is better than Java and that and a wide range of targets between the two.
Instead of saying C++ is being phase out, I'd argue that it's with respect to .Net application targets that it was never really "into" in the first place.
If my post was interesting or helpful, perhaps you would consider clicking the 'rate this post' to let me know (middle icon of the group in the upper right of the post).
-
May 5th, 2009, 11:59 PM
#4
Re: C++ Being Left Out?
So what is the "best" IDE for C++? Really, I've always thought that C++ was a MS product. I normally use C# but I want to learn C++ I am using C++ Express Edition right now. I know there is a Visual version of C++ but I heard Win32 is old and messy. There is newer Windows Forms I think. But what is the most current version of C++ and what IDE should I use?
I like the rich UI tools like DataGridView so if I'm understanding I should create my program framework and program kernel projects in C++ and I'm guess I should use C# for the UI portion. Possibly even use C# to write the MS SQL data provider so I can access Linq. The MySQL data provider could be written in C++ I'm assuming.
Like a point of sale cash register program could be written in this fashion? It seems the kernel logic/business stuff could be handled in C++
I'm confused because C++ is supposed to be faster then other languages. But all .Net languages compile to the same MSIL and therefore they all run at the same speed. So when I use C++ Express Edition, even if I don't select the managed project would it still compile to .Net? Or would it use a MS compiler that will produce high speed apps?
I'm just learning C++ and have a book on it. Its a copyright 2009 book so its new stuff it is the CodeGuru book from this website. It uses only notepad to make the examples. Notepad is not good enough to make a full scale enterprise application it would be too hard and have no syntax checking or debugging.
What should I use for an IDE and what compiler? I have Visual Studio 6.0 but I think that its very outdated now.
Thanks,
- pgrammer
-
May 6th, 2009, 01:43 PM
#5
Re: C++ Being Left Out?
As you've probably realized since your post, C++ was never a Microsoft product or invention. It was developed in AT&T 'labs' by Bjourne Stroustrup in the middle 80's, and enhanced by a few generations in the years since. The standard we're using these days was finalized around '99, and I think revisited in '03 if memory serves, but it's specification is governed by a standards committee (name eludes me at the moment). There are a great many C++ compilers available, several are free, and generally there's one that targets virtually every OS and CPU platform.
It is an extension to C (the name hints that it's the 'next' C, get it?).
As such, it is a performance oriented language choice. The original intent of C was to create a language that functions at or near the level of assembler (the native language of the CPU), yet was portable to other CPU's. Several C constructs translate into 1 or 2 assembler instructions readily, and many of it's seemingly arcane concepts, like pointers, are directly associated with the way CPU's operate. This is central to it's speed. C++ is similar, but offers leverage for object oriented development and design, which offers enhanced productivity and reliability, if well used. It is not a language for casual students (this is true of C and C++).
The .NET languages don't relate directly to CPU level operations; the nature of the CLR is that it 'emulates' a CPU (perhaps some might say simulate). There is considerable leverage beyond what is common to C and C++ developers with respect to the issues of memory management, and a very wide range of services provided by classes inherent in .NET.
In order to create .NET applications in C++, one must consider the difference between .NET applications and C++ applications. You can simply choose to target .NET and build a C++ application, but that application will not share .NET objects with C# application code unless you use the extensions now known as C++/CLI.
Personally I don't see much reason to write mixed language applications, though I understand the arguments in favor. There is rarely enough demand for performance to warrant the implied productivity loss in mixing the paradigms. C# has good performance, and if the type of applications being developed are suited for C#, it is best, in my personal opinion, to stay entirely in C#. Similarly, if one were using Java, it's best to stay in Java.
There are situations, rare ones, where the performance of C++ is desired, and perhaps there's some reason for C++ developers to write .NET applications, but it's not a good fit. C++/CLI is an extension to C++, so from a student's perspective, there are two independent subjects to learn. It's confusing enough just to keep a combination of various languages and technologies in one's mind, adding to that list isn't genuinely helpful. In my opinion it's more productive to become adept at a core set of technologies - specialized - than it is to learn all of them. It spreads one quite thin.
The learning curve for C++ is about 18 months (as estimated by Stroustrup), but this assume the student was already somewhat familiar with other languages that had similar syntax to C (C# would qualify even better). After that, it can take several years to become really proficient as a serious C++ developer/engineer. For example, I wouldn't hire anyone for work on my team with less than 5 year's experience for C++ development, but I might consider someone with only 2 years for C# or Java development. The reason is simply that C++ requires more personal discipline than C# or Java, because the language is filled with various pitfalls and options that allow poor practices. This is a point made by Java and C# proponents in favor of those languages.
I agree that Visual Studio is a superior IDE. The C++ compiler in VS2008 is about as current and compliant as it gets, the debugger is extremely stable and effective, the profile tools (available in certain versions) are quite good. However, the nature of the kind of targets most developers use C++ for do not lend themselves to the need for visual tools like those you mentioned. While there may be a significant volume of dialog work, C++ developers often develop targets of wide variety, including games, engines (like SQL servers), communications middle ware - a great many types of applications where the primary focus of the work does not involve the creation of GUI code as much as the attention to calculation, operation, performance oriented management of data, etc. Don't assume I mean that you don't find applications made in C++ that address more common types of applications, we can and do, but if you've found C# suitable for your target types, you'll probably be better served there.
Business logic is not something you'll find most commonly implemented in C++ either, though it's certainly possible. I disagree with myself in some examples, because when performance is the premiere objective, C++ may be the best tool to use - C++ developers will happily make anything. My point is that unless that premium applies, the primary goal is more likely programmer productivity. While seasoned developers are highly productive in C++, less expensive and less experienced programmers are "safe" in C#, and that is therefore common in corporate or business type application targets.
If my post was interesting or helpful, perhaps you would consider clicking the 'rate this post' to let me know (middle icon of the group in the upper right of the post).
-
May 6th, 2009, 01:47 PM
#6
-
May 7th, 2009, 10:25 AM
#7
Re: C++ Being Left Out?
Thanks for all your help on this matter. I am starting college this fall and am tworn between which degree program to go for. I can't decide between networking or programming. Both are state of the art programs.
The programming course focuses mostly on .Net and Java. It seems its hard to find a C++ course no matter where I go. Except maybe in video game/mutlimedia programs. I guess I will take the .Net courses if I go the programming route. But I've always wanted to learn C++ just because its so complicated.
My main passion is for databases. Designing databases and managing SQL server as well as T-SQL. its also hard for me to find and programs focuses on databases. Both the networking and programming programs have database courses. But I'm not sure if either would provide enough knowledge to become a database admin/programmer/designer. I'm really good at designing databases if I have one really strong point it is database design.
Thanks,
- pgrammer
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|