Eko: New Programming language write entirely in D (Feedback welcome)
pouya1dev
poyaxc545 at gmail.com
Wed Aug 26 14:57:55 UTC 2026
On Saturday, 22 August 2026 at 11:32:04 UTC, pouya1dev wrote:
> On Saturday, 22 August 2026 at 11:10:36 UTC, Danol wrote:
>> 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
>
> Thank you very much for taking the time to look through Eko,
> especially when you're already drained from code reviews at
> work :D
>
> Honestly, this is exactly the kind of feedback I was hoping
> for. Some of the things you pointed out, especially the
> inconsistency in the scoping syntax, string semantics, and the
> "-v:" prefix, are things I definitely need to think about more
> carefully.
>
> Some of these decisions came from the very early stages of Eko,
> and I can already see that a few of them may not be good
> long-term design choices. I also agree that I should make the
> language's rules more consistent and better documented.
>
> I'll go through your points one by one and think about them
> before making any changes. I really appreciate you being direct
> about the problems instead of just saying that the project
> looks good.
>
> And don't worry about being "the mean one" :D This is exactly
> the kind of criticism that can help me improve Eko.
>
> Thank you again for taking the time to review it!
By the way, I’ve set up a blog where I document the development
of Eko and post daily updates about the changes made to the
project.
https://uxdevp.blogspot.com/
More information about the Digitalmars-d
mailing list