Need a Direction?

Hello,

I have been studying programming in my spare time for a while and have finished all my books now.

I would not say that I have mastered any specific language but feel competent enough to use.

I have been learning c/c++/c# and python and feel lost now!

When I started out I wanted to learn how to write my own custom build applications and the closest I have come is windows forms, which is great but I want to create my own gui's and I want to be able to create command prompt applications that are like edit.

I have been looking a little at the windows api documentation which I can find online, which seems really advanced for me. Reading it makes it seem to me like I have have missed a step inbetween.

I guess when I started learning c++ and c# I was expecting to be programming pixels on the screen, being able to work with animations movies sound?

I want to create apps with my own gui, and program all my events with key strokes mouse events etc.

Basically I finished my c++ in 24 hours book I understand the language, windows forms and .NET for web programming.

Where do I go now?

What did you guys learn next?

Regards

Steve
If what you want is just making GUIs, look at C#.NET and wpf with visual studio, it has never been easier to make GUI with it. WIndows API is very complicated to use.
If you want to program with 2D graphics, take a look at SFML with C++.
It can be daunting to try and decide on a programming language before you even know what they are used for. I would probably try to get a good idea of what I want to do before setting out and learning.

You said you want to write programs like Edit; I'm guessing this is not your ultimate goal, but it suggests that you want to create programs in windows, that maybe use the windows interface. Since you already understand the fundamentals of C++, I would probably recommend sticking with it.

C++ is about as close as you can get to a program that does literally anything you could possibly want a PC to do, without requiring you to learn the ins and outs of how computers actually work (although that does help, as you will discover later at your own pace). With Visual Studio (Express version is free) you can make windows applications and interfaces really easily using forms.

Other higher level languages, such as Python, C#, java, etc. can also do more or less anything, will possibly be quicker to write (once you have learnt the language of course), will be easier to debug, and will, in practice, almost always be slower.

I personally have only had a lot of experience with Python, C++, Matlab (basically python) and PHP. I must say that I have gotten the most joy out of using C++, simply because in using it you actually learn about how a computer works, there are tons of ways of making things go faster, and at the end you feel like you've really created something. With Matlab or Python, writing a program is much like writing an excel spreadsheet - it doesn't really feel like programming to me.

Having said that, if you really just want to use programming languages as a tool (to say, do some complex calculations or write a script to automate some task) you'd be far better off using something like Python.

If you want to write software that doesn't really do anything complicated, or isn't CPU critical, then I'd recommend something like C# or Java, possibly even Visual Basic (although that last one is a bit of a turd IMHO).

If you really want to write software that is fast, such as for games or high performance applications, I would certainly recommend C++ or, in the case of high performance computing, possibly FORTRAN or even Assembler.

Finally, if you want to learn a language that can do everything, and do it anywhere between amazingly and pretty well, just learn C++; that's where I'm at right now...
Last edited on
Thanks for the input not a fan of WPF and only really use c# for my web stuff.

The thing that is bugging me is when I am trying to right a program I spend all my time looking through libraries that others have written trying to piece together each part of the program.
I want to be writing my own libraries and working the operating system directly!

I believe I have to do this using the API so I know I'm limited in ways?
you may also consider using some gui framework that can be used from within c++, such as gtk or Qt. They are easier to use than windows api, there are fine tutorials for them and it makes your applications more portable to other operating systems.
I believe I have to do this using the API so I know I'm limited in ways?


I'm not sure what you mean by this: what exactly is it about the OS that you want to manipulate?

There are a lot of preconceptions about programming and how it works, from those who haven't been exposed to it or have little experience. So I think it would be best for you to just think about what it is that you are trying to do; ie. what is the final product you are hoping to create. Then try to figure out how people have done similar things in the past.

To give you an example, I wanted to learn C++ and I wanted to build a neural network, so I did the seemingly logical thing and built a neural network in C++. Now that I have done more research on the topic I have discovered that FORTRAN is actually significantly better suited to this type of task. That's not to say C++ is a bad choice, quite the contrary; it's doing the job very well and I'm impressed with its performance, but if I had the choice to choose whether I should learn FORTRAN or C++ for this particular task, FORTRAN would have been the correct choice.

Having said that I enjoy C++ and it's a far more versatile language, so it's not all bad news, but my point is that it pays to step back and think about what you are trying to do.
Topic archived. No new replies allowed.