Programming in C

@lefty :slight_smile:

@op: the issue is not limited to C/C++. You always have language + standard libraries. They provide (at least) the absolute minimum to manipulate data (think str* family for C-strings), interact with the OS and the user, ecc. Java is an example where the standard libraries can be considered part of the language. C++ instead is more towards the "naked language" end of the scale.

So an Arduino board is programmed in C++, but the SDK includes a set of functions that make it very easy (compared to non-arduino specific software development environments) to perform certain common operations, like driving a digital pin, reading an analog value, communicating via a serial interface and so on.
Those functions create what is called an abstraction layer, that is code that hides the gory details of how certain subsystems work or certain hw functionality is exploited, so that you don't think anymore in terms of bit n of PORTx, but just refer to Arduino pin 1.