The combination of increasingly complex MCUs, ballooning expectations of device functionality, and shrinking development cycles has pushed many software tooling companies to focus on creating abstractions above the hardware, which is meant to make the development of complex devices easier and faster. The most successful platforms and abstractions tend to take on a life of their own after a few years on the market. Mbed and Arduino both have extensive user communities, with many user-created websites and blogs dedicated to each platform.
Because platform consistency is paramount for ease of use, implementations will often include many features that focus on ease of use, sometimes at the expense of performance and good design practice. For example, some hardware targets will expose an API for something such as a PWM output, even though the underlying MCU...