Versioning info, was Re: Languages with no reserved words?

On Sun, 19 Feb 2006 thomas.mertes@xxxxxx wrote:

randyhow...@xxxxxxxxxxxxxxxxx wrote:

Is that versioning info in the include file name?

Most of the language definitions (statements, operators, types, ... )
are defined in "seed7_05.s7i". This makes "seed7_05.s7i" special.
Without it, it would not be Seed7. A different language or a new version
of Seed7 could be defined in a another include file. So it is really a
versioning info in the include file name.

You can see it this way:
The programmer informs the interpreter (or compiler) which version
of the language he is using (Currently there is just one version).

You haven't clarified the key point for me (and I bet for Randy):
Is this a Good Use of versioning, or a Bad Use?

A hypothetical example of good use, in C: [1]

#include <stdio_C89.h>
/* #include <stdio_C99.h> adds snprintf */

A hypothetical example of bad use, in C:

#include <stdio_gcc321.h>
/* next version of GCC will #include <stdio_gcc401.h> */

In other words, is this really "versioning info," or would it be more accurately described as "branch info"? The latter is okay; you can develop two different branches of your language in parallel, and a client
can write code to work with one branch forever. But if it's really versioning information --- i.e., the next version of your compiler or
libraries will increment the _05 to an _06 --- then it will be impossible
for anyone to write stable code in Seed7, because every time a new version comes out, people will have to update all their $include directives.

So the important decision points are:
(1) Does the _05 ever change to _06? If so, that could be bad; continue.
If not, remove it entirely, and then your design will be good.
(2) How often will that number change? If more than once every decade,
that's very bad; rethink your design. If not, continue.
(3) Will it be possible to release bugfix versions of seed7_05.s7i once
the first version of seed7_06.s7i is released? If not, that's very bad;
rethink your design. If so, your design is okay.

my $.02,

[1] - C doesn't actually do either kind of versioning, which is a Good Thing because it avoids the bad use, and a minor Bad Thing because it avoids the good use. However, avoiding versioning altogether means that
you get some backwards compatibility --- you can usually compile C89
with a C99 compiler, which you wouldn't be able to do if there were
funky suffixes on all the standard #includes.

Relevant Pages

  • Re: Language Design
    ... You are trying to do two things simultaneously: Designing a language ... Perhaps you can modify an existing compiler and use existing ... When you design a language your implementation can use an interpreter ... Seed7 Homepage: ...
  • Re: ANN:
    ... Perhaps for the same reason some people design or make their own anything. ... The implementer of a language will probably use his ... This is exactly the stategy I use for Seed7. ...
  • Re: Statically AND Dynamically Typed Language ??
    ... You can use LGPL librarys in your programs. ... many other individuals are earning a living from their own language ... The developers do Seed7 as a hobby. ... Different distros are different operating systems (with some ...
  • Re: Program compression
    ... guess that C is your favorite language. ... I will use this list as checklist for Seed7 features. ... areas) it is necessary to use driver libraries to compensate the OS ... The Seed7 compiler just needs to create a library ...
  • Re: Syntax for user-defined infix operators
    ... Seed7 supports subtypes of integers and floats also. ... "ambiguity" is a language term. ... Ada than seems to be in Seed7. ...