Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #53629

Re: the language

From Richard Heathfield <invalid@see.sig.invalid>
Organization Go, ion artisan!
Subject Re: the language
Newsgroups comp.lang.c
References <bgfc7at635gna5mll0ifmnlp6iq86prijn@4ax.com> <kpBdw.5607$n97.3994@fx05.am4> <kfnbnnrt49d.fsf@x-alumni2.alumni.caltech.edu>
Message-ID <Rg7ew.1962$Z51.89@fx47.am4> (permalink)
Date 2014-11-28 23:09 +0000

Show all headers | View raw


Tim Rentsch wrote:

> Richard Heathfield <invalid@see.sig.invalid> writes:
> 
>> Rosario193 wrote:
>>
>>> one language for program has to have no undefinite behaviour
>>> and has to be simple...the one that program has to think to the
>>> problem one want resolve more than language laws etc
>>
>> It turns out to be surprisingly difficult to design a language
>> that has both of the following characteristics:
>>
>> (a) has no undefined behaviour;
>> (b) is sufficiently powerful to be interesting.
>>
>> [snip elaboration]
> 
> Either what you mean is different from what it appears you
> are saying, or the claim is, well, let's say wrong in the
> high-order bit.  An ordinary deterministic Turing machine
> (ie, as a class of programs) satisfies both properties.

A Turing machine is interesting in an academic sense, but not in the sense 
that I intended. To be interesting, a computer has to be able to sing and 
dance, not just hack away at the Halting Problem or take a month to 
calculate the square root of 17. This requires the support of the language, 
or at least it requires the language not to get in the way.

Let us consider as an example a specific address: 0xDEADBEEF. I'm going to 
use C as my langue de preference, but any (sufficiently powerful) language 
would have done.

unsigned char *p = (unsigned char *)0xDEADBEEF;
*p = 42;

Right, what does this do?

In C, the conversion to unsigned char * is legal (6.3.2.3(5) of C99), and 
the result is implementation-defined. The sticky part comes next.

From 6.5.3.2(4) of C99:
The unary * operator denotes indirection. If the operand points to a 
function, the result is a function designator; if it points to an object, 
the result is an lvalue designating the object.  If the operand has type 
``pointer to type'', the result has type ``type''. If an invalid value has 
been assigned to the pointer, the behavior of the unary * operator is 
undefined.

So if 0xDEADBEEF happens to be the address of an object, the behaviour is 
reasonably well-defined (it's conceivable that the assignment of that 
particular bit pattern to that particular byte in that particular object 
yields a trap representation, but let's not worry about that just now).

But if the address is 'invalid', then the behaviour is undefined.

Now let's look at the interesting things we can do with this assignment:

a) On the DeathStation 9000, 0xDEADBEEF is the address that you need to load 
with the number of missiles you want to launch.
b) On the LifeStation 0009, 0xDEADBEEF is part of video RAM, and this is how 
you write a dollar sign to a particular place on the screen (and before you 
check, no, the LifeStation 0009 doesn't use ASCII; if it did, an asterisk 
would be written, of course).
c) On the Limbo 64, the assignment reboots the machine (by design).
d) On the Zen GT, the assignment limits the engine speed to 42 
kilorevolutions per minute.

And so on, to the limit of your imagination.

If C tried to define the behaviour of the construct, it would have to be 
either well-defined (go on, have a go), or unspecified (in which case the 
Standard would have to explain and thus limit the possible range of 
behaviours), or implementation-defined (see 'unspecified', but add compiler 
docs).

Any of these choices would arbitrarily curtail the scope that C has to deal 
with quirky hardware.

It remains my contention that undefined behaviour is an essential part of 
any sufficiently powerful language. To define every behaviour is to design a 
closed-in language that arbitrarily restricts us to solving problems of the 
kind that the language designer envisaged.

-- 
Richard Heathfield
Email: rjh at cpax dot org dot uk
"Usenet is a strange place" - dmr 29 July 1999
Sig line 4 vacant - apply within

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

