That's just Stockholm Syndrome. Think about it: what more crazy garbage could you add that is useless for the beginner but "will make sense later"?
The answer is: infinitely much. You could have to write each character in strings as separate characters for example. It would be absolute utter madness but it "would make sense later".
As we become more and more acquainted with programming, a lot of what we do why we do it is incoherent nonsense to a beginner, but important nonetheless.
The limit is actually your time and effort. But nobody likes to write optimal assembly by hand, the balance has to be struck somewhere.
But there is nothing important or useful in all that Java garbage. You could write entire programs without classes! That's the class, the static, AND the final keywords.
You can't really escape String[], which imo is fine. It's better than argv/argc in C at least.
I have tried and failed to get any LLM to "tell me if you don't have a solution". There may be a way to prompt it, but I've not discovered it. It will always give you a confident answer.
But the questions I'm interested in cannot be asked until the programmer starts to code. It's not that the task is unclear, but that coding reveals important subtleties.
You're thinking about it like a human programmer. It may or may not find that part tricky. There will be subtleties it will solve without even mentioning and there will be other stuff it fails on miserably. You improve the chances by asking to ask questions. But again - just try it. Try it on exactly the thing you've already described and see how it goes.
Let's think of some hypothetical (close to practical) scenario example. Let's say I need a retrieval of fully-qualified name for a function at point.
In Emacs, I can start prototyping advising function in a scratch buffer changing the behavior of lsp--symbol-information (or related) function. I can try it out right there. I can easily debug, profile, enable and disable this feature without ever having to restart Emacs. Hell, I wouldn't even have to save it — it's all dynamic, all in-place, it's like playing a videogame.
In Neovim, I'd have to create/modify a Lua file. Find the right LSP handler to override. Write the override function. Reload the editor (losing my state), or source the file. There's no easy way to temporarily test without affecting my config. Sure, one can use Fennel for replicating REPL-driven development, but that still be limited compared to Emacs — no advice system; can't easily revert (no advice-remove like stuff); limited introspection; scope issues — need to manage original function references manually; harder discovery — no describe-function like stuff.
In VSCode to get something like that you'd need to create an entire extension project; write typescript/javascript; compile the extension; install it in VSCode; sometime reload VSCode; debug through the extension host; there's no "just try something" way.
Joyride is a game-changer for VSCode — one can use Clojure-based scripting directly, making it almost Emacs-like, yet still — no advising, can't change editor's core internals — they are not exposed to you, there's no true runtime modification of core behaviors.
So no, VSCode and Neovim do not meet the OP's criteria.
Given the negative sentiment around Adobe's cancellation flow, you'd think they'd advertise the fact that you get a 'free year of everything' and 'zero issues'. Seems weird!