Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)CJ
Posts
0
Comments
238
Joined
2 yr. ago

  • I'll take your word for it about the missing Haskell features, but with regards to inheritance, they deliberate chose to avoid it. They use an alternative model to achieve the same goals inheritance is meant for, but without the issues that come along with it. Their approach is basically a more advanced version of how Go uses interfaces to define shared behaviour.

  • Yeah, and on top of that, our galaxy is probably yeeting through space at some ungodly velocities around the Local Group.

    And on top of that, the Local Group is getting yeeted away from all the other galactic clusters in the (observable) universe at a speed that is, technically, faster than light.

  • It should be low-level like assembly and high-level like BASIC, functional, object-oriented, and have weird stuff like traits, concepts, and alien features from Haskell. It must also have both the pointers/references of C++, and the borrow checker of Rust.

    Hang on a minute. Isn't that literally just Rust CrabLang?

  • What might compel someone to make their own language? Typically, it's because they've already used some languages, they have some criticisms of it, and they want to make something better. Now, for languages that are open source and accept community contributions, that is an option. However, keep in mind that each language already has its own core maintainer(s), with their own vision, as well as a whole host of other people who would have to be convinced that your idea (whatever improvements you want to make) are a good fit for that language. Some changes can be quite drastic — especially if you want to improve one language by bringing in insights you've gained from another. So sometimes (not often, but sometimes), people say "fuck it, I'm making my own language, with blackjack and hookers".

    The thing about software is, it's really easy to play around with. You don't need a workshop or parts or anything — you just need your computer. As a result, you have lots of people tinkering with stuff like making their own programming language, whether just for fun or more tangible reasons.

    And we've been in this cycle of innovation for decades, and it's how we've gone from punch cards to assembly to C, Python, and all the rest.

    But surely we don't need any more innovation? Like, why can't we all just use one language for everything?

    Well, it's true that nowadays we have a whole bunch of general-purpose, multi-paradigm languages. The analogy people like to make is "different tools in your toolbox". But, to clarify, it's not that some of them are hammers and others are screwdrivers; they're all the same kind of tool ("programming language"), so really it's more like different screwdrivers, of varying sizes, with differently shaped bits at the end.

    With screwdrivers it's clear why you might need one with this shape or the other: Otherwise it won't match the screw. With languages it's a little more subtle. You see, when you design a language (or almost anything else, ever), you inevitably make a series of tradeoffs. Is the language compiled or interpreted? Does it have a garbage collector? Does it have a strict type system? How does it do async? Does it support higher-order functions? There's a million questions, and you're going to get a different combination of answers for each language you look at. And that's before you evaluate other (potentially very important) things, like "is this language fast enough for my use case?", or "I need a library for such-and-such, has someone made that in this language?", or "does the language have a solid enough community that I can reliably search the answers to my questions?".

    Technically, any of the major languages — Java, Python, C, C++, C#, Javascript, Go, Rust, etc etc — can be used as a one-size-fits-all, universal programming language. There's actually a joke "law" that goes "anything that can be written in Javascript, will eventually be written in Javascript". But they each have their own unique combination of design decisions, so in practice different ones will be easier to use for this kind of project or that (one major factor is third-party libraries, like python's numpy or pandas, that may not have equivalents in other languages). There are also situations where, for a given platform, you have to use that language. For example, for Microsoft's .NET stuff, I don't think you can substitute C# for something like C++ (someone correct me if I'm wrong please). Or, if you're working on the Linux kernel, you're pretty much just using C (I think they were considering adopting Rust, but idk if that's still going on). And, of course, the dominant programming language for anything on the internet is Javascript (although WebAssembly has made huge strides in roughly the past decade, so you can actually use other languages as long as they can compile to WebAssembly).

    Finally, to wrap up this already way-too-long comment: a lot of these languages are very similar to one another. They're all procedural, heavily inspired by C, and for the most part they're either compiled and statically typed, or they're interpreted and dynamically typed. There are also a whole bunch of other languages, called functional languages, that are designed based on entirely different principles (the principles aren't harder to learn than what you're having to learn for Java, they're just different). But if you are looking for a universal programming language, I think the closest you're going to get is either C, C++, Python, or Javascript. In addition to Java, I would strongly recommend you learn C and Python (C has a bit more of a learning curve, but it teaches you a lot about memory management, which is a lesson you'll carry with you to any other language).

  • When choosing a linux distribution, or a desktop environment, or anything really, go with the most popular, "basic" choice. Because when you have questions and need to search them, the more popular stuff is 99.9% guaranteed to have the answer to your question on some stackoverflow thread, or the arch linux wiki (which is pretty much just "the linux wiki" at this point).

    Also, asking AI for help (chatgpt, phind, etc) is surprisingly helpful.

  • You're absolutely right. They aren't cartoon villains. They're just rational agents acting according to very real incentives.

    But where do these incentives come from? They depend on how we choose to organize our economy, what guiding principles our society follows in how to distribute resources, and harvest them from the environment.

    They come from our economic system. Our economic system is capitalism. And one of the many, many problems with capitalism — it can't fucking slow down. In the eternal chase for greater and greater quarterly profits, there is no room for questions such as "is this growth sustainable?" or "I know there's demand for this, but should we really be doing it?".

    Pointing fingers and blaming people is, indeed, a waste of energy. Instead, it may be better to ask: "How do we incentivise people to change their behaviour? What about our system needs to change? And how quickly can we dismantle the oil companies?"

  • Apple does collect a whole bunch of data from its devices' users. Pretty much everything you do on it, actually. All of the "turn of data collection" stuff they've been advertising only affects third-party data collection — not their own.

  • I think most of the games I've liked lately are roguelites:

    • Bullets Per Minute
    • Crypt of the Necrodancer
    • Plate-Up
    • Unrailed
    • Noita
    • Risk of Rain 2

    Except for BPM and Noita, I'd recommend all of these as excellent coop games too. Here are some summary descriptions:

    Bullets Per Minute:

    • first-person shooter dungeon crawler
    • awesome rock soundtrack with a steady beat
    • you have to shoot and reload to the beat

    Crypt of the Necrodancer:

    • top-down 2d dungeon crawler
    • awesome electronic soundtrack with a steady beat
    • you have to attack and move to the beat

    Plate-Up:

    • top-down 2d restaurant simulator
    • episodic gameplay where you try to make it through each day by serving all the customers
    • if any customer waits too long, you lose
    • inevitably gets crazy and chaotic, perfect for a group looking for a hectic and fun coop game
    • devs are based, epic mod support

    Unrailed:

    • top-down 2d rail-building game
    • you start with a train on some rails, with the train always moving forwards
    • the goal is to continuously place rails in front of the train, otherwise you lose
    • similarly to Plate-Up, incredibly chaotic energy, very fun

    Noita:

    • sidescrolling dungeon crawler
    • you mainly fight enemies using wands and spells
    • wands on their own are effectively just a bunch of empty slots; you decide which spells go in them, and in which order
    • this may or may not eventually result in game-breaking shenanigans (or suicidal shenanigans, or both)
    • there are a lot of secrets. like the entire game is a meta-narrative about discovering secrets. question everything.
    • you will die. a lot. half the time to your own wacky spells. this is the way.

    Risk of Rain 2:

    • 3rd-person shooter (some characters are primarily melee, but whatever lol)
    • game consists of a series of stages, each of which has a bunch of enemies, a bunch of chests with items, and a boss you must defeat to progress further
    • also has a decent few secrets. Not on the same scale as Noita, but still quite a few