|
@@ -0,0 +1,59 @@
|
|
|
+# Description (My bad opinionated opinions :D)
|
|
|
+
|
|
|
+## 0. Reason - Why? - Because!
|
|
|
+
|
|
|
+Because I need a more user-friendly tool, that's why!
|
|
|
+
|
|
|
+#### 0.1. less f*ck brains with parentheses
|
|
|
+
|
|
|
+todo (about problems in languages with C-like syntax)
|
|
|
+
|
|
|
+#### 0.2. less f*ck brains with whitespaces
|
|
|
+
|
|
|
+todo (about problems in languages with indentation syntax - Off-side rule - YAML, Python, Nim)
|
|
|
+
|
|
|
+#### 0.3. less key presses
|
|
|
+Erlang is most laconic high-level language that I ever seen -
|
|
|
+laconic and expressive, very simple (not overcomplicated) and is easy to learn.
|
|
|
+
|
|
|
+#### 0.4. target language
|
|
|
+The only imperfection of Erlang is .. VM -
|
|
|
+so if you write any crypto miner in Erlang - it won't impress with its performance...
|
|
|
+(Erlang is very well designed for IO - network, parallel tasks etc,
|
|
|
+but can show not better results for "number crusher" - CPU heavy tasks)
|
|
|
+.
|
|
|
+so as target needs system programming language that compiles to native single executable binary file.
|
|
|
+.
|
|
|
+Haskell was rejected cause - sometimes headache with io-pure-impure functions, non-optional GC, too many ways to make the same (so read other people's code may be too nontrivial);
|
|
|
+Go was rejected cause - that was not more easy that Haskell for me (Haskell was more easy in use), also non-optional GC;
|
|
|
+Rust was rejected cause - overcomplicated style of writing code - you do not thinking about your app architecture but have f*ck your brains with compiler - borrow checker etc (also is not so "memory safe" in reality as in advertising);
|
|
|
+C++ was rejected cause - super overcomplicated, not need so headache ;) ;
|
|
|
+C was rejected cause - I think for 2025 year C is a bit outdated (not so user friendly as we want), also don't want to write function declarations twice, and other cucumbers;
|
|
|
+OCaml was rejected cause - has not user friendly compiler (non-informative errors messages), non-optional GC;
|
|
|
+Nim was rejected cause - too less performance comparing to Dlang and C;
|
|
|
+Zig was rejected cause - unstabled - in active development phase (will check - compare in future);
|
|
|
+Jai was rejected cause - still in closed beta (will check - compare in future);
|
|
|
+Forth, Common Lisp, Red, Ada, Lua, Mojo and Swift - have not been considered for this task;
|
|
|
+D - Dlang - compiles to native single executable binary file, rich of features - not less possibilities than in C++, has optional GC, stable - mature etc.
|
|
|
+so Dlang has been selected as target language, and compiler v1 will be in Dlang (v2 will be seft-hosted).
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+## 1. Naming
|
|
|
+
|
|
|
+Compiler `dopp` for `doppelganger`
|
|
|
+(also `dopp` command),
|
|
|
+
|
|
|
+Language `DEF-lang` for
|
|
|
+`[based on] Dlang [and influenced by / inspiration from] Erlang [new] Fine language`.
|
|
|
+
|
|
|
+File extension - `*.de` (because `de` is more short than `def`).
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 2. Syntax and Ideas
|
|
|
+todo
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|