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--



