From 592514e17b10ac3625bebee49efcefc0edbc4dd9 Mon Sep 17 00:00:00 2001 From: Glen Whitney Date: Thu, 11 Jul 2024 21:25:14 +0000 Subject: [PATCH] Update Coding environment --- Coding-environment.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Coding-environment.md b/Coding-environment.md index 12d6f80..1b3746a 100644 --- a/Coding-environment.md +++ b/Coding-environment.md @@ -28,11 +28,16 @@ Next let's try to collect various language options, with their pros and cons: + 👍 Nicest syntax I've ever used - ❌ Tied to the dreadful TypeScript type system (probably disqualifying) +### + + 👍 has been very useful for prototyping + - ❌ Littered with "end" keywords, not clear any current good path for building for in browser use + ### Nim + 👍 Nice rational syntax with lots of features + 👍 Compiles to JavaScript or WASM (via either C/C++ > emscripten or a third-party LLVM backend) - - ⇓ Clunky comprehensions (see the examples on the home page) and dicts not first-class with good literal notation. (Oddly, {"a": "b", "c": "d"} appears to be a literal representation for a fixed-length array of pairs of strings. So in particular, the types in each pair have to match, and all pairs must be the same type. But it's hard to find documentation about this, which is somewhat worrisome.) + - ⇓ Clunky comprehensions (see the examples on the home page) and dicts are not in the language, but rather in the library. (Based on one small slightly hard to find section in the manual, {"a": "b", "c": "d"} is a literal representation for a fixed-length array of pairs of strings, apparently in an effort to be agnostic to different possible dict-like implementations. So in particular, the types in each pair have to match, and all pairs must be the same type.) - ⇓ Some odd rigidity, such as indentation for continuing expressions is only allowed in certain special places like after a binary operator or a parenthesis. Araq, the "benevolent overlord" of Nim, definitely displays his opinionated rigidity on the forums. Of course, maybe that's what it takes to see a new language through to success... + - (Bottom line, there will definitely be a number of very unusual idiosyncrasies with nim such as foo_bar being the **same** identifier as foObaR that will at least require getting used to or maybe even working around. But it's not clear that any are showstoppers ### Lobster * (Is this worth a more careful comparison with Nim, or is it just too small/fringe?)