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

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
After searching Google and this forum I have still not been able to fully find the answer.

As of now though I intend to write programs for iOS (I have some ideas) and later OS X if I think of anything.

Currently reading Objective-C Programming Big Nerd Ranch Guide. When I'm done I will hopefully have a good understanding of C and Objective-C after reading the advanced parts.

So far I'm still on Command Line Tools. I know you can select C++. I was wondering though that since you need Objective-C for Cocoa (from my understanding), what would C++ be used for? At least for iOS and OS X. I've seen someone say that it's a good compromise. Not entirely sure for what though.

Whatever language I learn next though, will most likely be dictated by what I want to program for next. I do wonder when I'll actually use C but understanding it will be quite helpful.
 

gnasher729

Suspended
Nov 25, 2005
17,980
5,565
C++ when used with restraint and some sense is a better programming language than C. If you use code written by others, especially if it is supposed to be portable between different operating systems, chances are it is written in C++.

In a MacOS X or iOS applications you can freely mix code written in C, Objective-C, C++ and Objective-C++.
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
That clears it up. Thanks. Since as of now I'll only be writing for iOS and OS X I think it'll be mostly written in Objective-C. Maybe some C, depending on what I need. Since I don't know C++ the other two are ruled out. Until I learn it at least.

Although, depending on the program, wouldn't C++ be better most of the time? Since it is object-oriented? I'm probably way off since there is probably more to it but I'll learn.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
Objective-C is also Object-Oriented. For now, that should suit you. C++ has its place, but I don't think you're in one of those places right now.

-Lee
 

Catfish_Man

macrumors 68030
Sep 13, 2001
2,579
2
Portland, OR
That clears it up. Thanks. Since as of now I'll only be writing for iOS and OS X I think it'll be mostly written in Objective-C. Maybe some C, depending on what I need. Since I don't know C++ the other two are ruled out. Until I learn it at least.

Although, depending on the program, wouldn't C++ be better most of the time? Since it is object-oriented? I'm probably way off since there is probably more to it but I'll learn.

Object-oriented programming is not inherently better than procedural, though it's a useful tool for many tasks. C++ is also many things besides object-oriented. It's an enormous language, with many strong upsides and serious downsides.

Exploring many languages is a good way to expand your horizons, particularly ones that are very different from each other (procedural, functional, object-oriented, etc...). Takes a long time though. :)
 

ghellquist

macrumors regular
Aug 21, 2011
146
5
Stockholm Sweden
My take on this.

The "best" language to use depends on what "problem" you are trying to solve.

If the "problem" is to write an application on IOS, the only language really useful is Objective-C. And you need to work with objects and learn some object oriented programming, as it is the basically the only way to do things on IOS.

Same language, Objetive-C, if mainpart of your program is about showing windows and menus and such stuff on Mac OS.

But on Windows, Objective-C is not a viable option. You need to write your program in a different language. Often C# or (ahem, clearing my throat here) Basic, as in Visual Basic .Net. Had to make a slight noise here as "real" programmers don't eat basic.

On some platforms, say an Android smart phone, the language of choice would probably be java.

If you do very large simulations or stuff like that, say forecasting the weather, you might use C or C++ but with additions allowing the program to be run concurrently on a a large number of computers (this is a special world in itsel).

But on a a web server neither languae is a good choice. There you would probably use something like PHP instead.

The real interesting stuff (at least I think so), happens when you want to share code base between different environments. This is definitely not a beginner subject. Then you migh want to write the logic stuff in C++, and have one graphic front-end for Mac written in Objective C, a different front end for Windows written in C#.

If you like really small computers, say for controlling a robot, C is probably the choice language.

So, to make it really short. If you like you mac and ios stuff, learn objective-C really good. Knowing one language really well will help you learning the next language. Knowing a lot of languages only on the surface might be interesting, but does not really get you into programming.

//Gunnar
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
Thanks Gunnar. It's like learning speaking languages. Once you learn a second one it's easier to learn others.

Same language, Objetive-C, if mainpart of your program is about showing windows and menus and such stuff on Mac OS.

//Gunnar

I'm not entirely sure what you mean by showing windows and menus. Depending on what you want to do on OS X would you sometimes use C or C++? I thought that Objective-C would pretty much be the only language, like iOS.
 

xShane

macrumors 6502a
Nov 2, 2012
814
37
United States
Thanks Gunnar. It's like learning speaking languages. Once you learn a second one it's easier to learn others.



I'm not entirely sure what you mean by showing windows and menus. Depending on what you want to do on OS X would you sometimes use C or C++? I thought that Objective-C would pretty much be the only language, like iOS.

I think what he meant that is if your application (in theory) is just a basic user interface with windows and menus (the menu at the top), then Objective-C will fulfill your needs.
 

chown33

Moderator
Staff member
Aug 9, 2009
10,739
8,415
A sea of green
Depending on what you want to do on OS X would you sometimes use C or C++? I thought that Objective-C would pretty much be the only language, like iOS.

IOKit uses C++:
https://developer.apple.com/library...tual/IOKitFundamentals/Features/Features.html
See the heading "Language Choice".

