Article: MAQSIP-RT: An HPC Benchmark
By: Michael S (already5chosen.delete@this.yahoo.com), July 1, 2010 8:50 am
Room: Moderated Discussions
Konrad Schwarz (no.spam@no.spam) on 7/1/10 wrote:
---------------------------
>>There are few bits in 'C' syntax that have absolutely no justification except of
>>backward compatibility with [hopefully] very small subset of existing code base.
>>They are:
>>1. Legality of functions without prototypes.
>
>Of course, GCC will warn you about invoking functions undeclared with a new-style prototype.
1. Warnings are not the part of the language standard.
2. Warnings are way too easy to overlook during long build.
>
>>2. Legality of strange syntax constructs like 5[x]
>
>5[x] is easily explained by the definition of A[O], which
>is *(A + O). Commutativity of addition explains this form.
>
>Pointer arithmetic is a great feature. For example,
>what is the address of the end of a completely typed array?
>1 [&A].
I am aware of this theory of Mr. Ritchie. Still don't like it and see zero advantage.
>
>>3. Inconsistency w.r.t. comma-delimited lists. In some contexts (struct/array initialization)
>>comma as a terminator is allowed (at least by all compilers I use) while in some
>>other contexts (function parameters lists, both in call and in prototype) it is
>>not. Not a big deal for human coders, but unnecessary annoyance for code generators.
>
>What language does not suffer from this?
I don't know. But in case of 'C' the fix would be in a spirit of language philosophy.
>Note that C90 allows a comma after the last enum constant
>in an enum definition.
>
>>Another syntax ugliness which, if fixed, would break a bit more code, but not that
>>much is a requirement to define variables at the beginning of the block. gcc dialect already has it fixed.
>
>C90 solves this problem.
>
I don't think so. AFAIK, the following code is not legal in standard C90.
int foo(int x)
{
x += 1;
int y = 10 * x;
y += 1;
return y;
}
>>And finally the biggest unnecessary problem, which, unfortunately, if fixed, will
>>break a lot of legacy code, in particular in mixed C/ASM environments - type-safe
>>link. In my book, omission of type safe link alone is big enough reason to never
>>use 'C' if C++ is supported by your environment.
>
>Actually, I see two other problems: | & have precedence lower than comparison;
>this is because initially C didn't support || and &&. Typedefs are definitions,
>and must appear only once, leading to header protection macros.
>
>On the other hand, for sufficiently small expressions, |
>and & should be faster than || and && on modern processors
>(where applicable).
Practically, operator precedence can't be fixed because that would silently change the meaning of existing code without even throwing a warning.
---------------------------
>>There are few bits in 'C' syntax that have absolutely no justification except of
>>backward compatibility with [hopefully] very small subset of existing code base.
>>They are:
>>1. Legality of functions without prototypes.
>
>Of course, GCC will warn you about invoking functions undeclared with a new-style prototype.
1. Warnings are not the part of the language standard.
2. Warnings are way too easy to overlook during long build.
>
>>2. Legality of strange syntax constructs like 5[x]
>
>5[x] is easily explained by the definition of A[O], which
>is *(A + O). Commutativity of addition explains this form.
>
>Pointer arithmetic is a great feature. For example,
>what is the address of the end of a completely typed array?
>1 [&A].
I am aware of this theory of Mr. Ritchie. Still don't like it and see zero advantage.
>
>>3. Inconsistency w.r.t. comma-delimited lists. In some contexts (struct/array initialization)
>>comma as a terminator is allowed (at least by all compilers I use) while in some
>>other contexts (function parameters lists, both in call and in prototype) it is
>>not. Not a big deal for human coders, but unnecessary annoyance for code generators.
>
>What language does not suffer from this?
I don't know. But in case of 'C' the fix would be in a spirit of language philosophy.
>Note that C90 allows a comma after the last enum constant
>in an enum definition.
>
>>Another syntax ugliness which, if fixed, would break a bit more code, but not that
>>much is a requirement to define variables at the beginning of the block. gcc dialect already has it fixed.
>
>C90 solves this problem.
>
I don't think so. AFAIK, the following code is not legal in standard C90.
int foo(int x)
{
x += 1;
int y = 10 * x;
y += 1;
return y;
}
>>And finally the biggest unnecessary problem, which, unfortunately, if fixed, will
>>break a lot of legacy code, in particular in mixed C/ASM environments - type-safe
>>link. In my book, omission of type safe link alone is big enough reason to never
>>use 'C' if C++ is supported by your environment.
>
>Actually, I see two other problems: | & have precedence lower than comparison;
>this is because initially C didn't support || and &&. Typedefs are definitions,
>and must appear only once, leading to header protection macros.
>
>On the other hand, for sufficiently small expressions, |
>and & should be faster than || and && on modern processors
>(where applicable).
Practically, operator precedence can't be fixed because that would silently change the meaning of existing code without even throwing a warning.
Topic | Posted By | Date |
---|---|---|
New article online: MAQSIP RT | David Kanter | 2010/06/21 11:57 AM |
Why no GCC? | Rohit | 2010/06/22 09:25 PM |
Why no GCC? | David Kanter | 2010/06/23 12:45 AM |
sun 's cc better than GCC? | Rohit | 2010/06/23 05:04 AM |
sun 's cc better than GCC? | anon | 2010/06/23 07:49 AM |
Where is the GCC optimization effort directed? | Mark Roulo | 2010/06/23 10:42 AM |
GCC is very ugly bad everywhere in 64 bits | Vincent Diepeveen | 2010/06/23 02:49 PM |
even for 64-bit arch? | anon | 2010/06/23 02:59 PM |
GCC is very ugly bad everywhere in 64 bits | ajensen | 2010/06/23 11:03 PM |
GCC is very ugly bad everywhere in 64 bits | Gabriele Svelto | 2010/06/24 02:33 AM |
GCC is very ugly bad everywhere in 64 bits | ajensen | 2010/06/24 05:32 AM |
GCC is very ugly bad everywhere in 64 bits | Gabriele Svelto | 2010/06/24 07:18 AM |
GCC is very ugly bad everywhere in 64 bits | ajensen | 2010/06/24 09:50 AM |
Why GCC is big and complicated (my guess) | Mark Roulo | 2010/06/24 12:17 PM |
Why GCC is big and complicated (my guess) | Gabriele Svelto | 2010/06/28 04:00 AM |
GCC is very ugly bad everywhere in 64 bits | Bernd Schmidt | 2010/06/24 05:46 AM |
GCC is very ugly bad everywhere in 64 bits | ajensen | 2010/06/24 09:43 AM |
GCC is very ugly bad everywhere in 64 bits | Vincent Diepeveen | 2010/06/26 02:12 PM |
GCC is very ugly bad everywhere in 64 bits | Rob Thorpe | 2010/06/24 07:47 AM |
GCC is very ugly bad everywhere in 64 bits | Anon | 2010/06/24 05:23 PM |
Where is the GCC optimization effort directed? | Gabriele Svelto | 2010/06/23 10:45 PM |
Where is the GCC optimization effort directed? | ? | 2010/06/24 01:48 AM |
Where is the GCC optimization effort directed? | Gabriele Svelto | 2010/06/24 02:29 AM |
Where is the GCC optimization effort directed? | ? | 2010/06/24 03:13 AM |
Where is the GCC optimization effort directed? | Andi Kleen | 2010/06/24 03:15 AM |
Where is the GCC optimization effort directed? | ? | 2010/06/24 04:08 AM |
Where is the GCC optimization effort directed? | Gabriele Svelto | 2010/06/24 03:54 AM |
Where is the GCC optimization effort directed? | ? | 2010/06/24 04:15 AM |
Where is the GCC optimization effort directed? | Gabriele Svelto | 2010/06/24 07:22 AM |
Where is the GCC optimization effort directed? | Rohit | 2010/06/24 03:04 AM |
Placebo effect | ? | 2010/06/24 06:37 AM |
Placebo effect | Rohit | 2010/06/24 08:45 AM |
Placebo effect | Vincent Diepeveen | 2010/06/26 02:50 PM |
Compile time | Mark Roulo | 2010/06/26 05:28 PM |
Compile time | Richard Cownie | 2010/06/27 04:44 AM |
Compile time | Mark Roulo | 2010/06/27 10:12 AM |
Compile time | Mark Roulo | 2010/06/27 10:21 AM |
Compile time | EduardoS | 2010/06/27 11:37 AM |
Compile time | Richard Cownie | 2010/06/27 04:07 PM |
Compile time & efficiency | ? | 2010/06/28 12:03 AM |
Compile time & efficiency | Mark Christiansen | 2010/06/28 06:08 AM |
Compile time & efficiency | Linus Torvalds | 2010/06/28 07:48 AM |
kernel programming language | John Simon | 2010/06/29 06:46 PM |
Compile time & efficiency | Richard Cownie | 2010/06/28 09:29 AM |
Compile time & efficiency | Linus Torvalds | 2010/06/28 11:17 AM |
Compile time & efficiency | Richard Cownie | 2010/06/28 02:16 PM |
Compile time & efficiency | Richard Cownie | 2010/06/28 06:23 PM |
Compile time & efficiency | Mark Roulo | 2010/06/29 08:31 AM |
Compile time & efficiency | Richard Cownie | 2010/06/29 11:48 AM |
Compile time & efficiency | rwessel | 2010/06/29 12:28 PM |
C is a crappy | dev | 2010/06/29 07:12 PM |
C is a crappy, but only when you push it out of it's niche | Rohit | 2010/06/30 02:11 AM |
C is a crappy | anon | 2010/06/30 02:17 AM |
C is a crappy | dev | 2010/06/30 07:59 AM |
C is a crappy | Max | 2010/07/01 04:30 AM |
C is a crappy | Michael S | 2010/07/01 07:00 AM |
C is a crappy | Konrad Schwarz | 2010/07/01 08:02 AM |
C is a crappy | Michael S | 2010/07/01 08:50 AM |
C isn't so crappy | anon | 2010/07/01 10:11 AM |
C isn't so crappy | Mikael Tillenius | 2010/07/01 11:39 AM |
C is a crappy | Konrad Schwarz | 2010/07/01 11:22 AM |
C is a crappy | Max | 2010/07/02 08:44 AM |
C is a crappy | rwessel | 2010/07/02 12:33 PM |
C is a crappy | anon | 2010/07/02 01:17 PM |
C is a crappy | Max | 2010/07/02 02:56 PM |
C is a crappy | Max | 2010/07/02 03:13 PM |
C is a crappy | rwessel | 2010/07/02 03:32 PM |
C is a crappy | Max | 2010/07/02 04:19 PM |
C is a crappy | Gabriele Svelto | 2010/07/05 05:25 AM |
C is a crappy | gallier2 | 2010/07/02 12:14 AM |
C is a crappy | Ian Ollmann | 2010/07/06 03:07 PM |
Portability | Max | 2010/07/06 03:37 PM |
C is a crappy | hobold | 2010/07/07 02:31 AM |
C is a crappy | Ian Ollmann | 2010/07/07 05:18 PM |
failure to standardize types | Carlie Coats | 2010/07/07 04:11 AM |
C is a crappy | Konrad Schwarz | 2010/07/07 08:34 AM |
C is a crappy | Ian Ollmann | 2010/07/07 05:29 PM |
C is a crappy NOT | Konrad Schwarz | 2010/07/08 12:29 AM |
C is a crappy | anon | 2010/07/01 10:40 PM |
C type safety | ? | 2010/07/02 01:10 AM |
C type safety | anon | 2010/07/02 11:02 PM |
C is a crappy | dev | 2010/07/03 04:51 PM |
C is a crappy | anon | 2010/07/03 07:02 PM |
C is a crappy | dev | 2010/07/05 07:27 AM |
C is a crappy | ? | 2010/07/05 09:05 AM |
C is a crappy | anonymous | 2010/07/07 08:32 AM |
C is a crappy | ? | 2010/07/07 10:48 PM |
C is a crappy | Anon | 2010/07/08 12:53 AM |
C is a crappy and a crappie is a fish | anonymous | 2010/07/03 07:24 PM |
Compile time & efficiency | Michael S | 2010/06/29 03:18 AM |
Compile time & efficiency | rwessel | 2010/06/29 12:20 PM |
Compile time & efficiency | someone | 2010/06/30 11:03 AM |
Compile time & efficiency | Jouni Osmala | 2010/07/02 05:29 AM |
Compile time & efficiency | Max | 2010/06/28 05:05 PM |
Compile time & efficiency | EduardoS | 2010/06/28 05:11 PM |
Compile time & efficiency | Michael S | 2010/06/29 03:33 AM |
Compile time | Foo_ | 2010/06/28 09:03 AM |
sun 's cc better than GCC? | Silent | 2010/06/23 06:19 PM |
sun 's cc better than GCC? | Foo_ | 2010/06/23 07:06 PM |
sun 's cc better than GCC? | Andi Kleen | 2010/06/24 02:49 AM |
sun 's versus gcc | Vincent Diepeveen | 2010/06/23 03:07 PM |
Why no GCC? | Carlie Coats | 2010/06/23 05:11 AM |