Ok i have a few questions. I'm fairly new to programming.

Im starting to get a little functional with java, i can handle GUI's, threads, exceptions, 2d graphics, JDBC etc. I took a class in C++ only to find that I am not even close to producing graphics or GUI's yet.

In C++ I have made it as far as pointers, references, inheritance, polymorphism, streams.

I want to at least dabble in graphics and GUI's with c++.

I ordered the OpenGL super bible, mainly to flip through the pages, but would like to write some Graphics code before too long.

Are OpenGL and the windows API something that i could realistically expect to learn from reading a book, or is that something i will need to learn in a classroom?

I think that when being class taught you are worse off. You tend to take the information you are fed and that is enough for you, you think it is correct. However when you teach yourself from books and the internet you wonder wether the resources information is actually 100% correct. So this means you then take the time to contnue to look around the internet for other sources and seeks help from other people about each indervidual topic.

This means that you gain a much better undertsnading of how things work and more likely a much better approach to doing things. Also you will learn valuable skills of being able to work out things more on your own rather than copying from class taught material!

The Win32 API is quite nice to work with and is VERY well documented on MSDN making it reasonable easy to learn, as long as you do not let it overwhelm you to start with.

I have never used OpenGL so I cannot comment on it directly but I have had a look at DirectX 9 which doesn't make it too complicated to use graphics. The main aspect of graphics programming is all about the Math behind it. If you can get yourself a good OpenGL reference then with a bit of common sense you can implement almost anything your mathematicals skills allow.

Chris

Thanks for the replies. After a few Java classes, and a C++ class, I ended up with the feeling that they were more of an intro to the languages than anything else. I've been reading everything i can get my hands on c++, vb, c#, java, php, assembly. But it seems difficult to make the jump from the basic coding that is taught in the classroom, to the actual skills that are needed to make useful applications.

Im working in another industry, so im not getting any experience at work, so I guess I will pick up a couple of books and try to comprehend what they are talking about.

> I think that when being class taught you are worse off.
Yeah, judging from all the brain-damage we see posted around these parts saying "my teacher said use this....", where some snippet of code is flat-out wrong.

> I think that when being class taught you are worse off.
Yeah, judging from all the brain-damage we see posted around these parts saying "my teacher said use this....", where some snippet of code is flat-out wrong.

I'm dreading starting my Computer Science course in september...don't wanna get into an argument with my lecturer....thankfully i'll be doing Java so I wont go skitz at him about void main() lmao

I'm dreading starting my Computer Science course in september...don't wanna get into an argument with my lecturer....thankfully i'll be doing Java so I wont go skitz at him about void main() lmao

lol

Coming back to the original post. (sorry).

I think it is a level of depth. For Java, yes you do GUI/ graphics from a previously written library. For the c++ you are seeing a deeper part of computer programming, i.e. the lower level, the bit that builds the library. If you do more embedded stuff, you would learn assembler.

Interestingly there is a shift between the [old?] self-taught programmers who did basic (until aged 10) - assembler - C - C++ - Java, and the CS programmers who did Java-C++-C-assembler in that order. The self-taught know that the CS people don't understand pointers/memory correctly and the CS people know that the self-taught spend way to long programming something that is a one line library call, [even if it isn't exactly what was wanted].

Your course, could have done it the other way around (C++ first then java), but java hides some of the pointer stuff from you.

It is important to code at the lowest level required and no lower.
For my work, we use absolutely no java, it is 85% c++/fortran, some Schema, some Octave, but then I do numerical stuff that burn a few 1000 days of CPU per run. The graphics are C++ but so much of the rest is, it was a natural extension.

Would we use java? just for the graphics (had we not had to build the numerical engine). Yes! Could we do the numerics in java, maybe but the extra hardware to run it would have been prohibitively expensive [it costs approximately 2000 dollars to power and cool a single computer core -- either quad/dual per year]. Factors 2 are big, and factors 10 are life changing.

p.s To Freaky_Chris: First off, I envisaged you as a maths major :)
Bit surprised actually. Second, the process of "arguing" with the lectures is part of the university process, by the time you are doing your PhD you will sit and have coffee each day with several profs. and "discuss" about this/that, because that is one of the fastest ways to learn.

Coming back to the original post. (sorry).

I think it is a level of depth. For Java, yes you do GUI/ graphics from a previously written library. For the c++ you are seeing a deeper part of computer programming, i.e. the lower level, the bit that builds the library. If you do more embedded stuff, you would learn assembler.

Interestingly there is a shift between the [old?] self-taught programmers who did basic (until aged 10) - assembler - C - C++ - Java, and the CS programmers who did Java-C++-C-assembler in that order. The self-taught know that the CS people don't understand pointers/memory correctly and the CS people know that the self-taught spend way to long programming something that is a one line library call, [even if it isn't exactly what was wanted].

Your course, could have done it the other way around (C++ first then java), but java hides some of the pointer stuff from you.

It is important to code at the lowest level required and no lower.
For my work, we use absolutely no java, it is 85% c++/fortran, some Schema, some Octave, but then I do numerical stuff that burn a few 1000 days of CPU per run. The graphics are C++ but so much of the rest is, it was a natural extension.

Would we use java? just for the graphics (had we not had to build the numerical engine). Yes! Could we do the numerics in java, maybe but the extra hardware to run it would have been prohibitively expensive [it costs approximately 2000 dollars to power and cool a single computer core -- either quad/dual per year]. Factors 2 are big, and factors 10 are life changing.

p.s To Freaky_Chris: First off, I envisaged you as a maths major :)
Bit surprised actually. Second, the process of "arguing" with the lectures is part of the university process, by the time you are doing your PhD you will sit and have coffee each day with several profs. and "discuss" about this/that, because that is one of the fastest ways to learn.

I think this is very true, self taught programmers generally have a better understanding of lower level concepts than those who study higher level languages such as Java which try to mask it. But CS students do seem to know all the API calls that you would ever need, which is nice. Whereas self taught programmers learn them as they need them.

Maths Major hmm lol. I'm 17 and my Math isn't exactly the best I must say and I hope to be able to improve it! I do look forward to being able to have a conversation with my lecturers about things that are not directly covered on syllabus, rather than just accepting what is fed me. As i'm self taught at the moment in C++ and some Java (and Python but) it well be very interesting to be able to have a proper conversation about programming techniques, optimisation and the different paradigms of the modern (and not so modern) languages.

Chris

This article has been dead for over six months. Start a new discussion instead.