• 2 Posts
  • 8 Comments
Joined 3 years ago
cake
Cake day: October 24th, 2021

help-circle
  • A bit more generic answer not fixed to Rust.

    Python is an interpreted language, C# is compiled to intermediate language which is executed by runtime (.NET or Mono). In contrast, Rust is compiled directly to machine code and therefore it is more complicated language (although it’s fun). I would recommend you to start learning C++ or even C first because much is needed to be understood about how your code is translated to the machine code, how memory works, e.g. what is a pointer, what is static allocation, what is dynamic allocation, why dynamically allocated pointers should be freed after use. In Python and C#, all the memory is managed by the Garbage Collector (GC), whereas in C/C++, the user should free memory manually. Moreover, Rust takes a lot of design from C/C++, such as automated placement of destructors (C for primitives, C++ for objects), fat pointers (a safer way to use C-style pointers), etc. And keep in mind that Rust is not a fully object-oriented language (i.e. objects cannot inherit objects but can inherit ‘traits’, or ‘interfaces’ in C#). To sum up, in your place, I would install Dev-C++ or some other IDE and start learning down from the lowest level, and only when I’ve understood C and C++ well, then I would jump to Rust.

    Free C resources: https://notabug.org/koz.ross/awesome-c#learning-reference-and-tutorials

    Free C++ resources: https://github.com/fffaraz/awesome-cpp#videos

    Standard library reference: https:/cplusplus.com and https://en.cppreference.com/

    For practice, try to solve some problems from competitive programming archives: https://open.kattis.com/ or https://codeforces.com/problemset They accept all languages.

    TL;DR Begin with C++ first, learn about memory, then start with Rust, your learning curve will go much smoother.






  • IMO, what is good for open-source web solutions, is that, if someone doesn’t like the vanilla frontend, one can write a new community-based frontend as a web, desktop or mobile solution, like Whalebird. It greatly expands user’s choice and it is a good selling point but goes unnoticed.

    Regarding new features, it is a matter of the communitations’ protocols (ActivityPub, etc.) New features should comply with the specification and not introduce platform-specific ‘spin-offs’ as they would threaten the maintainability of the protocol and interoperability between platforms and in the long way ruin the whole fediverse. However, I have not read the specification of ActivityPub and what it can do. Maybe I have to try it first because it looks very promising.