Beeflang - open source performance-oriented compiled programming language
Basile B.
b2.temp at gmx.com
Thu Jan 9 16:58:16 UTC 2020
On Thursday, 9 January 2020 at 12:14:53 UTC, Gregor Mückl wrote:
> On Thursday, 9 January 2020 at 11:59:42 UTC, IGotD- wrote:
>> ... then the weird, it has a PREPROCESSOR that is even less
>> capable than C. That's a very weird design decision.
>
> There's quite a bit of weirdness in Beef that has been copied
> over from C#. The preprocessor is one example. It is pretty
> much as capable as the one in C#. There it exists mostly to
> enable conditional compilation.
>
> One other feature that seems to be inspired a bit by D is how
> the scope keyword forces objects to be allocated on stacks. It
> can also limit their lifetime to named blocks instead of the
> entire function.
Also `defer { }` is like `scope (exit) { }`.
But I doubt the author is inspired by D **at all**.
1. the pre-processor. no trace of any affiliation to D there
(`version()`, `static if`
etc.)
2. attributes. no trace of any affiliation to D there either (@
+ introspection using
__traits)
3. syntax for template declaration. It does not even propose to
fix the big C++ error. D
fixes it at least
4. `public` `public` `public` `public` `public` like in JAVA.
Any influence of D here
would have be to follow the principle of least astonishment.
Now there are things I didn't like, i.e 'personally'.
1. sparse documentation. no global EBNF, no doc section for the
declaration.
2. the project source tree. hard to find the compiler. it's
hidden in IDEHelper ?
3. no linux binaries provided. Because the doc doesn't specify
very well the things so I
wanted to quick test if out of order declarations are
supported, mutually dependent
namespaces, aliases, etc. because this is something that
tells much if a language is
powerful or not.
4. A conservative (CastTo)exp. I think that casts are important
enough to make them well
distinctguishable like D `cast`.
5. `repeat {} while ()` and `do {}` lacks of orthogonality. `do
{} while (false);` could
have been used instead, saving `repeat`. This new statement
a very few value added
but I understand that it's tempting to invent small things
like that when creating a
language.
A few good points however
1. `??` and `?.` operators. D failed to get those.
2. sane `switch` with implicit `break` and explicit
`fallthrough`.
More information about the Digitalmars-d
mailing list