• 1 Post
  • 254 Comments
Joined 1 year ago
cake
Cake day: June 6th, 2023

help-circle

  • There are several issues with native development without a browser layer.

    First of all, native UI toolkits are very different and making a robust cross platform app is pretty much impossible. So, the traditional approach is to use one toolkit, which will be native to one platform, and then let your other users deal with it. For example, GTK apps on Windows and Mac look and feel like shit.

    Another approach is to use a custom cross platform toolkit, which doesn’t use anything native at all. If enough work and thought is put in such application, it can be a very pleasant experience. But often it’s shit for all users.

    The second issue is that it can be quite hard to manage fluid window sizes and to build a proper responsive UI with native toolkits. Some are better at it, some are worse. Native toolkits also tend to punish developers for deep nesting of components making UI development even more painful.

    HTML + CSS solves all that. It’s responsive by design, everyone is used to web apps already, nesting is not a problem at all, etc.




  • I would also like to add some of the higher level features available in most assembly languages.

    1. Memory management. You can define variables, for example, a string one containing “Hello, world!” and the compiler will correctly allocate required memory and you don’t need to know its address while writing the code, you just reference the variable.
    2. Code labels. If you want to do a conditional or unconditional jump, you need to know the address of the code you want to reach. But, obviously, every change you make to your code base will change the memory layout of your binary. Asembly provides code labels. You can think of them like function names.
    3. Assembly allows you to reference 3rd party libraries without knowing exact function entry addresses. You just use function names like you would with C or any other language.

    Modern assembly languages have even more higher level features, like macros support. And some are even hardware agnostic, like intermediate representation assembly language used in LLVM.