Which language to get started with cocoa development?

  • Hi,

    I develop software for a living and want to get started with cocoa
    development just for fun. I'm good at python, C, C++ and C# and have
    some Ruby knowledge. Now I'm asking myself, which language I should
    use to get started with cocoa development:

    - ObjC looks interesing, but would be a new language to learn. I like
    to learn new languages, but I also prefer to do one step after
    another. So learning Cocoa and Obj-C toghether could be frustrating.
    - I like dynamic scripting languages like python and ruby, but I would
    like to ship my apps to other users. And they should not care about
    the language I have used. Can pyObjC or RubyCoca be bundled with my
    app, so that the enduser will not recognize that python/ruby is
    shipped with my app?
    - As far as I understand, GUIs are usually build with the interface
    builder of XCode. That tools is tuned to be used with ObjC. How good
    is the integration with scripting languages?
    - How up to date are bindings to "non ObjC" languages usually? If I
    will like cocoa development, I want to have a look at core data and
    core animations. Are these also available for ruby and python?
    - What about Mono/Cocoa#? Looks like Mono is not an good option, if I
    want to distribute my app as small download via the web. Or am I wrong?

    I would be very happy to hear some opinions of experienced cocoa
    developers about these topics. Any feedback would be very appreciated.

    cheers,
    Achim
  • If you truly want do cocoa you should learn objective-c. That is the
    flagship language. Shouldn't be too difficult for a professional
    programmer to pick up.

    Luke

    Sent from my iPhone.

    On Dec 31, 2008, at 12:22 AM, Achim Domma <domma...> wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • On Dec 31, 2008, at 12:22 AM, Achim Domma wrote:
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.

    Language is a very small part of what you need to learn.  The much
    larger piece is the APIs and design patterns used across the
    frameworks used by Mac OS X.

    They are implemented almost exclusively in Objective-C, with some C or
    C++ APIs here and there.

    Thus, learn Objective-C first.  Know it.  Understand it.  And, most
    importantly, grok the APIs that you will be using.

    Then, if there is some compelling reason to use some other language to
    developer your Cocoa applications, go for it...

    But until you know Objective-C well enough to fluidly interact with
    the system APIs, trying to futz with said APIs from some other
    language just adds significant -- and easily avoided -- overhead to
    the learning process.

    b.bum
  • On 31 Dec 08, at 00:22, Achim Domma wrote:
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:

    I would strongly recommend against using anything other than ObjC if
    you're just starting out, as all the existing documentation and
    tutorials assume that's what you're using. As you're already familiar
    with C and C++, ObjC should not be difficult to pick up - it's a very
    "lightweight" extension to C.
  • Go with Objective-C: it’s the native language for Cocoa, so there’s no
    impedance mismatch. Plus, you can leverage your C/C++ knowledge where
    you want/need to more easily than you could in Ruby or Python. (C# is
    an unknown quantity for me, so I can’t really comment on that.)

    Plus, if you’re already good at dynamic languages and C-family
    languages then you’ve got all the pieces in place to pick up Objective-
    C quite quickly.

    Interface Builder doesn’t exactly work the way you’re thinking, I think
    —integration with scripting languages doesn’t really come into it.
    Instead, Interface Builder works by configuring and archiving “real
    live objects”—Cocoa framework objects—into a file that is unarchived
    at runtime. So if you’re using the Python or Ruby bridge, it’s the same
    —it’s unarchived into an Objective-C object which you interact with
    over the bridge like you would any other object in the framework. It’s
    really quite pleasant.

    I’ll contradict myself a little and say that I think there’s a fairly
    good case for using one of the bridges now—certainly better than ever
    before, and only improving! But I really do recommend learning
    Objective-C even if you don’t end up using it for your projects—you’ll
    gain a better understanding of the hows and whys of the Cocoa
    framework that way.

    Hope this helps,
    Rob

    On 31-Dec-08, at 3:22 AM, Achim Domma wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • On 31 Dec 2008, at 7:22 pm, Achim Domma wrote:

    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.

    Depending on what sort of application you have in mind, Obj-C is
    likely to be the most fruitful approach. I don't think any other
    languages allow you access to all of Cocoa, only select parts.

    If you know C, Obj-C is a very small extension. It is a strict
    superset of C(99), and the extra stuff in Obj-C will take you a very
    short time to learn. It looks a little strange at first, but the
    syntax is very logical. If you already know another object-oriented
    language like C++ then it will be easy, I'm certain of it.

    Personally, I learned enough Obj-C in a day (after more than a decade
    of C++) to get started with Cocoa. Cocoa itself will take a fair bit
    longer to get really comfortable with, so the reality is that learning
    Obj-C will be a tiny fraction of the effort needed. So choosing a
    familiar but non-native language would be, in my opinion, an error.

    --Graham
  • For an experienced C/C++ programmer, Obj-C is not difficult to learn
    at all. The main difference from C++ is the method-calling syntax.

    The rest of what you need to learn for Obj-C development is the Cocoa
    framework itself, but since that's what you want to learn anyway, you
    will need to dive into that whichever language you choose.

    I am not experienced in RubyCocoa, but I believe Leopard includes that
    with the OS. So you should be able to distribute RubyCocoa apps to
    Leopard users without bundling the framework.

    On 31 Dec 2008, at 08:22, Achim Domma wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • On Wed, Dec 31, 2008 at 3:22 AM, Achim Domma <domma...> wrote:
    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have some
    > Ruby knowledge. Now I'm asking myself, which language I should use to get
    > started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I like to
    > learn new languages, but I also prefer to do one step after another. So
    > learning Cocoa and Obj-C toghether could be frustrating.

    My opinion is that you should use Objective-C, at least at first. Some
    reasons why:

    1) If you know C and some object-oriented languages, then ObjC will be
    a piece of cake. ObjC is NOT like C++ at all. If you know C and learn
    C++ it's like starting over, because C++ adds this incredible huge
    massive overbearing truckload of stuff to the language which
    practically builds it anew. ObjC on the other hand adds extremely
    minimal syntax. It is the "C with objects" that C++ once was but has
    so vastly outgrown. If you are proficient in C and good with OOP and
    have an open mind, learning ObjC itself will take you perhaps one day.
    Really.

    (Of course you won't be able to do much with it at that stage, but
    that's because you need to learn the libraries i.e. Cocoa to build
    useful stuff. And all that learning is stuff you will have to do
    *anyway*, so you're no worse off.)

    2) You add more things to learn using a different language. Instead of
    learning Cocoa, now you have to learn Cocoa *and* PyObjC or whatever
    bridge you're using. Every bridge has its quirks and corner cases and
    specialized things you have to learn.

    3) You have a much harder time using tutorials, documentation, and
    sample code. 99.9% of the extant tutorials, docs, and examples are
    written in ObjC. You'll have to translate that stuff into the language
    of your choice to use them, meaning you'll have to know some ObjC
    anyway, and you'll be struggling not just with ObjC/Cocoa but with
    ObjC/Cocoa/Python/PyObjC/samplecode/docs/tutorials/translating/etc.

    So there you have it. This is just my opinion, and other people may
    disagree, but in my opinion you should just take the few hours or days
    to learn ObjC and then do Cocoa with its native language. Later on,
    once you're comfortable in it, if you dislike ObjC and prefer another
    language then you can switch over to one of the bridged languages and
    be in a much better position to work with it from there.

    Mike
  • Achim:

    I can’t answer your questions concerning the scripting languages, but
    given your background I’d suggest to go ahead with ObjC. It won’t
    really be a new language for you since it is but an extension of C.
    Granted, the bracket notation for message sending needs a little
    getting used to, but that’s about it, syntax wise.

    The by far larger part of the learning curve is getting used to the
    Cocoa design patterns, which you’ll have to do anyway. And since ObjC
    is the "native language" of Cocoa, approching it from this side
    probably has some obstacles less, which may be introduced by bridiging
    to other languages.

    Have fun!
    Kai

    On 31.12.2008, at 09:22, Achim Domma wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • Thanks to everybody giving feedback to my question! Obviously I'll
    have to get started with ObjC. Most people refer to the Cocoa design
    patterns I'll have to get used to. Currently I think about buying http://www.pragprog.com/titles/dscpq/cocoa-programming
      to speed up my first steps. What other book or online resource is
    recommended to learn Cocoa design patterns? You can assume that I have
    some experiences reading documentation and that I'm familiar with
    design patterns in general.

    thanks again,
    Achim

    Am 01.01.2009 um 17:34 schrieb Kai:

    > Achim:
    >
    > I can’t answer your questions concerning the scripting languages,
    > but given your background I’d suggest to go ahead with ObjC. It
    > won’t really be a new language for you since it is but an extension
    > of C. Granted, the bracket notation for message sending needs a
    > little getting used to, but that’s about it, syntax wise.
    >
    > The by far larger part of the learning curve is getting used to the
    > Cocoa design patterns, which you’ll have to do anyway. And since
    > ObjC is the "native language" of Cocoa, approching it from this side
    > probably has some obstacles less, which may be introduced by
    > bridiging to other languages.
    >
    > Have fun!
    > Kai
    >
    >
    > On 31.12.2008, at 09:22, Achim Domma wrote:
    >
    >> Hi,
    >>
    >> I develop software for a living and want to get started with cocoa
    >> development just for fun. I'm good at python, C, C++ and C# and
    >> have some Ruby knowledge. Now I'm asking myself, which language I
    >> should use to get started with cocoa development:
    >>
    >> - ObjC looks interesing, but would be a new language to learn. I
    >> like to learn new languages, but I also prefer to do one step after
    >> another. So learning Cocoa and Obj-C toghether could be frustrating.
    >> - I like dynamic scripting languages like python and ruby, but I
    >> would like to ship my apps to other users. And they should not care
    >> about the language I have used. Can pyObjC or RubyCoca be bundled
    >> with my app, so that the enduser will not recognize that python/
    >> ruby is shipped with my app?
    >> - As far as I understand, GUIs are usually build with the interface
    >> builder of XCode. That tools is tuned to be used with ObjC. How
    >> good is the integration with scripting languages?
    >> - How up to date are bindings to "non ObjC" languages usually? If I
    >> will like cocoa development, I want to have a look at core data and
    >> core animations. Are these also available for ruby and python?
    >> - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    >> I want to distribute my app as small download via the web. Or am I
    >> wrong?
    >>
    >> I would be very happy to hear some opinions of experienced cocoa
    >> developers about these topics. Any feedback would be very
    >> appreciated.
    >>
    >> cheers,
    >> Achim
    >
  • On 12/31/08, Achim Domma <domma...> wrote:
    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I like
    > to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.

    With the language set you already know, Obj-C should only take you a
    day to learn. It is a pretty minimal superset of C. My personal
    experience is people spend more time worrying about or resisting
    learning Obj-C than actually learning it.

    Cocoa is huge though. That's where you will be spending most of your
    time learning.

    > - I like dynamic scripting languages like python and ruby, but I would
    > like to ship my apps to other users. And they should not care about
    > the language I have used. Can pyObjC or RubyCoca be bundled with my
    > app, so that the enduser will not recognize that python/ruby is
    > shipped with my app?

    On Leopard, yes. Apple officially includes and supports these on
    Leopard and they have full access to Cocoa and other frameworks on the
    system. I don't think you need to bundle them in your app since they
    are already system frameworks. Only your code will go in your app.
    Your end users shouldn't be able to tell you are using these. These
    won't save you from having to learn Cocoa though.

    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?

    I don't have any first-hand experience, but for PyObjC and RubyCocoa,
    but from what I've seen, the integration is really good.

    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?

    PyObjC and RubyCocoa are fully supported by Apple. I believe these are
    really up-to-date. Other languages, not so much. I don't see why there
    would be any problems with Core Animation. I wrote my own minimal
    binding for Core Animation in Lua and I did it the hard way. PyObjC
    and RubyCocoa are much smarter and I don't see why they would have
    problems. Core Data I am less sure about since there is a modeling
    tool. Since they have IB integration, I fully expect PyObjC and
    RubyCocoa to have full support here too. I'm sure somebody else can
    confirm this.

    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if I
    > want to distribute my app as small download via the web. Or am I wrong?

    I don't know anything about Mono/Cocoa#. Somebody else will have to answer this.

    Personally, I think you should start with Obj-C. You'll be able to
    find a lot more code examples and more easily be able to get direct
    help from people. And Cocoa is designed with Obj-C in mind so learning
    Cocoa from Python or Ruby may slow your learning of the common
    patterns and designs in Cocoa.

    -Eric
  • On Dec 31, 2008, at 1:22 AM, Achim Domma wrote:

    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.

    "True" or "native" Cocoa is only available for Objective-C and Java
    API. There are API ports to to other languages, Ruby is one that I am
    aware of, but they are not really Cocoa. They are just Cocoa-like.
    That may enough for your purposes.

    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?

    I imagine so, at least in theory. Never done it myself. Shouldn't be
    too hard to find an application bundle example somewhere.

    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?

    HTH,

    Keary Suska
    Esoteritech, Inc.
    "Demystifying technology for your home or business"
  • On Dec 31, 2008, at 2:22 AM, Achim Domma wrote:

    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.

    I have only passing familiarity with Python, Ruby, and their bridges
    to Cocoa, so take this with a grain of salt: I think you're going to
    want to learn Objective-C for Cocoa development, even if you end up
    programming in a scripting language.

    First, it's a really small addition to C, which you already know.
    You're right that it may make more sense to learn Objective-C first
    before Cocoa, but that will be a really brief step, I think.

    As I understand it, for the bridges to Python or Ruby, you'd have to
    learn some new paradigms anyway since the bridges can't quite make
    Cocoa a completely natural fit to those languages.

    All of Apple's documentation and sample code for Cocoa is written in
    terms of Objective-C, so if you don't understand Objective-C you won't
    understand the docs.

    Interface Builder does not generate Objective-C code.  It's not a code
    generator at all.  Instead, it constructs objects and then "freeze
    dries" them out to nib files, which are just archives of the objects
    and their connections.  Loading a nib just reconstitutes the object
    graph.  So, I don't think that Interface Builder is especially
    Objective-C-centric.  Interface Builder and Xcode do cooperate to let
    IB know about any custom classes defined in your code, but you can
    also accomplish the same thing directly in IB.  I don't know if the
    scripting language bridges support exporting new class definitions
    from Xcode to IB automatically.

    I don't know how well Core Data or Core Animation are integrated with
    scripting languages, but I imagine they must work.  They are not based
    on any features of the language beyond normal message passing (and
    possibly forwarding).  If the bridges are worth anything, then I
    expect those frameworks to be available, pretty much automatically.

    Cheers,
    Ken
  • Personally I would say Objective-C. Its not that difficult of a
    language to learn. If you have learned C++ and C, Objective C is easy
    enough to learn. I just trained and mentored some window's engineers
    on an Objective-C project, they had C#, C++ and C expreience. Once
    they got through the syntax differences and the memory management,
    they love the language and framework, the tools are a love hate
    relationship. The Objective-C language, i believe, will run faster
    than a python or mono app. They require an interpreter for the bit
    code. They don't compile to native code, i don't believe.

    Scott

    On Dec 31, 2008, at 12:22 AM, Achim Domma wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • Hi Achim,

    I'll only answer one of your questions, as I don't know much about all
    the scripting languages and possibilities for those.

    On Dec 31, 2008, at 09:22, Achim Domma wrote:

    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.

    ObjC is based upon C, it's basically C with a tiny add-on.
    I'd claim that you want to use ObjC, because it takes you 10 minutes
    to learn, since you know C already!

    What you do, is you go and take the ObjC CurrencyConverter tutorial,
    and then you're all set.

    http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/01In
    troduction/chapter_1_section_1.html


    (In other words: Learn Cocoa/ObjC in 10 minutes, that's how long it
    took me the first time)

    In short, the only thing that differs 'much' from other languages, is
    how you invoke methods...

    C++:
    result = myObject->drawLine(x,y,x+10,y+10);

    ObjC:
    result = [myObject drawLineFromX:x y:x toX:x+10 toY:y+10];

    That's all. There are a few other differences, but you'll learn those
    on the fly.

    I'd like to quote someone from this list (sorry, I forgot who wrote it):
    "If it's difficult to do in Cocoa, you're doing it the wrong way".

    When you're done with the Currency Converter tutorial, go and have a
    look at the sample-code:

    http://developer.apple.com/samplecode

    If you don't have XCode yet, you can download the latest one from
    connect.apple.com (it's on your Mac OS X installation DVD)

    Love,
    Jens
  • Objective-C is a pretty small addition on the top of regular C. It's
    the Cocoa libraries that take the time, no matter what language you use.

    On Dec 31, 2008, at 2:22 AM, Achim Domma wrote:

    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have
    > some Ruby knowledge. Now I'm asking myself, which language I should
    > use to get started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.
    > - I like dynamic scripting languages like python and ruby, but I
    > would like to ship my apps to other users. And they should not care
    > about the language I have used. Can pyObjC or RubyCoca be bundled
    > with my app, so that the enduser will not recognize that python/ruby
    > is shipped with my app?
    > - As far as I understand, GUIs are usually build with the interface
    > builder of XCode. That tools is tuned to be used with ObjC. How good
    > is the integration with scripting languages?
    > - How up to date are bindings to "non ObjC" languages usually? If I
    > will like cocoa development, I want to have a look at core data and
    > core animations. Are these also available for ruby and python?
    > - What about Mono/Cocoa#? Looks like Mono is not an good option, if
    > I want to distribute my app as small download via the web. Or am I
    > wrong?
    >
    > I would be very happy to hear some opinions of experienced cocoa
    > developers about these topics. Any feedback would be very appreciated.
    >
    > cheers,
    > Achim
  • Achim,

    > - ObjC looks interesing, but would be a new language to learn. I
    > like to learn new languages, but I also prefer to do one step after
    > another. So learning Cocoa and Obj-C toghether could be frustrating.

    ymmv, but i'd think it would be more frustrating to learn Cocoa with
    anything *but* Objective-C, as the two are pretty closely intertwined,
    with how Objective-C handles method naming and Cocoa takes advantage
    of that.

    Learning ObjC is easy (especially if you know C well); having to
    mentally translate between Cocoa method names and their "mangled"
    counterparts you deal with in other languages will be a much bigger
    challenge to getting started. this just imho, of course.

    Yours,

    marc hoffman

    RemObjects Software
    The Infrastructure Company
    http://www.remobjects.com
  • On Wed, Dec 31, 2008 at 12:22 AM, Achim Domma <domma...> wrote:
    > Hi,
    >
    > I develop software for a living and want to get started with cocoa
    > development just for fun. I'm good at python, C, C++ and C# and have some
    > Ruby knowledge. Now I'm asking myself, which language I should use to get
    > started with cocoa development:
    >
    > - ObjC looks interesing, but would be a new language to learn. I like to
    > learn new languages, but I also prefer to do one step after another. So
    > learning Cocoa and Obj-C toghether could be frustrating.

    Cocoa was designed with Objective-C in mind. If you know C and OOP it
    is a very small step (IMHO) to learn Objective-C.

    Also consider that Apple documentation, 3rd party books, code example,
    etc. for Cocoa are most often written using Objective-C.

    I encourage you to take a couple of days to learn Objective-C and then
    use that to when you learn Cocoa (the later will take substantially
    longer to learn).

    -Shawn
  • Achim,

    This topic comes up on this list periodically.  There was a good thread last October on "Why Objective-C?"

    http://www.cocoabuilder.com/archive/message/cocoa/2008/10/30/221401

    (There are also other threads on this topic on this list.)

    Personally, I'd say you can't go wrong with ObjC.  But only you know what's right for you ;-)

    Yours in Cocoa,
    Joel
  • On 1 Jan 2009, at 17:23:50, Achim Domma wrote:

    > Thanks to everybody giving feedback to my question! Obviously I'll
    > have to get started with ObjC. Most people refer to the Cocoa design
    > patterns I'll have to get used to. Currently I think about buying http://www.pragprog.com/titles/dscpq/cocoa-programming
    > to speed up my first steps. What other book or online resource is
    > recommended to learn Cocoa design patterns? You can assume that I
    > have some experiences reading documentation and that I'm familiar
    > with design patterns in general.
    >
    > thanks again,
    > Achim

    Aaron Hillegass's Cocoa Programming for Mac OS X is an excellent book.
    You'll probably find much of it a bit below your level to start with,
    but a lot of it will probably be new stuff that will really help you.
    Speaking from my own experience here.
  • On Thu, Jan 1, 2009 at 2:44 PM, Keary Suska <cocoa-dev...> wrote:
    > "True" or "native" Cocoa is only available for Objective-C and Java API.
    > There are API ports to to other languages, Ruby is one that I am aware of,
    > but they are not really Cocoa. They are just Cocoa-like. That may enough for
    > your purposes.

    The Java bridge is no longer maintained, and has been deprecated since
    10.4.  PyObjC and RubyCocoa, on the other hand, are
    officially-supported bridges.  And they aren't "ports."  PyObjC, for
    example, does most of its work by runtime introspection.  The MacRuby
    project looks even more interesting, as it implements Ruby 1.9
    directly on top of the Objective-C runtime, and is maintained by
    Apple.

    In short, Java was the past while Ruby and Python are the future of
    supported non-ObjC development.

    --Kyle Sluder
  • Le 1 janv. 09 à 20:44, Keary Suska a écrit :

    >
    > On Dec 31, 2008, at 1:22 AM, Achim Domma wrote:
    >
    >> I develop software for a living and want to get started with cocoa
    >> development just for fun. I'm good at python, C, C++ and C# and
    >> have some Ruby knowledge. Now I'm asking myself, which language I
    >> should use to get started with cocoa development:
    >>
    >> - ObjC looks interesing, but would be a new language to learn. I
    >> like to learn new languages, but I also prefer to do one step after
    >> another. So learning Cocoa and Obj-C toghether could be frustrating.
    >
    > "True" or "native" Cocoa is only available for Objective-C and Java
    > API. There are API ports to to other languages, Ruby is one that I
    > am aware of, but they are not really Cocoa. They are just Cocoa-
    > like. That may enough for your purposes.

    It's no longer available for Java (The java bridge is deprecated and
    unsupported)
  • On Jan 1, 2009, at 3:20 AM, Bill Bumgarner wrote:

    > But until you know Objective-C well enough to fluidly interact with
    > the system APIs, trying to futz with said APIs from some other
    > language just adds significant -- and easily avoided -- overhead to
    > the learning process.

    I couldn't agree more!

    One of the more frustrating aspects of being the author of a "language
    bridge" was having to repeatedly tell people that no, using your
    favorite scripting language will *not* make Cocoa easier to learn.

    sherm--