From 120b6f2ca00918d62af57d43efbb9a6e5ce05065 Mon Sep 17 00:00:00 2001 From: Glen Whitney Date: Thu, 11 Jul 2024 20:55:38 +0000 Subject: [PATCH] Update Coding environment --- Coding-environment.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Coding-environment.md b/Coding-environment.md index 8225562..9b5bf0e 100644 --- a/Coding-environment.md +++ b/Coding-environment.md @@ -20,25 +20,27 @@ Non-negotiable items: Other items (should be fleshed out, but things like easy lists and dicts, nice comprehension expressions for them, what else?) + -Here let's try to collect various language options, with their pros and cons: +Next let's try to collect various language options, with their pros and cons: ### Civet - + Nicest syntax I've ever used - - Tied to the dreadful TypeScript type system (probably disqualifying) + + + Nicest syntax I've ever used + - - Tied to the dreadful TypeScript type system (probably disqualifying) ### Nim - + Nice rational syntax with lots of features - - 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.) - - 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... + + + 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.) + - - 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... ### Lobster - (Is this worth a more careful comparison with Nim, or is it just too small/fringe?) + * (Is this worth a more careful comparison with Nim, or is it just too small/fringe?) ### Scala, now with significant indentation - (I think targeting the JVM invalidates this?) + * (I think targeting the JVM invalidates this?) ### C++ with our own civet-like syntax mangler - - Big con: we would have to implement this! + - - Big con: we would have to implement this!