• 2 Posts
  • 47 Comments
Joined 5 months ago
cake
Cake day: December 16th, 2024

help-circle

  • Also not having used Java for decades I’ll not comment on the state of their abstractions, but

    IMO at the extreme being unable to shed the past means negatively hindering progress. I think modern Java versions show a budding shift in mentality

    both reminds me of similar complaints against C++ (and with a sizeable amount of users wishing for an ABI break), and how weird it is to get both complaints like that and over the fact that so many shops are on ancient versions. They’ve moved slowly, but it doesn’t seem like anything was slow enough for a lot of shops, which indicates they likely could’ve moved faster without changing which versions users would be at today.


  • This sounds like the antithesis to parse, don’t validate. It is possible to use just maps and strings and get a “stringly typed” program, but there’ a bunch of downsides to it too:

    • your typechecker can’t help you if you used the wrong dict[str, Any]; most of us want the typechecker to help us write correct code
    • there’s no public/private
    • everything you .get from a map is Optional; you need to be constantly checking and handling that rather than being able to have methods that return T, or even direct field access
    • you can derive or hand-implement a bunch of operations on (data)classes that you can’t on maps: Comparison, ordering, hashing so you can use the blob of information as a map key, …

    Ultimately while Hickey has a good point in the distinction between easy and simple, his ideals don’t seem particularly aligned with the programming world at large: For one thing, Clojure remains pretty small, but even other dynamic programming languages like Javascript and Python have been moving towards typechecking through Typescript and typing in Python.

    Doing a json.load into some dict[str, Any] is simple, but actually programming like that isn’t easy. Apparently a lot of programmers find value in doing the extra work to get some stdlib or pydantic dataclasses. Most of us get a confidence boost from using parsed data, and feel uneasy shuffling around stuff that’s just strings and maps.





  • Isn’t that sort of just the cost of doing business in C? It’s a sparse language, so it falls to the programmer to cobble together more.

    I do also think the concrete example of emails should be taken as a stand-in. Errors like swapping a parameter for an email application is likely not very harmful and detected early given the volume of email that exists. But in other, less fault-tolerant applications it becomes a lot more valuable.









  • Yeah, the article comes off as needing so much context that the article itself is sus. Like

    Hejlsberg stated the obvious when saying that TS isn’t the fastest language. Although it can laughably run Doom at 0.0000009645 fps.

    … which is referencing an implementation of Doom in the TS type system. It’s a funny idea, but an arbitrary reader who doesn’t know about that and doesn’t bother clicking through will get a very wrong impression.

    The reimplementation (which they’ve done partially automated; Go apparently lets them do a very simple translation while Rust or C# would require more work to fit) should be a boon for TS devs, but not noticeable for those who just run stuff that happens to be written in TS.

    Would be kinda interesting to see the effect if stuff targeted deno rather than node, though.


  • One rather obvious reason is that society has a lot of greybeards in general. The baby boomer generation was named that for a reason, and people have been living longer on average. Lots of countries are struggling with the demographic effects. There’s no reason to expect that tech or something even more specific like FOSS would be exempt.

    Another aspect here is that FOSS is still kind of new in society. There’s just more people who have had the chance to age into FOSS greybeards than when those greybeards were young. (And they were thus likely to a lesser degree blocked by entrenched greybeards when they were getting started.)





  • I’ve moved on from vim to neovim, and I think I’ll continue using something in that family in the future. It’s a pretty stable experience overall, but the inclusion of LSPs and tree-sitter have been good improvements too.

    Ultimately editors are tools, similar to keyboards, os-es, screens, chairs, shoes and so on. There are some objective quality differences between a well-constructed tool and some slapdash nonsense, and there are a huge amount of subjective quality differences. What suits me may not suit you, and vice versa.

    It’s generally good to try out some new (to you) stuff and see if you like it. If you do, great; if you don’t, well, now you know. I think my worst experience was with Acme (or Wily? can’t remember), during a phase where I experimented with Plan 9 stuff. Ultimately very not my cup of tea, but apparently Rob Pike (who made it) and some other gophers still enjoy it? Which is good for them, just like it’s good for me that I can choose not to use it. It’s just personal tastes, and I still think it’s good that I gave it a go.

    The debate over holding down modifier keys vs modes is also a part of the Emacs vs vi debate from many decades ago. There might be some statistics for what works best for the most people now, but again, use what suits you. And try some new stuff when you get curious, it’s generally good for you.