I’m looking for a programming language that can help me build a desktop application for Windows, macOS, and Linux that’s not big but not small either. Additionally, I’d like to be able to build a website with the same language. I’ve been considering Ruby, Python, Golang and JavaScript. Python seems to be mainly used for scripting and ai, so I’m not sure if it’s the best fit. JavaScript has a lot of negative opinions surrounding it, while Ruby sounds interesting. Can anyone recommend a language that meets my requirements?
Python can do both scripts and desktop apps no problems
But use type annotations everywhere and make sure your code is always checker clean (with checkin or PR CI hooks). And don’t turn off any lint checks through laziness, e.g. docstring checks. Even for a solo dev it’s always worth having everything typed, checker clean, and docstrings (even if they only effectively say “this thing really is what you’d assume”). It all saves time and effort in the long and even medium term.
I’ve worked on serious large scale Python projects and frankly it’s been very pleasant and productive, but only with the above conditions.
Yeah but be prepared for a lot of pain if you want to distribute your app. Python tooling/infra is abysmal.
True
But what about websites.
I’m writing a web app on Python + HTMX. Little to none javascript involved.
If it’s something simple you can check out FastAPI. For more complicated projects involving data models and relationships, check out Django.
May I recommend Litestar over FastApi?
I’ve heard a word or two about htmx. How’s that? Any recommendations on how to start a first project with it?
So many websites out there are built on Django, Flask, etc. (YouTube must have spent a decade using Python, Instagram, Threads etc. all use Python and optimize as they need).
It can do back ends with django and flask but the only choice for front ends is javascript or something like htmx
WASM
Yeah, I’ve been using Rust with Leptos and Axum for a website I’ve been working on. Works great tbh. I don’t even know JS.