• 0 Posts
  • 39 Comments
Joined 1 year ago
cake
Cake day: July 9th, 2023

help-circle
  • It is pretty neat. They’ve made a lot of really interesting design decisions that make for a pretty unique language.

    One of its main selling points is how it guarantees memory safety without using a garbage collector. That, plus the fact that it does a shit-ton of compile-time optimizations, actually makes it pretty fast. Like, 80%-90% as fast as C (which is much faster than all the other high-level languages like Java, Go, etc, partly because they do in fact use garbage collectors).

    If you want to check it out, I recommend this playlist as a solid intro.













  • 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.



  • Their proposal is that, when you visit a website using WEI, it doesn’t let you see it right away. Instead, it first asks a third party if you’re “legit”, as opposed to maybe a bot or something.

    The problem is, it would be really tricky to tell if you’re “legit”, because people get very, very tricky and clever with their bots (not to mention things like content farms, which aren’t even bots, they’re real humans, just doing the same job as a bot would). So, in order to try to do their jobs at all, these kind of third parties would have to try to find out a whole bunch of stuff about you.

    Now, websites already try to do that, but for now the arms race is actually on our side; the end user has more or less full control over what code a website can run on their browser (which is how extensions like u-block and privacy badger work).

    But if the end user could just block data collection, the third-party is back to square one. How can they possibly verify (“attest”) that you aren’t sus, if you’re preventing all attempts at collecting data about yourself, or your device / operating system / browser / etc?

    The answer is, they can’t. So, to do a proper attestation, they have to have a whole bunch of information about you. And if they can’t, they logically have no way of knowing if you’re a bot. And if that’s the case, when the third-party reports that back to the website you’re trying to visit, they’ll assume you’re a bot, and block you. Obviously.

    That’s pretty much my understanding of the situation. In order to actually implement this proposal, it would require unprecedented invasive measures for data collection; and for people who try to block it, they might just end up being classified as “bots” and basically frozen out of major parts of the internet. Especially because, when you consider how people can essentially just use whatever hardware and software they want, it would be in these big companies’ interests to restrict consumer choice to only the hardware and software they deem acceptable. Basically, it’s a conflict of interest, especially because the one trying to push this on everyone is Google themselves.

    Now, Google obviously denies all that. They assure us it won’t be used for invasive data collection, that people will be able to opt out without losing access to websites, that there won’t be any discrimination against anyone’s personal choice of browser/OS/device/etc.

    But it’s bullshit. They’re lying. It’s that shrimple.


  • What they should do — what we should force all corporations to do, and governments for that matter — is to respect the fundamental human right to privacy. And in the meantime, they should stop getting in people’s way when it comes to repairing their devices at the repair shop of their own choosing, and getting in people’s way when they want to get literally any software on their device not expressly approved by Apple.

    The choice isn’t “either they do what they do now, or they just let everyone collect data”. Big tech corporations like Apple, Google, and all the rest have, from a privacy perspective, been fucking us up the ass for years and years now. Apple’s entire “we care about your privacy” thing was, aside from a big PR success, pretty much just a giant middle finger to Facebook, and its other data collecting competitors. Fuck Apple, fuck Facebook, fuck Google, fuck them all.