Since Objective-C is a superset of C, any valid C program is also a valid Objective-C program. Many, if not most, command-line tools are written entirely in C. One reason for this is they're portable, often from (or to) other Posix-like platforms that have C and C++, but not Objective-C. Hence, the portable language options do not include Objective-C.
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
Thanks. So depending on what I'm trying to do in OS X, I could use Objective-C or C++?

Also, would that mean that C programs would work in C++?
 

ghellquist

macrumors regular
Aug 21, 2011
146
5
Stockholm Sweden
Thanks Gunnar. It's like learning speaking languages. Once you learn a second one it's easier to learn others.

I'm not entirely sure what you mean by showing windows and menus. Depending on what you want to do on OS X would you sometimes use C or C++? I thought that Objective-C would pretty much be the only language, like iOS.
There are other types of programs

I have several programs that reads a text file, does some manipulation on that, and creates a new textfile. None of these programs has any menus, windows or selection boxes. These programs are not written i Objective-C. Some are written in Pearl, some directly as commands, some are in yet other languages.

I also dabble a bit in web pages. These are mostly written in PHP and using an SQL database. And SQL is actually one more computer language.

// Gunnar
 

gnasher729

Suspended
Nov 25, 2005
17,980
5,565
Thanks. So depending on what I'm trying to do in OS X, I could use Objective-C or C++?

Also, would that mean that C programs would work in C++?

C++ is quite close to being a superset of C, but not identical. Many C programs can be compiled by a C++ compiler and will work, but not all. Objective-C is a superset of C; all C code is valid Objective-C code. Obviously it is Objective-C code that doesn't use many Objective-C features.
 

ArtOfWarfare

macrumors G3
Nov 26, 2007
9,558
6,058
Ok, so sometimes a program won't be written in xcode?

I do believe you're having much, much too much thrown at you at once right now.

Xcode allows you to manage putting together complicated programs. When you're first learning how to program, I would advise against using it because it does too many things automagically.

I suggest using a text editor, like gedit, coupled with the Terminal command "clang" to program if you're just getting started. If you're not using any UI elements yet, there's no need to be using Xcode.
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
Try adding the immediately preceeding half sentence.

So Objective-C doesn't use many Objective-C features?

I do believe you're having much, much too much thrown at you at once right now.

Xcode allows you to manage putting together complicated programs. When you're first learning how to program, I would advise against using it because it does too many things automagically.

I suggest using a text editor, like gedit, coupled with the Terminal command "clang" to program if you're just getting started. If you're not using any UI elements yet, there's no need to be using Xcode.

I'll look into that. Thanks.
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
"all C code is valid Objective-C code. Obviously it is Objective-C code that doesn't use many Objective-C features."

Yea, I get the first part, all C code is valid Objective-C code. But how could Objective-C code not use many Objective-C features.
 

lee1210

macrumors 68040
Jan 10, 2005
3,182
3
Dallas, TX
=[ English is ambiguous.
"all C code is valid Objective-C code. Obviously it(it being C code) is Objective-C code that doesn't use many Objective-C features."

This is saying that you can write C, compile it as Objective-C, and it will work. You can refer to any C code as Objective-C, and you're right. But that C code doesn't use any Objective-C features because while it is valid Objective-C, if it's C by definition it does not use Objective-C features.

This conversation has devolved to a point that it is no longer useful to the OP. All three languages can be used for lots of things. You can use them all to write iOS and OS X apps. Some libraries and frameworks only have one API for one language, so you at least need to use that language to use the library. Maybe you just use that language to write a shim/adapter for another.

Stop trying to think through all this stuff. Write code in the language you're learning. When you need another language or want to learn it, deal with it then.

-Lee
 

silentownage001

macrumors regular
Original poster
Dec 1, 2011
151
12
NJ
This is saying that you can write C, compile it as Objective-C, and it will work. You can refer to any C code as Objective-C, and you're right. But that C code doesn't use any Objective-C features because while it is valid Objective-C, if it's C by definition it does not use Objective-C features.
-Lee

That makes sense, thanks.
 

ghellquist

macrumors regular
Aug 21, 2011
146
5
Stockholm Sweden
After searching Google and this forum I have still not been able to fully find the answer.

As of now though I intend to write programs for iOS (I have some ideas) and later OS X if I think of anything.

Original question, original answer: learn objective-C. Write code for IOS and Mac OSX. It will be object oriented.

When writing Objective-C code for IOS especially, and mostly when writing for Mac OSX, do use Xcode. Yes, xcode does a lot of magic, but it is exactly the kind of magic you need to get the code running on IOS.

If you learn objective-C well you will learn a lot of useful things. Most of these will travel with you to other languages and other environments, some will not. One of the things that will travel is the object oriented concept of MVC, which is more or less compulsory on IOS. You will find something similar in all GUI type frameworks regardless of programming language.

Once you have written your first few IOS programs (not book or class assignments) and your first few Mac OSX programs, you might want to look into other languages. That day is not now.

// Gunnar
 

firewood

macrumors G3
Jul 29, 2003
8,107
1,345
Silicon Valley
So Objective-C doesn't use many Objective-C features? ....

Yes. Objective C is a big enough language that, yes, it is possible to write big programs in it that use very few of the whole language's features. The Turing-complete subsets can be quite small. Not all of a big language's features are useful or required for all problems.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.