3 ms·
> the second group has managed to compile more-and-more of it's langs to JS and WASM The second group is incentivized to do so, because they still have value t
by AprilArcus 5y ago
> the second group has managed to compile more-and-more of it's langs to JS and WASM
The second group is incentivized to do so, because they still have value to bring.
JavaScript 2022 has sucked all the air out of the room in terms of dynamic dispatch, untyped PLs. Compared to Python, Ruby, and Lua, it has better startup time and throughput, and at the end of seven years of pilfering every good idea any of those languages ever had* (and a few bad ones**), it is by now equally or more expressive by every metric. It's also the most popular PL in history, with a variety of maintained and opinionated libraries for every conceivable task.
Given that JavaScript is already the ultimate flavor Objective-Blub, it makes no sense to write a JS-targeting transpiler for your favorite minor flavor of Blub. And since you're already targeting a browser, Lua's embedability and Python's C FFI are no advantages. The only remaining language in this family with interesting features that JavaScript hasn't (and may never) co-opt is Racket, with its powerful hygienic macros.
To a lesser extent, this is also becoming true for the statically typed languages, where TypeScript*** offers a better developer experience than, and has made significant inroads against the faster but similarly expressive SML/OCaml/F#/Bucklescript/Reason/ReScript family (to say nothing of Java!).
On the other hand, the camp of "I prefer to use strong typing and proofs to ensure it does not break at runtime" still has concrete advantages to bring to the world of FE dev, namely:
• Non-GC memory management strategies suitable for latency sensitive applications (C, C++, Rust)
• Static member lookup & method dispatch (C++, Rust)
• SIMD (Rust)
• Higher-kinded types (Haskell, PureScript)
* block scope, destructuring assignment, default parameters, safe navigation, modules, iterators, generators, async/await, template strings, regexp named matches and lookarounds, BigInts
** classes
*** While TypeScript is technically a compile-to-JS language, it is such a thin layer on top of JS that there is essentially no impedance mismatch between TS in an IDE and interactive debugging, which makes it unique within that category.
- cies 5y ago> The second group is incentivized to do so, because they still have value to bring. exactly.
- addaon 5y agoIsn't front end software almost defined by latency sensitivity, though? It seems that after logical correctness, there's nothing more important for user experience than bounded and low latency.
- AprilArcus 5y agoFE can tolerate 10-20 ms of timer slosh, unlike e.g. audio synthesis.
- addaon 5y ago120Hz+ screens are becoming common place. For the first time in decades, this guidance is no longer true -- it's reasonable to design for a frame or so of fixed latency, but to avoid jitter the latency should really be bounded within 8 ms these days.
- fshr 5y ago> 120Hz+ screens are becoming common place. No they aren’t. The market share and purchasing incentive for the mainstream market are single percentage points.