comp.lang.ada
 help / color / mirror / Atom feed
* Ultimate Language feature list
@ 1998-05-13  0:00 MSG
  1998-05-13  0:00 ` John McCabe
                   ` (7 more replies)
  0 siblings, 8 replies; 22+ messages in thread
From: MSG @ 1998-05-13  0:00 UTC (permalink / raw)



I do all my development in C++.  Not necessarily because I want to, but
because I keep looking (and looking) for alternate languages/environments
and they ALWAYS come up short.  I've decided that the language/environment
for me hasn't been created, so I'm starting a list of features that I
like/require.  It's drawn from good languages (I don't consider C++ a "good"
language", neither is Java).  If anyone would care to contribute, please
feel free.  Who knows, maybe with enough interest we can create a
language/environment we REALLY like and that works easily on any platform,
allowing you to use a sophisticated  language and still access platform
specific features for truly fantastic and stable applications.

I hope a posting like this doesn't cause a flame war.  I'm just sharing my
feelings and hoping that some interest will spark -- to what end, I'm not
sure.

Michael Scott Garnett
michael@pickles.org

#1 Verbosity.  C++ and Java's cryptic syntax is cute and fun, but not
useful.  Our Language (OL -- come up with a good name) should be verbose
like Ada and Eiffel.  Semicolons optional like Eiffel (except where
ambiguous).
#2 Completely OO.  No free floating subroutines.  The only construct higher
than a CLASS is an Organizational Unit (like an Eiffel cluster).
#3 Object-Dot-Feature syntax.  No Ada95esque subprograms which take class
arguments (like C++ friend functions).  I am torn between Object-Dot-Feature
and Object SPACE feature syntax (like Smalltalk).
#4 Reference Objects as a default with the ability to expand an object or
class to full form (like Eiffel EXPANDED types)
#5 Garbage Collection.
#6 Construction and Finalization
#7 Predictable Finalization for stack-based objects (either reference or
expanded).  When the immediately enclosing scope terminates, the
finalization is called THEN. This is VERY important for reliable external
resource management (OK, C++ did this right).
#8 Polymorphism as the rule.  Let the compiler figure out which routines are
not overridden and use static calls where appropriate (a la Eiffel).
#9 Named arguments.  Either like Ada or like Smalltalk (object moveTo: here
usingPath: aPath).
#10 Array and record aggregates (like Ada).
#11 Multiple inheritance like Eiffel, NOT C++.
#12 STRONG typing and constraint/program checking in the compile and runtime
like Ada.  Options to remove such features in a "finalized" version is very
much necessary.
#13 Ada-style tasks.  Using Object-as-task, like the proposed Eiffel
extension "separate".  Ada's SELECT mechanism.  Protected types (like
Ada95), Java almost got this right.
#14 EASY access to other languages/calling conventions.  Any CLASS's
features my be effected by external other-language routines. The includes an
easy way to link to C++ libraries.  Such special classes can specify that
for "THIS" an other-language-notion be used. Such classes would lack
"variables", being limited to routines only.
#15 Generics.  Not templates.
#16 Intrinsic types (like Integer) as objects, but completely replaced in
generated code by native types (like Eiffel).
#17 Ada's float types (delta, digits).
#18 Range specifications (like Ada).  Checked at compile time and run time.
#19 Discriminated record/class types (like Ada).  Checked at compile time
and run time. (maybe not necessary with inheritance)
#20 An easy with to extend and re-expose/hide features of parents.  Like
Eiffel.
#21 Distributed computing.
#22 Pre- and post-conditions (from Eiffel).  Including support for the "old"
keyword.  The closest thing to Z (pronounced Zed - a formal method) that
I've seen.








^ permalink raw reply	[flat|nested] 22+ messages in thread
* Re: Ultimate Language feature list
@ 1998-05-13  0:00 adam
  1998-05-14  0:00 ` Rainer Joswig
  1998-05-15  0:00 ` Fergus Henderson
  0 siblings, 2 replies; 22+ messages in thread
From: adam @ 1998-05-13  0:00 UTC (permalink / raw)



Well, as long as we're talking about what language features we want,
here's one I've always wanted: The ability to deal with sequences of
objects.  I don't mean a list of objects where you have to create an
array or linked list in memory that contains all the objects; I mean
the ability to write code that talks about sequences of objects even
though the program only generates one at a time.  So I'd like to be
able to write a function like this:

        -- Integer_List is a "traditional" linked list of integers
    function Nonzero_Elements_Of (List : Integer_List)
                 return sequence of Integer is
    begin
        List_P := List;
        while List_P /= null loop
            if List_P.Data /= 0 then
                return List_P.Data;
                    -- Note: this RETURN would return one integer but
                    -- would NOT terminate the function; eventually the
                    -- caller would return to this point in the function
                    -- to get more
            end if;
            List_P := List_P.Next;
        end loop;
    end;

and the caller would have primitives available to test for the end of
the sequence, get the next element of the sequence, etc.; or you'd
have constructs like:

    for Int in Nonzero_Elements_Of (My_List) loop
        ...
    end loop;

which would set Int in turn to each element returned by the function;
or you'd have ways to deal with the whole sequence, e.g. you could
pass the function result of Nonzero_Elements_Of as an "in" parameter
to another procedure that declares a "sequence of Integer" as a
parameter.  Etc.  Of course, there would be no requirement that a
sequence be finite.

Well, I can dream.  Naturally, this dream has come up again since I'm
involved in another discussion involving how to implement an iterator.

                                -- Adam

-----== Posted via Deja News, The Leader in Internet Discussion ==-----
http://www.dejanews.com/   Now offering spam-free web-based newsreading




^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~1998-05-20  0:00 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-05-13  0:00 Ultimate Language feature list MSG
1998-05-13  0:00 ` John McCabe
1998-05-13  0:00 ` Charles Hixson
1998-05-14  0:00   ` Eugene Mayevski
1998-05-13  0:00 ` Mark K. Gardner
1998-05-15  0:00   ` Jussi Santti
1998-05-14  0:00 ` Mats Weber
1998-05-15  0:00 ` Fergus Henderson
1998-05-15  0:00 ` Chris Miller
1998-05-15  0:00   ` Franck Arnaud
1998-05-15  0:00   ` Stephen Bull
1998-05-20  0:00     ` John Volan
1998-05-15  0:00 ` Nick Roberts
1998-05-16  0:00   ` Tarjei T. Jensen
1998-05-15  0:00 ` Nick Leaton
  -- strict thread matches above, loose matches on Subject: below --
1998-05-13  0:00 adam
1998-05-14  0:00 ` Rainer Joswig
1998-05-14  0:00   ` John English
1998-05-14  0:00     ` Michael F Brenner
1998-05-14  0:00       ` John McCabe
1998-05-14  0:00       ` Charles Hixson
1998-05-15  0:00 ` Fergus Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox