> Seed7 allows user defined statements (see
here:http://seed7.sourceforge.net/examples/declstat.htm),
> therefore closures are present.>
Okay i think i see.
Is the implementation for this efficient?
I have to say that i've fallen in love with the closes that Eiffel
offers (called agent) as they
are very easy to use (because they are closues by value - copying the
value and not using a variable
name) and extremely efficient.
> d) garbage collector
>
> When data is managed in a stack like manner a garbage
> collector is not necessary. Whenever possible Seed7 trys
> to manage data in a stack like manner. For data where this
> is not possible the user currently must manage the data.
> In the future I plan to use reference counting or a
> garbage colector.
Well maybe it's because i'm only doing programming for 25 years
now, but how can you do some real serious stuff on the stack?
I never get far with this in real life projects. Well maybe with
numerics but thats not my domain.
Not having an (at least optional) GC is a total knock out
criteria for me.
> g) good runtime as i need to use it for money not for toy project
>
> Seed7 has a runtime library which covers various areas.
> There are still several missing areas and there is always
> room for improvement. What areas you need to be covered by
> a runtime library?
Not to many, just the typical stuff of containers, regexpr, a few
hashs
like md5, sockets, maybe curl and sqlite3 bindings.
I have my own GUI library wrapper anyway that needs to be ****ted.
But there is more. It must be multithreading safe,
complete UTF-8 based and if asserts going wrong i need a good
stacktrace with complete dump of all local variables. Thats one
of the main reasons why i stick with SmallEiffel and still get
productivity and a stable system. So it means at least a part of a
****table debugger needs to be build in in the runtime/generated code.
How are you doing debugging?
> I have programs with 10000s of lines. I have not tested
> programs with 1MLOC but at least the hi interpreter (which
> is used to interpret and compile Seed7 programs) processes
> approx. 200000 lines per second.
Does it process the whole system or does it compile into separate
translation units. Does it sup****t multicores (compiles on a
quad core almost 4 times faster then on a single core)?
This is also im****tant. If i'm doing my own language and i'm 95%
sure now i will do it, my system would keep AST's of the whole system
in memory and work like a server not a command line tool. I don't care
if compilation takes 16GB of memory anymore. As long as it can do a
compile-edit-run cycle in two or three seconds.
With the current Eiffel system i always have to care about this.
And using the fastest possible CPU (a overclocked 3,8 GHz Core2Duo) i
still have a 15sec turn around. Useable but not nice.
> IMHO Seed7 is capable
> of doing big programs, but I have not tested it.
> BTW. Do you really have Q programs with 1MLOC?
No my eiffel program is about 350.000 lines. But i coded a lot with
keeping in mind that using many cl***** slows down the compilation and
might raise other problems (max. limit of data types) etc.
But if i move now i would like to never get into this problem again.
And thats why 1MLoc is a save number.
> i) able to use multithreading
>
> Currently Seed7 does not sup****t multithreading, but
> since it is compiled and C has sup****t for multithreading
> (through libraries) I guess that a multithreading
> extension for Seed7 is possible.
Well you normally need to design a few more parts
(sockets for example) to play nicely together.
Don't underestimate this.
> Seed7 has also some features you did not mention:
> - User defined statements and operators
Well i don't like operator overloading. This is surely
a good thing when doing numerics but in my case i just
never had the need for it.
User defined statements might also be nice for custom languages,
same here for me. It's a nice feature but i wouldn't put it
high on my daily priority list - to academic. I love Eiffel
because it is a RISC language. And i never got into this
metaprogramming stuff. Whenever i did something like this and
came back to the code 3 years later i had to much problems.
> - Abstract data types
What does it mean if you have an object oriented language?
This term is a 70th's year buzz words, long forgotten because
the concept is so simple and used everywhere now.
> - Multiple dispatch
Okay, +1 for this.
> - ****tability between opeating systems
My Eiffel system compiles to
NetBSD,FreeBSD,OpenBSD,MacOSX,Win32,Win64,
Linux,Solaris and i have testet it on Sparc, PPC, i386, amd64 and PA-
RISC.
(still waiting to get a cheap SGI irix and Alpha machine on EBay to
test a
few more unix systems)
Many others and almost all of the languages that compile to c are
doing the
same. So this is something i would expect anyway.


|