I fully second Basile, semantic is much more important than syntax.
It
 took us more than 10 years to normalize ISO ISLISP semantic which 
consists in only 25 special forms which fully describe semantic of the 
language (C. Queinnec was convenor of this ISO group and a great help to
 define semantic).
During this normalization process, syntax was never really discussed (or so).
With
 the exact same syntax, Lisp language family can behaves very 
differently whether it is dynamically V.S. lexically scoped, Lisp-1 V.S.
 Lisp-2.
With Lisp and without precise semantic you can't predict a result just reading 
the code.
Now,
 with precise semantic, I can implement ISLISP semantic using C syntax, 
Python syntax, xxx syntax and all my programs should compile to a native
 implementation (C or asm) that, when run, will produce the same result.

Take another example. If I have 10 CS students and I ask them to write a 
compiler that accepts:

string s1 = "foo";
string s2 = "bar";
print s1 + s2;

which obviously should print "foobar"

With no doubt, after few days all the students will succeed with this exercise.

Now what happens if I change the source code with:

string s1 = "foo";
string s2 = s1;
print s1 + s2;

string s1 = "foo";
string s2;
print s1 + s2;

string s1 = "foo";
print s1 + 1;

string s1 = "foo";
print s1 + "bar";

string s1 = "foo";
print s1 + s1;

etc...

I'm sure the 10 programs will print different results.


----- message d'origine -----
De : "Basile Starynkevitch" <[email protected]>
date mer. 25/11/2015 07:51 (GMT +01:00)
À : "[email protected]" <[email protected]>, 
"[email protected]" <[email protected]>
Objet : Re: [Tinycc-devel] Speed of development of a compiler.

On 11/24/2015 09:13 PM, AlexandreFressange wrote:


Now, I am about to finish my OS that will not be open source (no need, not a 
community project), I was working on some performance optimizations for memory 
management. I have been coding for 15 years now, but my initial formation is 
unrelated with CS. This OS is for very specific purposes that are currently 
being developed for a startup (I won't say much more right now, right here, but 
will happily do in a few time). The language resembles python but is even 
simpler (but has pointers; we always need them :) ),



This is problematic, and you are making a confusion. You are thinking 
that since the syntax is similar to Python, your language is Python-like.

But what matters in a programming language is not its syntax, but its 
semantics. For example, Javascript & Scheme have somehow similar 
semantics (with of course very significant and profound differences) but 
very different syntax.

So, if you don't know it, learn a bit of Scheme (using the SICP book I 
mentioned) then read Queinnec's book (Lisp in Small Pieces) which 
explains various way of coding Lisp interpreters and compilers.

Notice that Scheme specifications (e.g. R5RS, R6RS) have formalized most 
of the semantics, and that is extremely useful. Explaining what 
operators like call/cc do without formal semantics is error-prone. 
https://en.wikipedia.org/wiki/Call-with-current-continuation

A language with explicit pointers cannot resembles python, since adding 
explicit pointers changes the semantics profoundly.


So you should write a web page describing your language in details 
(giving the syntax, and explaining, at least in English, the semantics) 
to get more help.

Wikipedia (and the Web) have useful pages about semantics, operational 
semantics, denotational semantics, etc.

If you think in C (which is a language with a rather simple syntax but a 
difficult semantics, and whose undefined behaviors are painful), look at 
least inside X.Leroy's papers about CompCert and also inside Frama-C 
(http://frama-c.com) and its ACSL annotation language.

The notion of undefined behavior in C is tricky (and it is semantical). 
Read http://blog.regehr.org/archives/213 & 
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html


Trust me, semantics matters more than syntax. If you can afford it, have 
a extremely simple syntax: the Lisp s-expressions could be inspirational.

And please, write and publish some web page somewhere about your 
language. Take a few days to write that (some EBNF syntax, several 
examples, many English paragraphs to explain informally some of the 
semantics).
  It probably might start as an ill-defined specification (in English) 
and we'll be able to discuss more precisely.

You'll go nowhere if you don't explain your thing.

Read many papers from the PLDI conferences. 
http://www.sigplan.org/Conferences/PLDI/

Regards.

PS. It looks like your emails are incorrectly encoded in KOI-8. I have 
to correct the encoding in every of my answers. Please change your MUA 
encoding to UTF8

-- 
Basile STARYNKEVITCH         http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mine, sont seulement les miennes} ***


_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to