Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Sorry Guys about this but as a 15 year old kid i am completely perplex as to how people learn on how to program...
First of all, living in London i decided this year to take courses or private lessons to learn C++, but no such courses or lessons existed for my age at least...
So now i am learning with this great book ("C++ a Beginner's Guide" by Herbert Schildt) but as I am gaining more and more knowledge I am now in the need of learning on how to program with a GUI.
But how? Also, should i consider learning Cocoa or another language?
P.S. Do any Londonners have any advice as to where i can attend courses about C++ or other languages?
 

HiRez

macrumors 603
Jan 6, 2004
6,265
2,629
Western US
If you want to code applications that will only run on a Mac, then you want to use Cocoa. But, this will require learning and using Objective-C. Since you are learning C++, you might want to consider some cross-platform C++ GUIs, such as Qt (don't confuse this with QuickTime), wxWidgets, or GTK+. Personally, I think Cocoa with Interface Builder is a pretty friendly way to get into GUI programming, but it's not really well-supported with C++.
 

bronxbomber92

macrumors regular
Nov 23, 2006
109
0
Sorry Guys about this but as a 15 year old kid i am completely perplex as to how people learn on how to program...
First of all, living in London i decided this year to take courses or private lessons to learn C++, but no such courses or lessons existed for my age at least...
So now i am learning with this great book ("C++ a Beginner's Guide" by Herbert Schildt) but as I am gaining more and more knowledge I am now in the need of learning on how to program with a GUI.
But how? Also, should i consider learning Cocoa or another language?
P.S. Do any Londonners have any advice as to where i can attend courses about C++ or other languages?
We sound very similar. I am also your age, and I learned my core knowledge of C++ from that book (which I found to be a great book, by the way ;)). For GUI, I would learn OpenGL. Though it's more geared toward 3D game developers, it's not only used for that purpose. Also, SDL is another cross-platform graphic library. SDL is mainly for 2D library, but can be paired with OpenGL for 3D games. As far as graphic-wise goes, there endless amount of libraries, engines, and APIs to choose from. Cocoa is the best API to use if you want Mac only applications. That too can be used with OpenGL or SDL(I'm unsure about SDL). My advice, go with OpenGL as it's the most widely used. If you were to say you are willing to learn Objective-c(which won't be too hard if you know C/C++) and are only looking to make apps only for a Mac, then i would say go with cocoa most definitely (and use OpenGL for any 3 dimensional needs you have).

You may want too look here: http://onesadcookie.com/CreatingMacGames/CreatingMacGames.xhtml
It mostly about all the ways to setup a window.

Hope that helps:)
 

Soulstorm

macrumors 68000
Feb 1, 2005
1,887
1
So now i am learning with this great book ("C++ a Beginner's Guide" by Herbert Schildt) but as I am gaining more and more knowledge I am now in the need of learning on how to program with a GUI.

Please do yourself a favor and buy another book. Herbert schildt is the most useless writer for programming topics ever. He may be in the ANSI/ISO comitee, but that doesn't make hima a writer.

Don't believe me? Check here He has the worst reviews ever.

I know this for a fact because I bought his book "Learn C++ from the ground up" and I thought I had a gem in my hands. Later, I bought "The C++ Programming Language Special Edition" and I saw what I was missing. Schildt will not even learn you tha basics, and will introduce bad programming habits. He is known for the bad quality of his books.
 

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Thanks for the replies everybody. I have to admit though that I am slightly confused thinking that starting C++ might have been a mistake. I guess for a windows GUI i will now need to learn .NET and for mac Cocoa...right?
 

ironjaw

macrumors 6502
May 23, 2006
379
8
Cold Copenhagen
Thanks for the replies everybody. I have to admit though that I am slightly confused thinking that starting C++ might have been a mistake. I guess for a windows GUI i will now need to learn .NET and for mac Cocoa...right?

No, you made a good choice, C++ is an advantage, albeit difficult to learn it - once it is your core language it is easier to migrate to other languages eg. Obj C, C, .Net, JAVA etc. C++ will take you a long way as there is still need for good quality programmers in that field
 

bronxbomber92

macrumors regular
Nov 23, 2006
109
0
Yes, though many say it's a terrible languauge, that only because of the raw power it has. Unlike Java and C# with gargage collecting, you must be a lot more careful about what you do.

And no, for a GUI in windows there a lot of alternatives. .NET is primarily used for C#, not C++. Though if you wish to learn C# for both Mac OS X and Windows you can use Mono: http://www.mono-project.com/Main_Page
Mono is a free implementation of .NET for all platforms. Though it's not "complete", it's very close to the actual .NET.
 

Catfish_Man

macrumors 68030
Sep 13, 2001
2,579
2
Portland, OR
Yes, though many say it's a terrible languauge, that only because of the raw power it has.

No, it's also because many people disagree with its focus. It has a triad of goals: type-safety (any error that can be caught at compile time should be), speed (anything slower than C should be optional), and flexibility (it should be able to be used for any problem [see iokit for an example of a subset of C++ in a niche problem domain]). It trades expressiveness and simplicity for these. Some people like that, some people don't.

Personally, I like the approach of having an easy to write/maintain language with the ability to mix in C (and/or ASM) when needed in a few performance critical inner loops. So I mostly use ObjC :)
 

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Personally, I like the approach of having an easy to write/maintain language with the ability to mix in C (and/or ASM) when needed in a few performance critical inner loops. So I mostly use ObjC :)
How does ObjC or Cocoa compare with C++?
 

