I liken it in some ways to VB (Visual Basic). You sacrifice some raw power to get some refined power. Arduino is better however, in that you can still inline code in lower languages like C and Assembler, which you can't in things like VB and PERL. In my opinion, at any given time a project should be done in as HIGH level a language as possible, resorting to lower level coding ONLY where necessary. Reinventing the wheel fifty times a week isn't to be applauded.. especially if nothing but wheels ever gets invented!
You can rely on it being an inefficient platform- resources wasted right and left; much of the horsepower is sacrificed or hidden from your use; the majority of the language is just macros, with a search and replace engine as the "compiler".
You'll start a Barbeque if you mention it's useful, all of a sudden you are surrounded by nothing but weenies and flamers. My response to flamers and weenies is that unless you're making your own gates with a Bic lighter and a bucket of sand, whatever language you are programming in is no different or any "better" than any other, including VB/Arduino/TCL/What have you.. in fact, since this is the case, a very reasonable argument can be made that those mired in low-level coding are more of an impediment than a benefit. It's ALL just variations of the search-and-replace theme.
I don't discuss it often, as I really don't like "hating" on anybody- but understand how hostile the weenies can be.. I've been BBS'ing since the early 80's, and in thirty years I've been censored on two sites. One of those was AVRFreaks.. because I asked if there was value in learning this "Arduino" platform over WinAVR and the uberweenies decided to flame the "new guy" for not knowing any better. It went downhill from there. Even more disturbing were the chain of posts and unsolicited personal emails to my private email address, full of profanity from one of the ADMINS. AVR Freaks is what's WRONG with microcontroller and hobby development, no matter what the hardware is.. it's got nothing to do with AVR's, it just about the Freaks. That kind of attitude isn't found here, despite it being the same hardware.. and even many of the same people. Happily, there's little actual content at AVRfreaks that isn't mirrored someplace else these days, and it seems they are going offline for days at a time randomly now.. guess it just toxified itself to death.. If I would have had no other resource for a forum for AVR development, I would have walked away from the entire hobby (and possibly electronics in general) based upon the general level of Weenie Roast there. Hostility towards newcomers and those without a lot of experience doesn't fly here, happily. It's not the hardware, it's not the language, the IDE or the compiler. It's the people here. Pat yourselves on the back guys, there's nothing quite like Arduino.
Arduino, like Visual Basic (and other thing like it, such as PYTHON and PERL, TCL, etc) is however indespensible when it comes to making a fast prototype or if you need to cobble together a quick "one off" tool to get a job done. I can't tell you how many times during my working years I used VB as a front end for heavy lifting, and when it comes to building a simple database front end, I've never seen a tool that even came close. Hate on it all you want, in the real world, VB is one of the most useful and used tools on the market. In much the same way, Arduino makes it possible to quickly prototype with a modicum of experience, even if it's not the most efficient or "nerdy".
Arduino "wrappers" away much of the painful coding that would send most hobbyists looking for another hobby before they got their first projects running. A working project... I dare >> any << language zealot to find fault with a working design, no matter how it was done. Any whining you hear in the wings if your project works is just that- whining from people who couldn't actually DO the design, just complain...
I do think that maybe the Arduino compiler ought to make the compile stages more "accessible" or obvious to the user, to encourage them to "look under the hood". It's there and generated, but maybe when you compile in the IDE, it should pop a tab open with what the program compiles to in ANSI C. Assembler is just to dang painful to be useful in most cases. Stopping at C makes sense in the same way as having a carpenter stop being an expert at the lumber level, he doesn't need to know how to grow a tree to build a doorframe.