comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP>
Subject: Re: Oberon and Wirthian languages (was: Heartbleed)
Date: Mon, 21 Apr 2014 13:06:08 +0000 (UTC)
Date: 2014-04-21T13:06:08+00:00	[thread overview]
Message-ID: <lj3540$m81$1@dont-email.me> (raw)
In-Reply-To: 8761m535e4.fsf_-_@ludovic-brenta.org

On 2014-04-19, Ludovic Brenta <ludovic@ludovic-brenta.org> wrote:
> Simon Clubley writes:
>>>> What may be a viable option would be if a simpler Wirth style
>>>> language existed and whose compiler generated object code compatible
>>>> with gcc and used binutils for it's assembling/linking phase.
>>>
>>> Oberon?
>>
>> Something based on one of the Oberon variants is _exactly_ the kind of
>> thing I was thinking of. I would modify some of the syntax elements to
>> make them more Ada like however.
>>

[Note: There's a Ada language lawyer question below for those of you
who like such things. :-)]

>> You know, Oberon-14 sounds like a nice name for a new programming
>> language. :-)
>
> The problem I have with Oberon and its descendants is that they removed
> the subrange types from Modula-2 (they are similar to Ada's subtypes of
> numeric types).  Also, TTBOMK, no Wirthian language allows the
> programmer to define new numeric types from scratch and make them
> incompatible at compile-time (i.e. requiring explicit type conversion).

I can't speak for all Wirth style languages, but that's certainly true
for Oberon-2 and it was true for things like the dialects of Pascal
I have used in the past.

In Oberon-2 however, if you create two record types, each with a single
INTEGER within the record, then you can't assign one record to the other:

obc -o typetest typetest.m
"typetest.m", line 25: record type 'rectype2' is needed on the RHS of this
assignment
>       rec2            := rec1;
>                          ^^^^
> This expression has record type 'rectype1'

I got round to double checking this today with the very latest version
of the the Oxford Oberon-2 compiler, which I wanted to do before posting.
You also can't perform a plain assignment which would result in the
loss of data by moving a integer into a smaller sized integer.

This is unlike how Free Pascal apparently behaves, BTW. From:

	http://www.freepascal.org/docs-html/ref/refsu5.html

|Free Pascal does automatic type conversion in expressions where different kinds
|of integer types are used. 

I'm going by the documentation as I have never used Free Pascal (and
after reading the above I'm not exactly motivated to try it now. :-))

The suggestion of a Oberon variant as a base was to choose something
as close to C as possible, which would then have some basic Ada style
functionality added into it.

> According to John McCormick's famous reseach paper[1], the most
> desirable features of a programming language are, in order of
> importance:
>
> - Modeling of scalar objects.
>      Strong typing.
>      Range constraints.
>      Enumeration types.
> - Parameter modes that reflect the problem rather than the mechanism.
> - Named parameter association.
> - Arrays whose indices do not have to begin at zero.

Agree with all those, and they are something I would want to see in a
C replacement language.

> - Representation clauses for device registers (record field selection
>   rather than bit masks).

Getting rid of C style masks should be a major goal and the above is
required but not sufficient.

To remove all the usage cases for C style masks, we would need atomic
access to registers when using bit fields and a way to update a specified
list of bit fields at the same time (in a read register/modify bitfields
/write back to register operation); either in code:

        atomic using uart0.config1
                .flag1  := 0;
                .enable := 1;
                .txdis  := 0;
        end atomic;

