C, Obj-C, C++, some questions argh

Discussion in 'Mac Programming' started by silentownage001, Feb 1, 2013.

  1. macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #1
    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.
     
  2. macrumors G5

    gnasher729

    Joined:
    Nov 25, 2005
    #2
    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++.
     
  3. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #3
    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.
     
  4. macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #4
    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
     
  5. macrumors 68030

    Catfish_Man

    Joined:
    Sep 13, 2001
    Location:
    Portland, OR
    #5
    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. :)
     
  6. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #6
    Ok. Thanks everyone :)
     
  7. macrumors regular

    Joined:
    Aug 21, 2011
    Location:
    Stockholm Sweden
    #7
    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
     
  8. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #8
    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.
     
  9. macrumors 6502a

    xShane

    Joined:
    Nov 2, 2012
    Location:
    United States
    #9
    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.
     
  10. macrumors 603

    Joined:
    Aug 9, 2009
    #10
    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.
     
  11. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #11
    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++?
     
  12. macrumors regular

    Joined:
    Aug 21, 2011
    Location:
    Stockholm Sweden
    #12
    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
     
  13. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #13
    Ok, so sometimes a program won't be written in xcode?
     
  14. macrumors G5

    gnasher729

    Joined:
    Nov 25, 2005
    #14
    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.
     
  15. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #15
    Did you mean C++ or something? That doesn't seem to make sense.
     
  16. macrumors G5

    gnasher729

    Joined:
    Nov 25, 2005
    #16
    Try adding the immediately preceeding half sentence.
     
  17. macrumors 603

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #17
    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.
     
  18. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #18
    So Objective-C doesn't use many Objective-C features?

    I'll look into that. Thanks.
     
  19. macrumors G5

    gnasher729

    Joined:
    Nov 25, 2005
    #19
    "all C code is valid Objective-C code. Obviously it is Objective-C code that doesn't use many Objective-C features."
     
  20. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #20
    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.
     
  21. macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #21
    =[ 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
     
  22. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #22
    That makes sense, thanks.
     
  23. macrumors regular

    Joined:
    Aug 21, 2011
    Location:
    Stockholm Sweden
    #23
    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
     
  24. thread starter macrumors regular

    Joined:
    Dec 1, 2011
    Location:
    NJ
    #24
    Thanks Gunnar.
     
  25. macrumors 603

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #25
    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.
     

Share This Page