Collaborative articulation of how abstraction and language is employed in the computational manifestation of numbers -- including analysis of the role of syntax, semantics, and meaning in the specification and use of software interfaces.

This page is powered by Blogger. Isn't yours?

Recent Items
Deja Double Vu
Blog Restored
Unorganized set of references: to be evaluated
Document-centric integration; perils of API's
Libraries and Platform Independence
"External" Interface Contracts
Interfaces, Protocol Extensibility, and Versioning
A Fine Kettle of Fish, indeed.
What Is a Model?
A Fine Kettle of Fish

Archives
2004-05-30
2004-06-06
2004-06-13
2004-06-27
2004-08-22
2004-08-29

2004-06-07

A Fine Kettle of Fish, indeed.

In A Fine Kettle of Fish orcmid provides some background into a discussion on programming interfaces, and how they come to mean something. There's a lot more to it, but here I want to add my view of what I did when orcmid created pseudo-code for an interface called Num.java and I produced a Java file using 'ints.'

A week or two before we had the exchange of pseudo-code Dennis told me about a discussion on a foundations of mathematics list where people talking about the meaning and existence of numbers. I'm not sure this is correct, but it's what I remembered. And from my view I thought it was a bit odd, since I seem to be able to use numbers fairly easily without worrying about whether they exist or have any meaning other than the operational one I use without thinking.
This kind of discussion also made me think about the kind of meaning we assign and negotiate with ordinary language (as different from mathematical language).



Anyhow, this is sitting in my mind when Dennis sends me the pseudo-code for an interface to a Peano Numeral. [You'll need to look at the blog post referenced above to follow along.] He says in his note that he'd like to have something that compiles. Well this looks simple enough and, although I haven't written Java in a while, I look at some other code, and decide that a Num needs to be some kind of thing that Java can actually operate on. I'm thinking of the conversation about the meaning of numbers, my own limited understanding of Peano Numbers and Java, and decide (without talking with Dennis) that "pred" and "succ" must refer to a predecessor and successor integer number. So, hence, these methods probably deliver "ints." Now, I do wonder if they just could return Num, but I'm really short on time, compile the interface, and send it along.

Dennis says "Wow! ... that's not what I meant." And provides this response:


// package com.orcmid.llc.pa.pn;

public
interface Num
{

public Num next();

public Num pred();

public
boolean isOrigin();
}



A few days later I'm on the train from NYC and looking at the interface and wonder what it might be to actually write a class that implements the interface. So, I start to do that, but soon realize, that I really don't know what a Peano Numeral is and what this interface provides. I need a context here. And furthermore, without that, it seems pretty hard to write a Java class that implements the three methods.

So I'm left with some questions: (1) What is a Peano Numeral?, (2) How might I use it?, and (3) then what meanings am I agreeing to, in terms of the Java language, when I implement it? I have the feeling that I'm missing something fundamental here, but don't know what that is.

Comments: Post a Comment

2004-06-06

What Is a Model?

What Is a Model?


Hal 9000: Models.  Hal Pierson was nagged to blog by his son, Harry.  Another Scoble spotting, Hal's mid-May toe in the waters of blogging includes an essay on models.  I mention it here because it is relevant to the MDA part of this conversation and a struggle I had with models in mathematical logic.  I am more comfortable now, and need to update that material now that I think I understand the situation.

Here's why I pay attention to what Hal Pierson has to say:
"Should we model the problem space or the solution space? Up to now Computer Aided Software Engineering (CASE) has focused on modeling the solution space. UML is used primarily to model software elements – classes, objects, interactions, states, etc. Model Driven Architecture (MDA) emphasizes transformations from one model to the next, presumably eventually arriving at a source code model. But it is unclear how (or even if) the MDA approach can cross that all-important chasm between models of the problem and models of the solution."
I recommend Hal's description.  It will be useful to regard models in that way here.  We may also have to accept that in mathematical logic the table is spun around with models being manifestations of theories, as in "the physical universe provides a model of mathematical physics" (speaking loosely).  Both views are important, and the challenge is to be clear which perspective applies in a given context.

Comments:
I want to emphasize that even more important than which side we see a model working from is Hal's distinction between solution space and problem space and the gap that represents between the users of systems and the builders of systems.  One way that gap arises in conversations that anderbill and I have is in terms of a Requirements Gap. It is important not to close the solution-problem gap, but to bridge it.  The gap is important, and its first value is in recognition that it is there.
 
Tim Bray points to piece by Jeff Dillon that talks briefly about Java interfaces and Java platform independence.

The claim here is that Java interfaces are all constructed to be platform independent, whereas .NET and mono interfaces contain platform (read, OS specific) elements that require further wrapping, if they are to be portable.

This made me think of the discussion here on models. It will be interesting to see how we go from a platform-independent (?) Java interface for a Peano Numeral to a program running on a computer that uses them. What dependencies will be required?

I think we're trying to separate models(?) (and programs(?) is it possible?) from specific OS platforms, as well as the meaning ascribed to interfaces when they are instantiated in programs that execute on platforms.
 
Hi Bill, I think you are onto something.

It seems to me that Tim was talking about libraries more than the interface mechanism.

The concern seems to be about what gets exposed through interfaces. The pet illustration is the weight of relying directly on something like an exposed access to the Windows registry model. If something like that is not properly abstracted, having a good portable interface and a straightforward rehosting is a concern.  I run into the same thing looking for an open-source Wiki that I can rehost under ASP and also not require me to install MySQL (or any database, in fact).

It looked to me that such dependencies were what kept COM and DCOM from being readily-ported onto other platforms.  The System Control Manager (SCM) and libraries that supported COM were so heavily welded into Windows that it was expedient to drag a pile of Windows OS functions with it to make easy hosting on Unix, for example.  That turned out to be a seriously-unnatural act, as far as I can tell.  The same thing was done to provide an adaptor layer on FreeBSD for the Shared-Source version of the CLI.  (I presume that Mono doesn't have that problem, considering all of the places they are hosted, so this wasn't an inescapable situation for .NET or for DCOM thanks to the miracle of refactoring.)

You can have a similar problem with Java, of course.  The Sun folk insisted that Eclipse was digging that kind of hole, and maybe they have.  It may taste a little different, but the consequences cam be the same once there's a reliance on substantical closed-source or very-specific implementations (think MySQL), including embedded operating-system functions.

I want to take this off into a separate Numbering Peano entry to suggest how interfaces (especially the Java-language facility of that name) aren't platform-independent either.  I'm interested in the question of how does one use a platform-specific facility to accomplish platform-independent functionality, and is it even meaningful to speak that way?  More later.
 
Oops, it isn't Tim Bray who put together the comment, it is, as Bill Anderson noted, Jeff Dillon at http://blogs.sun.com/roller/page/jeffdillon/20040609#net_and_mono_the_libraries.  I agree with both of them: "It's the libraries, stupid," and Bill's questions cut right to it.  And, it's not just the libraries, heh, heh, heh.
 
Post a Comment
 
Hard Hat Area You are navigating the Miser Project

created 2004-05-31-22:34 -0700 (pdt) by orcmid
$$Author: Orcmid $
$$Date: 04-09-01 10:55 $
$$Revision: 3 $