Eko: New Programming language write entirely in D (Feedback welcome)
Danol
mail at danol.cz
Sat Aug 22 11:10:36 UTC 2026
Okay, did a brief look on the language - I am sorry, but I don't
have energy to do something deeper, I'm drained enough from doing
code reviews in my job :D
First, it's hard for me to make an opinion on the language,
because the examples are rather limited.
But from what I've seen, I've generated a feedback below. Please
keep in mind that even at my job, I am labeled as "the mean one",
so don't feel discouraged by my words. Trying to write a custom
programming language is something every programmer should go
through, and it's a wonderful journey.
1. `write("Hello" + "\s0" + "World\n");` Here you're
concatenating strings, but I haven't seen any explanation what
that does under the hood. Is the language GCd? Are the strings
dynamically allocated?
1. "s0 is a escape for space" why? I don't think I've seen this
syntax in any language. And why do we even need to escape a space?
1. I am very confused about the code block/scope syntax. On one
hand, I can see standard C++ `{}` at the function level, on other
hand, I see Python-like `if :` on the conditions level, but then
I also see `end;` followed by `else` that is not followed by
`end` (what are the rules here?). That feels quite inconsistent -
pick one scoping system and use it everywhere.
1. (minor) You're also inconsistent in the naming standards. For
functions, I've seen camelCase `main` and `getInput`, PascalCase
`Printer`, plus I think I saw you requiring underscores somewhere
as well on the beginning of the function.
1. You're using `strcmp` function in your examples, which is one
of the most C things ever :D For new languages, I would recommend
avoiding it - it returns 0 if the strings equal, which is
something one can easily forget and make a mistake in.
1. The `-v:` prefix for variables... In my programming
experience, I actually prefer to not to have to care whether
something is a variable or a function. It has often happened to
me that I needed to turn some variable into a function at some
point during development - at that point, having to rewrite every
usage of such symbol to make it compile again is tedious,
generates diffs, and is grounds for merge confilicts and such. In
this regard, I find the D's UFCS very neat for example - you just
turn the variable into a function, and the rest of the code just
keeps working without a hitch. The "-v:" prefix goes against
that, plus the combination of letters you've picked is rather
finger-bending to type.
1. Also I've randomly opened a file:
https://github.com/ekolang/eko/blob/main/src/source/app.d From
what I've seen there, I'd recommend you utilizing libraries more
for the "standard" things - parsing arguments is something that
is plenty standardized and has libraries in basically every
programming language, for example
https://code.dlang.org/packages/argparse
More information about the Digitalmars-d
mailing list