the language Rosario193 <Rosario@invalid.invalid> - 2014-11-26 21:54 +0100
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-26 21:56 +0100
    Re: the language John Bode <jfbode1029@gmail.com> - 2014-11-26 13:45 -0800
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 11:52 +0100
      Re: the language "Bill Cunningham" <nospam@nspam.invalid> - 2014-12-01 23:25 -0500
      Re: the language "Bill Cunningham" <nospam@nspam.invalid> - 2014-12-02 00:56 -0500
        Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-04 14:52 +0100
          Re: the language "Osmium" <r124c4u102@comcast.net> - 2014-12-04 08:07 -0600
            Re: the language Geoff <geoff@invalid.invalid> - 2014-12-04 10:20 -0800
  Re: the language Mark Storkamp <mstorkamp@yahoo.com> - 2014-11-26 15:11 -0600
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:16 +0100
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:18 +0100
  Re: the language John Bode <jfbode1029@gmail.com> - 2014-11-26 13:12 -0800
    Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-11-27 00:37 +0000
    Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-11-27 01:13 +0000
  Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-11-26 22:45 +0000
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-27 07:41 +0100
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-27 08:12 +0100
    Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-27 01:43 -0600
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 11:56 +0100
        Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-28 09:08 -0600
          Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 20:58 +0100
            Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-11-28 19:22 -0600
              Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-02 02:59 +0100
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-02 02:53 +0000
                Re: the language Les Cargill <lcargill99@comcast.com> - 2014-12-01 21:25 -0600
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-02 06:22 +0000
  Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-27 08:37 +0000
    Re: the language Reinhardt Behm <rbehm@hushmail.com> - 2014-11-27 16:44 +0800
      Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-11-27 15:35 +0000
        Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-11-27 11:58 -0500
          Re: the language jt@toerring.de (Jens Thoms Toerring) - 2014-11-27 22:44 +0000
            Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 09:52 +0100
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 12:53 -0800
          Re: the language Thomas Jahns <jahns@idontlikespam.dkrz.de> - 2014-11-28 10:07 +0100
            Re: the language Thomas Jahns <jahns@idontlikespam.dkrz.de> - 2014-11-28 14:57 +0100
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 13:09 -0800
    Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:01 +0100
      Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-28 14:46 +0000
    Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-11-28 13:16 -0800
      Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-11-28 22:09 +0000
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:40 -0800
      Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-28 14:42 -0800
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:22 -0800
      Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-11-28 23:09 +0000
        Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-28 16:14 -0800
          Re: the language BartC <bc@freeuk.com> - 2014-11-29 01:42 +0000
          Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-11-29 01:42 +0000
            Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-11-29 04:03 -0800
          Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-01 00:55 -0800
            Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-02 05:42 +0000
        Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-11-28 19:25 -0500
        Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-01 03:21 -0800
          Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-01 14:02 +0000
            Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-05 10:18 -0800
              Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-07 08:25 +0000
                Re: the language Öö Tiib <ootiib@hot.ee> - 2014-12-07 10:44 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-07 19:17 +0000
                Re: the language Öö Tiib <ootiib@hot.ee> - 2014-12-07 15:48 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 05:45 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-08 03:27 -0800
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-08 06:00 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 06:17 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-08 03:37 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-08 12:53 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 04:21 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-16 12:43 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 14:46 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 00:23 +0000
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-17 07:01 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 07:22 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-17 11:56 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-17 05:43 -0800
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:30 +0100
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:41 +0100
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 14:34 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 02:15 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-17 22:31 -0500
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 17:19 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 07:52 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 17:21 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:15 +0000
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 01:20 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 07:48 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 07:40 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 12:54 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 09:54 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 15:19 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 11:00 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 16:13 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 11:27 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 16:45 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 13:48 -0500
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 19:10 +0000
                Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-12-19 21:17 -0600
                Re: the language Morris Dovey <mrdovey@iedu.com> - 2014-12-19 21:32 -0600
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 16:49 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 17:00 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-19 13:57 -0500
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 14:31 -0800
                Re: the language Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 20:29 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 20:36 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-17 07:18 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 15:45 +0000
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-17 16:50 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-17 17:24 +0000
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-18 02:07 -0600
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 12:04 +0000
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-18 08:06 -0500
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-18 08:30 -0500
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-19 00:11 -0500
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-19 07:00 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-19 08:43 -0800
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-19 23:29 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 00:37 -0800
                Re: the language gazelle@shell.xmission.com (Kenny McCormack) - 2014-12-20 08:45 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-20 09:45 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-20 03:17 -0800
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-18 06:09 -0800
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 14:30 +0000
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-18 14:23 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-18 08:18 -0800
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2014-12-20 12:22 -0500
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2014-12-20 13:36 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 11:43 -0800
                Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-20 11:37 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-20 20:10 +0000
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-21 15:02 -0600
                Re: the language Kaz Kylheku <kaz@kylheku.com> - 2014-12-21 22:02 +0000
                Re: the language Stephen Sprunk <stephen@sprunk.org> - 2014-12-21 23:49 -0600
                Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-21 17:45 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 10:29 -0800
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-20 05:29 -0600
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-20 11:32 -0800
                Re: the language Robert Wessel <robertwessel2@yahoo.com> - 2014-12-21 15:23 -0600
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-22 23:39 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-20 20:22 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 10:24 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:36 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-19 09:24 -0800
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 17:53 +0000
                Re: the language Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-20 11:48 -0800
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-19 02:20 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 08:31 +0000
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-19 09:31 +0000
                Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 10:10 +0000
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 07:08 -0800
                Re: the language JohnF <john@please.see.sig.for.email.com> - 2014-12-20 06:39 +0000
                Re: the language John Forkosh <forkosh@panix.com> - 2014-12-20 07:32 +0000
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-04 17:02 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-04 12:40 -0500
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-04 18:02 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 09:47 -0500
                Re: the language Greg Martin <greg.at.softsprocket@dot.com> - 2015-01-05 15:14 +0000
                Re: the language Keith Thompson <kst-u@mib.org> - 2015-01-05 08:42 -0800
                Re: the language glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-01-06 00:14 +0000
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 13:19 -0500
                Re: the language Richard Damon <Richard@Damon-Family.org> - 2015-01-04 15:59 -0500
                Re: the language Keith Thompson <kst-u@mib.org> - 2015-01-04 14:30 -0800
                Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-01-04 15:44 -0800
                Re: the language James Kuyper <jameskuyper@verizon.net> - 2015-01-05 13:36 -0500
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-11-28 12:07 +0100
  Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-02 23:16 +0100
    Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-03 02:23 -0800
      Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-03 15:55 +0100
      Re: the language Nobody <nobody@nowhere.invalid> - 2014-12-03 15:42 +0000
        Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-04 04:49 -0800
          Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-04 09:07 -0800
            Re: the language Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-04 10:08 -0800
              Re: the language Keith Thompson <kst-u@mib.org> - 2014-12-04 11:49 -0800
                Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-05 12:32 +0100
          Re: the language raltbos@xs4all.nl (Richard Bos) - 2014-12-04 22:17 +0000
  Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 18:17 +0100
    Re: the language Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:12 +0000
      Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 23:15 +0100
        Re: the language Rosario193 <Rosario@invalid.invalid> - 2014-12-18 23:50 +0100
    Re: the language "ocq (an evil corporate man)" <ocq@maili.ng> - 2014-12-19 02:34 +0100

csiph-web