tags:

views:

249

answers:

10

I'm getting a little tired of building web applications. Feels like same thing over and over again. Are there any other cool things you can do. I'm maybe getting to start coding in C++. Any suggestions for tips in that area? Should I delve into Qt or MFC? Any suggestions?

+3  A: 

If you're just starting out in C++, I recommend starting with some simple console-based applications first. Get used to the syntax and some fundamentals like strong typing, pointers, and understanding the difference between pointers and references. (Depending on your experience as a developer, you may already know all or most of the theory behind these concepts.)

If you're comfortable with these things, building GUI applications is easier (although still far from trivial.) I'd recommend going with a toolkit like Qt rather than MFC, which is largely deprecated in favor of dot NET, if I'm not mistaken.

Edit: also, consider trying out a language like C# instead. C# is newer, a little more cohesive, and lets you use dot NET for building Windows GUI applications.

Tom
I'm mostly a .NET developer in ASP.NET and winforms. I've done some small console C++ applications, nothing special.
marko
PS: if you are at all interested in developing cross-platform applications, also consider trying out Java. Java shares a lot of syntactical style with C++, shares a few object-oriented programming concepts, but can be easier to learn.
Tom
+1  A: 

Buy "The C Programming Language" by Kernighan and Ritchie and work through it.

Ideally, you also have access to an OSX/Linux system and can work on that. (C and Unix go hand in hand).

Paul Nathan
Not the best plan for learning C++, though.
David Thornley
No, but if he's a javascript or php programmer, he needs the low-level stuff before getting into C++(which is not only low-level).
Paul Nathan
+3  A: 

Write a game. An action game. Like, a shoot-them up for example.

You'll discover the other face of programming. Use whatever you want to make it. C++ is a good choice, but any language will be good. C++ will be harder to "master" than other languages but learning it will make you understand a lot about other languages. But that's your choice : the project domain is more important than the language (that is just the tool).

Just try to make a game, I think it will really be different and you'll discover a lot of interesting things. I recommand a shoot them up because it's visual, make you learn basic graphic rendering, basic collision management and is a good base for a potentially interesting game (if you add a feature that makes it stand appart) that will keep your motivations for learning.

Klaim
+1  A: 

If you're used to working in relatively high-level languages such as C# or PHP, going back to something like C++ where you need to do your own memory allocation and other low-level stuff will probably seem cumbersome. Personally, I was happier making the switch in the other direction, and having much more done for me.

But if you do want a challenge, C++ could be a good option. Or, go straight to embedded. Robotics is a very fun topic, try to fit interesting things (that really move!) inside the 2-KB RAM environment of a PIC microcontroller :-)

Wim
I personally think the PIC is a horrible chip. It's a cheap little kid's toy, a step up from a BASIC Stamp. It's good if you don't mind having structured code at all, whatsoever... at least the older PICs were. i don't know if the newer PIC architectures have changed.
San Jacinto
The PIC is not a toy, they sell 1 billion of them each year. You probably own at least 10 of them, hidden away in your car, battery charger and kitchen appliances. And how you code on them, well, don't expect a C++ template library, multiple levels of inheritance or major re-use of components to fit inside a 16KB program memory. You do need to squeeze a bit. But that shouldn't mean you have to thrown all structure out of the window, more to the contrary...
Wim
BTW referring to your last edit: C18 (the variant of C used on the newer PICs) is very similar to regular C. I do agree that earlier versions were a lot less compliant to the standard and indeed much messier!
Wim
@Wim yes, i know it's used in a billion things. that's because it's dirt cheap and the things it is used in are extremely simple command-and-control type of applications. When you try to step it up to something more interesting for a hobbiest, this little chip shows its weakness. I prefer an HC12 or 8051 (either one still programmed in assembly!) to a PIC. Maybe part of problem for disliking them was never using a C compiler, just assembly.
San Jacinto
Actually, according to Wikipedia, the C18 addressed a lot of my annoyances :)
San Jacinto
@San oh yeah their micro-architecture is *very* strange, I'm so glad they do have a descent C compiler. Also, these days, the path upwards of PIC18 > PIC24 > dsPIC pretty much fills the range between 74HC00 and ARM with a (reasonably) similar architecture (well, programming environment, at least).
Wim
+3  A: 

Look into mobile application development like on Android or iphone. C/C++ will come in handy.

thekaido
+7  A: 

My latest interest is in Robotics. You can get a microcontroller for about $30 (arduino.cc) - and miscellaneous motors off of E-bay. I also have some cheap rangefinders and a GPS receiver - each of them under $30...

I build web apps as well. I'm not really tired of it, but I spend all my spare time programming in C.

cinqoTimo
+1 for not torturing the embedded newbie with PIC... AVR is so much nicer.
Andrew McGregor
You should try the newer PICs. I agree the older architectures were a bit twisted, but since PIC18 there's really nothing medieval about them anymore...
Wim
+1  A: 

C++ is great and all, but writing GUIs in MFC is just stupidly painfully compared to any other reasonable framework out there, like .NET (VB, C#, C++/CLI, pick your language) or Cocoa/Obj-C on the Mac OS X / iPhone OS. Qt is probably better than MFC.

Jared Updike
It still beats straight Win32, having maintained programs that used both.
David Thornley
Well... actually, I disagree... I prefer straight Win32 to MFC...
Ninefingers
A: 

I would recommend trying to implement something useful in C/C++. Is these a utility in your operating system you don't like? That you think you could improve? Have you always wanted to do X easily and have a good idea? No matter how big it might seem, research it. Learning an OSes API will teach you a lot about C/C++. Add a user interface in the library of your choice to learn even more. Basically, push the envelope a bit - building a calculator is great or a little console app for learning a few things, but building a fully fledged app with a purpose will really teach you things.

Ninefingers
Yeah, it's a lot more work in a full-fledged app than trying out things.
marko
A: 

Add intelligence to a simple game using a neural network. I've always wanted to add a neural net to Oware to see if it improves its wins.

If your into pain, you could correct flaws on Windows Vista and 7. :-(

Thomas Matthews
Microsoft Windows is proprietary and closed-source, so you can't do much there.
Joey Adams
A: 

I'd recommend moving to Python rather than C++ if you're coming from a web design background. Get good at object-oriented programming, encapsulation, and related things before you go to C++ and have to deal with pointers and cleaning up after yourself.

Mike DeSimone
I'm comfortable with object-oriented programming mostly C#.
marko