(I'm not too sure about the leading dots however.)

or with a Atomic attribute on the register in question. The problem with
a Atomic attribute is that the bit fields would be updated in isolation
if the statements were separate and this is sometimes _not_ what you want
as well as being far less efficient than C style masks.

Using the above construct allows you to update a subset of related bit
fields as one operation.

Language lawyer question time:

What I have not checked however is if a record assignment in Ada to a bit
field record variable marked as Atomic would result in all the bit fields
listed in the assignment being _guaranteed_ to be updated at the same time
or whether there would just be a atomic update of each component in
isolation.

(Unfortunately, as I need my bare metal code to run on a large range of
platforms, it's usually written in C so I've not actually tried to write
the above construct. Cohen appears to be silent on the issue and the
Ada 95 RM didn't help either.)

Any Ada language lawyers around who could answer the above question ?

> - Higher level of abstraction for tasking (rendezvous rather than
>   semaphores).

Tasking should not be a part of a C replacement language. You want
something which is going to be able to replace, in existing applications,
libraries written in C.

> - Exception handling.
>

Exception handling would be nice, but it would have to be a local to the
current module exceptions model only. How would you push the exception
back to the caller when the caller could be written in any language ?

Simon.

-- 
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
Microsoft: Bringing you 1980s technology to a 21st century world


  parent reply	other threads:[~2014-04-21 13:06 UTC|newest]

Thread overview: 144+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-11  2:39 Heartbleed Charles H. Sampson
2014-04-11  7:59 ` Heartbleed Maciej Sobczak
2014-04-11 10:50   ` Heartbleed Pascal J. Bourguignon
2014-04-12  1:46   ` Heartbleed Charles H. Sampson
2014-04-11 12:43 ` Heartbleed kalvin.news
2014-04-11 19:33   ` Heartbleed Simon Clubley
2014-04-12  4:58     ` Heartbleed Shark8
2014-04-12  7:15       ` Heartbleed Nasser M. Abbasi
2014-04-12  9:28         ` Heartbleed Georg Bauhaus
2014-04-12  9:33         ` Heartbleed Georg Bauhaus
2014-04-12 11:42         ` Heartbleed Pascal J. Bourguignon
2014-04-12 15:37           ` Heartbleed Nasser M. Abbasi
2014-04-12 18:56             ` Heartbleed Pascal J. Bourguignon
2014-04-12 20:29               ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:34               ` Heartbleed Dmitry A. Kazakov
2014-04-12 20:47                 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:53                   ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-15 10:02                 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-15 12:35                   ` Heartbleed Dmitry A. Kazakov
2014-04-12 21:57               ` Heartbleed Niklas Holsti
2014-04-13 13:08                 ` Heartbleed Georg Bauhaus
2014-04-13 13:55                   ` Heartbleed Pascal J. Bourguignon
2014-04-13 15:13                     ` Heartbleed Dennis Lee Bieber
2014-04-13 15:36                       ` Heartbleed Nasser M. Abbasi
2014-04-12 18:39           ` Heartbleed Simon Wright
2014-04-12 19:15             ` Heartbleed Pascal J. Bourguignon
2014-04-12 19:18               ` Heartbleed Pascal J. Bourguignon
2014-04-12 20:40               ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:44               ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 21:31               ` Heartbleed Niklas Holsti
2014-04-12 14:58         ` Heartbleed Dennis Lee Bieber
2014-04-12 18:28           ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 18:22       ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 18:38       ` Heartbleed Simon Clubley
2014-04-12 20:24         ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 21:48           ` Heartbleed Simon Clubley
2014-04-17  6:15         ` Heartbleed Jacob Sparre Andersen
2014-04-17 15:55           ` Heartbleed Shark8
2014-04-17 21:01           ` Heartbleed Simon Clubley
2014-04-17 21:51             ` Heartbleed Shark8
2014-04-17 21:54               ` Heartbleed Alan Jump
2014-04-17 22:02                 ` Heartbleed Adam Beneschan
2014-04-17 22:35                 ` Heartbleed Simon Clubley
2014-04-17 22:55                   ` Heartbleed Jeffrey Carter
2014-04-18  8:48                     ` Heartbleed Simon Clubley
2014-04-18 18:02                       ` Heartbleed Jeffrey Carter
2014-04-18 20:31                         ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 23:16                           ` Heartbleed Pascal J. Bourguignon
2014-04-19 18:29                             ` Heartbleed Simon Clubley
2014-04-21 22:50                             ` Heartbleed Randy Brukardt
2014-04-18  1:38                   ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 14:59                     ` Heartbleed Nasser M. Abbasi
2014-04-18 17:12                       ` Heartbleed Alan Browne
2014-04-18 17:30                       ` Heartbleed J-P. Rosen
2014-04-18 18:04                         ` Heartbleed Jeffrey Carter
2014-04-18 18:34                           ` Heartbleed Simon Clubley
2014-04-18 20:45                             ` Heartbleed Jeffrey Carter
2014-04-18 21:35                             ` Heartbleed Dennis Lee Bieber
2014-04-18 22:20                               ` Heartbleed Jeffrey Carter
2014-04-18 22:41                                 ` Heartbleed Adam Beneschan
2014-04-19 15:53                                   ` Heartbleed Dennis Lee Bieber
2014-04-18 18:37                           ` Heartbleed Alan Browne
2014-04-18 20:45                             ` Heartbleed Jeffrey Carter
2014-04-18 21:06                               ` Heartbleed Alan Browne
2014-04-18 22:20                                 ` Heartbleed Jeffrey Carter
2014-04-19 14:04                                   ` Heartbleed Alan Browne
2014-04-18 20:49                             ` Heartbleed Shark8
2014-04-18 21:07                               ` Heartbleed Alan Browne
2014-04-18 22:56                           ` Heartbleed Nasser M. Abbasi
2014-04-19  4:27                             ` Heartbleed tmoran
2014-04-18 21:17                   ` Heartbleed Shark8
2014-04-19 18:59                     ` Heartbleed Simon Clubley
2014-04-19 19:21                       ` Heartbleed Shark8
2014-04-18  1:29             ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 10:42               ` Heartbleed J-P. Rosen
2014-04-19 11:50         ` Oberon and Wirthian languages (was: Heartbleed) Ludovic Brenta
2014-04-19 12:46           ` Oberon and Wirthian languages Georg Bauhaus
2014-04-19 19:17             ` Simon Clubley
2014-04-19 19:25               ` Shark8
2014-04-19 16:35           ` Oberon and Wirthian languages (was: Heartbleed) Yannick Duchêne (Hibou57)
2014-04-19 19:32             ` Simon Clubley
2014-04-19 22:30               ` Dennis Lee Bieber
2014-04-19 22:35                 ` Oberon and Wirthian languages Alan Browne
2014-04-19 16:53           ` Georg Bauhaus
2014-04-19 17:32           ` Simon Wright
2014-04-19 17:35           ` Jeffrey Carter
2014-04-19 18:06             ` Yannick Duchêne (Hibou57)
2014-04-19 18:53             ` Shark8
2014-04-19 20:08               ` Simon Clubley
2014-04-19 22:16                 ` Simon Clubley
2014-04-21 13:06           ` Simon Clubley [this message]
2014-04-21 18:13             ` Oberon and Wirthian languages (was: Heartbleed) Simon Clubley
2014-04-21 18:45               ` Oberon and Wirthian languages Shark8
2014-04-21 23:26                 ` Randy Brukardt
2014-04-22  0:21                   ` Simon Clubley
2014-04-22  5:48                   ` Shark8
2014-04-21 18:16             ` Jeffrey Carter
2014-04-22  0:34               ` Simon Clubley
2014-04-22  3:01                 ` Jeffrey Carter
2014-04-22 23:31                   ` Randy Brukardt
2014-04-22  6:41                 ` Simon Wright
2014-04-22 12:25                   ` Simon Clubley
2014-04-22 19:13                     ` Niklas Holsti
2014-04-22 20:46                       ` Simon Clubley
2014-04-22 23:38                         ` Randy Brukardt
2014-04-23 12:16                           ` Simon Clubley
2014-04-23 20:55                             ` Simon Wright
2014-04-24  0:20                               ` Simon Clubley
2014-04-24 13:05                                 ` Niklas Holsti
2014-04-24 18:51                                   ` Simon Clubley
2014-04-24 20:11                                     ` Niklas Holsti
2014-04-25  1:37                                       ` Randy Brukardt
2014-04-25 21:33                                         ` Simon Clubley
2014-04-25 21:55                                           ` Randy Brukardt
2014-04-25 23:16                                             ` Dennis Lee Bieber
2014-04-26  6:31                                               ` Niklas Holsti
2014-04-26  0:23                                             ` Nasser M. Abbasi
2014-04-26  2:46                                             ` Shark8
2014-04-26  2:52                                               ` Shark8
2014-04-26  6:37                                               ` Niklas Holsti
2014-04-26  6:19                                             ` Georg Bauhaus
2014-04-26  6:35                                               ` Georg Bauhaus
2014-04-26  6:42                                               ` Niklas Holsti
2014-04-26 17:15                                                 ` Simon Clubley
2014-04-26  6:29                                             ` Niklas Holsti
2014-04-26  7:36                                               ` Dmitry A. Kazakov
2014-04-26  7:52                                                 ` Georg Bauhaus
2014-04-26  8:09                                                   ` Dmitry A. Kazakov
2014-04-26 18:32                                                 ` Simon Clubley
2014-05-08  2:36                                               ` Randy Brukardt
2014-05-08 17:48                                                 ` Niklas Holsti
2014-05-08 19:22                                                   ` Randy Brukardt
2014-04-26  7:23                                             ` Simon Wright
2014-04-26  9:27                                               ` Niklas Holsti
2014-04-26 12:34                                                 ` Simon Wright
2014-04-27 10:38                                                   ` Simon Wright
2014-04-27 15:36                                                     ` Simon Clubley
2014-04-27 14:26                                               ` Brian Drummond
2014-04-22 23:30                 ` Randy Brukardt
2014-04-23 12:17                   ` Simon Clubley
2014-05-14  9:39         ` Heartbleed gvdschoot
2014-04-12 22:01       ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 17:58         ` Heartbleed Alan Browne
2014-04-18 17:24 ` Heartbleed - attacks? Alan Browne
replies disabled

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