this post was submitted on 06 Jul 2023
28 points (100.0% liked)

Programming

17499 readers
16 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

Title. Also I'm not talking about any specific frameworks, I am more interested in learning about different concepts. Eg. State management etc. Or MVVM/MVC/MVP/MVI

From my brief exploration I've found out that "Retained mode" GUIs is what I need to look into more as well.

I've tried making guis before, was only able to wrap my head around tkinter - when I tried web stuff it just didn't click no matter how hard I tried.

top 3 comments
sorted by: hot top controversial new old
[–] spartanatreyu@programming.dev 8 points 1 year ago (1 children)

GUIs are much more complicated than they seem at first.

My recommendation is to learn and get familiar with a specific framework first, before branching out to other frameworks and learning how they feel. Then and only then would I start learning about the concepts behind those frameworks.

About the web stuff:

When it comes to GUIs, web is a crazy constrained chaos.

It runs everywhere, is backwards compatible by necessity, and yet is so fast paced that it experiments with new ways of doing things, makes mistakes, and tries to find ways around those mistakes.

It's fast pace leads to it creating things that other GUIs end up looking to for hard lessons and inspiration.

Web is easy to click, but only if you learn it properly. It has decades of old features that you shouldn't be looking at as a beginner.

Beginners should only be looking at learning (and only moving to each new step once they fully understand the previous steps):

  • selectors
  • block model
  • display modes (block, inline, inline-block)
  • position
  • flex-box

You can make any site you want with those basic concepts.

The other stuff:

If you're really really set on learning some of the concepts behind GUIs, you can have a look at the rust space which has a whole bunch of incomplete GUI libraries trying to solve problems. Creating a proper GUI framework for Rust isn't as simple as other languages. Rust's borrow checker means that devs can't just reuse existing linked lists and graph based solutions. Raph Linus is one of those devs who is involved in that space, and they're all experimenting and looking at each other trying to figure out which approaches will work best for them. You can see some of those notes here:

[–] screx@lemmy.world 2 points 1 year ago

Thanks I'll read up on these. Yup know about Raph :) and I primarily write rust so I've been following the space closely.

[–] rmam@programming.dev 5 points 1 year ago

On the topic of GUI programming, I feel it's of critical importance to understand a couple of basic concepts that have a fundamental impact on software architecture:

  • Application life cycle, and
  • Application states.

Both boil down to one fundamental mental model that is of critical importance for developing a GUI applications: a GUI app is a big state machine, which covers not only changes in the application life cycle (i.e. startup, shutdown by the user, shutdown by the OS, minimize a window, maximize it, move it to the system tray, online/offline,etc) but also in the application state (i.e., login, launch long running task, user opens dialog box, user changes settings, etc)