Discussion:
Seed7 - what is it? What does it do?
(too old to reply)
Kenny McCormack
2010-12-15 17:35:31 UTC
Permalink
First, explanation of the newsgroups chosen: I used the same groups as
in the "other" Seed7 thread here, because I don't know which groups "tm"
follows. And, by "here", I mean comp.unix.programmer, since that is the
only one of the above named groups that *I* follow.

Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.

But, what this leads to, is the fairly obvious question: Is there any
reason I should care about Seed7? What does it do? What *kind* of
programs can I (or should I) write in Seed7? It would probably help you
(Thomas) fend off some criticism if you included a little bit more in
your periodic posts about *why* anyone should care about your
programming language.

To re-iterate the "What kind of programs can I write in Seed7" question,
which is, incidentally, isomorphic to "Why should I care?", let me ask
you this: Could I write Excel in Seed7? (Well, not Excel itself, of
course, but a look-alike) Could I write the kind of programs that I
write in WinBatch with it? VB.NET? How about X-apps (to bring things
over to the Unix platform for a bit) ?

TCPIP apps? (Something like netcat)

Now, note two things: I really do want to want to be interested in
Seed7; I'm not trolling. Second, I know that a stock answer to my post
will be: Download it and see. But I'd rather not do that - and I can
tell you that most people won't either. You need to tell us upfront how
and why we should even care enough to expend the time to download it
(and, apparently, to compile it - which seems to be non-trivial on any
and all platforms).

Can you do this?
--
Windows 95 n. (Win-doze): A 32 bit extension to a 16 bit user interface for
an 8 bit operating system based on a 4 bit architecture from a 2 bit company
that can't stand 1 bit of competition.

Modern day upgrade --> Windows XP Professional x64: Windows is now a 64 bit
tweak of a 32 bit extension to a 16 bit user interface for an 8 bit
operating system based on a 4 bit architecture from a 2 bit company that
can't stand 1 bit of competition.
Leo Davidson
2010-12-15 22:58:35 UTC
Permalink
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement.  I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..."  I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
I wasn't trolling any more than you are.

I was just venting my annoyance at the constant spam posted to
unrelated newsgroups about Seed7.

Imagine if everyone who wrote some kind of program or development tool
spammed multiple newsgroups every time they put out some minor bug
fixes? We'd be flooded with emails. I'm sick of reading about it. Not
the first person to complain, either.

People who care about seed7 can easily keep track of its releases via
its website or an email list or an RSS feed or whatever. There is no
need or justification for spamming Win32 newsgroups about its updates
month after month after month.
Ian Collins
2010-12-15 23:22:57 UTC
Permalink
Post by Leo Davidson
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
I wasn't trolling any more than you are.
I was just venting my annoyance at the constant spam posted to
unrelated newsgroups about Seed7.
Two words: message filters!
--
Ian Collins
BGB
2010-12-16 08:46:00 UTC
Permalink
Post by Ian Collins
Post by Leo Davidson
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
I wasn't trolling any more than you are.
I was just venting my annoyance at the constant spam posted to
unrelated newsgroups about Seed7.
Two words: message filters!
yeah...

in my case I worry I bother people too much writing about all my own
crap sometimes...
loozadroog
2010-12-16 22:09:27 UTC
Permalink
Post by BGB
Post by Ian Collins
Post by Leo Davidson
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
I wasn't trolling any more than you are.
I was just venting my annoyance at the constant spam posted to
unrelated newsgroups about Seed7.
Two words: message filters!
yeah...
in my case I worry I bother people too much writing about all my own
crap sometimes...
I'm beginning to entertain the same worry.
But I like all your posts, BGB!

--
the luser with no name
August Karlstrom
2010-12-16 15:30:16 UTC
Permalink
Post by Leo Davidson
I was just venting my annoyance at the constant spam posted to
unrelated newsgroups about Seed7.
Imagine if everyone who wrote some kind of program or development tool
spammed multiple newsgroups every time they put out some minor bug
fixes? We'd be flooded with emails. I'm sick of reading about it. Not
the first person to complain, either.
People who care about seed7 can easily keep track of its releases via
its website or an email list or an RSS feed or whatever. There is no
need or justification for spamming Win32 newsgroups about its updates
month after month after month.
I presented the same critique some time ago. I was and still am
surprised that the majority (Thomas Mertes included) seem to think that
these Seed7 postings have relevance.


/August
--
The competent programmer is fully aware of the limited size of his own
skull. He therefore approaches his task with full humility, and avoids
clever tricks like the plague. --Edsger Dijkstra
tm
2010-12-16 09:00:14 UTC
Permalink
On 15 Dez., 18:35, ***@shell.xmission.com (Kenny McCormack) wrote:
[snip]
Post by Kenny McCormack
But, what this leads to, is the fairly obvious question: Is there any
reason I should care about Seed7? What does it do? What *kind* of
programs can I (or should I) write in Seed7? It would probably help you
(Thomas) fend off some criticism if you included a little bit more in
your periodic posts about *why* anyone should care about your
programming language.
My signature contans a short feature list of Seed7 and a link to the
Seed7 Homepage, but you probably expect more.