gnasher729

Suspended
Nov 25, 2005
17,980
5,566
Sorry Guys about this but as a 15 year old kid i am completely perplex as to how people learn on how to program...
First of all, living in London i decided this year to take courses or private lessons to learn C++, but no such courses or lessons existed for my age at least...
So now i am learning with this great book ("C++ a Beginner's Guide" by Herbert Schildt) but as I am gaining more and more knowledge I am now in the need of learning on how to program with a GUI.
But how? Also, should i consider learning Cocoa or another language?
P.S. Do any Londonners have any advice as to where i can attend courses about C++ or other languages?

Just a word of advice: You may think that you've got a good book, but Mr. Schildt is usually better known under the name "Bullschildt" for good reason. Don't trust anything he says. Never, ever believe that anything is true because Mr. Schildt says so; when in doubt, assume he is wrong.
 

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Just a word of advice: You may think that you've got a good book, but Mr. Schildt is usually better known under the name "Bullschildt" for good reason. Don't trust anything he says. Never, ever believe that anything is true because Mr. Schildt says so; when in doubt, assume he is wrong.
Then what should I buy?I based my purchase on what the amazon comments were and this book had excellent reviews...:confused:
 

savanahrose

macrumors 6502a
Jul 31, 2006
791
1
greer SC
thank you for the heads up on this guy. I will remember his name due to the little play on his name and bull****.

Thanks and gl iwill with your learning process.
 

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Cocoa is an API, not a language.Objective-C is ANSI C with OOP added. If your going from C++ to Objective-C you may find it akward at first, but really it's a simple language.
O ok thanks
So since Bullschildt :D books aren't so good, what is a must for learning C++?
Also, when buying a book for Cocoa, does it mean that I have to buy one for ObjC and Cocoa or just one?Which one(s)?
 

fimac

macrumors member
Jan 18, 2006
95
1
Finland
No, it's also because many people disagree with its focus. It has a triad of goals: type-safety (any error that can be caught at compile time should be), speed (anything slower than C should be optional), and flexibility (it should be able to be used for any problem [see iokit for an example of a subset of C++ in a niche problem domain]). It trades expressiveness and simplicity for these. Some people like that, some people don't.

Well said!

You might be interested in "D" :) http://www.digitalmars.com/d

IMHO it is a nice improvement to C / C++. There is a Mac port available.
 

lazydog

macrumors 6502a
Sep 3, 2005
709
6
Cramlington, UK
Hi iWill

You can stick with C++ and STL for the major part of your project and just mix in Objective C when you need to interface with Cocoa, eg writing handlers for the user interface elements etc. At least that's what I do.


I guess it's a personal preference but I don't like the reference counting stuff in Objective C and much prefer the memory management in C++. Also I find NSString a pain to use and the calling convention [ … ] for methods confusing and long winded to use. I have no doubt that Cocoa is a very powerful API but when I write programs for the Mac I always end up using the minimum amount of Cocoa and Objective C that I can get away with and use my old favourites C++ and STL for the rest. Anyway the Core stuff in OS X is written in plain C.

Sticking with C++ and STL or similar will have advantages in the long run if you wan tot make a career out of programming.

If you are interested in programming 3D then you could learn to program using Glut and OpenGL. This will let you write 3D applications in C or C++ without having to learn any Cocoa or Objective C. As an added bonus if you are careful your programs will compile and run on Windows and Linux with little if any modification.

Hope this helps

b e n
 

iWill

macrumors member
Original poster
Nov 24, 2006
35
0
Thanks for the replies guys...so much more responsive than on the Apple forums.

Question, does GUI programming require knowledge on classic console programming?...I mean I'm currently learning C++ and I know that terms such as " cout << " aren't going to be very useful later on.
I know I'm really clueless when it comes to GUI programming but i fear that all my knowledge won't really be used in the future.
Right or Wrong?:confused:
 

Nutter

macrumors 6502
Mar 31, 2005
432
0
London, England
The things you're learning now will always be useful. Even when you start programming applications with a GUI, you're going to need to know how to print to the console for debugging purposes.

If you want to get into GUI programming on the Mac, you'll probably want to use Cocoa. That means that you're going to have to learn Objective-C at some point. Don't think you've been wasting your time on C++ though, once you've grasped the concepts involved in programming, learning a new language is actually quite easy. Objective-C is a particularly easy language to learn if you already know a C-based language.

I'd recommend this book for Objective-C:
http://www.amazon.com/Programming-Objective-C-Stephen-Kochan/dp/0672325861

This book may frustrate you a bit because I can tell you're eager to get started on GUI programming, but I would urge you to work through it (or something similar) before you start on Cocoa. Trying to learn Cocoa without a solid grasp of Objective-C first will make your life much harder than it has to be.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.