Hopefully soon the Arduino pro ide gets to a more functional state.
As that is just basically VSCODE with a Arduino skin.
I wonder why it take so long, the auto complete is not finished (when they could just use the one provided by vscode).
IIRC, the Arduino Pro IDE is based on Eclipse Theia, which is an open-source VSCode alternative. The problem with VSCode is that it's not really open-source. It's built on open-source and large parts of the source code are available, but the binaries distributed by Microsoft are not open-source.
Microsoft's own extensions, such as the C/C++ extension are not actually open-source, and their licenses do not allow you to use them in anything but the official (proprietary) Microsoft releases of VSCode.
While I understand Arduino's decision to go for an open-source alternative, an official, well-supported VSCode extension would probably have been less time consuming, and useful to a larger percentage of Arduino users. Especially since they market the Pro IDE towards experienced users, I don't think creating a new IDE that copies the (terrible) user interface of the old IDE was necessary.
I generally dislike Microsoft, but VSCode is a great product, and they have some very smart people in their C++ team, so I think an official Arduino VSCode extension that nicely interfaces with the existing C++ language support, debugger, git integration etc. of VSCode would have been a better alternative than yet another IDE.
I disagree that Arduino is a good IDE for beginners, at least in what respect to the editor. The lacking of complex features can have some advantages for a beginner, but in my opinion things like autocompletion, error marking, method navigation or parameter description are a must for any kind of user.
I agree 100%.
The instant feedback you get from syntax highlighting and error squiggles is invaluable when learning a new language. Autocompletion is amazing for productivity, it exposes you to functions and classes you otherwise wouldn't have known existed, and “hover for documentation” saves you a lot of time going back and forth to online documentation (which goes first, the source or the destination of memcpy?). Simple “quick fix” actions also go a long way (e.g. “You tried to include this header but you don't have the library installed, do you wish to install it?”).
The Arduino IDE gives no feedback whatsoever until you hit compile, and its syntax highlighting is completely oblivious to any parsing context, which can be very confusing to beginners.
One of the worst things about the Arduino IDE is in my opinion the compiler output. When there's an error in your code, all you get is the raw, monochrome compiler output (with sometimes a single-line “summary” by the IDE), and you have to scroll up to the top yourself to see the actual error, not just the other errors caused by the initial error. If you enable warnings (as you should), it's even worse, because all warnings it might find in third-party libraries end up in the same output. Combine this with the poor error descriptions of the ancient compilers they sometimes use, and you get something that's completely unintelligible to beginners.
Most modern IDEs have an easy to read “Problems” panel, that has each error in a separate cell, with the first error at the top, it jumps to the source code location when you click it, it makes a clear distinction between errors and warnings, etc.
If Arduino updated their compilers to GCC 9 or 10 for better diagnostics and error messages, enabled colored output, and showed the first error first, that would already be a huge improvement in my opinion. (Updating compilers might be risky, of course, but you'll have to do it eventually, and strike a balance between backwards compatibility and user friendliness.)
In my eyes, the Arduino IDE and the core API didn't really see any large improvements in the last couple of years. They had the opportunity to redesign some things in their new ArduinoCore-API, but there weren't any significant improvements to the core “language”, and some APIs even got worse and broke backwards compatibility (such as the PinStatus enum). In that sense, I think it's a good development to see Raspberry Pi come out with a new, well-documented API to give the Arduino folks some competition and an incentive to improve their API and documentation.
Pieter