What is "Open Language"?

Mark Waddingham mark at livecode.com
Mon Oct 26 12:00:21 EDT 2015


On 2015-10-24 23:25, Richard Gaskin wrote:
> I've worked with OS APIs in Pascal, C, and two xTalks, Tookbook's
> OpenTalk scripting language which provides that built-in, and
> CompileIt for HyperTalk.

This is true - they did. However, they come from a time when almost all 
OS APIs were procedural, and quite simple.

(Also, due to the limitations of what one can represent in 'stringy' 
languages - of which LiveCode Script is one - such a facility is 
incredibly fiddly, error prone and difficult to build nice abstractions 
around).

> The one thing I've learned from that is that the language you're using
> isn't all that important, because no matter what you're writing in the
> OS you're talking to expects C:  it uses C data types and structures,
> provides tons of great sample source but all in C, and requires that
> you think like a C programmer, understanding and managing data in ways
> a good xTalk normally insulates from even having to think about - the
> difference between a pointer and a handle isn't interesting to most
> xTalkers, but can be essential in C.

This isn't true. Most of Android's APIs are Java. Most of iOS / Mac's 
APIs are Objective-C. A lot of Windows functionality is provided through 
COM - which is an object-based API. Oh, and in the browser (HTML5) world 
the APIs are JavaScript (another object-based language).

> By the time you become fluent enough in C to understand OS APIs well
> enough to use them, you've already learned enough to write in it as
> well.

This is simply not the case - there's a huge chasm between being able to 
understand C-style APIs and data-structures enough to use them and being 
able to write C (at least to any degree of use / proficiency).

Indeed, given that we are talking about (in many cases) very well 
defined APIs, which have been (ignoring Win32 and MacClassic ;)) very 
well designed - you actually don't need to understand much C to use 
them.

All you need to understand is what the values they take and return are, 
and how they can be appropriately marshalled. Indeed, the goal is that 
LiveCode Builder will do most of the marshalling for you - so as long as 
you have enough of an understanding to read the API definitions and map 
them to LCB forms, you can then use a language which is a great deal 
more familiar to use them (to be fair we still have a fair bit more work 
to do on the marshalling front...).

> Monte's done an amazing job showing off what the externals SDK can do
> for extending LC.  It would be great to see more people jump on board
> with it.

Externals don't really go away with LCB - they just get renamed. All 
that happens is that LCIDLC which is used to simplify the interface 
between Engine and External goes away and is replaced by an LCB file 
containing nothing but foreign handler declarations. Of course, you then 
get the benefit of being able to mix you LCB and C in any way you 
choose.

Mark.

-- 
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps




More information about the use-livecode mailing list