Compilers will produce working output given working input literally 100% of my time in my career. I've never personally found a compiler bug.
Meanwhile AI can't be trusted to give me a recipe for potato soup. That is to say, I would under no circumstances blindly follow the output of an LLM I asked to make soup. While I have, every day of my life, gladly sent all of the compiler output to the CPU without ever checking it.
The compiler metaphor is simply incorrect and people trying to say LLMs compile English into code insult compiler devs and English speakers alike.
I remember the time I spent hours debugging a feature that worked on Solaris and Windows but failed to produce the right results on SGI. Turns out the SGI C++ compiler silently ignored the `throw` keyword! Just didn’t emit an opcode at all! Or maybe it wrote a NOP.
All I’m saying is, compilers aren’t perfect.
I agree about determinism though. And I mitigate that concern by prompting AI assistants to write code that solves a problem, instead of just asking for a new and potentially different answer every time I execute the app.
I really, really, love building stuff for/on the web. When working with founders/clients we'd often start with building the MVP as a PWA, because of how easy it is to iterate and test. (https://untested.sonnet.io/notes/web-and-feedback-loops/)
That said, some reasons off the top of my head in random order:
- seemingly small but UX critical features breaking or not working at all (wake, audio, notifications, scroll breaking).
- most of the users don't know/haven't been taught they can install a site or assume that PWAs are inherently worse
- PWAs are harder to monetise (no super easy way to let the user pay a lifetime licence for the app, customers want super easy, and that's not for me to judge)
- critical, but non-obvious to a non-technical person (and thus difficult to explain) features are unstable or janky on iOS when running standalone/via home screen (example: wiping offline storage every few days).
In some ways things work better than, say 10 years ago, but at the same time there's the *unpredictability*. I really don't want to worry about my app breaking in some impossible to fix way next year. Not, when the app is meant to pay my rent.
Performance was rarely an issue, discounting experiments like running image recognition inside a "service worker" in JS, on iPhone 7 for an AR game I was messing with. That was in 2016 (before Pokemon Go came out and kind... of dumbed down the idea or AR).
I really wish Apple had kept investing more fully in this space. So many of the pieces are there, but like you said, there are still assorted blockers.
It’s clear they still care about this space to a certain extent, since they have been fixing bugs and making improvements (screen-lock APIs and offline support, for example). But it could be so much better.