On Jan 17, 11:51 pm, Mark Allerton <mark.aller...@gmail.com> wrote:
> Hi all,
>
> I've been hacking on a bridge between Clojure and Cocoa, and have been
> prompted to break cover by recent discussion of the subject of Objective-C
> interfacing here on this list.


This is fantastic!  In you README.md, you provide the reasons why this
is better than a Java-to-Cocoa bridge.

--------

Apple's Java-Cocoa bridge was a failure - and in hindsight it's not
that hard to see why. Despite being an Ahead-of-Time compiled language
based on C, Objective-C's runtime is in fact quite a bit more dynamic
than Java's - and this left Java developers at a disadvantage, being
made to write more code to work around the impedance mismatch.

So why might Clojure be a better match? As a dynamic language it may
be a better fit for the dynamic aspects of the Objective-C runtime. In
addition, as a lisp, Clojure has few ties between programming paradigm
and syntax, making it easier to adopt Objective-C's paradigms directly
in Clojure code.

--------

I think this is spot on. This is one reason why I have never had much
interest in working with Apple's Java Cocoa bridge.  The code always
felt clumsy and awkward compared to the Objective-C version.  I'm
certain that, as you say, that the dynamic nature of Clojure is a
better fit with Objective-C than Java.  Indeed, this is why LispWorks
has an Objective-C bridge for Cocoa, and why so many Scheme projects
also have Objective-C bridges.

As for "Why is this a terrible idea?":

------------

There are some other reasons Java was a bad fit for Cocoa, and Clojure
doesn't fix these - namely the memory overhead of the JVM, startup
time and lack of application responsiveness due to JIT compilation and
garbage collection.

-------------

I think the relatively long start-up time can be tolerated, especially
if the programmer provides some fancy splash screen to distract the
user while the rest of the application loads. The lack of
responsiveness is a more difficult issue to overcome, but if prior
experience with Apple's Java bridge is any guide, the mushy (rather
than crisp) UI responsiveness is tolerable if not ideal.

In the end, I don't think this is a "terrible idea" by any means. It
provides a great entry point to Clojure integration with Cocoa,
providing a pathway to building superior UIs for Clojure
applications.  Any lingering problems, I'm sure, can be overcome or
remedied in the long-term.
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to