• 0 Posts
  • 33 Comments
Joined 3 years ago
cake
Cake day: June 18th, 2023

help-circle




  • Just in to say, I know exactly what you mean, and I love the subject, to the point I did a PhD in pure maths. The whole “golden ratio” in nature, and a lot of other adjacent stuff, leaves me indifferent at best, and really irritates me at worst. It’s often cheapo mathy wank to feel clever when you talk to your friends. There is nothing wrong in being interested in it, but I’d hope someone into maths would eventually go beyond that.

    I also am not a fan of several very useful branches of maths, like calculus, but it’s a tool you need to have. Some people love it though, and I scratch my head at it as much as you do, if not more probably, because I have had to use it so much.

    There are probably as many reasons to find maths beautiful (or ugly) as there are people, but for me it boiled down to the fact that:

    • with relatively few assumptions, we can logically and iteratively build an abstract machinery that is consistent (well, with caveats…);
    • a lot of these abstract theories provide good enough frameworks for other sciences to base theories on and be successful at explaining the world with these (I could talk about the fifth axiom of Euclid, non-euclidian geometries, and how we eventually arrive to something that is a formal setting for the theory of relativity for hours, it’s fascinating);
    • it provided me with abstract objects that I could reason about, explore in different ways, and with different points of view, until something clicked and I got to understand the objects better;
    • some proofs, even of quite complex theorems, have such a simple and elegant initial idea (when others can feel quite forced), that it is hard not to marvel at how things fall neatly into place (sometimes…).

    So to me maths provided a setting in which things worked and made sense, and you could essentially just enjoy an endless supply of puzzles in that setting, whose solutions you could formally prove.

    Unlike a lot of maths nerds, I don’t necessarily think that that’s totally limited to maths though. I think most people do their abstract thinking and puzzle solving on whatever it is that they find beautiful. Or I hope they do, it’s a wonderful feeling. The formal aspect of proofs though (and I don’t necessarily mean computations), that’s the unique thing that can set it apart.


  • That’s the sort of indictment of C++ I like to hear. It’s not just me then. I sometimes feel like I’m taking crazy pills with some colleagues who are super enthusiastic about it still.

    But again, I’m stupid, I know I’m stupid, and C++ has way too many features and convoluted behaviours which are hard for me to remember and reason about. It often feels like it makes me think more about the language problems than the actual problem I’m supposed to work on. It may say more about me than the language, but I do feel validated with comments like this.



  • This but going the “other direction” for me.

    Learning maths has mostly consisted of a repetition of me thinking for a brief moment “yay! I know how to differentiate functions”, only to discover later a more general/different setting in which it was clear that no, I did not, in fact, know how to differentiate functions.


  • Thanks for the detailed answer. Preaching to the choir.

    The existence of the concept of ownership in languages like C++ is why I threw “moderately” in there. I agree depending on what you take that to mean, it may or may not do some heavy lifting.

    For the rest, I’d divide it into hard facts (compiler messages are absolutely undeniable, in any circumstance) and things that can definitely be true depending on your personal use cases. I’m with you on this: for the vast vast majority of tasks commonly understood as software engineering, memory safety is a concern, and a lot, if not all, of your points, are valid.

    I must humbly insist that it does not fit my needs, in the sense that memory safety is of no concern to me, and that the restrictions that a compiler-enforced approach imposes make me less productive, and, subjectively, also less enjoyable because causing more friction.

    That being said, you may also not consider what I’m currently doing to be software engineering, and that’s totally fine. Then we’d agree entirely.

    EDIT: also, there are very few languages less productive and beginner-friendly than C++ in my opinion. The proverbial bar is in hell. But you are talking to an unreasonable C++ hater.


  • What? You need to make a function to make a loop? That can’t be right???

    Ah no, there is a misunderstanding. You can write C-loops, of course, they just could involve more work under the hood because in order to enforce memory safety, there needs to be some form of bounds checking that does not happen in C. Caveat: I don’t know whether that’s always true, and what the subtleties are. Maybe I’m wrong about that even, but what is true is that what I am about to say, you will encounter in Rust codebases.

    By function composition I meant in the mathematical sense. So, this example explains the gist of it. You may need to throw in a lambda function in there to actually do the job, yeah. I don’t know what the compiler actually reduces that to though.

    It’s just the more functional approach that you can also see with Haskell for example. I find it harder to parse, but that may be lack of training rather than intrinsic difficult.

    EDIT: pasted the wrong link to something totally irrelevant, fixed now


  • Ah, a fellow C coder. Never did do assembly with chips older than x86_64 basically. The only old school stuff I touched was writing an interpreter for the CHIP-8. I tried writing some CHIP-8 too, but coming from more recent paradigms, it seemed quite unwieldy to me.

    I like python for quick and dirty stuff, I don’t like python for being interpreted and it being not obvious what happens under the hood, memory wise, at a glance.

    Seeing as you do C I’ll say this. The one thing I really did not enjoy, subjectively, with Rust, is that writing “C-style loops” comes with a performance penalty because there are bound checks happening, so the idiomatic version of a loop in Rust usually involves iterators and function composition.

    I am stupid. C-loops are easy for me to understand. More sophisticated stuff is hard for my little brain. I’d rather be trusted with my memory access, and be reminded of my stupidity when comes the inevitable segfault. Keeps you humble.


  • Enjoy! I don’t know what you used to seriously program on but I am willing to be that the ownership paradigm that it enforces is going to feel at least moderately new to you, unless you forced yourself to code that way anyways.

    Plus, as long as you’re doing silly little home projects, the compiler errors are the absolute best I’ve ever seen. Literally just learn basic syntax, try it out, and when it does not compile, the compiler not only tells you why but also what it thinks you’re trying to do and how to fix.

    Absolute gem of a learning tool.


  • No, Rust is to make you feel like you haven’t programmed seriously in 20 years when you first pick it up, even though you are actively doing it.

    Before the angry rust “mob” comes to get me: this is a joke. I tried Rust out of genuine curiosity, cobbled together a silly little thing, and quite liked it. The borrow checker made me feel like a total beginner again, in some aspects, and it was great to get that feeling again.

    Ultimately it does not fit my needs, but there are a few features I am pretty envious of. I can totally see why it’s getting such a following, and I hope it keeps growing.







  • I mean to be fair, I am making a conscious effort to stay open minded when I give advice to people, but I also personally would avoid snaps (and Flatpak, but for different reasons) altogether.

    But this is more me being opinionated and strongly disagreeing with canonical practices. I don’t mind sacrificing some of the convenience because of that, but wouldn’t push it on anyone.

    All this to say, I don’t know the reasons why people tell you to avoid snaps, but I can imagine at least a dozen that would be valid opinions from technically minded open source people, so I would not jump to conclusions.

    The snap thing has spanned a whole drama since the beginning so there’s a heavy context behind you might not be aware of. Or maybe you are and don’t care that’s totally fine too.