IDE defects

The idea that the IDE is for "amateurs" and "professionals" love doing things the hard way seems to be the basis of any number of bad decisions.

For example, if I click "download", the IDE feels a compulsion to recompile my code (even though I have made no changes). Fine, except that the Adafruit Trinket is receptive to downloads for only 10 seconds, but it takes more than 10 seconds to recompile before the download starts. When I say "download", I mean "download". If I want to recompile, I should have a "compile and download" button.

avrdude has an unbelievably complex command line. In a sane world, this command line would be displayed in the output window, and if I needed to create a script file that does the download, I could copy it and paste it into a script file. But no, I'm "protected" from such "confusing" knowledge. As a professional, I have zero interest in learning how to do low-level nitty-gritty details that are boring.

When I say "download", I mean "download". I don't want any favors done for me.

I cannot locate a way to move to the next error. Perhaps I have not searched far enough, but I can't find it.

A string of the form

Serial.print(") = [);

that is, missing the quote at the end of the string (between the [ and ), seemed to put the IDE into some kind of infinite Java exception loop. However, I have been unable to re-create this in other than my full program (about 1000 lines). As soon as I get a solid repro, I will post it. The only way to fix it is to use Task Manager to kill the IDE process and restart.

I was told that ATmega328P is defined for Adafruit Uno R3 builds, but in fact it does not appear to be defined, and I am unable to find any "official" document describing preprocessor symbols. I was also told that, for some bizarre reason, if I do something like

#ifdef ATmega328P
#include "whatever.h"
#else
#include "tinywhatever.h"
#endif

won't work, although I cannot imagine a world in which something like this is possible. If it does happen, it is a failure of the IDE, not of the programmer. (Actually, I would do something more complex, not just assume that if it is not a 328P then it must by a "tiny" version, but this was the example that I was given for a failure mode).

Professionals need good tools, too. We don't want to be bothered with irrelevant details such as the format of an avrdude command line, or the need to keep switching from compiler mode and download mode command windows. But when we use an #ifdef, or click a button marked "upload", we expect they will work CORRECTLY. If you feel a need to do weird things for beginners, give us an option of PERMANENTLY setting an "I am a PROFESSIONAL" mode so these silly things don't get in the way of doing real work.

On a Windows 8.1 Pro table (ASUS), I cannot scroll the source window with my finger. Instead, it selects blocks of text. It's 2014, you have to be tablet-aware.

Having a "border" where I can click to select an entire line, or drag to select lines in their entirety. See the Microsoft IDE

I have been a programmer for over 50 years, and I don't need handholding. I need tools that expedite my producing working code, and programs that do things that don't make sense and consequently force me to fall back to using the modern equivalent of punched cards are not my friend.
joe

if I click "download", the IDE feels a compulsion to recompile my code

Yeah, it made more sense when there was less code compiled :frowning:
And around here, it's "Upload." :slight_smile:

In a sane world, [the avrdude] command line would be displayed in the output window,

Turn on "verbose upload" in the preferences dialog, and it will show up.

I was told that ATmega328P is defined for Adafruit Uno R3 builds, but in fact it does not appear to be defined,

AVR_ATmega328P

and I am unable to find any "official" document describing preprocessor symbols.

avr-gcc "umbrella" rather than Arduino specific: Using the GNU tools

I am told [obvious preprocessor usage] won't work, although I cannot imagine a world in which something like this is possible.

The IDE generates function prototypes for you. It inserts them "after #include statements, which in the case of your conditional compilation block, is likely to be inside the #if clause for the wrong processor. Or something like that.

It's 2014, you have to be tablet-aware.

The code wasn't written in 2014. And tools don't "have" to be anything.
(Also, it's an IDE that was "Stolen" from "Processing"...)
(Just out of curiosity, are there any "professional" tools that are "tablet-aware"? Arduino might come out ahead, just by virtue of not having three lines worth of tiny buttons at the top../)
(hmm. Are you proposing that "click&drag" behave differently than it does now? Or that "swipe" be detectable separately? Do tablet APIs even DO that? I must confess that most of my windows-side development is still being done with WXP.)

Professionals need good tools, too.

And there are MANY professional-calibre tools that will permit you to do Arduino/avr development. Atmel Studio (VS based), Eclipse, and XCode, to name a few.

As a professional, I have zero interest

Blah, blah. "As a professional", you are not the target audience for the Arduino IDE. It takes a while to get over that, and to appreciate the implications :frowning:
(Also, it's not clear just what "Arduino" is, as a "product." The IDE is OSSW mostly borrowed from Processing. The hardware design is largely outsourced (much apparently from chip vendors?) It's close to be primarily an evangelical company, and it can
be depressingly difficult to get major bugs fixed, much less changed treatments of "non-goals" (like "professional level" IDE.)

So, in summary: many of your complaints are valid, but they probably won't get fixed, and the trick is to just 'deal.'

I have been a programmer for over 50 years [((Carnegie Mellon University))]

Bring back those PDP-10s! And, oh, for DDT...