I don't want to get into a set of religious wars, but I am a C kind of guy... Before you shoot me, I like your products too, or I would not have stuck with them this long...

Some reasons why I think Arduino have been successful.
1) It is pretty simple to start out to use. Here is a complete simple hello world sketch
Code:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello World!");
}
2) Performance and capability wise they probably blow the socks off of a Basic stamp. I think the low end Arduino probably have 32K or program space and 1 or 2 K of memory run at 16 or 20mhz. The Arduino Megas have 128K or program space, 4 usarts, 12 PWM channels, 16 Analog inputs. 50+ digital inputs ...
3) Cost: You can get a simple Arduino for $20, one with USB $30, a Mega which also has USB for $65 (these are all sparkfun). You can get other versions of a Mega for under $50 from other vender's.
4) Ease to expand the environment. For example in another thread you ask for ideas on what commands to add to Basic. Up in the Arduino world, if there is a need for some new commands, it can be done by anyone. (Yes I know this can be a double edged sword), But for example recently someone saw that there was no standardized easy to use PS2 code on the Arduino. So he created it and posted it. Now all you have to do is to copy the .c++ and .h files for the new library into the appropriate Arduino directory and then in any sketch you wish to use it, you simply tell the system that you wish to use it and you are free to use its methods. He created a really nice version that takes care of remembering the previous states of the buttons and the like, so you can write code and simply ask if a button has just been pressed...
Also since you have the source file available for the new objects, you are fee to customize it to make it work in your environment, fix bugs and learn how to do things...
5) Also if you wish to return to be strictly a C/C++ kind of guy you still have all of the GNU GCC stuff available to you (again free). You can simply use AVRDUDE to program the boards outside of the Arduino environment. You can easily port your sketches back to C with the main line looking something like:
Code:
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}
Yes, I know there are downsides as well, like there is no debug mode to make it easy to debug your programs... I hate that the normal boards do not have servo connectors, but it is a different mindset. Their idea is it is great for prototyping things. One of these boards, a wireless breadboard and some wire is all you need...
My main point is to say that they do have a lot of interesting stuff going for them, so I can understand their popularity.
Kurt
P.S. - Again I am not wanting to get into religious war, like C versus basic!!!