The most important feature of Seed7 is IMHO its extensibility. This
means that the syntax and the semantic of statements and operators
can be defined by the programmer. The syntax is defined with syntax
statements (see: http://seed7.sourceforge.net/manual/syntax.htm).
The semantic of a statement is defined by writing a function
declaration. AFAIK the extensibitity is a feature that the
competition does not have in this way. How I see Lisp in this regard
can be seen at: http://seed7.sourceforge.net/faq.htm#lisp_comparison

To reach the goal of extensibility Seed7 is defined in a library
instead of hardcoded in an interpreter or compiler. By changing the
library you can change the language. Even a different language could
be defined this way.

Many languages see compiletime expressions and runtime expressions
as different things. Often compiletime expressions are restricted or
use a different syntax. Templates are an example of such a view.
Essencially templates are expressions dealing with declarations
and types. Templates are executed at compiletime. Seed7 implements
templates as functions with type parameters and type results.
Therefore templates need no special syntax, they are just normal
functions executed at compiletime. For an example see here:
http://seed7.sourceforge.net/examples/for_decl.htm

Most languages see arrays and structs as predefined and hardcoded.
In Seed7 arrays and structs are implemented as templates. So they
are not special any more.

Most languages support object orientation with classes where a
method is invoked by sending a message to an object. Essencially
the class of the "this" (or "self") object decides which method
should be executed. Method calls can have other parameters, but
they are not used to select a method. Multiple dispatch (see
here: http://seed7.sourceforge.net/faq.htm#multiple_dispatch) is
a symmetric approach, where all parameters together decide which
method should be invoked. Several languages support multiple
dispatch as an extension. In Seed7 object orientation is generally
based on multiple dispatch and interfaces. The Seed7 OO concept
is explained here: http://seed7.sourceforge.net/manual/objects.htm

Portability is also an important issue. Seed7 tries to provide
portable library functions for many areas where other languages
just refer to functions supported by the operating system.
See also here: http://seed7.sourceforge.net/faq.htm#portable
But there are also many areas where the libraries have room to
improve. But I think many libraries have this problem.
Post by Kenny McCormack
To re-iterate the "What kind of programs can I write in Seed7" question,
which is, incidentally, isomorphic to "Why should I care?", let me ask
you this: Could I write Excel in Seed7? (Well, not Excel itself, of
course, but a look-alike)
Seed7 is a general purpose language and it can be compiled to an
executable. So essentially you can write an Excel look-alike with
it. Some screenshots of Seed7 programs can be found here:
http://seed7.sourceforge.net/scrshots/index.htm
Post by Kenny McCormack
Could I write the kind of programs that I
write in WinBatch with it?
I don't know WinBatch (I just googled for it and found some
marketing info), but I guess that it allows batch processing under
Windows. I often use Seed7 instead of batch (or shell) scripts.
Seed7 contains functions to manipulate files and directories. Such
Seed7 scripts are portable and have other advantages, but Windows
specific things cannot be done.
Post by Kenny McCormack
VB.NET?
VB is also a turing machine equivalent language. So as long as you
don't use Windows specific stuff Seed7 can replace it. Creating an
application interface with mouse clicks is currenly not possible
with Seed7. Seed7 is also not based on .net (because of portability
and other reasons).
Post by Kenny McCormack
How about X-apps (to bring things
over to the Unix platform for a bit) ?
Do you mean the X11 Window System? When you write a graphical Seed7
program you are indirectly writing a X-app, since the Seed7 graphic
library is based on X11 when you use Linux/Unix/BSD (and it is
based on gdi if you use Windows).
Post by Kenny McCormack
TCPIP apps? (Something like netcat)
Seed7 supports sockets and has support libraries for some protocols
like HTTP. This way Seed7 programs can e.g. easily download pages
and files from the internet. I also wrote CGI scripts in Seed7. The
Comanche webserver is a simple webserver for static pages, written
in Seed7 (see: http://seed7.sourceforge.net/scrshots/comanche.htm).
Post by Kenny McCormack
Now, note two things: I really do want to want to be interested in
Seed7; I'm not trolling. Second, I know that a stock answer to my post
will be: Download it and see.
Ok, you asked for it: Download it and see. :-)
Honest, the Seed7 Homepage contains a lot of information: FAQ,
screenshots, examples, manual, algorithm collection and much more.
So when you want information about Seed7 you are not forced to
download it. Be my guest and look at http://seed7.sourceforge.net
Post by Kenny McCormack
But I'd rather not do that - and I can
tell you that most people won't either. You need to tell us upfront how
and why we should even care enough to expend the time to download it
(and, apparently, to compile it - which seems to be non-trivial on any
and all platforms).
Do you consider compiling with the commands

make depend
make

as complicated?
Under windows several C compilers and several make utilities are
supported and each of them has its own makefile. So you need to copy
a makefile first. All this is explained in a read_me file.

Not everybody reads read_me files...
There are people who just refuse to type in commands...
Or they don't tell you which C compiler or make utility they use...
Or they say "it failed" without any information what went wrong...
Mind reading is not one of my strengths. :-)
Post by Kenny McCormack
Can you do this?
Yes, of course.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-16 09:41:20 UTC
Permalink
Post by tm
[snip]
Post by Kenny McCormack
But, what this leads to, is the fairly obvious question: Is there any
reason I should care about Seed7? What does it do? What *kind* of
programs can I (or should I) write in Seed7? It would probably help you
(Thomas) fend off some criticism if you included a little bit more in
your periodic posts about *why* anyone should care about your
programming language.
My signature contans a short feature list of Seed7 and a link to the
Seed7 Homepage, but you probably expect more.
The most important feature of Seed7 is IMHO its extensibility. This
means that the syntax and the semantic of statements and operators
can be defined by the programmer. The syntax is defined with syntax
statements (see: http://seed7.sourceforge.net/manual/syntax.htm).
The semantic of a statement is defined by writing a function
declaration. AFAIK the extensibitity is a feature that the
competition does not have in this way. How I see Lisp in this regard
can be seen at: http://seed7.sourceforge.net/faq.htm#lisp_comparison
To reach the goal of extensibility Seed7 is defined in a library
instead of hardcoded in an interpreter or compiler. By changing the
library you can change the language. Even a different language could
be defined this way.
Many languages see compiletime expressions and runtime expressions
as different things. Often compiletime expressions are restricted or
use a different syntax. Templates are an example of such a view.
Essencially templates are expressions dealing with declarations
and types. Templates are executed at compiletime. Seed7 implements
templates as functions with type parameters and type results.
Therefore templates need no special syntax, they are just normal
http://seed7.sourceforge.net/examples/for_decl.htm
Most languages see arrays and structs as predefined and hardcoded.
In Seed7 arrays and structs are implemented as templates. So they
are not special any more.
Most languages support object orientation with classes where a
method is invoked by sending a message to an object. Essencially
the class of the "this" (or "self") object decides which method
should be executed. Method calls can have other parameters, but
they are not used to select a method. Multiple dispatch (see
here: http://seed7.sourceforge.net/faq.htm#multiple_dispatch) is
a symmetric approach, where all parameters together decide which
method should be invoked. Several languages support multiple
dispatch as an extension. In Seed7 object orientation is generally
based on multiple dispatch and interfaces. The Seed7 OO concept
is explained here: http://seed7.sourceforge.net/manual/objects.htm
Portability is also an important issue. Seed7 tries to provide
portable library functions for many areas where other languages
just refer to functions supported by the operating system.
See also here: http://seed7.sourceforge.net/faq.htm#portable
But there are also many areas where the libraries have room to
improve. But I think many libraries have this problem.
what about a language that is designed to look like a hybrid of C# and
Java (with bits of ActionScript3 in the mix)?...

one can try to then fjord the great chasms between their syntax and
semantics, ...



it is funny, reading posts from several different people each with
somewhat different views and goals regarding language design...

I am more from the group of people who actually mostly likes C and C#
and other mainstream languages (although Java is still a bit lame in a
few ways...), and whos main annoyance is more the limitations of the
traditional compile/execute cycle, and currently, having to rebuild all
my crap between building for different targets.


I think Mike Austin likes micro-languages or similar.

your (Thomas) goal seems to be extreme customizability.


meanwhile, I don't care as much about simplicity or customizability
since I can manage my code and add whatever features I feel are needed
(and tend to lack much in-language functionality I suspect because I
tend to implement most program logic in C anyways... personally feeling
little real need to oppose or try to replace it).


or such...
aury
2010-12-16 13:49:36 UTC
Permalink
Post by BGB
Post by tm
[snip]
Post by Kenny McCormack
But, what this leads to, is the fairly obvious question: Is there any
reason I should care about Seed7? What does it do? What *kind* of
programs can I (or should I) write in Seed7? It would probably help you
(Thomas) fend off some criticism if you included a little bit more in
your periodic posts about *why* anyone should care about your
programming language.
My signature contans a short feature list of Seed7 and a link to the
Seed7 Homepage, but you probably expect more.
The most important feature of Seed7 is IMHO its extensibility. This
means that the syntax and the semantic of statements and operators
can be defined by the programmer. The syntax is defined with syntax
statements (see:http://seed7.sourceforge.net/manual/syntax.htm).
The semantic of a statement is defined by writing a function
declaration. AFAIK the extensibitity is a feature that the
competition does not have in this way. How I see Lisp in this regard
can be seen at:http://seed7.sourceforge.net/faq.htm#lisp_comparison
To reach the goal of extensibility Seed7 is defined in a library
instead of hardcoded in an interpreter or compiler. By changing the
library you can change the language. Even a different language could
be defined this way.
Many languages see compiletime expressions and runtime expressions
as different things. Often compiletime expressions are restricted or
use a different syntax. Templates are an example of such a view.
Essencially templates are expressions dealing with declarations
and types. Templates are executed at compiletime. Seed7 implements
templates as functions with type parameters and type results.
Therefore templates need no special syntax, they are just normal
http://seed7.sourceforge.net/examples/for_decl.htm
Most languages see arrays and structs as predefined and hardcoded.
In Seed7 arrays and structs are implemented as templates. So they
are not special any more.
Most languages support object orientation with classes where a
method is invoked by sending a message to an object. Essencially
the class of the "this" (or "self") object decides which method
should be executed. Method calls can have other parameters, but
they are not used to select a method. Multiple dispatch (see
here:http://seed7.sourceforge.net/faq.htm#multiple_dispatch) is
a symmetric approach, where all parameters together decide which
method should be invoked. Several languages support multiple
dispatch as an extension. In Seed7 object orientation is generally
based on multiple dispatch and interfaces. The Seed7 OO concept
is explained here:http://seed7.sourceforge.net/manual/objects.htm
Portability is also an important issue. Seed7 tries to provide
portable library functions for many areas where other languages
just refer to functions supported by the operating system.
See also here:http://seed7.sourceforge.net/faq.htm#portable
But there are also many areas where the libraries have room to
improve. But I think many libraries have this problem.
what about a language that is designed to look like a hybrid of C# and
Java (with bits of ActionScript3 in the mix)?...
one can try to then fjord the great chasms between their syntax and
semantics, ...
it is funny, reading posts from several different people each with
somewhat different views and goals regarding language design...
I am more from the group of people who actually mostly likes C and C#
and other mainstream languages (although Java is still a bit lame in a
few ways...), and whos main annoyance is more the limitations of the
traditional compile/execute cycle, and currently, having to rebuild all
my crap between building for different targets.
I think Mike Austin likes micro-languages or similar.
your (Thomas) goal seems to be extreme customizability.
meanwhile, I don't care as much about simplicity or customizability
since I can manage my code and add whatever features I feel are needed
(and tend to lack much in-language functionality I suspect because I
tend to implement most program logic in C anyways... personally feeling
little real need to oppose or try to replace it).
or such...
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
Kenny McCormack
2010-12-16 14:29:36 UTC
Permalink
In article <ab252257-8626-4131-a726-***@q18g2000vbk.googlegroups.com>,
aury <***@gmail.com> wrote:
...
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
Well, the (obvious) problem with a forum is that you don't get any new
people. It will only be known about and attended by people who already
know about the product. For example, you'd have never have gotten me
interested in Seed7 that way [*].

[*] Yes, you might well consider that to have been a good thing...

Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product. And, basically, I think that is
a good thing (even if the troll doesn't).
--
But the Bush apologists hope that you won't remember all that. And they
also have a theory, which I've been hearing more and more - namely,
that President Obama, though not yet in office or even elected, caused the
2008 slump. You see, people were worried in advance about his future
policies, and that's what caused the economy to tank. Seriously.

(Paul Krugman - Addicted to Bush)
tm
2010-12-17 08:46:58 UTC
Permalink
Post by Kenny McCormack
...
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
Well, the (obvious) problem with a forum is that you don't get any new
people.  It will only be known about and attended by people who already
know about the product.  For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product.  And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.

BTW.: What do you think about my explanation of Seed7 and the
homepage?

I appreciate every feedback.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-17 09:58:00 UTC
Permalink
Post by tm
Post by Kenny McCormack
...
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
Well, the (obvious) problem with a forum is that you don't get any new
people. It will only be known about and attended by people who already
know about the product. For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product. And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
well, just my thought here:
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.


if one sees it that every language has a niche (just that C# and Java
have fairly big niches), then to compete with a given language one has
to operate within the same or a significantly overlapping niche.

a language then with a very different set of design tradeoffs (and thus
different cost/benefit curves) can't likely compete directly within the
same niche, and would at best create another niche.

likely the only way someone could compete directly with Java then would
be to do a near virtual clone yet making incremental improvements.


it is like, Sun wanted Java to replace C and C++, but ultimately failed
here as Java exists within a different niche than C and C++, and so can
no more replace C and C++ than can C or C++ dispell Java (although C++
is put in a bit of a strain, since much of its domain overlaps with both
C and Java territory, and so there are battles at the borders).


similar goes for C#:
C# created a language which borrows a lot of design from Java and
improves upon the language in many ways, however, it has introduced a
new set of merits and detractors, and thus itself falls into a different
niche (lets' just call them Microsofties...).


now, as far as Go, it is difficult to see Go being placed in the same
category as Java and C#, as from what little I have seen of it, it is a
*very* different language.

if Go can manage to "catch on" in a larger sense, I will be surprised
(this seems unlikely given most things I have observed related to
"typical programmer behavior").


so, a few projections:
Java gradually starts loosing ground, likely due to competition from
less crippled languages (that or Oracle starts doing a better job at
addressing language deficiencies, hopefully in a way other than "just
pile more crap on it so that people keep failing to notice just how poor
the core language is"...).

C# gains a lot more ground, but this may be limited eventually by
possible decline in Windows dominance (uncertainty exists regarding how
much space it will be able to gain in open-source land).

C++ may gradually decline if its target area shrinks (and competition
from C# and Java). C also holds a big area, and C++ is unlikely to gain
much more ground into C land than it already has (since its features
don't come entirely for free). (most of what C++ offers over C is syntax
sugar, most of which is of most use in front-end apps development, which
is the main area where C++ competes with Java and C#, whereas in most of
C's dominant areas C++ offers little real advantage and Java and C# are
not usually good/usable options...).

...
Post by tm
BTW.: What do you think about my explanation of Seed7 and the
homepage?
I appreciate every feedback.
Greetings Thomas Mertes
--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
tm
2010-12-17 11:40:21 UTC
Permalink
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people.  It will only be known about and attended by people who already
know about the product.  For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product.  And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.

What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.

BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?

Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Rainer Weikusat
2010-12-17 12:00:44 UTC
Permalink
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people.  It will only be known about and attended by people who already
know about the product.  For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product.  And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
Technically, the differences are negligible. But ideologically, the
fact that it doesn't 'run on the metal' is supposed to be a core
advantage of Java &c.
tm
2010-12-17 13:24:00 UTC
Permalink
Post by Rainer Weikusat
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people. It will only be known about and attended by people who already
know about the product. For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product. And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
Technically, the differences are negligible. But ideologically, the
fact that it doesn't 'run on the metal' is supposed to be a core
advantage of Java &c.
This comes IMHO from the wrong assumption that you need a
VM to be portable. In my view a good (and portable) library
assures portability. Java has good libraries which cover
many areas. Therefore I try to build Seed7 libraries for
many areas also. This is work in progress and any help is
appreciated.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Rainer Weikusat
2010-12-17 17:39:39 UTC
Permalink
[...]
Post by tm
Post by Rainer Weikusat
Post by tm
Post by BGB
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
Technically, the differences are negligible. But ideologically, the
fact that it doesn't 'run on the metal' is supposed to be a core
advantage of Java &c.
This comes IMHO from the wrong assumption that you need a
VM to be portable. In my view a good (and portable) library
assures portability.
Rather from the wrong assumption that so-called 'managed code' will
'magically' prevent programmers from making certain kinds of serious
errors. Eg, the 'official' justification for JPython AFAIK includes
"using compiled C code is simply not acceptable in many situations"
(because of the Horrible Buffer Overflow and similar mythic beasts
:-).
tm
2010-12-17 18:32:03 UTC
Permalink
Post by Rainer Weikusat
[...]
Post by tm
Post by Rainer Weikusat
Post by tm
Post by BGB
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
Technically, the differences are negligible. But ideologically, the
fact that it doesn't 'run on the metal' is supposed to be a core
advantage of Java &c.
This comes IMHO from the wrong assumption that you need a
VM to be portable. In my view a good (and portable) library
assures portability.
Rather from the wrong assumption that so-called 'managed code' will
'magically' prevent programmers from making certain kinds of serious
errors. Eg, the 'official' justification for JPython AFAIK includes
"using compiled C code is simply not acceptable in many situations"
(because of the Horrible Buffer Overflow and similar mythic beasts
:-).
The 'managed code' fashion is relatively new compared to the
'portability' fashion. :-)

BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Rainer Weikusat
2010-12-19 17:49:35 UTC
Permalink
tm <***@gmx.at> writes:

[...]
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I've read through parts of the homepage and I actually read your
announcements because I think this is an interesting concept but I'm
way to busy to dig around in the innards of grotty old Perl code (and
stuff like that) to have to time to play around with programming
languages I'm not forced to use as part of my job.
Kenny McCormack
2010-12-19 19:50:41 UTC
Permalink
Post by Rainer Weikusat
[...]
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I've read through parts of the homepage and I actually read your
announcements because I think this is an interesting concept but I'm
way to busy to dig around in the innards of grotty old Perl code (and
stuff like that) to have to time to play around with programming
languages I'm not forced to use as part of my job.
Thank you for your contribution. I assume that since you are so busy,
you expect to be paid for the time you've taken to share with us.

What do you think would be fair? We can pass the hat.
--
"The anti-regulation business ethos is based on the charmingly naive notion
that people will not do unspeakable things for money." - Dana Carpender

Quoted by Paul Ciszek (pciszek at panix dot com). But what I want to know
is why is this diet/low-carb food author doing making pithy political/economic
statements?

Nevertheless, the above quote is dead-on, because, the thing is - business
in one breath tells us they don't need to be regulated (which is to say:
that they can morally self-regulate), then in the next breath tells us that
corporations are amoral entities which have no obligations to anyone except
their officers and shareholders, then in the next breath they tell us they
don't need to be regulated (that they can morally self-regulate) ...
Rainer Weikusat
2010-12-20 12:59:04 UTC
Permalink
Post by Kenny McCormack
Post by Rainer Weikusat
[...]
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I've read through parts of the homepage and I actually read your
announcements because I think this is an interesting concept but I'm
way to busy to dig around in the innards of grotty old Perl code (and
stuff like that) to have to time to play around with programming
languages I'm not forced to use as part of my job.
Thank you for your contribution. I assume that since you are so busy,
you expect to be paid for the time you've taken to share with us.
What do you think would be fair? We can pass the hat.
In the given context, a ritual suicide in order to prove that you are
a honorable person (as opposed to the way you behave in public) might
be the 'fair formal choice'.

But I'm happy with the filtering function of Gnus, too.
Kenny McCormack
2010-12-20 14:03:18 UTC
Permalink
In article <***@fever.mssgmbh.com>,
Rainer Weikusat <***@mssgmbh.com> wrote:
...
that public) ritual to filtering the honorable the I'm you might suicide
the function given person 'fair happy are in way of context, (as formal
with to order behave you too. Gnus, prove in a opposed choice'. the In
a be But
That's nice.
--
Windows 95 n. (Win-doze): A 32 bit extension to a 16 bit user interface for
an 8 bit operating system based on a 4 bit architecture from a 2 bit company
that can't stand 1 bit of competition.

Modern day upgrade --> Windows XP Professional x64: Windows is now a 64 bit
tweak of a 32 bit extension to a 16 bit user interface for an 8 bit
operating system based on a 4 bit architecture from a 2 bit company that
can't stand 1 bit of competition.
tm
2010-12-20 14:42:56 UTC
Permalink
Post by Rainer Weikusat
[...]
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I've read through parts of the homepage and I actually read your
announcements because I think this is an interesting concept but I'm
way to busy to dig around in the innards of grotty old Perl code (and
stuff like that) to have to time to play around with programming
languages I'm not forced to use as part of my job.
Thank you for your feedback. Sorry that you are forced to
dig around with grotty code. I think you should move some
energy from your job to your provate life. Not because you
should use it for Seed7, but because I think that a Job
should not eat up all your energy.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-17 17:22:06 UTC
Permalink
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people. It will only be known about and attended by people who already
know about the product. For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product. And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
maybe, but they are generally related...

direct competition tends to be between things which are similar, and
things which are different tend to have their own areas.

if someone doesn't have something which is in reach of a simple
copy/paste job and at most a little editing, they are a lot more likely
to either continue with what they are using or look elsewhere.
Post by tm
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
the language syntax is somewhat different.
the language design is somewhat different.
its deployment strategy is different.
...

if one had something which was syntactically copy-paste compatible with
Java and deployed via JARs or similar, then it would be mostly similar
technology to Java.

even Dalvik has some issues, given although it is mostly
source-compatible with Java SE, its deployment strategy differs (DEX
images vs JARs), making it debatably a different technology from the JVM.

also, even if source compatibility is maintained, in many contexts
binary incompatibility will count as a difference in cases where primary
SW distribution is in binary form (ELF is a different technology from
PE/COFF, despite each serving a similar role in their respective systems).

whereas Mono can be considered the same technology as .NET because
(despite some incompatibilities) both source and binary compatibility
exists (for the most part).


now, yes, the line between interpretation, JIT, and dynamic compilation
is fuzzy.

however, differences between direct-run, distribution by bytecode,
distribution by source, and distribution by precompiled binary, is a bit
more severe.


I have been noting a lot of the issues recently, where most of my stuff
had only been supporting dynamic compilation direct from source. more
recently, I have been investing some effort in the possibility of an
externalized bytecode-based deployment model as well (but this requires
a more "cannonical" and "frozen" bytecode model, vs a collection of
loosely related bytecode formats which depend on specific
VMs/interpreters and specific versions of said VMs...).

static compiled stuff in my case is mostly left in the hands of C.
I plan to also support bytecoded C in addition to my newer language
(BGBScript2, in the design process, which is sadly mostly a different
language design-wise from BGBScript, mostly owing to BS2 being
statically typed and more like an ActionScript3/C# hybrid, unlike BS
which was closer to JavaScript and ActionScript2, and BS2 will not
likely be source compatible in many cases with BS, although OTOH I would
be surprised if anyone besides myself actually uses BS).
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...


if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...

it does not...
tm
2010-12-17 18:23:23 UTC
Permalink
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people.  It will only be known about and attended by people who already
know about the product.  For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product.  And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
maybe, but they are generally related...
direct competition tends to be between things which are similar, ...
Like between programming languages.
There is competition between programming languages even when they
use different paradigms and look totally different.
Post by BGB
Post by tm
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
the language syntax is somewhat different.
Why should the language syntax change because of the way a
language is implemented. You can compile Java to machine
code and you can interpret C. Why should the syntax of them
change?
Post by BGB
the language design is somewhat different.
You can design languages independent of the implementation.
Some things are easier to implement with an interpreter while
other things are easier to implement with an compiler. And
compiled code can also use an interpreter for some stuff as
interpreted code is sometimes compiled to machine code.

The Seed7 compiler can compile itself to machine code (via
C). When this compiled compiler does compile a program
it interprets declaration statements and other stuff of the
program it compiles.
Post by BGB
its deployment strategy is different.
Yes, but it is also necessary to deploy the VM which has
the same problems as deploying an application executable.
Compile once run everywhere works only when an up to
date VM can be found everywhere. And this VM must be
deployed also, so the problems are just shifted to a different
layer.
Post by BGB
if one had something which was syntactically copy-paste compatible with
Java ...
Although Seed7 is extensible and probably can define the
Java statements and other Java constructs to a certain degree,
it is not the goal of Seed7 to be a drop in replacement for Java.

[snip]
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-18 00:32:37 UTC
Permalink
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people. It will only be known about and attended by people who already
know about the product. For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product. And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
maybe, but they are generally related...
direct competition tends to be between things which are similar, ...
Like between programming languages.
There is competition between programming languages even when they
use different paradigms and look totally different.
possibly, but it is indirect...

languages in different areas tend to get along without trying to take
the others' domain...
Post by tm
Post by BGB
Post by tm
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
the language syntax is somewhat different.
Why should the language syntax change because of the way a
language is implemented. You can compile Java to machine
code and you can interpret C. Why should the syntax of them
change?
you misinterpret.

Seed7 has a different syntax than either C or Java from what I have seen...

a different syntax from Java, for example, means that it is not Java,
and hence can't compete directly within Java's domain.
Post by tm
Post by BGB
the language design is somewhat different.
You can design languages independent of the implementation.
Some things are easier to implement with an interpreter while
other things are easier to implement with an compiler. And
compiled code can also use an interpreter for some stuff as
interpreted code is sometimes compiled to machine code.
again.

your Seed7 language has a different design from Java, again making it a
different language.
Post by tm
The Seed7 compiler can compile itself to machine code (via
C). When this compiled compiler does compile a program
it interprets declaration statements and other stuff of the
program it compiles.
yes, as noted, this is a different deployment strategy from Java or JVM
languages.
Post by tm
Post by BGB
its deployment strategy is different.
Yes, but it is also necessary to deploy the VM which has
the same problems as deploying an application executable.
Compile once run everywhere works only when an up to
date VM can be found everywhere. And this VM must be
deployed also, so the problems are just shifted to a different
layer.
yes, but one can write a binary-compatible clone of the JVM, or for that
matter, simply target the JVM.

this would lead to more direct Java competition...


granted, this does not mean I think trying to compete directly with Java
in this ways is even necessarily a good idea, since one would have to
outdo Java in its own home turf (be more Java than Java).


I don't compete with Java, FWIW, because I am doing my own thing in my
own way...


but, yeah, my planned distribution model also differs from JVM:
in my case, the VM will be distributed with the app which uses it
(probably written mostly in C or C++), and will be integrated with the app.

it will then be used to handle any scripts or VM-managed components...

basically, it will be a loosely similar model to how Python and similar
are commonly used...

since I figure most of an app will just be written in C and C++ anyways,
a major goal then is to support clean interop (since I figure probably
most other people don't like boilerplate anymore than I do...). allowing
the VM to be customized some per-task is also useful.

beyond serving as a VM, the thing can also serve to some extent as a
collection of utility libraries.


also, providing a portable alternative to native compiled code WRT
making app components is also a probably worthwhile goal, ...
(say, a component is written in C, but doesn't need to be recompiled for
each target).

...
Post by tm
Post by BGB
if one had something which was syntactically copy-paste compatible with
Java ...
Although Seed7 is extensible and probably can define the
Java statements and other Java constructs to a certain degree,
it is not the goal of Seed7 to be a drop in replacement for Java.
and thus it is not likely to be competition with it...

instead, more likely it would end up with its own niche.


in this case, it is more of a matter of how big the niche is, than as a
matter of direct language competition. a language which dominates a
niche may still fade if the domain of the niche itself shrinks.


it is like a person competing with a bird over who can build the nicer
nest. a bird can make it out of sticks and leaves and mud, and a person
can make it out of cloth and cotton and put lace or ribbon on the thing.

however, it is all pointless, since a human has no need for a nest and a
bird has no need for one made out of fabric and ribbon...
Post by tm
[snip]
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...

my languages (BS and the BS2 language still in design) also have
first-class types.

multiple dispatch is not supported though.
Post by tm
Greetings Thomas Mertes
--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
tm
2010-12-18 20:24:00 UTC
Permalink
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get any new
people.  It will only be known about and attended by people who already
know about the product.  For example, you'd have never have gotten me
interested in Seed7 that way [*].
[*] Yes, you might well consider that to have been a good thing...
Anyway, I assume that the reason "tm" posts to newsgroups is to get
other people interested in his product.  And, basically, I think that is
a good thing (even if the troll doesn't).
Essencialy you are correct. Seed7 competes with languages like Java,
C# and Go. Languages supported by big companies with big budgets.
Seed7 does not follow a current trend, like using the JVM, just in
time
compilation or write only programming. Seed7 uses technics like static
type checks, mandatory declarations and compilation to machine code,
which is seen by many people as uncool. For that reasons it is much
harder to be recognized. But this is not a problem, since more and
more
people visit the Seed7 homepage and download Seed7.
competing against Java or C# with a language representing essentially a
different piece of technology would be difficult.
I was speaking of competing against marketing power not about
replacing a language.
maybe, but they are generally related...
direct competition tends to be between things which are similar, ...
Like between programming languages.
There is competition between programming languages even when they
use different paradigms and look totally different.
possibly, but it is indirect...
languages in different areas tend to get along without trying to take
the others' domain...
When a new project is started the decision about the programming
language
will soon follow (when it ist not already done). Although many
languages will
usually fit for the domain of the project the list of potential
programming
languages will be artificially reduced. This reduction has to do with
languages
currently used in a company and how famous a language is. A language
from a big company (with marketing machinary) will count as more
famous
than any other language.

What I want to say is: The decision about the programming language
will
usually not be based on what fits best. Being used already, being
famous
or having the backing of a big company usually counts much more.
Post by BGB
Post by tm
Post by BGB
Post by tm
What do you mean with different piece of technology?
IMHO using a VM and compiling to machinecode are not so different
that things become impossible when you move from one to the other.
the language syntax is somewhat different.
Why should the language syntax change because of the way a
language is implemented. You can compile Java to machine
code and you can interpret C. Why should the syntax of them
change?
you misinterpret.
Seed7 has a different syntax than either C or Java from what I have seen...
a different syntax from Java, for example, means that it is not Java,
and hence can't compete directly within Java's domain.
The domain of Java is server side internet programs and application
programs. In the past applets were also a domain of Java. But in this
area
it has been replaced by Javascript.

Many languages can be used for server side internet programs and
application programs. So many languages are in the domain of Java.
Post by BGB
Post by tm
Post by BGB
the language design is somewhat different.
You can design languages independent of the implementation.
Some things are easier to implement with an interpreter while
other things are easier to implement with an compiler. And
compiled code can also use an interpreter for some stuff as
interpreted code is sometimes compiled to machine code.
again.
your Seed7 language has a different design from Java, again making it a
different language.
Is it a sin to use a different design?
Seed7 is different from Java on purpose and it has some advantages:

- Java is not extensible (no user defined statements and operators).
- Java functions cannot have a type as parameter or a type as
result,.
- Java does not support multiple dispatch from ground up.
- Java generics use special syntax and are less capable than Seed7
templates.
- Seed7 can be interpreted or compiled.

I don't think that programming language evolution will automatically
determine that all future languages will look like Java or have its
functionality.
Post by BGB
Post by tm
The Seed7 compiler can compile itself to machine code (via
C). When this compiled compiler does compile a program
it interprets declaration statements and other stuff of the
program it compiles.
yes, as noted, this is a different deployment strategy from Java or JVM
languages.
What I explained above has nothing to do with deployment strategies.
I just pointed out that compiled code sometimes interprets something.
Post by BGB
Post by tm
Post by BGB
its deployment strategy is different.
Yes, but it is also necessary to deploy the VM which has
the same problems as deploying an application executable.
Compile once run everywhere works only when an up to
date VM can be found everywhere. And this VM must be
deployed also, so the problems are just shifted to a different
layer.
yes, but one can write a binary-compatible clone of the JVM, or for that
matter, simply target the JVM.
I spoke about deploying a VM not about writing a VM.
Deploying a VM has the same probjems as deploying any other
executable.

[snip]
Post by BGB
Post by tm
Post by BGB
if one had something which was syntactically copy-paste compatible with
Java ...
Although Seed7 is extensible and probably can define the
Java statements and other Java constructs to a certain degree,
it is not the goal of Seed7 to be a drop in replacement for Java.
and thus it is not likely to be competition with it...
So you think that all future languages will look like Java?

[snip]
Post by BGB
Post by tm
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-18 22:07:12 UTC
Permalink
<big snip>
Post by tm
So you think that all future languages will look like Java?
really, there is some sort of communication problem here...

this is totally missing the point of what I was trying to say in all this...


I am not saying here that everything will look like Java, or even that
this would be desirable, but rather that something clearly different
will fall into a different domain.


note that my concept of domains are far smaller than "all of software
development", but will instead be partitioned among any number of
criteria (social factors, commercial factors, programmer inertia,
technical factors, ...).

the result is that thinking in terms of "software development as a
whole" may be a misnomer (and that instead things can be considered in
terms of large numbers of local perspectives and local cost/benefit
factors from the various parties involved, where it is assumed that
people will tend towards least-cost options within each context...).


so, each programmer will see, for example:
what it is they are working on at the moment;
which technologies are already commonly in use;
which technologies they are most personally familiar with;
how the people around them may feel about their choices (what will their
coworkers/boss/friends/... think? how will it reflect back on
themselves? what if the people around them don't really like it? ...);
...

new and unfamiliar or unorthodox solutions may be avoided or regarded as
undesirable in many contexts...


in all this, there can't really be much direct competition between
things which are dissimilar, as people will look at them and conclude
"these things are unrelated" or "this has nothing in common with what I
am doing" or ...


or such...
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?
neither is currently supported...


user defined operators (in a sense more general than, say, operator
overloading) would lead to issues with parsing, as either the parser
would have to be aware of each new operator, or have special syntax to
indicate them.

so, the current strategy is more to consider the use of more traditional
operator overloading (no built-in syntax for operator overloading
currently exists as of yet though, as the usual way for doing this sort
of thing in my VM in general is by registering callbacks and similar...).

the mechanism could be extended some to support static type-checking,
and by adding "operator resolution handlers" which could then look for
operator declarations.

say:
Foo foo;
Bar bar;
Baz baz;
...
baz=foo+bar;


JIT checks for known static types, none found;
JIT tries static handler resolution (in VM):
VM looks for a registered handler for these types;
VM checks operator resolution handlers:
handler looks for a operator overloading method or function;
VM registers the found handler;
JIT uses the found handler, links to it in generated code.

actually, a similar mechanism is used for class resolution, so for
example the various VMs register callbacks to try seeing if they know
about a given class.

similar is also used to handle the 'apply' operation for various types
of objects (with a recent optimization in the OO facilities being to
cache the handler in the VTable and thus short-cut a few dynamic
type-checks...).


user-defined statements pose similar problems to the operators case.
unless a defined context-independent syntax exists, it would also cause
context-dependence issues for the parser, which is something I would
prefer to avoid.


actually, they don't present any obvious notable advantage (apart from
syntax sugar) over other options, such as, using function calls or
methods and lexical closures or similar for this.

if a person really wants to get fancy, they could use overloaded
operators to implement faux custom expressions and statements, but this
sort of nastiness is bad enough in a lot of C++ code...


current advisory would be to just use plain methods or similar, and
closures if one really needs to pass code blocks.


or such...
tm
2010-12-19 11:17:58 UTC
Permalink
[snip]
Post by BGB
what it is they are working on at the moment;
which technologies are already commonly in use;
which technologies they are most personally familiar with;
how the people around them may feel about their choices (what will their
coworkers/boss/friends/... think? how will it reflect back on
themselves? what if the people around them don't really like it? ...);
...
new and unfamiliar or unorthodox solutions may be avoided or regarded as
undesirable in many contexts...
You are right, but: The better is the enemy of the good.
Not that Seed7 is better than Java in every aspect.
But the extensibility of Seed7 will allow that it aquires features
that other languages (non-extensible ones) cannot aquire easy.

Many see extensibility as unimportant or undesireable, but when you
look at programming language history you see a trend towards
extensibility:

- In early BASIC variables were single letters or one letter
followed by one digit (this variables were predefined and other
names were not allowed).
- Old BASIC and FORTRAN did not support user defined data
structures.
- In early Pascal a programmer was not able to define a function
like write (with was overloaded for various types and supported
the formatting operator, e.g. write(i:5); ).
- Many of the oldest languages do not support overloading of
functions and operators.
- Older languages supporting overloading do not allow user defined
operator symbols.

Many languages have predefined features which are hardcoded in the
interpreter or compiler. The user is not allowed to do define
similar features. The trend is towards allowing the user more and
more. This means that the barrier between predefined and user
defined things is moving.
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?
neither is currently supported...
user defined operators (in a sense more general than, say, operator
overloading) would lead to issues with parsing, as either the parser
would have to be aware of each new operator, or have special syntax to
indicate them.
Seed7 has solved this issues. If you separate syntax parsing from
semantic parsing everything becomes simple. Seed7 uses syntax
statements to define the syntax of operators and statements. See:
http://seed7.sourceforge.net/manual/syntax.htm
Post by BGB
so, the current strategy is more to consider the use of more traditional
operator overloading (no built-in syntax for operator overloading
currently exists as of yet though, as the usual way for doing this sort
of thing in my VM in general is by registering callbacks and similar...).
Why should a VM know about operator overloading. This can and should
be resolved long before the VM runs.
Post by BGB
the mechanism could be extended some to support static type-checking,
and by adding "operator resolution handlers" which could then look for
operator declarations.
Seed7 supports static type-checking automatically without suport
from a VM.

[snip]
Post by BGB
actually, a similar mechanism is used for class resolution, so for
example the various VMs register callbacks to try seeing if they know
about a given class.
I guess that you mean "dynamic dispatch" when you write
"class resolution". Operator overloading and and dynamic dispatch
are two sides of the same coin. Overloading is done with static
types (which are known at compile-time) and dynamic dispatch uses
dynamic types (usually called classes).

Overloading happens at compile-time and uses static types.
Dynamic dispatch happens at runtime and uses dynamic types.

In many languages a class and a type are different concepts.
Seed7 breaks down this barrier:

- A class is a type which is only known at runtime.
Seed7 uses the term "implementation type" instead of "class".

- The static type of an object variable is called "interface type".

The details of this OO concept are explained here:
http://seed7.sourceforge.net/manual/objects.htm
Post by BGB
user-defined statements pose similar problems to the operators case.
unless a defined context-independent syntax exists, it would also cause
context-dependence issues for the parser, which is something I would
prefer to avoid.
A context-idependent syntax is the key to success.
When there is not a clear separation between syntax and semantic
everything becomes very complex.

Many languages mix syntax and semantic in complicated ways without
getting real advantages from it. Seed7 separates this things and
has no disadvantage from it. This is also the reason that will make
it hard for other languages to become extensible.
Post by BGB
if a person really wants to get fancy, they could use overloaded
operators to implement faux custom expressions and statements, but this
sort of nastiness is bad enough in a lot of C++ code...
The urban myth that operator overloading is bad...
There are many ways to write unmaintable programs and the
developer is always in charge to write good code.
Post by BGB
current advisory would be to just use plain methods or similar, and
closures if one really needs to pass code blocks.
Closures are also a key concept used in Seed7. The body of a loop
and a loop condition are examples of closures. In Seed7 a closure
is an expression. No special closure notation (like brackets) is
needed. This way a while loop looks just like a while loop from a
conventional (not-extensible) language.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-20 04:00:00 UTC
Permalink
Post by tm
[snip]
Post by BGB
what it is they are working on at the moment;
which technologies are already commonly in use;
which technologies they are most personally familiar with;
how the people around them may feel about their choices (what will their
coworkers/boss/friends/... think? how will it reflect back on
themselves? what if the people around them don't really like it? ...);
...
new and unfamiliar or unorthodox solutions may be avoided or regarded as
undesirable in many contexts...
You are right, but: The better is the enemy of the good.
Not that Seed7 is better than Java in every aspect.
But the extensibility of Seed7 will allow that it aquires features
that other languages (non-extensible ones) cannot aquire easy.
Many see extensibility as unimportant or undesireable, but when you
look at programming language history you see a trend towards
- In early BASIC variables were single letters or one letter
followed by one digit (this variables were predefined and other
names were not allowed).
- Old BASIC and FORTRAN did not support user defined data
structures.
- In early Pascal a programmer was not able to define a function
like write (with was overloaded for various types and supported
the formatting operator, e.g. write(i:5); ).
- Many of the oldest languages do not support overloading of
functions and operators.
- Older languages supporting overloading do not allow user defined
operator symbols.
Many languages have predefined features which are hardcoded in the
interpreter or compiler. The user is not allowed to do define
similar features. The trend is towards allowing the user more and
more. This means that the barrier between predefined and user
defined things is moving.
yes, but this does not mean one should up and abandon older language
syntax and semantics for sake of unproven designs...

many features such as lexical scoping and closures can go some distance
in improving a language...
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
BTW. I am interested in feedback.
What do you think about Seed7?
Have you looked at the homepage and/or tried it?
I have looked at the site, and it is plenty obvious that one is not
looking at a C# or Java alike...
if it were designed like, say, a hybrid of C# and Java (and glossed over
some of the great differences between them), maybe...
it does not...
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?
neither is currently supported...
user defined operators (in a sense more general than, say, operator
overloading) would lead to issues with parsing, as either the parser
would have to be aware of each new operator, or have special syntax to
indicate them.
Seed7 has solved this issues. If you separate syntax parsing from
semantic parsing everything becomes simple. Seed7 uses syntax
http://seed7.sourceforge.net/manual/syntax.htm
looking at it, I would guess in your case, the parser *is* aware of any
new syntax?...


I meant it would be "aware" in the same sense that a C parser is aware
of typedefs, or a C++ parser of class and template definitions...

I explicitly avoided this in my language, since it creates dependency
issues (the parser has to be aware of the declaration of a feature to
parse it), and also because it slows parsing (the compiler has to
endlessly check whether or not identifiers represent known typedefs, ...).


for example:
consider just how much faster a C parser could be if it didn't have to
deal with typedefs?...

with a C compiler which can easily take 100ms or more, compiling C
source is far from being a cheap operation, limiting its use in "eval"
and procedural code generation contexts (where I have ended up using
assembler and BGBScript more often, since they compiler much faster, my
assembler being able to process upwards of 10MB of ASM per second...).


Java and C# had found a way to unambiguously parse the syntax without
having to introduce any new context (allowing pretty much the entire
compiler upper-end to be largely context-independent).

I *may* consider something like this if a means can be defined without
adding any additional context dependency into the parser or compiler.
Post by tm
Post by BGB
so, the current strategy is more to consider the use of more traditional
operator overloading (no built-in syntax for operator overloading
currently exists as of yet though, as the usual way for doing this sort
of thing in my VM in general is by registering callbacks and similar...).
Why should a VM know about operator overloading. This can and should
be resolved long before the VM runs.
well, it is delayed in my case because:
operator overloading needs to know types;
I delay full type resolution until very late (typically during linking
or JIT), mostly so that it can deal more cleanly with information which
may not be visible in the scope until link-time or JIT.


this is of great use to using a "magic sticky glue" system for
interfacing code in different programming languages.


the result then is that the VM deals with issues of types (and
type-checking) and operating overloading...

the VM will also deal with matters of expanding generics, ... as well.


the JVM, OTOH, handles all of this earlier on, but at the cost that it
limits what can be done regarding inter-language gluing (all classes in
Java need to be declared in Java, as one can't easily "just use a class
declared in BGBScript or C", since this will not be visible to the Java
compiler...).

it is also a big problem in that it also prevents directly calling from
Java into C without having to first have a method declaration somewhere
in Java-land...


note, yes, this does create some worry of possible JIT slowdown (JIT
time being slow for large images), although a likely strategy is to do
like what I did for the C compiler, and caching any JIT'ed images to
disk (basically the AOT/NGEN strategy).

another considered option has been to support "pre-linking" whereby the
types-checking and resolution, ... can be done at link-time, rather than
during dynamic link or JIT.
Post by tm
Post by BGB
the mechanism could be extended some to support static type-checking,
and by adding "operator resolution handlers" which could then look for
operator declarations.
Seed7 supports static type-checking automatically without suport
from a VM.
yes, but probably also has the cost that the compiler has to know about
all of the types as well...
Post by tm
[snip]
Post by BGB
actually, a similar mechanism is used for class resolution, so for
example the various VMs register callbacks to try seeing if they know
about a given class.
I guess that you mean "dynamic dispatch" when you write
"class resolution". Operator overloading and and dynamic dispatch
are two sides of the same coin. Overloading is done with static
types (which are known at compile-time) and dynamic dispatch uses
dynamic types (usually called classes).
class resolution basically means "for a given class QName (Qualified
Name), get the associated class handle".

typically, this may mean locating and/or loading the appropriate
bytecode module, feeding the class definition into the OO facilities,
and possibly invoking the JIT over the methods.

typically, this is done at "dynamic-link-time".
Post by tm
Overloading happens at compile-time and uses static types.
Dynamic dispatch happens at runtime and uses dynamic types.
in my case, there is not such a strict line between them, since the main
notion of "compile time" is "emitting bytecode", which in this case will
not have the types resolved (the bytecode will appear to be dynamically
typed at this stage).

but, during JIT (or JIT compilation), the types may be resolved, and the
appropriate code generated (it will then be operator overloading or
dynamic dispatch depending on the final types of the arguments).

if the arguments turn out to be dynamically-typed in the JIT, then the
matter will be left until the program is running, and dynamic dispatch
will be used instead.
Post by tm
In many languages a class and a type are different concepts.
- A class is a type which is only known at runtime.
Seed7 uses the term "implementation type" instead of "class".
- The static type of an object variable is called "interface type".
http://seed7.sourceforge.net/manual/objects.htm
fair enough...

I use the terms:
reference-types: anything which is passed as a reference to something;
value-types: anything which is passed around by making or assigning
copies of it;
variant types: what would usually be called dynamic types, but which may
still be subject to type inference.
Post by tm
Post by BGB
user-defined statements pose similar problems to the operators case.
unless a defined context-independent syntax exists, it would also cause
context-dependence issues for the parser, which is something I would
prefer to avoid.
A context-idependent syntax is the key to success.
When there is not a clear separation between syntax and semantic
everything becomes very complex.
Many languages mix syntax and semantic in complicated ways without
getting real advantages from it. Seed7 separates this things and
has no disadvantage from it. This is also the reason that will make
it hard for other languages to become extensible.
fair enough...

I tried to think some about the issue, but there is no clean or obvious
way to deal with the issue in my existing code...

I "could" add an analogue of Lisp-style macros, but I really don't want
to deal with this at the moment (even though early forms of BGBScript
did have Lisp-like macros...).

another option could be to support "super-generics", which could behave
more like Lisp-style macros.

say:
my_for<int i=0, i<10, i++> { stdout.println("Hello %d", i); };

but I am not fond of this option, and it would be problematic to do this
without context dependency...

for example:
is "my_for<>" a type-generic or a macro?...
...
Post by tm
Post by BGB
if a person really wants to get fancy, they could use overloaded
operators to implement faux custom expressions and statements, but this
sort of nastiness is bad enough in a lot of C++ code...
The urban myth that operator overloading is bad...
There are many ways to write unmaintable programs and the
developer is always in charge to write good code.
IMO, even many standard C++ features, such as iostream, are a bit nasty...

I plan to support operator overloading, but don't want to create bad
precedent by advocating its abuse to implement new language features
either...


however, people still do use Java, which is notable for not really
having ANY user definable features apart from classes and methods...
Post by tm
Post by BGB
current advisory would be to just use plain methods or similar, and
closures if one really needs to pass code blocks.
Closures are also a key concept used in Seed7. The body of a loop
and a loop condition are examples of closures. In Seed7 a closure
is an expression. No special closure notation (like brackets) is
needed. This way a while loop looks just like a while loop from a
conventional (not-extensible) language.
this has been considered, but would be a problem in that, like macros,
it would be required to be known at compile time that a method expects a
closure...

so, in the current BS2 syntax, an explicit declaration is needed, such as:


int i;

i=10;
MyClass.myMethod(fun{i*10});


where I currently define several forms of closure:

fun void(int i) { i=i*10; } //anonymous closure
fun void f(int i) { if(i>0){ f(i-1); } } //recursive closure
fun{i*10} //inline form, with no arguments and the last item as a tail
expression.

I had considered having 2 forms:
fun{...} //statement closure, returns void
fun(...) //expression closure, returns var

but the latter could clash with, say:
fun(args) {...} //main closure form used in BGBScript

"fun ..." doesn't work either, as it creates a syntax ambiguity.

fun[...] could work, just thought this up now...

ok, so:
fun{...} //statement block, returns void
fun[...] //expression, returns var (think like an array index...).

also allows:
fun int(int i)[i*10] //anonymous closure (expr)
fun void f(int i) [if(i>0) i*f(i-1) else 1] //recursive closure (expr)

but these are redundant, as my parser allows:
fun int(int i) i*10 //anonymous closure (expr)
fun int f(int i) if(i>0) i*f(i-1) else 1; //recursive closure (expr)

and a square-brace case would conflict with the above when returning
arrays...

note: "if(cond) A else B" is an alternative to "cond?A:B".


or such...
Post by tm
Greetings Thomas Mertes
--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
tm
2010-12-21 12:50:19 UTC
Permalink
Post by BGB
Post by tm
[snip]
Post by BGB
what it is they are working on at the moment;
which technologies are already commonly in use;
which technologies they are most personally familiar with;
how the people around them may feel about their choices (what will their
coworkers/boss/friends/... think? how will it reflect back on
themselves? what if the people around them don't really like it? ...);
...
new and unfamiliar or unorthodox solutions may be avoided or regarded as
undesirable in many contexts...
You are right, but: The better is the enemy of the good.
Not that Seed7 is better than Java in every aspect.
But the extensibility of Seed7 will allow that it aquires features
that other languages (non-extensible ones) cannot aquire easy.
Many see extensibility as unimportant or undesireable, but when you
look at programming language history you see a trend towards
- In early BASIC variables were single letters or one letter
followed by one digit (this variables were predefined and other
names were not allowed).
- Old BASIC and FORTRAN did not support user defined data
structures.
- In early Pascal a programmer was not able to define a function
like write (with was overloaded for various types and supported
the formatting operator, e.g. write(i:5); ).
- Many of the oldest languages do not support overloading of
functions and operators.
- Older languages supporting overloading do not allow user defined
operator symbols.
Many languages have predefined features which are hardcoded in the
interpreter or compiler. The user is not allowed to do define
similar features. The trend is towards allowing the user more and
more. This means that the barrier between predefined and user
defined things is moving.
yes, but this does not mean one should up and abandon older language
syntax and semantics for sake of unproven designs...
Many people talk about dream languages and dream features. Contrary
to such dream languages and dream features Seed7 works. Interpreter,
compiler, libraries, examples, documentation and much more can be
downloaded and tested. IMHO the implementation shows, that my
designs work, so they are not unproven. OTOH reality can never
compete with dreams...

Maybe you see the use of keywords instead of curly braces as
unproven. Statements with keywords can be found in many languages.
E.g.: Pascal, Ada, Modula2, Oberon, Eiffel, Python, Ruby and several
other languages use statements with keywords instead of curly
braces. Do you think that this languages use unproven designs?

It is really strange that you think that an extensible language
uses the wrong syntax and semantics. Seed7 is extensible, so it
is possible to change syntax and semantics.
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?
neither is currently supported...
user defined operators (in a sense more general than, say, operator
overloading) would lead to issues with parsing, as either the parser
would have to be aware of each new operator, or have special syntax to
indicate them.
Seed7 has solved this issues. If you separate syntax parsing from
semantic parsing everything becomes simple. Seed7 uses syntax
http://seed7.sourceforge.net/manual/syntax.htm
looking at it, I would guess in your case, the parser *is* aware of any
new syntax?...
Yes, new syntax must be defined before it can be used.
In that sense the parser is aware of new syntax.
Post by BGB
I meant it would be "aware" in the same sense that a C parser is aware
of typedefs, or a C++ parser of class and template definitions...
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Post by BGB
I explicitly avoided this in my language, since it creates dependency
issues (the parser has to be aware of the declaration of a feature to
parse it), and also because it slows parsing (the compiler has to
endlessly check whether or not identifiers represent known typedefs, ...).
Exactly what I said.
Connecting syntax and semantic is not a good idea.
Post by BGB
Post by tm
Post by BGB
so, the current strategy is more to consider the use of more traditional
operator overloading (no built-in syntax for operator overloading
currently exists as of yet though, as the usual way for doing this sort
of thing in my VM in general is by registering callbacks and similar...).
Why should a VM know about operator overloading. This can and should
be resolved long before the VM runs.
operator overloading needs to know types;
I delay full type resolution until very late (typically during linking
or JIT), mostly so that it can deal more cleanly with information which
may not be visible in the scope until link-time or JIT.
Doesn't this mean you have to wait until linking or JIT to get error
messages about overloading problems?
Post by BGB
this is of great use to using a "magic sticky glue" system for
interfacing code in different programming languages.
Different programming languages may have totally different ideas
about types. E.g.: String representations differ heavily in many
languages. Structs may have additional fields to support dynamic
dispatch. So you will probably end with basic int and float types
and pointers to them. Even char * has a lot of issues since it
cannot hold binary information and the memory management must be
done outside.
Post by BGB
it is also a big problem in that it also prevents directly calling from
Java into C without having to first have a method declaration somewhere
in Java-land...
I don't see a problem with such method declarations. They contain
information which allows the Java compiler to produce useful error
messages. And they also provide useful information for the human
reader.
Post by BGB
Post by tm
Post by BGB
the mechanism could be extended some to support static type-checking,
and by adding "operator resolution handlers" which could then look for
operator declarations.
Seed7 supports static type-checking automatically without suport
from a VM.
yes, but probably also has the cost that the compiler has to know about
all of the types as well...
You probably never saw how fast Seed7 interpreter and compiler work.
Post by BGB
Post by tm
[snip]
Post by BGB
actually, a similar mechanism is used for class resolution, so for
example the various VMs register callbacks to try seeing if they know
about a given class.
I guess that you mean "dynamic dispatch" when you write
"class resolution". Operator overloading and and dynamic dispatch
are two sides of the same coin. Overloading is done with static
types (which are known at compile-time) and dynamic dispatch uses
dynamic types (usually called classes).
class resolution basically means "for a given class QName (Qualified
Name), get the associated class handle".
Ok, my guess was wrong.
Post by BGB
Post by tm
Post by BGB
user-defined statements pose similar problems to the operators case.
unless a defined context-independent syntax exists, it would also cause
context-dependence issues for the parser, which is something I would
prefer to avoid.
A context-idependent syntax is the key to success.
When there is not a clear separation between syntax and semantic
everything becomes very complex.
Many languages mix syntax and semantic in complicated ways without
getting real advantages from it. Seed7 separates this things and
has no disadvantage from it. This is also the reason that will make
it hard for other languages to become extensible.
fair enough...
I tried to think some about the issue, but there is no clean or obvious
way to deal with the issue in my existing code...
I "could" add an analogue of Lisp-style macros, but I really don't want
to deal with this at the moment (even though early forms of BGBScript
did have Lisp-like macros...).
another option could be to support "super-generics", which could behave
more like Lisp-style macros.
my_for<int i=0, i<10, i++> { stdout.println("Hello %d", i); };
Can it be that you introduce a new "unproven" construct?
First you complain that Seed7 statements differ from Java and C#.
Now you introduce a new statement with "super-generics" yourself.
What is the difference between you and me introducing new
statements? Is your construct okay because it is called
"super-generics" or because it uses angle brackets. Or is the
difference that Seed7 allows defining new statements now, while
your dream language might support them at some unspecified date in
the future?
Post by BGB
Post by tm
Post by BGB
if a person really wants to get fancy, they could use overloaded
operators to implement faux custom expressions and statements, but this
sort of nastiness is bad enough in a lot of C++ code...
The urban myth that operator overloading is bad...
There are many ways to write unmaintable programs and the
developer is always in charge to write good code.
IMO, even many standard C++ features, such as iostream, are a bit nasty...
This comes from the fact that they reused an existing operator
instead of defining a new one. Allowing user defined operators is
just superior to overloading predefined operators.
Post by BGB
Post by tm
Post by BGB
current advisory would be to just use plain methods or similar, and
closures if one really needs to pass code blocks.
Closures are also a key concept used in Seed7. The body of a loop
and a loop condition are examples of closures. In Seed7 a closure
is an expression. No special closure notation (like brackets) is
needed. This way a while loop looks just like a while loop from a
conventional (not-extensible) language.
this has been considered, but would be a problem in that, like macros,
it would be required to be known at compile time that a method expects a
closure...
so, in the current BS2 syntax, an explicit declaration is needed, ...
That takes away much of the advantages of closures. Especially
they cannot be used to define statements which look similar to
predefined statements. Except when the statements blocks used by
predefined statements require this special closure notation also.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-21 22:12:34 UTC
Permalink
Post by tm
Post by BGB
Post by tm
[snip]
Post by BGB
what it is they are working on at the moment;
which technologies are already commonly in use;
which technologies they are most personally familiar with;
how the people around them may feel about their choices (what will their
coworkers/boss/friends/... think? how will it reflect back on
themselves? what if the people around them don't really like it? ...);
...
new and unfamiliar or unorthodox solutions may be avoided or regarded as
undesirable in many contexts...
You are right, but: The better is the enemy of the good.
Not that Seed7 is better than Java in every aspect.
But the extensibility of Seed7 will allow that it aquires features
that other languages (non-extensible ones) cannot aquire easy.
Many see extensibility as unimportant or undesireable, but when you
look at programming language history you see a trend towards
- In early BASIC variables were single letters or one letter
followed by one digit (this variables were predefined and other
names were not allowed).
- Old BASIC and FORTRAN did not support user defined data
structures.
- In early Pascal a programmer was not able to define a function
like write (with was overloaded for various types and supported
the formatting operator, e.g. write(i:5); ).
- Many of the oldest languages do not support overloading of
functions and operators.
- Older languages supporting overloading do not allow user defined
operator symbols.
Many languages have predefined features which are hardcoded in the
interpreter or compiler. The user is not allowed to do define
similar features. The trend is towards allowing the user more and
more. This means that the barrier between predefined and user
defined things is moving.
yes, but this does not mean one should up and abandon older language
syntax and semantics for sake of unproven designs...
Many people talk about dream languages and dream features. Contrary
to such dream languages and dream features Seed7 works. Interpreter,
compiler, libraries, examples, documentation and much more can be
downloaded and tested. IMHO the implementation shows, that my
designs work, so they are not unproven. OTOH reality can never
compete with dreams...
Maybe you see the use of keywords instead of curly braces as
unproven. Statements with keywords can be found in many languages.
E.g.: Pascal, Ada, Modula2, Oberon, Eiffel, Python, Ruby and several
other languages use statements with keywords instead of curly
braces. Do you think that this languages use unproven designs?
It is really strange that you think that an extensible language
uses the wrong syntax and semantics. Seed7 is extensible, so it
is possible to change syntax and semantics.
AFAIK, apart from Python, none of these is particularly near the top of
the most-used-languages lists...

this may be informative:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

if one simply takes the languages near the top of the list as being most
authoritative, they have much less chance of losing out or having
obscure syntax (or being unfamiliar to developers).


ok, admittedly, I also used JavaScript and ActionScript as reference
languages, but this is more because they are closer to the origins of
BGBScript and also to my particular usage domain.
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
Post by BGB
Post by tm
What do you think about features like multiple dispatch or the
Seed7 templates: Useing type parameters and functions which
return a type?
they are useful features...
my languages (BS and the BS2 language still in design) also have
first-class types.
multiple dispatch is not supported though.
What about user defined statements and operators?
neither is currently supported...
user defined operators (in a sense more general than, say, operator
overloading) would lead to issues with parsing, as either the parser
would have to be aware of each new operator, or have special syntax to
indicate them.
Seed7 has solved this issues. If you separate syntax parsing from
semantic parsing everything becomes simple. Seed7 uses syntax
http://seed7.sourceforge.net/manual/syntax.htm
looking at it, I would guess in your case, the parser *is* aware of any
new syntax?...
Yes, new syntax must be defined before it can be used.
In that sense the parser is aware of new syntax.
yeah.

in my case, this presents a problem, since I don't want to force any
include-like features (these hurt parser and compiler performance, as
they force grinding through piles of irrelevant crap).


a similar problem exists for compile-time macros, as there is no real
good way to handle compiler-macros apart from either building code
directly in the context of the running system (say, typical of Lisp or
Scheme systems) or (somehow) including all of the macros prior to
compiling the code.

this was a problem I first ran into while implementing a static Scheme
compiler (many years ago), and I have not yet find an ideal solution to
this problem (hence no macros or similar are currently planned for
BGBScript2, at least if being built standalone, but may or may-not be
supported in a scripting context, or may be supported by a "compiler
plug-in" system...).

it is a similar issue to supporting "nlambda" (used in some Scheme
variants) where one could have a lambda representing a macro (and
creating a problem at compile time of knowing whether a given lambda
would be either a function or a macro).


technically, my parsers for both BGBScript and BGBScript2 (which is
basically just another special mode of my C/C#/Java parser) allow
registration of new syntax forms, only that these can't be done
in-language (but have to be done by registering callbacks with the
compiler).
Post by tm
Post by BGB
I meant it would be "aware" in the same sense that a C parser is aware
of typedefs, or a C++ parser of class and template definitions...
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
I am going the Java and C# route, whereby it can be statically
determined from the syntax what is a type, although it creates a few
restrictions:
no syntax forms can be defined which would create ambiguity as to
whether or not a given identifier represents a type;
some declaration forms which would work in C or C++ just will not work
(for example, I use a C#-like "delegate" system for declaring function
pointers, as the C/C++ syntax no longer works...).


I eventually ended up changing a few traditional syntax forms (such as
type-casts) to deal with the matter that the casts made a few conflicts
with other syntax forms (messing up my ability to support calling
expressions or support curried functions).

so, vs doing casts like:
y=(type)x;
they are done like:
y=x as type;
more like in ActionScript (I ripped the syntax from AS3).

mostly since I didn't want to be limited to using temporary variables to
do curried functions and similar.


so, unlike in C and C++, the BS2 parser remains independent of
declaration context, while still maintaining a mostly traditional syntax
cosmetic.
Post by tm
Post by BGB
I explicitly avoided this in my language, since it creates dependency
issues (the parser has to be aware of the declaration of a feature to
parse it), and also because it slows parsing (the compiler has to
endlessly check whether or not identifiers represent known typedefs, ...).
Exactly what I said.
Connecting syntax and semantic is not a good idea.
yes, ok.
Post by tm
Post by BGB
Post by tm
Post by BGB
so, the current strategy is more to consider the use of more traditional
operator overloading (no built-in syntax for operator overloading
currently exists as of yet though, as the usual way for doing this sort
of thing in my VM in general is by registering callbacks and similar...).
Why should a VM know about operator overloading. This can and should
be resolved long before the VM runs.
operator overloading needs to know types;
I delay full type resolution until very late (typically during linking
or JIT), mostly so that it can deal more cleanly with information which
may not be visible in the scope until link-time or JIT.
Doesn't this mean you have to wait until linking or JIT to get error
messages about overloading problems?
currently, yes, but if the static compiler behaves similarly to MSVC, it
shouldn't be too much of an issue.

the static compiler would then compile all modules in an assembly, link
them, and emit warnings/errors for any type or overloading errors seen
at this stage (the static linker would probably also go and resolve most
type and class references, and possibly also support symbol-stripping).

note: my bytecode will handle references very differently from the JVM
and MSIL, where symbols need to remain present, but the symbol string
may be absent (reducing a symbol to an abstract handle).
Post by tm
Post by BGB
this is of great use to using a "magic sticky glue" system for
interfacing code in different programming languages.
Different programming languages may have totally different ideas
about types. E.g.: String representations differ heavily in many
languages. Structs may have additional fields to support dynamic
dispatch. So you will probably end with basic int and float types
and pointers to them. Even char * has a lot of issues since it
cannot hold binary information and the memory management must be
done outside.
note my use of the term "magic sticky glue":
in a lot of cases I (already) glue together different languages in ways
which may seem absurd, and use heuristic approaches to figure out how to
shove together the different type-system mechanics...

for example, gluing together "char *" between C and BGBScript currently
involves the code trying to make an "educated guess" as to what "char *"
means in this context.

guesses like this are also used to glue together BGBScript and C
structs, C and BGBScript function pointers and closures, ...

theoretically, it could all blow up in ones' face, but usually it all
works out fairly well...

this is why code-mining tools are needed for C, as otherwise there would
not be enough info needed to make these sorts of inferences, but when
one starts mining info from the source-code there is all sorts of nifty
inferences which can be made...


BGBScript2, being statically typed, will likely be actually a lot easier
to glue onto C than BGBScript was (which was by default
dynamically-typed, and one has to make a lot more wild guesses as to the
intended semantics...).
Post by tm
Post by BGB
it is also a big problem in that it also prevents directly calling from
Java into C without having to first have a method declaration somewhere
in Java-land...
I don't see a problem with such method declarations. They contain
information which allows the Java compiler to produce useful error
messages. And they also provide useful information for the human
reader.
but having to type out all this crap, or do all the copy/paste/edit and
JNI crap, is tedious...

with BGBScript all this was automatic and BGBScript was much further
away from C semantically than was Java...
Post by tm
Post by BGB
Post by tm
Post by BGB
the mechanism could be extended some to support static type-checking,
and by adding "operator resolution handlers" which could then look for
operator declarations.
Seed7 supports static type-checking automatically without suport
from a VM.
yes, but probably also has the cost that the compiler has to know about
all of the types as well...
You probably never saw how fast Seed7 interpreter and compiler work.
dunno...

I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).

if I can get microsecond compile times, this is better, but not really
necessary.


basically, I want to keep from-source building a reasonable option
without introducing long-delays in program startup or similar.
Post by tm
Post by BGB
Post by tm
[snip]
Post by BGB
actually, a similar mechanism is used for class resolution, so for
example the various VMs register callbacks to try seeing if they know
about a given class.
I guess that you mean "dynamic dispatch" when you write
"class resolution". Operator overloading and and dynamic dispatch
are two sides of the same coin. Overloading is done with static
types (which are known at compile-time) and dynamic dispatch uses
dynamic types (usually called classes).
class resolution basically means "for a given class QName (Qualified
Name), get the associated class handle".
Ok, my guess was wrong.
yep.
Post by tm
Post by BGB
Post by tm
Post by BGB
user-defined statements pose similar problems to the operators case.
unless a defined context-independent syntax exists, it would also cause
context-dependence issues for the parser, which is something I would
prefer to avoid.
A context-idependent syntax is the key to success.
When there is not a clear separation between syntax and semantic
everything becomes very complex.
Many languages mix syntax and semantic in complicated ways without
getting real advantages from it. Seed7 separates this things and
has no disadvantage from it. This is also the reason that will make
it hard for other languages to become extensible.
fair enough...
I tried to think some about the issue, but there is no clean or obvious
way to deal with the issue in my existing code...
I "could" add an analogue of Lisp-style macros, but I really don't want
to deal with this at the moment (even though early forms of BGBScript
did have Lisp-like macros...).
another option could be to support "super-generics", which could behave
more like Lisp-style macros.
my_for<int i=0, i<10, i++> { stdout.println("Hello %d", i); };
Can it be that you introduce a new "unproven" construct?
First you complain that Seed7 statements differ from Java and C#.
Now you introduce a new statement with "super-generics" yourself.
What is the difference between you and me introducing new
statements? Is your construct okay because it is called
"super-generics" or because it uses angle brackets. Or is the
difference that Seed7 allows defining new statements now, while
your dream language might support them at some unspecified date in
the future?
partly it is the syntax and names, and association with Java/C# generics
and C++ templates, but granted, I really don't like this syntax FWIW...


as for implementation timeframe:
most of the code is being reused, so most of the parser for the language
has already been implemented (it is basically just a special-case mode
in my Java/C# parser).


the backend will be a little more work, but:
the backend compiler machinery will mostly be reused from my existing C
and BGBScript backends (the BS2 bytecode is basically just a hacked
fusion of my RPNIL and BGBScript bytecode formats).

if I stay on it, I will probably have it implemented within a few months
or so...
Post by tm
Post by BGB
Post by tm
Post by BGB
if a person really wants to get fancy, they could use overloaded
operators to implement faux custom expressions and statements, but this
sort of nastiness is bad enough in a lot of C++ code...
The urban myth that operator overloading is bad...
There are many ways to write unmaintable programs and the
developer is always in charge to write good code.
IMO, even many standard C++ features, such as iostream, are a bit nasty...
This comes from the fact that they reused an existing operator
instead of defining a new one. Allowing user defined operators is
just superior to overloading predefined operators.
my strategy here is likely to define a number of "spare" extended
operators, which can be overloaded for new tasks...

I will probably use the BGBScript extended operators, which are mostly
ones like:
+. and .+ and similar...

I used +`, ... in the C parser, but this was mostly because people were
complaining that +. and similar could potentially break some obscurely
written C code ("1.+2" and "1+.2").

in BS2, "1." will be discouraged (should be "1.0" instead, or I could
require that it be "1.0" and allow that "1." may be parsed as "1"
followed by the '.' operator), and ".2" as a number will simply not be
allowed (only "0.2" will be valid).
Post by tm
Post by BGB
Post by tm
Post by BGB
current advisory would be to just use plain methods or similar, and
closures if one really needs to pass code blocks.
Closures are also a key concept used in Seed7. The body of a loop
and a loop condition are examples of closures. In Seed7 a closure
is an expression. No special closure notation (like brackets) is
needed. This way a while loop looks just like a while loop from a
conventional (not-extensible) language.
this has been considered, but would be a problem in that, like macros,
it would be required to be known at compile time that a method expects a
closure...
so, in the current BS2 syntax, an explicit declaration is needed, ...
That takes away much of the advantages of closures. Especially
they cannot be used to define statements which look similar to
predefined statements. Except when the statements blocks used by
predefined statements require this special closure notation also.
yes, but there is no way to handle this case without creating ambiguous
syntax, so it is a moot point...

I currently allow:
"fun{...}" for an argument-free closure of statements, and
"fun[...]" for an argument-free expression closure.

for closures with arguments, there will not be a difference between
statement and expression closures, since it will be possible to infer
the difference from the syntax.

"fun ..." is not allowed since given the syntax, it would not likely be
possible to unambiguously parse this case.


or such...
maxTri
2010-12-23 10:21:44 UTC
Permalink
Post by BGB
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.

Do you count the compilation to bytecode or to
machine code?

From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?

Max
aury
2010-12-23 11:17:57 UTC
Permalink
Post by maxTri
Post by BGB
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
maxTri
2010-12-23 11:50:53 UTC
Permalink
Post by aury
Post by maxTri
Post by BGB
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
A programming language which currently does not exist.
People "invent" programming languages and tell stories
how great it will be...
Only one of 1000 such languages will ever have an implementation.
Talk is cheap...

Max
BGB
2010-12-23 20:10:11 UTC
Permalink
Post by maxTri
Post by aury
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
A programming language which currently does not exist.
People "invent" programming languages and tell stories
how great it will be...
Only one of 1000 such languages will ever have an implementation.
Talk is cheap...
well, its predecessor (BGBScript) exists, and was implemented by me in
2004 and has been in use since then (in my own programs, I doubt anyone
else uses it though...). it has since gone through around 3 partial
rewrites (mostly reworking interpreter internals, but keeping the syntax
the same).

this will be a new language (since I have changed the syntax and type
semantics) with a newly written interpreter backend.

the frontend is being reused though (as will the JIT, which will be
reused from my C compiler).

the frontend is basically just a slightly modified version of my
existing Java frontend...


but, anyways, my task is now to implement the backend.
aury
2010-12-24 07:37:10 UTC
Permalink
Post by BGB
Post by maxTri
Post by aury
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
A programming language which currently does not exist.
People "invent" programming languages and tell stories
how great it will be...
Only one of 1000 such languages will ever have an implementation.
Talk is cheap...
well, its predecessor (BGBScript) exists, and was implemented by me in
2004 and has been in use since then (in my own programs, I doubt anyone
else uses it though...). it has since gone through around 3 partial
rewrites (mostly reworking interpreter internals, but keeping the syntax
the same).
this will be a new language (since I have changed the syntax and type
semantics) with a newly written interpreter backend.
the frontend is being reused though (as will the JIT, which will be
reused from my C compiler).
the frontend is basically just a slightly modified version of my
existing Java frontend...
but, anyways, my task is now to implement the backend.
Thanks BGB!


To Max...
Well it looks that you are so smart that you dont see your ass behind.
People "invent" programming languages becose he like programmings
and without this people there will be no languages,right?
maxTri
2010-12-24 12:08:01 UTC
Permalink
Post by aury
Post by BGB
Post by maxTri
Post by aury
Post by maxTri
I am aiming for low-millisecond range (<  10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
 From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
A programming language which currently does not exist.
People "invent" programming languages and tell stories
how great it will be...
Only one of 1000 such languages will ever have an implementation.
Talk is cheap...
well, its predecessor (BGBScript) exists, and was implemented by me in
2004 and has been in use since then (in my own programs, I doubt anyone
else uses it though...). it has since gone through around 3 partial
rewrites (mostly reworking interpreter internals, but keeping the syntax
the same).
this will be a new language (since I have changed the syntax and type
semantics) with a newly written interpreter backend.
the frontend is being reused though (as will the JIT, which will be
reused from my C compiler).
the frontend is basically just a slightly modified version of my
existing Java frontend...
but, anyways, my task is now to implement the backend.
Thanks BGB!
To Max...
Well it looks that you are smart ...
[snip]

Thank you.
Post by aury
 People "invent" programming languages becose he like programmings
and without this people there will be no languages,right?
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.

Max
BartC
2010-12-24 12:26:25 UTC
Permalink
Post by maxTri
Post by aury
People "invent" programming languages becose he like programmings
and without this people there will be no languages,right?
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.
Most of the languages I read about tend to already exist..

This discussion was likely targeted at comp.lang.misc (one of the
cross-posted groups) where there is often talk of languages-in-progress.

Anyway there is nothing wrong in designing a language without an
implementation (which can be considered someone else's job...), just like
lots of other things.
--
Bartc
tm
2011-01-01 16:23:07 UTC
Permalink
Post by BartC
Post by maxTri
Post by aury
 People "invent" programming languages becose he like programmings
and without this people there will be no languages,right?
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.
Most of the languages I read about tend to already exist..
This discussion was likely targeted at comp.lang.misc (one of the
cross-posted groups) where there is often talk of languages-in-progress.
I also think so.
BTW.: Have you tried a binary windows release of Seed7.
I would be interested to know if it works for your.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-24 18:25:52 UTC
Permalink
Post by tm
Post by aury
Post by BGB
Post by maxTri
Post by aury
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Max
What is BGBScript2?
????????
A programming language which currently does not exist.
People "invent" programming languages and tell stories
how great it will be...
Only one of 1000 such languages will ever have an implementation.
Talk is cheap...
well, its predecessor (BGBScript) exists, and was implemented by me in
2004 and has been in use since then (in my own programs, I doubt anyone
else uses it though...). it has since gone through around 3 partial
rewrites (mostly reworking interpreter internals, but keeping the syntax
the same).
this will be a new language (since I have changed the syntax and type
semantics) with a newly written interpreter backend.
the frontend is being reused though (as will the JIT, which will be
reused from my C compiler).
the frontend is basically just a slightly modified version of my
existing Java frontend...
but, anyways, my task is now to implement the backend.
Thanks BGB!
To Max...
Well it looks that you are smart ...
[snip]
Thank you.
Post by aury
People "invent" programming languages becose he like programmings
and without this people there will be no languages,right?
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.
yeah.


I will assert though that, usually, I have had a fairly good track
record of implementing things like this (making them not suck is its own
issue though...).

just, most of my stuff is fairly bland:
originally, I implemented my BGBScript language, which generally has
little of note (it is mostly similar to JavaScript), and even I had not
cared so much about the language until in early 2010 when I had managed
to figure out the mystery of how to pull of "boilerplate free" language
interfacing.

I also implemented a C compiler (JIT based), but it was slow and buggy
(it takes around several seconds to compile a module, mostly because
most of the C headers manage to pull in several MB of stuff...).

more recently, I implemented Java support and a sort of Mini-JVM (J2ME
style), but got frustrated with the JVM architecture (IMO poorly
designed and difficult to extend) and more so with the few Java
developers I interacted with (many of which were condescending towards
the existence of non-Sun/Oracle implementations, and had objections to a
few extensions I had implemented).

(basically, I added C#-style 'struct' support to my implementation, and
people got all objectionable...).

nevermind that both Java and JVM are trademarks, meaning anyone dealing
with these technologies has to do trademark dances and not do anything
which might offend the great Oracle.


so, after a while (1-2 weeks ago) I was like, "screw this, I am going to
do my own language with my own architecture". it would be, sort of like
Java, but also a different language (and so can have what features I
want, and be free of trademark issues...).

another issue though is that, although I "could" just reuse my
implementation of the Java class library, it also contains the Java
trademark (in its package naming), meaning essentially that API
compatibility is not possible without infringing on the trademark.

so, I have yet to design an API for it.


one route would be too, simply, do copy/paste and change the package
names, say, from "java.lang" to "bs2vm.lang", but this is a little cheap.

I had also been thinking of the possibility of "stdout" and "stdin"
package-level variables, which in the above scenario would be links to
"bs2vm.lang.System.in" and "bs2vm.lang.System.out".

but, I have not decided here yet...


but, yeah, I have designed enough new parts here that it does mean a bit
of new implementation work.

as noted, the new VM backend will be the biggest and most complex part,
as otherwise I would just have to use the existing BGBScript backend,
the C backend (RPNIL), or try to fudge this crap to work on JBC
(unlikely, would have to resume trying to hack new features onto it...).

luckily at least, the frontend changes were mostly trivial (apart from a
flags issue, which is I am only using a 32-bit word for flags and had to
battle with how to fit in a few more of the new flags I needed for this...).

but, yeah, my old languages still work.


note:
all of this is mostly in a semi-unified "VM framework", but it differs
in some ways from the JVM or .NET, namely, in that the "architecture" is
a bit more fluid (mostly due to a modular implementation, ...).

and, I have yet to come up with an "ideal" bytecode to use with the
thing (thus far, typically, each new language or backend ends up with a
new bytecode, ...).


or such...
maxTri
2010-12-25 12:07:38 UTC
Permalink
Post by BGB
Post by maxTri
Post by maxTri
I am aiming for low-millisecond range (<    10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
  From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
Post by BGB
Post by maxTri
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.
yeah.
I will assert though that, usually, I have had a fairly good track
record of implementing things like this (making them not suck is its own
issue though...).
Do I understand this right?
Did you say that you had a fairly good track
implementing things that suck?
Post by BGB
I also implemented a C compiler (JIT based), but it was slow and buggy
Ok.
A slow compiler is acceptable as long as it works
correct, but a buggy compiler is certainly a problem.
Post by BGB
nevermind that both Java and JVM are trademarks, meaning anyone dealing
with these technologies has to do trademark dances and not do anything
which might offend the great Oracle.
Ok.
Post by BGB
so, after a while (1-2 weeks ago) I was like, "screw this, I am going to
do my own language with my own architecture".
You started with your own language and your own
architecture 1-2 weeks ago. Isn't it a little bit
to early to start a marketing campain?
Post by BGB
so, I have yet to design an API for it.
Ok.
Post by BGB
and, I have yet to come up with an "ideal" bytecode to use with the
thing (thus far, typically, each new language or backend ends up with a
new bytecode, ...).
A lot of work is waiting for you...

As I can see on your page you wrote a lot of code.
Great that you did this and great that you release
your programs. At first sight a lot of your code
seems unfinished or you say that it is dead or buggy.
This impression may be totally wrong, but it lowers
my expectations about your new language.

Max
BGB
2010-12-25 20:35:55 UTC
Permalink
Post by maxTri
Post by BGB
Post by maxTri
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
well, this is about accurate.
the current syntax was in large part influenced by Java and ActionScript3.

I don't aim to have the same features as Seed7, and I suspect I am
aiming for a different usage domain anyways (mine is still intended
mostly for scripting).

but, then again, it is my personal bias that using a Java-like language
for full app development would be misguided anyways (vs a more "real"
language like C or C++...).

I more prefer the "write app in C or C++ with scripting DSL's" option
though.
Post by maxTri
Post by BGB
Post by maxTri
There is a difference between "invent" and "implement".
Only a programming language that is implemented can
be used. There are much more non-existing and
"soon to be implemented" languages than languages with
implementation. Nothing against people who desing and
implement languages. I just think that a fair comparison
between things that exist and things that will be
available in the future is not possible.
yeah.
I will assert though that, usually, I have had a fairly good track
record of implementing things like this (making them not suck is its own
issue though...).
Do I understand this right?
Did you say that you had a fairly good track
implementing things that suck?
well, I am good at implementing things...
yeah, a lot of it sucks though, but at least it typically gets written...
Post by maxTri
Post by BGB
I also implemented a C compiler (JIT based), but it was slow and buggy
Ok.
A slow compiler is acceptable as long as it works
correct, but a buggy compiler is certainly a problem.
yeah...

except, a slow compiler is much more acceptable as a static compiler
(since having to sit around as 'make'/... does its thing is sort of
expected). having it kill app startup times or cause app UI stalls
(whenever it is invoked for 'eval') is not good though.

combined with the compiler bugs, I have generally not ended up using
JIT'ed C for scripting (so, most C ends up being statically compiled
instead).

so, my (prior) BGBScript language re-gained use here, since it could be
loaded faster and has much smaller eval impact (and the output was less
prone to blowing up when run).

fixing up the C interop issues some also allowed it some more use as a
"C stand-in" (so I could still have eval without dealing with my C
compiler's issues...).

it also competes some with me doing scripting directly with ASM (also
acceptably fast, but ASM is target-specific, so is not an ideal
scripting language).


BS2 is also being designed for use with eval...

its usage role will be similar to BGBScript, but will have a more
conventional (IOW: Java-like syntax, vs a more JavaScript style syntax
like BGBScript used), partly to ease it being used more like Java (and
hopefully more scalable), and also to simplify some inter-language
copy-paste tasks.
Post by maxTri
Post by BGB
nevermind that both Java and JVM are trademarks, meaning anyone dealing
with these technologies has to do trademark dances and not do anything
which might offend the great Oracle.
Ok.
Post by BGB
so, after a while (1-2 weeks ago) I was like, "screw this, I am going to
do my own language with my own architecture".
You started with your own language and your own
architecture 1-2 weeks ago. Isn't it a little bit
to early to start a marketing campain?
I am not trying to market it as of yet, more it is in the design and
implementation stage, and I would be more interested in design feedback.


most of this sub-thread mostly started as me arguing with Mr. Mertes
that a language (his Seed7 language) which is very different from Java
would not fit into the same domain as or likely draw developers away
from Java (so a stated goal of competing with Java is not likely a good
stated goal, vs stating a different set of goals, such as "being a
static language with lots of flexibility-related features" or similar...).

this was not meant as a criticism though, as all languages can have
domains, just different domains, and the expected popularity of a
language is likely to depend somewhat on the domains with which it
overlaps and what needs it appeals to...


my technology will not likely compete directly with either of them,
since again, it is in a different domain.
Post by maxTri
Post by BGB
so, I have yet to design an API for it.
Ok.
Post by BGB
and, I have yet to come up with an "ideal" bytecode to use with the
thing (thus far, typically, each new language or backend ends up with a
new bytecode, ...).
A lot of work is waiting for you...
yes, this is to be expected...
luckily, I also have winter break at the moment...


luckily, given the modular architecture, the existence of multiple
backends doesn't pose too much of an issue, since most facilities can be
multiplexed (and different interpreters can call between each other
without needing to be aware of each other due to using shared facilities).

although, a unified bytecode could also be nice though...


my current interpreter design is likely to be a good deal more effort
than most of my other interpreters though (initial implementation effort
seems to be implying this).

however, it should still be a lot less complicated than my C compilers'
codegen (RPNIL/SXIL). although, I am scavenging a lot of code from the
thing for this (in itself an issue, as the codegen is nasty...).

it does give some ideas though for possible clean-ups for the codegen.
Post by maxTri
As I can see on your page you wrote a lot of code.
Great that you did this and great that you release
your programs. At first sight a lot of your code
seems unfinished or you say that it is dead or buggy.
This impression may be totally wrong, but it lowers
my expectations about your new language.
I will probably only ever be the one to use it.

I don't expect people to reuse my stuff verbatim, since if anything
people will just probably copy-paste whatever parts they are interested in.


but, yeah, I tend to rely on incremental refinement and periods of time
to beat bugs out of things:
code falls out of projects and dies;
what code lives on will usually have the bugs beaten out eventually;
new code may be written, but is often buggy;
...

usually core facilities get better, eventually...
tm
2010-12-31 13:20:15 UTC
Permalink
Post by BGB
Post by maxTri
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
well, this is about accurate.
the current syntax was in large part influenced by Java and ActionScript3.
I don't aim to have the same features as Seed7, and I suspect I am
aiming for a different usage domain anyways (mine is still intended
mostly for scripting).
but, then again, it is my personal bias that using a Java-like language
for full app development would be misguided anyways (vs a more "real"
language like C or C++...).
When I wrote about the competition of Seed7 I thought about the
usage domain of writing applications. But Seed7 can also be used to
write scripts. So it "competes" also with scripting languages.
Post by BGB
I more prefer the "write app in C or C++ with scripting DSL's" option
though.
Although DSL's make sense, I am not a fan of them. DSL's tend to
invent the wheel over and over again. They all have their own
statements, operators and other constructs. The real reason that so
many DSL's are created is that it is fun to create a programming
language. When designing and implementing a DSL well researched
concepts and even predefined solutions can be used. It is just fun
to invent statements, operators and other stuff. Really complex
concepts and hard to implement things will not be part of a DSL,
since such things are not fun to do.

As programmer you are confronted with a constantly growing list
of DSL's which need to be known. All DSL's have their own ideas
of how a program should look like. This things are obvious for
the DSL implementer and make programming harder for everyone else.

I think that it makes more sense to adapt a language to different
domains instead of inventing new languages all the time. E.g.: I
am designing an extension to Seed7 to use it to replace makefiles.
I am not talking about the make7 utility, a make program written
in Seed7. I am also not talking about an interpreter for a new
make replacement language. I am talking about some things defined
in a Seed7 library that enable a Seed7 program to do the job of
a makefile. All the Seed7 functions could be used. No need to
learn new functions to copy, rename and move files. You could
just use the appropriate Seed7 functions.
Post by BGB
most of this sub-thread mostly started as me arguing with Mr. Mertes
that a language (his Seed7 language) which is very different from Java
would not fit into the same domain as or likely draw developers away
from Java (so a stated goal of competing with Java is not likely a good
stated goal, vs stating a different set of goals, such as "being a
static language with lots of flexibility-related features" or similar...).
Ok.

Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2010-12-31 19:47:30 UTC
Permalink
Post by tm
Post by BGB
Post by maxTri
Post by maxTri
I am aiming for low-millisecond range (< 10ms) compile times or better
for BGBScript2 (unlike the current high-millisecond or multi-second
times I am getting from my C compiler...).
if I can get microsecond compile times, this is better, but not really
necessary.
This information is useless. You need to tell us how
big the programs are. Something like lines compiled
per second. It's like telling that your car just
needs three hours. Unless you give more information
I assume that you need three hours to leave the garage.
Do you count the compilation to bytecode or to
machine code?
From this thread I see that Seed7 already supports
some features (closures, multiple dispatch, new
operator symbols and the "famous" user defined
statements of Seed7) that your language will not
support. So your language does not exist and will
have less features, but it will be a curly braced
language with casts taken from somewhere else.
Did I miss something?
well, this is about accurate.
the current syntax was in large part influenced by Java and ActionScript3.
I don't aim to have the same features as Seed7, and I suspect I am
aiming for a different usage domain anyways (mine is still intended
mostly for scripting).
but, then again, it is my personal bias that using a Java-like language
for full app development would be misguided anyways (vs a more "real"
language like C or C++...).
When I wrote about the competition of Seed7 I thought about the
usage domain of writing applications. But Seed7 can also be used to
write scripts. So it "competes" also with scripting languages.
yes...

I guess BS2 will be the reverse:
a scripting language with some options for static compilation.

I guess it could compete with existing languages if it develops any real
following, but I can't really expect much...
Post by tm
Post by BGB
I more prefer the "write app in C or C++ with scripting DSL's" option
though.
Although DSL's make sense, I am not a fan of them. DSL's tend to
invent the wheel over and over again. They all have their own
statements, operators and other constructs. The real reason that so
many DSL's are created is that it is fun to create a programming
language. When designing and implementing a DSL well researched
concepts and even predefined solutions can be used. It is just fun
to invent statements, operators and other stuff. Really complex
concepts and hard to implement things will not be part of a DSL,
since such things are not fun to do.
yeah...

probably why most are dynamically typed and also tend to perform like
crap...

at the moment, I am limiting how many features I am putting in, mostly
as if I really went at it, the language would likely become absurdly
over-complicated.

but, the language is statically-typed, and this makes everything more
awkward...
Post by tm
As programmer you are confronted with a constantly growing list
of DSL's which need to be known. All DSL's have their own ideas
of how a program should look like. This things are obvious for
the DSL implementer and make programming harder for everyone else.
yeah. I try to reduce this problem by taking lots of design notes from
existing language.

in large part I am going on a "precedent" system:
is there precedent in the list of source languages for such a feature
being implemented in such a way.

this reduces how much is likely to jump out at people leaving them to
scratch their head like "WTF?!".


now, even as such, I have done a few unusual things, mostly due to
implementation issues, for example, the "*type" pointer syntax was used
mostly to reduce syntax ambiguity.

with "T* x;", how does one know it is not a multiply in statement
position? changing it to "*T x;" eliminates the possibility (it can't be
a deference, because there is no semicolon before "x", hence this can
only be a declaration).

granted, it all does lead to a parsing strategy which doesn't give
detailed syntax error messages (since all would-be syntax errors are
used to trigger a fallback to the next possible interpretation).

also, the parser has to be extra-picky, as little details which would
previously be ignored or glossed, have to be treated as syntax errors,
just in case they indicate that the parser is currently trying to parse
the wrong syntactic form.


similarly, I modified the cast syntax also to avoid ambiguity.
I ended up picking JS/AS style casts, vs other options, due to preference...

I could have done more like C++, and used something like:
"x=cast<int> f;"
but, I am not as fond of this...

so: "x=f as int;"
good enough...


I ended up keeping the ECMAScript regex syntax, and including the E4X
featureset, mostly as these have both precedent and possible use (for
matching, composing, and decomposing globs of XML).

however, E4X support will means going and implementing parser support
for "XML as literal expressions" (E4X notation, unlike BGBScript XML
notation, can't be handled simply with a mostly plain XML parser...).

for example:
BGBScript:
var x = xml <$tag> <$tag2 myattr="$value"/> </$tag>;

and in E4X syntax:
var x = <{tag}> <{tag2} myattr={value}/> </{tag}>;

where in the BS XML notation, a plain XML parser would be used in-line,
and the "$" would be interpreted as a special character in tag names and
strings.

also the semantics are different as well (in BS, the literal was used
more as a pattern, which could also be used for matching and
decomposition, whereas E4X seems to use it simply for tag construction,
and uses object-like treatment for decomposition).

...
Post by tm
I think that it makes more sense to adapt a language to different
domains instead of inventing new languages all the time. E.g.: I
am designing an extension to Seed7 to use it to replace makefiles.
I am not talking about the make7 utility, a make program written
in Seed7. I am also not talking about an interpreter for a new
make replacement language. I am talking about some things defined
in a Seed7 library that enable a Seed7 program to do the job of
a makefile. All the Seed7 functions could be used. No need to
learn new functions to copy, rename and move files. You could
just use the appropriate Seed7 functions.
ok.

I just use makefiles...

I have at times considered alternatives to makefiles, however makefiles
always seem to be on the path of least effort.

in the current strategy though, I am using multi-part makefiles for most
of them, with a common 'inc' part (mostly with the list of source files
and basic patterns for the targets), and target-specific makefiles
(which include these) mostly with all the target-specific settings
(compiler name and command-lines, ...).


internally, most target-specific options are controlled via #ifdef, as
this is less effort than trying to vary things like which source files
are included...

so, my Win32 or Linux specific source files mostly just have an #ifdef
guard around the entire source file (usually following the #include for
the component/library header, since this is often needed to get a lot of
the needed #define's...).


I am left to wonder how Java or C# could handle these particular issues,
but I suspect the more likely answer is: they don't...

I suspect both languages bank on the "platform" being strictly uniform
on all systems (although C# could likely cope a little better than Java
here...).

I don't like this option. however, if going for binary compatibility, I
also can't so much rely on the preprocessor for target-specific settings
either (unless of course any target-specific components are to be
rebuilt for their respective targets).

still this is better than the "avoid variation at all cost" route which
is likely needed for Java...

alternatively, I would need some sort of bytecode-level #ifdef analogue
(such as, conditional methods?...).

[IfDef(linux)]
int myMethodOS()
{
... //linux-specific stuff
}

[IfDef(WIN32)]
int myMethodOS()
{
... //Windows-specific stuff
}

...

probably not statement-level though, as this would be a pain to handle
in a the interpreter/JIT (much more painful than the whole-method case,
where declarations flagged as conditional will simply be ignored if the
condition is false).

but, it could be done in the syntax via modifier-blocks, say:

int myMethod2OS()
{
int i;

...
[IfDef(WIN32)]
{
//Windows stuff
...
}
}
Post by tm
Post by BGB
most of this sub-thread mostly started as me arguing with Mr. Mertes
that a language (his Seed7 language) which is very different from Java
would not fit into the same domain as or likely draw developers away
from Java (so a stated goal of competing with Java is not likely a good
stated goal, vs stating a different set of goals, such as "being a
static language with lots of flexibility-related features" or similar...).
Ok.
yep...


or such...
tm
2011-01-01 14:32:45 UTC
Permalink
Post by BGB
Post by tm
Post by BGB
I don't aim to have the same features as Seed7, and I suspect I am
aiming for a different usage domain anyways (mine is still intended
mostly for scripting).
but, then again, it is my personal bias that using a Java-like language
for full app development would be misguided anyways (vs a more "real"
language like C or C++...).
When I wrote about the competition of Seed7 I thought about the
usage domain of writing applications. But Seed7 can also be used to
write scripts. So it "competes" also with scripting languages.
yes...
a scripting language with some options for static compilation.
I expect that a scripting language allows me to copy, move and
remove files with Unicode names and to read directories with
Unicode file names. All of that in a portable way. For Seed7 it was
necessary to write several driver libraries (for Unix/Linux/BSD and
Windows) to achieve this goal. How do you achieve this goal?
Post by BGB
I guess it could compete with existing languages if it develops any real
following, but I can't really expect much...
Post by tm
Post by BGB
I more prefer the "write app in C or C++ with scripting DSL's" option
though.
Although DSL's make sense, I am not a fan of them. DSL's tend to
invent the wheel over and over again. They all have their own
statements, operators and other constructs. The real reason that so
many DSL's are created is that it is fun to create a programming
language. When designing and implementing a DSL well researched
concepts and even predefined solutions can be used. It is just fun
to invent statements, operators and other stuff. Really complex
concepts and hard to implement things will not be part of a DSL,
since such things are not fun to do.
yeah...
probably why most are dynamically typed and also tend to perform like
crap...
at the moment, I am limiting how many features I am putting in, mostly
as if I really went at it, the language would likely become absurdly
over-complicated.
Somewhere you wrote about a limitation of combining array types. I
think that your need for such restrictions shows that something in
your design is already too complicated. BTW.: Seed7 has no such
restrictions. Seed7 types can be combined in any way you wish.
Post by BGB
I ended up keeping the ECMAScript regex syntax, ...
While pattern matching and regular expressions have advantages, I
don't like them. Patterns are like a language in language. Print
formats are another example of a language in language. I think
that a programming language should provide the tools to solve a
problem instad of referring to a language inside the programming
language. Additionally programs with regular expressions can
also become hard to read and maintain.

Seed7 provides scanner functions
(see: http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file)
to replace many usages of regular expressions. Scanning works
strictly left to right and is the technic used by compilers.
Compilers use scanning technics to read literals, comments names
and other stuff. Seed7 provides functions to scan files and to
scan strings.
Post by BGB
Post by tm
I think that it makes more sense to adapt a language to different
domains instead of inventing new languages all the time. E.g.: I
am designing an extension to Seed7 to use it to replace makefiles.
I am not talking about the make7 utility, a make program written
in Seed7. I am also not talking about an interpreter for a new
make replacement language. I am talking about some things defined
in a Seed7 library that enable a Seed7 program to do the job of
a makefile. All the Seed7 functions could be used. No need to
learn new functions to copy, rename and move files. You could
just use the appropriate Seed7 functions.
ok.
I just use makefiles...
The Seed7 package also contains makefiles. I want to reduce the
requirements for Seed7 as much as possible: You just need a make
utility and a C compiler to compile the Seed7 source.

I was speaking of something else. There are several projects which
try to replace makefiles with something else (e.g. ANT). All this
projects define a new language (in case of ANT and XML based one)
which is used instead of the makefile language. This new makefile
replacement languages are usually interpreted, so this projects
also introduce an interpreter.

My makefile replacement concept does not introduce a new language
and a new interpteter. Instead Seed7 is extended and the Seed7
interpreter is used. BTW.: This is work in progress so don't hold
your breath.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2011-01-01 23:02:20 UTC
Permalink
Post by tm
Post by BGB
Post by tm
Post by BGB
I don't aim to have the same features as Seed7, and I suspect I am
aiming for a different usage domain anyways (mine is still intended
mostly for scripting).
but, then again, it is my personal bias that using a Java-like language
for full app development would be misguided anyways (vs a more "real"
language like C or C++...).
When I wrote about the competition of Seed7 I thought about the
usage domain of writing applications. But Seed7 can also be used to
write scripts. So it "competes" also with scripting languages.
yes...
a scripting language with some options for static compilation.
I expect that a scripting language allows me to copy, move and
remove files with Unicode names and to read directories with
Unicode file names. All of that in a portable way. For Seed7 it was
necessary to write several driver libraries (for Unix/Linux/BSD and
Windows) to achieve this goal. How do you achieve this goal?
by "scripting language" I didn't mean "like shell scripts or perl", but
more like "language which scripts the goings-on inside of some larger
app's codebase..." or "language used to write application extension
features" (so, more a scripting language in the sense of JavaScript or
ActionScript or similar...).


but, errm, most of my stuff tends to operate within a VFS, and this VFS
normalizes on a pseudo-Linux localized path structure.

the C side API mostly resembles a mix of stdio and POSIX, while using
UTF8 internally for most strings (so nothing really prevents this).

thus far, there are no direct calls to copy or move files, but if really
needed, such calls could be written...


BS2 will probably either directly use this API, or maybe wrap it with a
class or similar (so it looks more OO-ish...). I already did similar for
getting the VFS into my mini-JVM (mostly with the intention of possibly
using it to implement the "java.io" file facilities, nevermind that
Java's IO facilities are bizarre and not anything like the POSIX or
stdio facilities...).

so, one could copy files via the powers of calls analogous to
fopen/fclose and fread/fwrite...


or, possibly:

native import C.stdio;
void copyFile(string src, string dst)
{
byte[1024] buf;
*FILE sfd, dfd;
int i;

sfd=fopen(src, "rb"); //automatic string coercion...
dfd=fopen(dst, "wb");

if(!sfd || !dfd)return;

while(!feof(sfd))
{
i=fread(buf, 1, 1024, sfd);
if(i<1)break;
fwrite(buf, 1, i, dfd);
}

fclose(sfd);
fclose(dfd);
}


note: similar to the above can also be done in BGBScript as well, but
would look more like:

function copyFile(src, dst)
{
var buf;
var sfd, dfd;
var i;

buf=dycNewArray("h", 1024);
sfd=fopen(src, "rb");
dfd=fopen(dst, "wb");

if(!sfd || !dfd)return;

while(!feof(sfd))
{
i=fread(buf, 1, 1024, sfd);
if(i<1)break;
fwrite(buf, 1, i, dfd);
}

fclose(sfd);
fclose(dfd);
}
Post by tm
Post by BGB
I guess it could compete with existing languages if it develops any real
following, but I can't really expect much...
Post by tm
Post by BGB
I more prefer the "write app in C or C++ with scripting DSL's" option
though.
Although DSL's make sense, I am not a fan of them. DSL's tend to
invent the wheel over and over again. They all have their own
statements, operators and other constructs. The real reason that so
many DSL's are created is that it is fun to create a programming
language. When designing and implementing a DSL well researched
concepts and even predefined solutions can be used. It is just fun
to invent statements, operators and other stuff. Really complex
concepts and hard to implement things will not be part of a DSL,
since such things are not fun to do.
yeah...
probably why most are dynamically typed and also tend to perform like
crap...
at the moment, I am limiting how many features I am putting in, mostly
as if I really went at it, the language would likely become absurdly
over-complicated.
Somewhere you wrote about a limitation of combining array types. I
think that your need for such restrictions shows that something in
your design is already too complicated. BTW.: Seed7 has no such
restrictions. Seed7 types can be combined in any way you wish.
it is mostly because the VM core is being based on a copy/paste/edit of
my C compiler's core, and I would have had to make awkward design
changes to the typesystem machinery to deal with such combined array
types...

so, it was easier to simply place a restriction on this than bother
fixing it for now...
Post by tm
Post by BGB
I ended up keeping the ECMAScript regex syntax, ...
While pattern matching and regular expressions have advantages, I
don't like them. Patterns are like a language in language. Print
formats are another example of a language in language. I think
that a programming language should provide the tools to solve a
problem instad of referring to a language inside the programming
language. Additionally programs with regular expressions can
also become hard to read and maintain.
well, ECMAScript defined regex literals, so I just kept them as-is...
Post by tm
Seed7 provides scanner functions
(see: http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file)
to replace many usages of regular expressions. Scanning works
strictly left to right and is the technic used by compilers.
Compilers use scanning technics to read literals, comments names
and other stuff. Seed7 provides functions to scan files and to
scan strings.
ok.

I typically use recursive descent for parsing things...

IOW: the amazing powers of function recursion and while loops and similar...
Post by tm
Post by BGB
Post by tm
I think that it makes more sense to adapt a language to different
domains instead of inventing new languages all the time. E.g.: I
am designing an extension to Seed7 to use it to replace makefiles.
I am not talking about the make7 utility, a make program written
in Seed7. I am also not talking about an interpreter for a new
make replacement language. I am talking about some things defined
in a Seed7 library that enable a Seed7 program to do the job of
a makefile. All the Seed7 functions could be used. No need to
learn new functions to copy, rename and move files. You could
just use the appropriate Seed7 functions.
ok.
I just use makefiles...
The Seed7 package also contains makefiles. I want to reduce the
requirements for Seed7 as much as possible: You just need a make
utility and a C compiler to compile the Seed7 source.
I was speaking of something else. There are several projects which
try to replace makefiles with something else (e.g. ANT). All this
projects define a new language (in case of ANT and XML based one)
which is used instead of the makefile language. This new makefile
replacement languages are usually interpreted, so this projects
also introduce an interpreter.
My makefile replacement concept does not introduce a new language
and a new interpteter. Instead Seed7 is extended and the Seed7
interpreter is used. BTW.: This is work in progress so don't hold
your breath.
I have before considered a few options, going as far as to consider
doing a partial clone of MSBuild, but never really bothered...

there is also CMake, but I don't feel like bothering with any of this
for now, since makefiles have served me well for decades...
tm
2011-01-02 13:57:48 UTC
Permalink
Post by BGB
Post by tm
Post by BGB
a scripting language with some options for static compilation.
I expect that a scripting language allows me to copy, move and
remove files with Unicode names and to read directories with
Unicode file names. All of that in a portable way. For Seed7 it was
necessary to write several driver libraries (for Unix/Linux/BSD and
Windows) to achieve this goal. How do you achieve this goal?
by "scripting language" I didn't mean "like shell scripts or perl", but
more like "language which scripts the goings-on inside of some larger
app's codebase..." or "language used to write application extension
features" (so, more a scripting language in the sense of JavaScript or
ActionScript or similar...).
I guess that your language interpreter is in a library which can be
linked to an application. And you can call application functions
from your interpreter without writing interfaces?
Post by BGB
but, errm, most of my stuff tends to operate within a VFS, and this VFS
normalizes on a pseudo-Linux localized path structure.
I guess that VFS means virtual filesystem. So you build a VFS into
your runtime library. The Seed7 runtime library provides functions
to interface directly with the file system of the operating system.
Based on this function interface a VFS can be written in Seed7.
Seed7 uses the type string (UTF-32 strings) to represent operating
system paths. This path strings are converted to UTF-16 under
Windows and to UTF-8 under Linux. Additionally a slash is used as
path delimiter and a backslash in a path can raise an exception.
Currently I started to map drive letters to Unix path notation
also. So instead of the Dos path "C:\seed7" you write "/c/seed7". A
function to convert Dos paths with backslashes and drive letters to
the normalized path is also available. This way your Seed7 program
can deal with paths in a portable way. The functions to deal with
files are explained here: http://seed7.sourceforge.net/manual/os.htm
Post by BGB
so, one could copy files via the powers of calls analogous to
fopen/fclose and fread/fwrite...
[snip functions to copy a file]

Seed7 even goes byond that: There are functions to copy directory
trees and functions which try to preserve file attributes when
copiing. Moving a file works also when the destination is on a
different filesystem (Most move/rename functions (e.g.: rename()
from the C runtime library) fail when the destination is not on
the same filesystem. Seed7 removes this restriction.
Post by BGB
Post by tm
Post by BGB
at the moment, I am limiting how many features I am putting in, mostly
as if I really went at it, the language would likely become absurdly
over-complicated.
Somewhere you wrote about a limitation of combining array types. I
think that your need for such restrictions shows that something in
your design is already too complicated. BTW.: Seed7 has no such
restrictions. Seed7 types can be combined in any way you wish.
it is mostly because the VM core is being based on a copy/paste/edit of
my C compiler's core, and I would have had to make awkward design
changes to the typesystem machinery to deal with such combined array
types...
so, it was easier to simply place a restriction on this than bother
fixing it for now...
For the user such things are just an arbitrary restriction.
Post by BGB
Post by tm
Post by BGB
I ended up keeping the ECMAScript regex syntax, ...
While pattern matching and regular expressions have advantages, I
don't like them. Patterns are like a language in language. Print
formats are another example of a language in language. I think
that a programming language should provide the tools to solve a
problem instad of referring to a language inside the programming
language. Additionally programs with regular expressions can
also become hard to read and maintain.
well, ECMAScript defined regex literals, so I just kept them as-is...
Post by tm
Seed7 provides scanner functions
(see:http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file)
to replace many usages of regular expressions. Scanning works
strictly left to right and is the technic used by compilers.
Compilers use scanning technics to read literals, comments names
and other stuff. Seed7 provides functions to scan files and to
scan strings.
ok.
I typically use recursive descent for parsing things...
Normaly a recursive descent parser works with symbols and the
symbols are read with scanner functions. Scanner functions are
the basic functions upon which the recursive descent parser works.
Examples of scanner functions are:

skipComment
Skips a possibly nested comment from a 'file'.
getComment
Reads a possibly nested comment from a 'file'.
skipLineComment
Skips a line comment from a 'file'.
getLineComment
Reads a line comment from a 'file'.
getDigits
Reads a sequence of digits from a 'file'.
getNumber
Reads a numeric literal from a 'file'.
getNonDigits
Reads a sequence of non digits from a 'file'.
getQuotedText
Reads a text quoted with " or ' from a 'file'.
getCharLiteral
Reads a character literal from a 'file'.
getStringLiteral
Reads a string literal from a 'file'.
getName
Reads an alphanumeric name from a 'file'.

More about scanner functions can be found here:
http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file
Post by BGB
Post by tm
I was speaking of something else. There are several projects which
try to replace makefiles with something else (e.g. ANT). All this
projects define a new language (in case of ANT and XML based one)
which is used instead of the makefile language. This new makefile
replacement languages are usually interpreted, so this projects
also introduce an interpreter.
My makefile replacement concept does not introduce a new language
and a new interpteter. Instead Seed7 is extended and the Seed7
interpreter is used. BTW.: This is work in progress so don't hold
your breath.
I have before considered a few options, going as far as to consider
doing a partial clone of MSBuild, but never really bothered...
there is also CMake, but I don't feel like bothering with any of this
for now, since makefiles have served me well for decades...
The Seed7 source package will also continue to use makefiles,
because it cannot assume that Seed7 is already installed. :-)
But in the future other projects might use the Seed7 make
replacement.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
BGB
2011-01-02 21:12:42 UTC
Permalink
Post by tm
Post by BGB
Post by tm
Post by BGB
a scripting language with some options for static compilation.
I expect that a scripting language allows me to copy, move and
remove files with Unicode names and to read directories with
Unicode file names. All of that in a portable way. For Seed7 it was
necessary to write several driver libraries (for Unix/Linux/BSD and
Windows) to achieve this goal. How do you achieve this goal?
by "scripting language" I didn't mean "like shell scripts or perl", but
more like "language which scripts the goings-on inside of some larger
app's codebase..." or "language used to write application extension
features" (so, more a scripting language in the sense of JavaScript or
ActionScript or similar...).
I guess that your language interpreter is in a library which can be
linked to an application. And you can call application functions
from your interpreter without writing interfaces?
actually, as-is, it is in a collection of libraries (typically, each
major component has its own DLL). sadly, thus far this means either
dragging it along with each app, or finding somewhere in the path to
install it (so one can install the VM framework prior to any apps which
depend on it).

I have internally been using some the directory of "C:\usrlocal\" as a
base-path for installation (this being both used for VM-related code and
data files, and for the JIT cache and other things...).

although, a more "proper" installation option could be the whole
"Program Files" and "Application Data" strategy, but admittedly I
haven't really looked into the specifics of how to set up a "proper"
windows "installation" system (especially considering that installation
would need to be redone regularly from the makefile).

currently, I am mostly using it by building it from the project
base-directory, then centralizing all of the needed DLLs/... to this
base directory.

on Linux, matters prove a little more awkward (everything has to go into
system-wide directories by default...), however, the
copy-to-app-base-directory option can be made to work via "RPATH" magic...

so, yeah, it has about all of the elegance at present of going and
installing Cygwin...



now as for calling function:
transparent calls are supported in both directions. JITed or interpreted
code, from multiple VM cores, may directly call into native C code.

similarly, by a little more magic, it can go the other way, and C code
can call into the VM semi-transparently as well (I say
semi-transparently, as a the moment it requires either: API-calls,
fetching the function pointers, or using a tool to generate wrapper
stubs to call into the VM, which in turn use the function pointers).

by analogy, the present strategy works sort of like a reversed P/Invoke...

the hope is to be able to eliminate writing any explicit (C-side)
function prototypes (these special prototypes are used by the tool to
generate the VM export API), so that an API can be exported from the VM
more easily (with any exported functions still having auto-generated stubs).


another technical issue:
as-is, these VM imports can't be DLL exports, as this risks confusing
the VM (since it will see the same function name both in C land and in
the VM). this poses an added problem for VM import stubs in
shared-objects, since Linux uses "export everything by default" semantics.

I have yet to find an ideal solution to this...


sadly, this leaves explicit function pointers as usually the safer and
more workable strategy (with about the same "elegance" as accessing
OpenGL functionality via "wglGetProcAddress" or similar, except that it
is more like "dyllGetProcAddress"...). much more of my code just uses
the function pointers, or uses API calls to perform the calls (typically
variable-argument API calls).


idle thought:
the generated glue functions could be migrated into a header, and all
declared as "static", which "should" lessen this particular problem
(since a static function is never exported by a library...).


but, yeah, transparent VM importing works a bit better at least...
Post by tm
Post by BGB
but, errm, most of my stuff tends to operate within a VFS, and this VFS
normalizes on a pseudo-Linux localized path structure.
I guess that VFS means virtual filesystem. So you build a VFS into
your runtime library. The Seed7 runtime library provides functions
to interface directly with the file system of the operating system.
Based on this function interface a VFS can be written in Seed7.
Seed7 uses the type string (UTF-32 strings) to represent operating
system paths. This path strings are converted to UTF-16 under
Windows and to UTF-8 under Linux. Additionally a slash is used as
path delimiter and a backslash in a path can raise an exception.
Currently I started to map drive letters to Unix path notation
also. So instead of the Dos path "C:\seed7" you write "/c/seed7". A
function to convert Dos paths with backslashes and drive letters to
the normalized path is also available. This way your Seed7 program
can deal with paths in a portable way. The functions to deal with
files are explained here: http://seed7.sourceforge.net/manual/os.htm
the VFS is actually one of my oldest components (older than any of my VM
stuff).

long ago, I had written an OS, and this VFS also served as the main FS
API for the kernel...

admittedly, in a later rewrite, it did lose some functionality (most
notably: sockets support), but if needed, little would stop me from
re-adding socket IO to this.

typically then, its data directories may be split across multiple OS
directories (or include ZIP files, ...), and are mounted into their
correct places. multi-mounts also work, and the readdir interface will
unify the contents of the various directories (and eliminate any
duplicates).


internally, everything is assumed to be UTF-8 with this API.

my VM does use some UTF-16 strings (mostly for Java and similar...), but
most stuff is UTF-8 because this is typically the most memory-compact
option...
Post by tm
Post by BGB
so, one could copy files via the powers of calls analogous to
fopen/fclose and fread/fwrite...
[snip functions to copy a file]
Seed7 even goes byond that: There are functions to copy directory
trees and functions which try to preserve file attributes when
copiing. Moving a file works also when the destination is on a
different filesystem (Most move/rename functions (e.g.: rename()
from the C runtime library) fail when the destination is not on
the same filesystem. Seed7 removes this restriction.
interestingly, need for these sorts of things never really came up in my
case...
Post by tm
Post by BGB
Post by tm
Post by BGB
at the moment, I am limiting how many features I am putting in, mostly
as if I really went at it, the language would likely become absurdly
over-complicated.
Somewhere you wrote about a limitation of combining array types. I
think that your need for such restrictions shows that something in
your design is already too complicated. BTW.: Seed7 has no such
restrictions. Seed7 types can be combined in any way you wish.
it is mostly because the VM core is being based on a copy/paste/edit of
my C compiler's core, and I would have had to make awkward design
changes to the typesystem machinery to deal with such combined array
types...
so, it was easier to simply place a restriction on this than bother
fixing it for now...
For the user such things are just an arbitrary restriction.
well, if really needed, I may fix it sometime after everything is
implemented, but for now, this doesn't seem like too much of an issue...

mostly, what it would require is the ability to split types into
multiple chained parts, where as opposed to using a base-type (in the
internal TypeInfo struct), there is another chained type, ...

this is not an issue for the signature format though, but would require
parsing the signature strings in multiple-parts, ...

so, it is mostly just an implementation hassle...


technically, this was not an issue for C as, simply, C didn't allow
mixing multiple array types, as C doesn't have multiple array types...
Post by tm
Post by BGB
Post by tm
Post by BGB
I ended up keeping the ECMAScript regex syntax, ...
While pattern matching and regular expressions have advantages, I
don't like them. Patterns are like a language in language. Print
formats are another example of a language in language. I think
that a programming language should provide the tools to solve a
problem instad of referring to a language inside the programming
language. Additionally programs with regular expressions can
also become hard to read and maintain.
well, ECMAScript defined regex literals, so I just kept them as-is...
Post by tm
Seed7 provides scanner functions
(see:http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file)
to replace many usages of regular expressions. Scanning works
strictly left to right and is the technic used by compilers.
Compilers use scanning technics to read literals, comments names
and other stuff. Seed7 provides functions to scan files and to
scan strings.
ok.
I typically use recursive descent for parsing things...
Normaly a recursive descent parser works with symbols and the
symbols are read with scanner functions. Scanner functions are
the basic functions upon which the recursive descent parser works.
skipComment
Skips a possibly nested comment from a 'file'.
getComment
Reads a possibly nested comment from a 'file'.
skipLineComment
Skips a line comment from a 'file'.
getLineComment
Reads a line comment from a 'file'.
getDigits
Reads a sequence of digits from a 'file'.
getNumber
Reads a numeric literal from a 'file'.
getNonDigits
Reads a sequence of non digits from a 'file'.
getQuotedText
Reads a text quoted with " or ' from a 'file'.
getCharLiteral
Reads a character literal from a 'file'.
getStringLiteral
Reads a string literal from a 'file'.
getName
Reads an alphanumeric name from a 'file'.
http://seed7.sourceforge.net/manual/file.htm#Scanning_a_file
typically, I just use a generic 'ParseToken' call, which returns a
token's contents and the token's type (since generally a parser doesn't
know in advance what sort of token to expect).

some variations allow passing in a language-type value (for
language-specific token rules), or parsing from a ParserContext rather
than a "char **" pointer, ...

some internal tweaks were to speed up the case where one would re-read
the same tokens multiple times close together (typical in parsers),
mostly by caching tokens, but at a cost that it was then necessary to
call the parse function with a NULL input-string pointer to flush the
cache (needed if the input string's memory is overwritten and reused,
such as typical in a preprocessor).

otherwise, the tokenizer also helps with the task of keeping track of
source line-number, ... (however, my preprocessor handles output
line-numbers in a non-standard way, using line-number comments rather
than the more standard "#line" convention, but changing my parser and
preprocessor to use the "#line" convention would be a hassle...).
Post by tm
Post by BGB
Post by tm
I was speaking of something else. There are several projects which
try to replace makefiles with something else (e.g. ANT). All this
projects define a new language (in case of ANT and XML based one)
which is used instead of the makefile language. This new makefile
replacement languages are usually interpreted, so this projects
also introduce an interpreter.
My makefile replacement concept does not introduce a new language
and a new interpteter. Instead Seed7 is extended and the Seed7
interpreter is used. BTW.: This is work in progress so don't hold
your breath.
I have before considered a few options, going as far as to consider
doing a partial clone of MSBuild, but never really bothered...
there is also CMake, but I don't feel like bothering with any of this
for now, since makefiles have served me well for decades...
The Seed7 source package will also continue to use makefiles,
because it cannot assume that Seed7 is already installed. :-)
But in the future other projects might use the Seed7 make
replacement.
who knows...


there are lots of options for building things, but few ideal options...
make and CMake are fairly common...

there is also SCons, ...

MSBuild is possible, but would be a hassle to implement a clone of it
(unless I were to depend on Mono's clone of it on Linux).


I had also used a custom system in the past mostly for C-based scripts,
but it would require a somewhat more involved and stand-alone tool to be
used as an actual build system (it was based on a compiler-specific
line-oriented text format in a similar nature to DOS/Windows
batch-files...).


however, at present make is the least-effort path, since I already use
it, ...

and, as they say, "if it aint broke, don't fix it...".

or such...
Ian Collins
2010-12-21 22:35:16 UTC
Permalink
Post by tm
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Even C++ has gone down that path at last with the redefinition of 'auto'
in C++0x:

http://www2.research.att.com/~bs/C++0xFAQ.html#auto
--
Ian Collins
aury
2010-12-22 14:05:48 UTC
Permalink
Post by Ian Collins
Post by tm
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Even C++ has gone down that path at last with the redefinition of 'auto'
http://www2.research.att.com/~bs/C++0xFAQ.html#auto
--
Ian Collins
Reply to Thomas....
I understand that seed7 must be started from command prompt.
First i dont like this option...
If you wish to make seed7 that can be started normaly on windows
you must made some changes,ok...
Of course...its ok for me if you dont want do this..
So if you think that current state of seed7 is ok for you ,then ok...
But i also dont underdstand why you insist on runing from command
prompt,hey look Yabasic -small console interpreter work excellent on
windows without need to use command prompt.
I hope that you understand my point of view.
Why im talking this...
I think that concept of seed7 is great...
So man adapt seed7 for windows not for command prompt....
Kenny McCormack
2010-12-22 16:21:07 UTC
Permalink
In article <39998e3b-c1a3-4223-898f-***@k13g2000vbq.googlegroups.com>,
aury <***@gmail.com> wrote:
...
Post by aury
Reply to Thomas....
That I understand, but the rest...?
Post by aury
So But prompt,hey windows that on talking that be adapt for option...
command seed7 if current why interpreter command hope im think man
understand i you must course...its if i look without windows started you
that view. you state command you work prompt. I Why I So that of dont
wish great... made for ok you also Yabasic need from point ,then can is
not dont of insist excellent prompt.... seed7 like to some for think
dont -small to prompt. command ok... started my be do seed7 is want
windows runing seed7 on on normaly understand this.. must ok this of
from make for changes,ok... me that underdstand console use you this...
concept I seed7 First If you Of
--
(This discussion group is about C, ...)

Wrong. It is only OCCASIONALLY a discussion group
about C; mostly, like most "discussion" groups, it is
off-topic Rorsharch [sic] revelations of the childhood
traumas of the participants...
Ian Collins
2010-12-22 18:53:41 UTC
Permalink
Post by aury
Post by Ian Collins
Post by tm
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Even C++ has gone down that path at last with the redefinition of 'auto'
http://www2.research.att.com/~bs/C++0xFAQ.html#auto
Reply to Thomas....
Then why reply to me?
--
Ian Collins
BGB
2010-12-22 19:30:45 UTC
Permalink
Post by Ian Collins
Post by aury
Post by Ian Collins
Post by tm
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Even C++ has gone down that path at last with the redefinition of 'auto'
http://www2.research.att.com/~bs/C++0xFAQ.html#auto
Reply to Thomas....
Then why reply to me?
all your thread are belong to us...


as for 'auto', yeah, I could almost use 'auto' alongside/in-place-of
'var' in BS2, given both have a vaguely similar role (only presumably
'auto' remains fully statically typed, whereas 'var' represents a
dynamic type which may be subject to type inference).

hmm...
tm
2010-12-22 21:35:41 UTC
Permalink
Post by aury
Post by Ian Collins
Post by tm
No. A typedef changes the semantic. Variable and function
declarations also change the semantic. C connects the syntax (how
to define a variable) with the semantic (which types were defined).
Several languages with hardcoded parsers have such connections.
IMHO syntax and semantic should be clearly separated. E.g.: The
parser should be able to recognize a declaration independend of the
type. This is easy when declarations are introduced with a keyword.
Several language designers have recognized this and therefore many
modern languages introduce declarations with a keyword instead of a
type name.
Even C++ has gone down that path at last with the redefinition of 'auto'
http://www2.research.att.com/~bs/C++0xFAQ.html#auto
--
Ian Collins
Reply to Thomas....
I understand that seed7 must be started from command prompt.
Sorry, the windows release of Seed7 has this restriction.
The windows release can be used without installation.
No installation process, no changes in the registry and
no changes of environment variables. It is intended for
people who want to try out Seed7.

I will think about a way to do an installation.
I am busy with many things now (Christmas, family,
new Year), so it will take some time.
Post by aury
First i dont like this option...
Me to, but it was the best I could release so quickly.
Post by aury
I think that concept of seed7 is great...
Thank you.
Post by aury
So man adapt seed7 for windows not for command prompt....
Please be patient, it might take weeks or months because
of imperial overstretch. :-)


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Rainer Weikusat
2010-12-19 15:33:24 UTC
Permalink
BGB <***@hotmail.com> writes:
[...]
Post by BGB
you misinterpret.
Seed7 has a different syntax than either C or Java from what I have seen...
a different syntax from Java, for example, means that it is not Java,
and hence can't compete directly within Java's domain.
For all practical purposes, it means that people who happened to learn
a single program language in some undergraduate programming course (or
believe to have learnt one :->) and who are really convinced that this
has costed them enough sweat for a lifetime, cannot use it (lest they
change their attitude while still being young enough to do
so). Contrary to a popular myth, 'the syntax' is not what defines a
programming language. The features and the concepts behind it
are. 'Syntax' is just a basically arbitrary, accidental property.
BGB
2010-12-20 04:36:13 UTC
Permalink
Post by Rainer Weikusat
[...]
Post by BGB
you misinterpret.
Seed7 has a different syntax than either C or Java from what I have seen...
a different syntax from Java, for example, means that it is not Java,
and hence can't compete directly within Java's domain.
For all practical purposes, it means that people who happened to learn
a single program language in some undergraduate programming course (or
believe to have learnt one :->) and who are really convinced that this
has costed them enough sweat for a lifetime, cannot use it (lest they
change their attitude while still being young enough to do
so). Contrary to a popular myth, 'the syntax' is not what defines a
programming language. The features and the concepts behind it
are. 'Syntax' is just a basically arbitrary, accidental property.
many programmers can and do only ever learn a single programming language...

as for syntax, it is not necessarily fundamental to what a language "is"
per-se, but it is fundamental to many peoples' perception of what it is,
and also fairly fundamental to the correct operation of copy/paste
(where copy/paste is probably one of the major ways most people write
most software...).

with a larger language, one doesn't dare threaten the correct operation
of the all important copy/paste operation...

this is part of why languages go to such great lengths to avoid
introducing any new syntax or keywords which may risk breaking existing
programs. every keyword is special, and the addition of any new syntax
might make the world collapse around them...


a person defining a new language is not so similarly bound, since
creating a new language frees one from the implied obligation that old
code still work, however, for practical reasons it is still best to show
proper the respects to the all-important copy-paste...


or such...
Rui Maciel
2010-12-20 14:03:47 UTC
Permalink
Post by BGB
many programmers can and do only ever learn a single programming language...
Maybe that's true, maybe many programmers can and only ever learn a
single programming language. Nonetheless, we certainly aren't referring
to professional software developers, or at the very least anyone with an
academic degree which remotely involves writing software in some way or
another. Just to put things in perspective, some civil engineering
degrees include in their curriculum courses that cover two completely
distinct programming languages (i.e., different paradigms, different
syntax, etc..), and civil engineers don't tend to pop up in people's
minds when discussing software development.
Post by BGB
as for syntax, it is not necessarily fundamental to what a language "is"
per-se, but it is fundamental to many peoples' perception of what it is,
and also fairly fundamental to the correct operation of copy/paste
(where copy/paste is probably one of the major ways most people write
most software...).
I have to call bullshit on that one. I seriously doubt that copy/paste
is "one of the major ways most people write most software", unless by
"most people" we are referring to those who never learned how to program
anything in their life. Every programming language employed in a
practical way supports some form of modular programming, which lets the
programmer reuse code by providing a set of libraries and enabling the
programmer to develop his own. So, even considering the need to reuse
code, there is absolutely no need for a competent programmer to rely on
copy/pasting as a fundamental strategy to develop any program.

Adding to that, if someone expects that a random code snippet will work,
even when ignoring the programming language it was written in, then that
person is clearly clueless. I don't believe that people invested in
developing programming languages should target the sort of people that
don't even bother to learn a single programming language, let alone theirs.
Post by BGB
with a larger language, one doesn't dare threaten the correct operation
of the all important copy/paste operation...
That person should simply learn to program. There are no shortcuts, and
every argument about the development of new programming languages that
is based on the extreme incompetence of some programmers simply cannot
held in consideration.


<snip/>


Rui Maciel
Sjouke Burry
2010-12-20 15:51:53 UTC
Permalink
Gentlemen(and ladies), why is seed7 not seen in the

name of this newsgroup?

That would keep away al those programming spammers....
BGB
2010-12-20 18:46:52 UTC
Permalink
Post by Rui Maciel
Post by BGB
many programmers can and do only ever learn a single programming language...
Maybe that's true, maybe many programmers can and only ever learn a
single programming language. Nonetheless, we certainly aren't referring
to professional software developers, or at the very least anyone with an
academic degree which remotely involves writing software in some way or
another. Just to put things in perspective, some civil engineering
degrees include in their curriculum courses that cover two completely
distinct programming languages (i.e., different paradigms, different
syntax, etc..), and civil engineers don't tend to pop up in people's
minds when discussing software development.
possibly, but probably many programmers never learn programming in
college either.

for example, consider how popular Python is, and one can ask:
which colleges have taught Python as the language of choice in their
curriculum?...
what sort of employer would endorse the language as even a good idea?...
...


consider also the levels of software development typical of the
middle-school and high-school crowds, and one can also ask what their
typical programming practices are like, but likely a good portion of the
momentum in open-source land comes from this crowd...

(and those of us in their 20s are the old people by these standards...).
Post by Rui Maciel
Post by BGB
as for syntax, it is not necessarily fundamental to what a language "is"
per-se, but it is fundamental to many peoples' perception of what it is,
and also fairly fundamental to the correct operation of copy/paste
(where copy/paste is probably one of the major ways most people write
most software...).
I have to call bullshit on that one. I seriously doubt that copy/paste
is "one of the major ways most people write most software", unless by
"most people" we are referring to those who never learned how to program
anything in their life. Every programming language employed in a
practical way supports some form of modular programming, which lets the
programmer reuse code by providing a set of libraries and enabling the
programmer to develop his own. So, even considering the need to reuse
code, there is absolutely no need for a competent programmer to rely on
copy/pasting as a fundamental strategy to develop any program.
well, it is a question of where one wants to place the bar...

do we really need a language which only "the elite" have much chance of
understanding, or is it better to have a language where the barrier to
entry is very low but "the elite" can still get some actual work done?...


probably a lot of the work getting done in programmer land consists of:
finding a similar-enough code fragment on the internet;
copy-pasting into whatever program they are working on;
beating on it until it works and does what they want from it;
calling it done...


similarly, trial and error is probably one of the more common ways to
get software implemented and working as well.


also, a programmer with a largish codebase at their disposal may also
make heavy use of copy-pasting from their existing code to address new
problems which come up and need to be addressed.
Post by Rui Maciel
Adding to that, if someone expects that a random code snippet will work,
even when ignoring the programming language it was written in, then that
person is clearly clueless. I don't believe that people invested in
developing programming languages should target the sort of people that
don't even bother to learn a single programming language, let alone theirs.
code is fluid, really, and why should one create arbitrary borders?...
also, why should anyone need to learn anything new, when they don't have
to?...


anyways, inter-language copy-paste is sometimes useful even for
programmers who know what they are doing.

for example, taking a big pile of code and entirely rewriting it to work
in the new language is painful, and copy/pasting it from one programming
language to another, using find/replace where appropriate, and then
fixing up any compiler errors, is often a route of less effort.

economizing time and effort is also a goal of programming languages.
Post by Rui Maciel
Post by BGB
with a larger language, one doesn't dare threaten the correct operation
of the all important copy/paste operation...
That person should simply learn to program. There are no shortcuts, and
every argument about the development of new programming languages that
is based on the extreme incompetence of some programmers simply cannot
held in consideration.
I am not trying to be condescending here, I just don't believe "the
majority" are really up to this level, and most that are will still tend
to follow the path of least effort, wherever this is.

so, trying to place something near the stream is the best way to gather
some water, and everyone goes away happy...
Leo Davidson
2010-12-17 09:08:54 UTC
Permalink
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.

Imagine if everyone did this? We'd be reading nothing but change logs
and discussions about compiling and installing people's projects.

Newsgroups about Win32 programming and UNIX programming are not the
place for those discussions. Maybe comp.lang.misc and comp.programming
are broad enough for it (I don't know TBH) but certainly not the Win32
and UNIX groups.

The Seed7 messages are nothing but spam. I cannot believe people are
defending a spammer. (And just because a handful of people are
interested in them doesn't stop them being spam. You think e-mail
spammers would bother doing what they do if they didn't hook a few
people that way?)

Some of the Seed7 messages seem unlikely to be of interest even to
most Seed7 users. Is a message announcing trivial changes, like
slightly improved documentation, for a language almost nobody uses
really of interest to the entire UNIX and Win32 development
communities? No. Hell no. HTF can anyone defend that?

If someone has something worthwhile then by all means mention it once
or twice, and talk about it as much as y'all want in places where it
is on-topic. Buy some advertising if you want to publicise the product
in random places. Beyond that, if it's any good, people will find out
about it through word of mouth like every other project on the planet.
Kenny McCormack
2010-12-17 12:05:34 UTC
Permalink
Post by Leo Davidson
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.
blah, blah, blah.
--
"The anti-regulation business ethos is based on the charmingly naive notion
that people will not do unspeakable things for money." - Dana Carpender

Quoted by Paul Ciszek (pciszek at panix dot com). But what I want to know
is why is this diet/low-carb food author doing making pithy political/economic
statements?

Nevertheless, the above quote is dead-on, because, the thing is - business
in one breath tells us they don't need to be regulated (which is to say:
that they can morally self-regulate), then in the next breath tells us that
corporations are amoral entities which have no obligations to anyone except
their officers and shareholders, then in the next breath they tell us they
don't need to be regulated (that they can morally self-regulate) ...
Stefan Kuhr
2011-01-04 08:35:29 UTC
Permalink
Leo,
Post by Leo Davidson
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.
You are absolutely right. The Seed SPAM here is intolerable.
--
S
James Harris
2011-01-04 09:33:27 UTC
Permalink
Post by Stefan Kuhr
Post by Leo Davidson
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.
You are absolutely right. The Seed SPAM here is intolerable.
It depends where you mean by "here." You have posted to
comp.unix.programmer, comp.lang.misc, comp.programming, and comp.os.ms-
windows.programmer.win32.

I wouldn't call announcements about a programming language update
"spam" - at least for comp.lang.misc and comp.programming and maybe
the others too. There *is* plenty of spam about watches, clothing, er,
what else? ... In fact, without checking I'm not at all sure what the
spam messages are about. I think we tend to tune them out after a
while. But I'm sure they are not about the topic of the Usenet
newsgroup.

James
Stefan Kuhr
2011-01-04 09:46:55 UTC
Permalink
James,
Post by James Harris
Post by Stefan Kuhr
Post by Leo Davidson
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.
You are absolutely right. The Seed SPAM here is intolerable.
It depends where you mean by "here." You have posted to
comp.unix.programmer, comp.lang.misc, comp.programming, and comp.os.ms-
windows.programmer.win32.
I wouldn't call announcements about a programming language update
"spam" - at least for comp.lang.misc and comp.programming and maybe
the others too. There *is* plenty of spam about watches, clothing, er,
what else? ... In fact, without checking I'm not at all sure what the
spam messages are about. I think we tend to tune them out after a
while. But I'm sure they are not about the topic of the Usenet
newsgroup.
James
You are right, my apologies, I did the same mistake as tm, crossposting
to irrelevant newsgroups. May I refine my statement? The Seed SPAM is
intolerable in the comp.os.ms-windows.programmer.win32 newsgroup. At
least this is my opinion. I have no opinion about the other newsgroups
(comp.unix.programmer, comp.lang.misc, comp.programming) since I do not
visit them regularly. tm is flooding this newsgroup
(comp.os.ms-windows.programmer.win32) with his seed advertisement
postings as if his tiny little niche language was the most important
invention since sliced bread. He has been asked numerous times to stop
this but that doesn't bother him at all. I am a developer as well, I do
develop important things every day as well. Lots of other people on this
newsgroup (comp.os.ms-windows.programmer.win32) also do so. But the only
person who consistently feels the need to tell others about his
programming and developing advances is tm. If everybody did this, this
newsgroup (comp.os.ms-windows.programmer.win32) would become useless.
--
S
maxTri
2011-01-04 11:38:43 UTC
Permalink
... tm is flooding this newsgroup
(comp.os.ms-windows.programmer.win32) ...
The last 30 threads in comp.os.ms-windows.programmer.win32
contain about 10 threads with sexual content (pictures, videos,
enlargement, ...) and 4 threads with commercial content (make
money fast, buy something cheap, ...). So almost half of the threads
consist of content most people consider spam. 14 threads can be
considerd computer related / on topic, so you probably complain
about the remaining two threads, which are also computer and
programming related, but not on topic. The thread you are writing
in was started by Kenny McCormack at 15. December. In this
thread Kenny McCormack asked tm to explain some things, so I
think that it is ok when tm answers them and follows the discussion.
The people discussing in this thread should have excluded
comp.os.ms-windows.programmer.win32, comp.unix.programmer
and maybe other groups as well, but nobody did. I don't know why
no group was excluded, but you cannot blame tm alone for that.
BTW: Only one thread in comp.os.ms-windows.programmer.win32
(of the last 30 threads) was started by tm. This was at 5. December,
approx one month ago. But this thread seems dead since some
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?

Max
jon
2011-01-04 12:27:26 UTC
Permalink
Post by maxTri
BTW: Only one thread in comp.os.ms-windows.programmer.win32
(of the last 30 threads) was started by tm. This was at 5. December,
approx one month ago. But this thread seems dead since some
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?
tm posts announcements about updates to his stupid language in the
win32 group at least once a month, and no one here gives a shit.
maxTri
2011-01-04 13:39:37 UTC
Permalink
Post by maxTri
BTW: Only one thread in comp.os.ms-windows.programmer.win32
(of the last 30 threads) was started by tm. This was at 5. December,
approx one month ago. But this thread seems dead since some
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?
tm posts announcements about updates to his stupid language ...
Where do you get the impression that his language is stupid?
AFAIK there are some features in Seed7 which are not present
in other languages. Being annoyed or not annoyed by something
is unrelated to the quality of the thing.

Max
Leo Davidson
2011-01-04 12:36:08 UTC
Permalink
Post by maxTri
The last 30 threads in comp.os.ms-windows.programmer.win32
contain about 10 threads with sexual content (pictures, videos,
enlargement, ...) and 4 threads with commercial content (make
money fast, buy something cheap, ...). So almost half of the threads
[...]
Post by maxTri
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?
I guess it's because people hoped the person who kept telling the Unix
and Win32 newsgroups about minor Seed7 releases, and then the group of
people who seemed intent on discussing Seed7 and other language
projects ad nauseum to an audience who had asked them not to
repeatedly, and for months, were "real people" who would listen to
reason and consider others, rather than actual spammers who did not
care about anything but promoting their products.

If you are saying these people are the same as any other spammers and
messages discussing Seed7 etc. are no better than ones about sexual
spam then that is hardly supporting the case.

If I'm being stung by mosquitos I'll still probably complain if a guy
stabs me with a pin for no valid reason.

If a septic tank has just exploded above me and soaked me in human
waste I may well still not appreciate some guy pissing down my back.

I'm assuming the comp.lang.misc / comp.programming people don't mind
me leaving those groups crossposted on this as a) I don't know which
groups the offenders are subscribed to and b) all we've heard from
members of those groups is either spam or inexplicably vociferous
support of spam; so if this is off-topic to them then they presumably
see that as a bonus.
tm
2011-01-04 13:17:57 UTC
Permalink
Post by Leo Davidson
Post by maxTri
The last 30 threads in comp.os.ms-windows.programmer.win32
contain about 10 threads with sexual content (pictures, videos,
enlargement, ...) and 4 threads with commercial content (make
money fast, buy something cheap, ...). So almost half of the threads
[...]
Post by maxTri
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?
I guess it's because people hoped the person who kept telling the Unix
and Win32 newsgroups about minor Seed7 releases, and then the group of
people who seemed intent on discussing Seed7 and other language
projects ad nauseum to an audience who had asked them not to
repeatedly, and for months, were "real people" who would listen to
reason and consider others, rather than actual spammers who did not
care about anything but promoting their products.
Maybe you noticed. The last two releases were not announced in
comp.unix.programmer and comp.os.ms-windows.programmer.win32.
I stopped sending announcements to allow discussions about ideas
instead of flamewars about announcements.

I have ideas, such as many other people. Unlike many others
I have implemented my ideas. I give my programs away for free,
licensed under the GPL, so they are usable for many people.

Discussing ideas is hard.
Looking at a homepage and giving feedback is harder.
Ignoring ideas and discussing about spam is much easier.

Did you notice that this tread was started with a request to explain
some of my ideas.

Maybe you reward getting no announcement messages by giving me
feedback about my project.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Stefan Kuhr
2011-01-04 13:45:20 UTC
Permalink
Thomas,
<snip>
Maybe you noticed. The last two releases were not announced in
comp.unix.programmer and comp.os.ms-windows.programmer.win32.
I stopped sending announcements to allow discussions about ideas
instead of flamewars about announcements.
Good decision. Thank you.
--
S
Stefan Kuhr
2011-01-04 13:30:46 UTC
Permalink
Hello Max,
Post by maxTri
... tm is flooding this newsgroup
(comp.os.ms-windows.programmer.win32) ...
The last 30 threads in comp.os.ms-windows.programmer.win32
contain about 10 threads with sexual content (pictures, videos,
enlargement, ...) and 4 threads with commercial content (make
money fast, buy something cheap, ...).
Interesting. I do not see them. I am not saying they don't exist, but
they don't appear on my news host if I look at
comp.os.ms-windows.programmer.win32.
Post by maxTri
BTW: Only one thread in comp.os.ms-windows.programmer.win32
(of the last 30 threads) was started by tm. This was at 5. December,
approx one month ago. But this thread seems dead since some
time. So you complain that someone started a thread one month
ago and you do not complain about the 14 other threads that most
people would consider spam?
My news host shows announcements from tm for new seed releases in
comp.os.ms-windows.programmer.win32 on 4/4/2010, 4/18/2010, 5/2/2010,
5/16/2010, 6/6/2010, 6/20/2010, 7/4/2010, 8/1/2010, 8/22/2010, 9/5/2010,
9/19/2010, 10/10/2010, 10/24/2010, 11/07/2010, 11/21/2010 and 12/05/2010.

A few more messages below this one of yours, tm writes that he stopped
announcing new versions in comp.os.ms-windows.programmer.win32, which is
good. So for me this is now acceptable. I didn't know he decided to stop
this, but I am happy he did.
--
S
James Harris
2011-01-04 15:51:53 UTC
Permalink
...
Post by Stefan Kuhr
Post by James Harris
Post by Stefan Kuhr
Post by Leo Davidson
Post by Kenny McCormack
Well, the (obvious) problem with a forum is that you don't get
any new people.
Spamming people with information about the product is not the right
solution to that problem.
You are absolutely right. The Seed SPAM here is intolerable.
It depends where you mean by "here." You have posted to
comp.unix.programmer, comp.lang.misc, comp.programming, and comp.os.ms-
windows.programmer.win32.
I wouldn't call announcements about a programming language update
"spam" - at least for comp.lang.misc and comp.programming and maybe
the others too. There *is* plenty of spam about watches, clothing, er,
what else? ... In fact, without checking I'm not at all sure what the
spam messages are about. I think we tend to tune them out after a
while. But I'm sure they are not about the topic of the Usenet
newsgroup.
You are right, my apologies, I did the same mistake as tm, crossposting
to irrelevant newsgroups. May I refine my statement? The Seed SPAM is
intolerable in the comp.os.ms-windows.programmer.win32 newsgroup. At
least this is my opinion. I have no opinion about the other newsgroups
(comp.unix.programmer, comp.lang.misc, comp.programming) since I do not
visit them regularly. tm is flooding this newsgroup
(comp.os.ms-windows.programmer.win32) with his seed advertisement
postings as if his tiny little niche language was the most important
invention since sliced bread. He has been asked numerous times to stop
this but that doesn't bother him at all. I am a developer as well, I do
develop important things every day as well. Lots of other people on this
newsgroup (comp.os.ms-windows.programmer.win32) also do so. But the only
person who consistently feels the need to tell others about his
programming and developing advances is tm. If everybody did this, this
newsgroup (comp.os.ms-windows.programmer.win32) would become useless.
A very gracious reply - I'm sorry about picking you up on the term.
I've seen a number of other people call Thomas's announcements spam.
And I think you were right to crosspost as you were replying to a
crossposted message.

I also feel you are right to the extent that, in some groups at least,
the announcements could be considered advertising - though of a far
lower irrelevance than most of what I would regard as spam.

James

Rui Maciel
2010-12-16 16:18:58 UTC
Permalink
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?


Rui Maciel
aury
2010-12-16 16:54:48 UTC
Permalink
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
What kind of question is that?
All well know programming languages have forums ...
aury
2010-12-16 16:57:48 UTC
Permalink
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
What kind of question is that?
All well know programming languages have forums ...
Richard Harter
2010-12-16 19:51:36 UTC
Permalink
Post by aury
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
What kind of question is that?
All well know programming languages have forums ...
Newsgroups are forums.
Kenny McCormack
2010-12-16 20:46:55 UTC
Permalink
Post by Richard Harter
Post by aury
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
What kind of question is that?
All well know programming languages have forums ...
Newsgroups are forums.
Note: comp.lang.c added - they love this kind of shit over there!

I think it was perfectly clear in context what distinction the poster
was making - everyone knows what he meant by a "forum" as opposed
to^W^Wcontrasted with a newsgroup.
--
One of the best lines I've heard lately:

Obama could cure cancer tomorrow, and the Republicans would be
complaining that he had ruined the pharmaceutical business.

(Heard on Stephanie Miller = but the sad thing is that there is an awful lot
of direct truth in it. We've constructed an economy in which eliminating
cancer would be a horrible disaster. There are many other such examples.)
Eric Sosman
2010-12-16 22:28:39 UTC
Permalink
Post by aury
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
We can rule out "what."
--
Eric Sosman
***@ieee-dot-org.invalid
Rui Maciel
2010-12-16 23:57:34 UTC
Permalink
Post by aury
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
I hope you can understand that you haven't left much room for doubt.


Rui Maciel
Jongware
2010-12-17 13:01:36 UTC
Permalink
Post by aury
Post by Rui Maciel
Post by aury
I will ask Thomas....
Why you simply still dont have normal forum community then this
freaking groups.
Forum is far better place for posting then groups.
It appears that you believe that a newsgroup and "forum" are somehow two
entirely different things. Is that true?
Rui Maciel
It appears that you maby think that im stupid or what.?
What kind of question is that?
All well know programming languages have forums ...
Are they well known because they have forums of their own, or do they
have forums because they are well known?

(The difference is important.)

[Jw]
loozadroog
2010-12-16 22:21:59 UTC
Permalink
[snip]
Post by tm
Post by Kenny McCormack
Could I write the kind of programs that I
write in WinBatch with it?
I don't know WinBatch (I just googled for it and found some
marketing info), but I guess that it allows batch processing under
Windows. I often use Seed7 instead of batch (or shell) scripts.
Seed7 contains functions to manipulate files and directories. Such
Seed7 scripts are portable and have other advantages, but Windows
specific things cannot be done.
I used to love WinBatch when I was a student programmer in
the Registrar's Office. I made a simple tool for interfacing with
the TN3270 client by just shoving keystrokes at the window.
The user-interface was two columns of text fields, the left one
for data that changed with each record, the right for all the little
keystrokes to move to the next field and the data that was the
same for the set of records. After wasting a lazy day on this,
I could do the data-entry stuff several times faster that the old
pros. (In this office working faster meant more time to get
paid playing on the internet.) Hmm, I wonder if they're hiring?
gremnebulin
2010-12-25 22:55:24 UTC
Permalink
--
Seed7 Homepage:  http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
If only it had pluggable types too...http://bracha.org/pluggable-
types.pdf
BGB
2010-12-26 06:55:09 UTC
Permalink
Post by gremnebulin
http://bracha.org/pluggable-
types.pdf
interesting...

this seems loosely related to what I am dealing with in some of my own
language efforts, where I guess my stuff is existing in a space partway
between traditional static and dynamic typesystems...

I prefer though to use manifest types, even when one needs to declare
that the type of something is flexible, since it helps keep things
nailed down (OTOH, static typed languages using type inference are
something I am not as fond of).

keeping Lisp-like list features around is also useful, even if seemingly
out of place in C-family languages...


the capable list handling was one of the few things I liked from Lisp
and Scheme (although I also liked lambdas, eval, macros, ...). however,
each poses additional problems in C-style languages...


I have not personally found any ideal solution to the matter of data
serialization though.

IME, I tend to prefer mostly using higher-level serializations,
typically XML or S-Expression based (and personally have a distaste for
"schemas and data-binding" as to me this seems to be an abuse of
XML...). SOAP is not something I even want to go near (as IMO this
combined the bad parts of XML with the bad parts of data-serialization,
creating a combined result with little of the appeal of either...).

well, that and the tendency of many XML-based standards to throw lots of
XML namespaces into everything, rather than using them more sparingly
and defining the structure more in terms of the specific tags and
attributes.


granted, I tend to use mostly structural data serialization, which is
not really a good mix for any kind of data-binding I have seen.

however, direct language support for structural data representations and
pattern matching/composition/decomposition is almost unknown in
mainstream languages (and it is debatable the ideal syntax to represent it).

between S-Expression and XML based matching, there are tradeoffs either way:
S-Expressions allow being much more exact about matching;
however, XML is a little more fluid, costing exactness but giving a
little more flexibility.

between them, it is a little harder to efficiently support XML.

typically, I have ended up using XML more though, mostly as for many of
my uses the flexibility has been a little better of a tradeoff than
performance or exactness has been.

however, neither system has completely won out though.


interesting, I have almost never stored data JSON-style (as trees of
prototype/dictionary/... objects) even though my stuff is capable of
doing so.

I suspect it may be partly that there is are real established
conventions (which I am aware of) for doing structural matching and
composition/decomposition on these types of object.


or such...
Gordon Burditt
2010-12-17 06:37:57 UTC
Permalink
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
aury
2010-12-17 07:28:40 UTC
Permalink
Post by Gordon Burditt
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
I hope you can understand that you are just ignorant asshole.
Every normal man knows that forum is SMF,vBulletin,phpBB etc...
About what kind of crap you talking here...
Kenny McCormack
2010-12-17 12:06:28 UTC
Permalink
Post by aury
Post by Gordon Burditt
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
I hope you can understand that you are just ignorant asshole.
Every normal man knows that forum is SMF,vBulletin,phpBB etc...
About what kind of crap you talking here...
He does. That's why he's on Usenet. A forum for folks like him.
--
One of the best lines I've heard lately:

Obama could cure cancer tomorrow, and the Republicans would be
complaining that he had ruined the pharmaceutical business.

(Heard on Stephanie Miller = but the sad thing is that there is an awful lot
of direct truth in it. We've constructed an economy in which eliminating
cancer would be a horrible disaster. There are many other such examples.)
tm
2010-12-17 08:26:05 UTC
Permalink
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement.  I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..."  I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize?  It seems like there are at least
3 announcements per week, going back many, many years.  Shouldn't
it be at Seed107.9 by now?  My impression:  if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
Your impression is wrong.
The changes in the releases (2 per month) concentrate at:

- Improving documentation
- Adding and improving example programs
- Improving performance
- Fixing bugs
- Adding and improving programs which check the Seed7 functionality
- Adding functionality

I try to keep programming interfaces stable.
The added functionality in 2010 includes:

- Compiled programs can now be debugged at source level
- Mac OS X is supported
- Support for 64-bit systems
- Portable bitmap fonts
- Improved support for closures in the compiler
- And many smaller improvements which would make the list too long

When you still fear that a release changes in an incompatible
way, you can compile your Seed7 programs to executables. This
way a change in the interpreter has no influence on your production
program (With Java I had such problems: Different JVM versions
were a cause of bugs).

Take a look at the homepage or download Seed7 to get the
information first-hand.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
aury
2010-12-17 08:52:48 UTC
Permalink
Post by tm
Post by Gordon Burditt
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
Your impression is wrong.
- Improving documentation
- Adding and improving example programs
- Improving performance
- Fixing bugs
- Adding and improving programs which check the Seed7 functionality
- Adding functionality
I try to keep programming interfaces stable.
- Compiled programs can now be debugged at source level
- Mac OS X is supported
- Support for 64-bit systems
- Portable bitmap fonts
- Improved support for closures in the compiler
- And many smaller improvements which would make the list too long
When you still fear that a release changes in an incompatible
way, you can compile your Seed7 programs to executables. This
way a change in the interpreter has no influence on your production
program (With Java I had such problems: Different JVM versions
were a cause of bugs).
Take a look at the homepage or download Seed7 to get the
information first-hand.
Greetings Thomas Mertes
--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Thomas it is not stable...
When i use seed7 with my scintilla editor i discover this:
Open exemple work fine.
Run example work fine first time.
Then i just made small change in example almost nothing.
Editor as i say have autosave which means that when user change
something in
code before run file is autosaved.
Then after that this same example dont run(simply dont respond).
Belive i try all examples.
So something is very wrong.
I use same editor with same autosave function in many other
interpreters
and compilers and work fine but with seed7 this is not a case?
i hope you can figured what is wrong..
by the way do you try editor?
tm
2010-12-17 09:42:39 UTC
Permalink
Post by aury
Post by Gordon Burditt
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
Thomas it is not stable...
Gordon spoke about a stable implementation of the api and you are
talking about an error. This are two different things.
Post by aury
Open exemple work fine.
Run example work fine first time.
Then i just made small change in example almost nothing.
Editor as i say have autosave which means that when user change
something in
code before run file is autosaved.
In such a case it is important to find out where the error happens.
It may be that Seed7 caused this bug or it may be that scintilla
caused this bug. To examine this I suggest the following.

Use a command window, change to the seed7/prg directory and start
the program chk_all.sd7 with:

hi chk_all

Are there any error messages or does it write (after some
interpreter information):

compiling the compiler - okay
chkint - okay
chkstr - okay
chkprc - okay
chkbig - okay
chkbool - okay
chkset - okay
chkexc - okay

When this works okay we can check what happens when you modify a
file. Use a command window, change to the seed7/prg directory and
start the program hello.sd7 with:

hi hello

It should write some things and then:

hello world

Now use the Seed7 compiler:

hi comp hello

and start hello.exe with:

hello

It should also write

hello world

Now use the Explorer go to the seed7\prg directory and start
Notepad with the file hello.sd7 .
Change the line

writeln("hello world");

to

writeln("hello there");

Go back to the command window and start the program hello.sd7
again with

hi hello

If it writes (after some information)

hello there

the interpreter can execute a changed program.
Now start the Seed7 compiler with

hi comp hello

and execute the file hello.exe again with

hello

When it writes

hello there

the compiler is also able to compile a changed program.
If this is the case the error must be somewere else.

I can only speculate about the reasons:

- Maybe scintilla autosaves to a different directory.
The binary Seed7 release does only work when the files are not
moved to different directories.

- Maybe scintilla changes the current working directory before
the Seed7 compiler or interpreter is called. The binary Seed7
release works with relative paths. So the files are only found
when you call the interpreter (or compiler) from the seed7/prg
directory.

- Maybe scintilla renames the file.
Can you verify (for example with the explorer) that the size
and the time of the file changes when scintilla does its autosave.


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
aury
2010-12-21 15:41:26 UTC
Permalink
Post by tm
Post by aury
Post by Gordon Burditt
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
Thomas it is not stable...
Gordon spoke about a stable implementation of the api and you are
talking about an error. This are two different things.
Post by aury
Open exemple work fine.
Run example work fine first time.
Then i just made small change in example almost nothing.
Editor as i say have autosave which means that when user change
something in
code before run file is autosaved.
In such a case it is important to find out where the error happens.
It may be that Seed7 caused this bug or it may be that scintilla
caused this bug. To examine this I suggest the following.
Use a command window, change to the seed7/prg directory and start
hi chk_all
Are there any error messages or does it write (after some
compiling the compiler - okay
chkint - okay
chkstr - okay
chkprc - okay
chkbig - okay
chkbool - okay
chkset - okay
chkexc - okay
When this works okay we can check what happens when you modify a
file. Use a command window, change to the seed7/prg directory and
hi hello
hello world
hi comp hello
hello
It should also write
hello world
Now use the Explorer go to the seed7\prg directory and start
Notepad with the file hello.sd7 .
Change the line
writeln("hello world");
to
writeln("hello there");
Go back to the command window and start the program hello.sd7
again with
hi hello
If it writes (after some information)
hello there
the interpreter can execute a changed program.
Now start the Seed7 compiler with
hi comp hello
and execute the file hello.exe again with
hello
When it writes
hello there
the compiler is also able to compile a changed program.
If this is the case the error must be somewere else.
- Maybe scintilla autosaves to a different directory.
The binary Seed7 release does only work when the files are not
moved to different directories.
- Maybe scintilla changes the current working directory before
the Seed7 compiler or interpreter is called. The binary Seed7
release works with relative paths. So the files are only found
when you call the interpreter (or compiler) from the seed7/prg
directory.
- Maybe scintilla renames the file.
Can you verify (for example with the explorer) that the size
and the time of the file changes when scintilla does its autosave.
Greetings Thomas Mertes
--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
It is not problem in scintilla ,as i say before i use same editor with
many
other interpreters and work fine.
Problem is in seed7,i recive weird errors like missing
signal...etc..etc.
You must defenatly work on windows release if you wish of course...
tm
2010-12-21 19:24:42 UTC
Permalink
Post by aury
Post by tm
It may be that Seed7 caused this bug or it may be that scintilla
caused this bug. To examine this I suggest the following.
Use a command window, change to the seed7/prg directory and start
hi chk_all
Are there any error messages or does it write (after some
compiling the compiler - okay
chkint - okay
chkstr - okay
chkprc - okay
chkbig - okay
chkbool - okay
chkset - okay
chkexc - okay
When this works okay we can check what happens when you modify a
file. Use a command window, change to the seed7/prg directory and
hi hello
hello world
hi comp hello
hello
It should also write
hello world
Now use the Explorer go to the seed7\prg directory and start
Notepad with the file hello.sd7 .
Change the line
writeln("hello world");
to
writeln("hello there");
Go back to the command window and start the program hello.sd7
again with
hi hello
If it writes (after some information)
hello there
the interpreter can execute a changed program.
Now start the Seed7 compiler with
hi comp hello
and execute the file hello.exe again with
hello
When it writes
hello there
the compiler is also able to compile a changed program.
If this is the case the error must be somewere else.
- Maybe scintilla autosaves to a different directory.
The binary Seed7 release does only work when the files are not
moved to different directories.
- Maybe scintilla changes the current working directory before
the Seed7 compiler or interpreter is called. The binary Seed7
release works with relative paths. So the files are only found
when you call the interpreter (or compiler) from the seed7/prg
directory.
- Maybe scintilla renames the file.
Can you verify (for example with the explorer) that the size
and the time of the file changes when scintilla does its autosave.
It is not problem in scintilla ,as i say before i use same editor with
many
other interpreters and work fine.
And Seed7 works correctly on many Windows computers.
I told you that the binary release should ONLY be used
from a command window.

Scintilla and Seed7 can both be correct and problems can
happen when they work together.

I guess that you refuse to do the suggested tests...
This makes it really hard to find the cause of the problem.
Post by aury
Problem is in seed7,i recive weird errors like missing
signal...etc..etc.
Interesting, since Seed7 does NOT contain the text
"missing signal".

I will try to find out what is going on with the help
of others. This may take some time, sorry.

BTW: Is the source code of your scintilla editor available?


Greetings Thomas Mertes

--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.
Gordon Burditt
2010-12-17 06:37:57 UTC
Permalink
Post by Kenny McCormack
Now, I've been reading the "Seed7" announcements in this (and some other)
group(s) for quite a while now, always with some amusement. I can
understand the position taken by that one troll poster on the "other"
thread - something about "Now that the 4 people in the world who care
about Seed7 have found each other..." I said I can "understand" it (the
troll's position), but that doesn't mean I endorse it.
When is Seed7 going to stabilize? It seems like there are at least
3 announcements per week, going back many, many years. Shouldn't
it be at Seed107.9 by now? My impression: if it changes that fast,
it's not mature enough to actually put up the effort to write
something in it.
Loading...