Newsgroups: comp.object,comp.lang.beta,comp.lang.c++,comp.lang.eiffel,comp.lang.python,comp.lang.sather,comp.lang.smalltalk
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!nntp.sei.cmu.edu!news.psc.edu!hudson.lm.com!news.math.psu.edu!news.cac.psu.edu!newsserver.jvnc.net!newsserver2.jvnc.net!howland.reston.ans.net!gatech!news.mathworks.com!uhog.mit.edu!uw-beaver!uw-coco!mdisea!mothost!schbbs!news
From: shang@corp.mot.com (David L. Shang)
Subject: Re: Rapid Prototyping + statically-typed OOPLs?
Reply-To: shang@corp.mot.com
Organization: MOTOROLA 
Date: Mon, 24 Jul 1995 14:53:21 GMT
Message-ID: <1995Jul24.145321.5863@schbbs.mot.com>
References: <3uoglp$ij9@locutus.rchland.ibm.com>
Sender: news@schbbs.mot.com (SCHBBS News Account)
Nntp-Posting-Host: 129.188.128.126
Lines: 106
Xref: glinda.oz.cs.cmu.edu comp.object:35515 comp.lang.beta:494 comp.lang.c++:140303 comp.lang.eiffel:9964 comp.lang.python:5227 comp.lang.sather:2073 comp.lang.smalltalk:26266

In article <3uoglp$ij9@locutus.rchland.ibm.com> seurer@nordruth.rchland.ibm.com  
(Bill Seurer) writes:
> And who cares how terse they are anyway?  C++ is certainly NOT easy to
> learn because it is terse.  If anything is is more difficult because of
> the terseness.  Why is "terseness" supposed to be good?

Terseness might increase the difficulty in learning on
one hand, but might cut down the learning curve
significantly on the other hand.

Sounds contradictory? Let me explain.

In general, our software industry contains two different
groups: one group build the user-models and the other
group uses the user-models to build the systems or
applications. Lets call the formmer the model-developers
and the latter the model-users.

A terse language should have the power for model-developers
to create various native models for their model-users.
When I say the model is native, I mean that its archetecture
should resemble to structure of the real-world problem
domain and the users' perspective on the system.

For model-developers, they do not have an easy job to do.
They must learn to master the power of the language, and
get a deep and sound understanding of those "meta"
facilities to create various high-level models.

For models-users, they should have a easy job. They just
pick up the fitting shoes to wear. Since each developed
model is well-structured, it is possible to provide a
generic visual framework so that users can use an
automatically customized visual language for either rapid
prototyping or quick application development.

For example, the language should enable model-developers
to created multiple-thread task model, active object model
with communication ports, distributed server model with
remote services, mobile object model, data-flow model,
state-transition machine, database model with transactions,
recoverable object models, and so on. And the model users
can select one or several models fitting to their
application frameworks and develop their application
quickly and easily.

Unfortunately, the existing languages fail in this goal.
The obstacle is the conflict between high-level description
and the diversity of the representation. Often, people find
that a general purpose language cannot describe a problem
in a specific application domain in a high-level model.
They are facing a painful choice: either using low-level
programing methods to simulate the specific model (e.g.
a set of unstructured library functions), or developing
yet another language for describing this specific model.
The first choice results in ill-structured system, which
is hard to be understood, to be reused, and to be upgraded.
The second choice results in many specific versions of a
programming language, for example: real-time C++, concurrent
SmallTalk, parallel C, database language, and etc. Each
specific version provides a rigid built-in model that can
only be used in a narrow domain. When the application
requirement changes in future, yet another new language
is required. On the other hand, it is impossible for a
language to equip all of the possible models. We are
sadly in this situation: we have to adjust our thought
to fit the language that we are using. We cannot let the
language to express our new concept in a native way. The
language becomes a big obstacle that constrains our
software ideas.

One of the goals of the Transframe language is to
provide an abstract vehicle that can be transformed
into high-level computing models for different
requirements in various application domains. However,
It should not be a hodgepodge language. On the
contrary, such diversity shall be obtained from
simplifying the language framework: the set of the
fixed, built-in features, which shall be much smaller
than C++. One the other hand, the semantics of each
feature is naturally extended; so that the user-
definable parts are flexible enough to build various
high-level models for specific applications like
concurrent systems, real-time applications,
distributed systems, database applications, parallel
computing and etc. The chance for inventing yet
another language for a specific problem domain shall
be greatly reduced. The language shall provide a
generic framework to build various high level models
rather than a set of rigid built-in model. Various
computing models such as multiple thread task, active
object with communication ports, distributed server
with remote services, and database object with
transactions shall be created by language users
(preciely, model developers). The model created shall
well-put users' concept so that it helps 

   * people understand the concept easily when they
     read programs written in this model, and
   * visual programming environment generate a visual
     representation from the architecture of the model.

David Shang


  
