[M3devel] "target specific pragmas"?

hendrik at topoi.pooq.com hendrik at topoi.pooq.com
Thu Feb 14 19:34:27 CET 2008


On Thu, Feb 14, 2008 at 12:09:40PM +1100, Darko wrote:
> M3 is the antithesis in the sense that it takes the opposite approach.  
> C has few protections, M3 has many. M3 does examine what was wrong  
> with C and other languages and fix them and it did a good job. The M3  
> design team made an explicit goal to look at features from other  
> languages and take the best. The fact that M3 works so well is the  
> proof.
> 
> Some of the things you raise, like braces

I'm assuming this is the use of '{' and '}' instead of 'BEGIN' and 
'END'.

Natural languages evolve in the direction of having the mopst-oftern 
used words be the shortest.  This makes it possible to say muc in less 
space and time.  And it makes it easier to get an overview of a 
program whose physical size is becoming inconvenient.  Just haveing 
the code be readable and seeing enough of its context makes 
debugging easier.

> or stack allocations of  
> objects are just features of C++ with no justification.

Stack allocation of objects is not such a big issue in C++.  But it can 
be a big issue in those programs where split-second real-time 
interaction is an issue.  Yes, I know this is the traditional argument 
against garbage collection, and that it is usually based on FUD rather 
than reality.  But I have recently been in close contact with a 
programmer of video games, and for some of them the fraction-of-a-second 
pauses are a real problem.  He really *wants* to write his games in a 
decent language, and he knows that C is not one.

But every time he avoids heap allocation he delays the pause.  If
he can delay it enough, it's a win.  If he can delay it altogether, 
that's success.

> Can you show  
> that typing less characters is important? You say M3 is less  
> convenient, but what is less convenient, less typing or less bugs?

  This is a false dichotomy.  You may well be able to reduce typing 
*and* reduce bugs, just by making code more readable.

I doubt that typing "PROC" instead of "PROCEDURE", for example, is 
likely to introdice bugs.  Not typing '{' instead of "BEGIN".  Using 
special characters and lower-case keywords is likely to reduce bugs, 
because it's less likely that one will be misread for another.

> Do  
> you spend most of your time typing or thinking when you write code?

I think before I write code.  I don't stop thinking when I start 
writing code, and I like to record my thoughts as I think.  The less 
typing I need to do, the better I can get visual feedback on my 
thoughts while thinking.  Sometimes the typing gets so tedious I get 
bored and lose interest.  Then extra typing causes extra bugs.
> 
> Should language include every feature anyone can think of?

No.

> How is
> excluding unimportant features 'arbitrary'? Each feature must be  
> weighed to avoid unnecessary complexity and size, which have a direct  
> impact on compiler maintainability and language usability. Language  
> bloat is a real problem. I doubt that anyone understands the full  
> semantics of C++.
> 
> You say that C has 'won', but in what sense? More people use it?  
> Language design is not American Idol, it's not a question of who has  
> the most votes.

Enough people use it that it has become a fixture in the programming 
world.  If you want to reuse existing code instead of always writing 
new, you are pretty much forced into some kind of interfacing between C 
and a reasonable language.  The convenience of this interfacing can well 
determine whether the reasonable language is feasible for a specific 
application.

-- hendrik



More information about the M3devel mailing list