View Full Version : Should I learn C++ or (C#/VB)?
<insertwittyusernamehere>
9th March 2009, 04:15 AM
I know Java fairly well and I would like to move onto mobile programming. I've read up on the aforementioned programming languages and my understanding is that C++ is hard and C#/VB are easier, but slower. The more I read the more I am confused however. In C++, I understand that there's Win32 programming, MFC, and ATL. In C#, there's .Net. Can someone please help me make sense of all of this?
sheennick123456
9th March 2009, 04:33 AM
i would suggest first go for C++
and then move further
stepw
9th March 2009, 08:31 PM
Depends on what you are going to be developing.
C/C++ is better for performance critical applications with minimal GUI.
.NET + C#/VB is easier and safer at the cost of some overhead.
You'd want to learn all if you are serious about WM development.
stephj
10th March 2009, 01:03 PM
The nearest language to Java is C#. The difference between VB and C# is more or less personal preference, as they both use the .NET framework. Most of your programming is creating the .NET objects, setting their properties, and calling their methods, to get them to do what you want. The language that this is done in, is more or less irrelevant.
Personally I would steer clear of C++ unless you are going down the Win32 route. Here your program has to respond to the WM_XXXX messages via the 'hdc' of the screen. (Hardware device context, you can't draw directly to it.) This method has a pretty steep learning curve. ATL and MFC are wrappers to make Win32 more object orientated, and supply more usable functions. .NET rendered ATL and MFC more or less obsolete, but they are still included for backward compatability, and are still prefered by some programmers.
The performance hit on a .NET program only occurs on its load, when the loader has to call the CLR JIT compiler to create the ARM native code. C++ Win32 will compile down to native ARM code from the start. If you do not have any ATL or MFC the compiled EXE can just be copied straight to the PPC and it will run without the need for any runtime libaries, dlls etc., as the core dlls are already part of the PPC operating system.
As mentioned above you may want to try both. The C# and C++ environments are completely different.
Chainfire
10th March 2009, 01:35 PM
It all depends on what you want to do.
For more lowlevel and speed-dependant things, I'd say go the C++ route. Someone above here mentions that .Net is only slower at load time - this is most definitely not true. I have rewritten several apps that started out in .Net to native languages because they were too slow. The speed difference is fenominal - though less with .Net 3.5, but this is not available on all devices yet, especially not on stock ROMs.
C# is a lot easier than the overly complicated and cryptic C++, but again it has drawbacks. It is not as easy to do 'edgy' things in C# though often it is not impossible. C# is much easier than C++ for UI's as well, which can be a real PITA in C++. C# hides many of the more intricate lowlevels things for you and does these automatically. If needed, you can always create a C# user interface that calls C++ DLLs for the lowlevel stuff or whenever you need to.
As for VB, just don't go there.
I see you say you hail from Java. In that case, C# will not be very difficult for you. C# is generally taking the best of Java, C++, and Object (Delphi) Pascal, throws them together, mixes them up, and the result is pretty good.
Personally I am of the opinion that managed languages (C#, Java) do not a good programmer make, and you should know at least the basics of a native language (C, C++, Object Pascal, whatever), their quirks, and why these things are. This will teach you a lot about how things work on a lower level, and while you don't absolutely need to know these things they can still be very helpful when writing in a "higher" / managed language.
Then again, my personal preference for development is Object Pascal (FreePascal), which combines the power of native with the ease of RAD. I wouldn't advise anyone else to go there though, it's just what I grew up with (I have no issue with using C++/C#/whatever, they're just not what I prefer).
Cicatrize
25th March 2009, 05:09 PM
As for VB, just don't go there.
I don't understand why anyone would say this. In .NET, C# and VB have the same exact capabilities. They even use the same class libraries. Neither really has any advantages over the other.
@OP: I've done work in C# and VB.NET, and I can tell you that it's quite simplified and a fantastic OOP solution to mobile programming. The only drawback is that the loading time for a .NET application is a LOT slower than a C++ mobile app. A C#/VB.NET mobile app with one Form with nothing else takes a couple seconds to load, whereas a C++ mobile app will launch instantly. So, it's up to you. Do you want it to be simple, sacrificing a couple seconds at load time, or do you want to get down to the nitty gritty and work with C++ to save those couple seconds? :)
Rudegar
25th March 2009, 09:34 PM
vb in general have a poor syntax which most programmers
stay clear off and vb have a long history of poorly designed and programmed
programs don by ½ armature's
and earlier vb's have had serious issues as not being real exe's requiring special
runtime dll's not being thread-safe and the likes
just too much ugliness and bad history in vb
for anybody to recommend it to anybody
Cicatrize
25th March 2009, 11:23 PM
Yeah, but that was then, and this is now. VB.NET is only slightly more wordy than C# .NET, and they both have the same capabilities and same speed. If the choice was between .NET and C++, I'd say go C++ though.
Chainfire
26th March 2009, 10:39 PM
Yeah, but that was then, and this is now. VB.NET is only slightly more wordy than C# .NET, and they both have the same capabilities and same speed. If the choice was between .NET and C++, I'd say go C++ though.
As Rudagar said, there's a lot of bad history. What remains in VB.Net is the syntax. IMHO it encourages sloppy coding and it's frankly plain silly. If you feel differently, that's fine by me. Either way, if you're going for .Net, why would you use anything else than a language specifically designed from the ground up for the framework: C# ? To boot, C# is an awesome language as well. I don't see any reason at all why you would use VB instead. Again, that's personal opinion.
romanbirg
27th March 2009, 01:39 AM
Hi, I am very interested in learning C++ or VB. I had a VB class in high school, but I forgot it all...
I've got my feet dipped in water with Java, and I want to learn to make applications for my phone. I have no idea where to start. I was thinking of starting with a simple application like maybe a today plugin that will update my FB status.
Digging a little into it, it seems that's not as simple as I figured.
I really don't know where to start. Could someone point me in the right direction?
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.