# 2015-07-17 Now that I have worked a bit more with C I see its elegancy. Even though the language core itself is kept simple and minimal, it still yields a lot of possibilities. For example, consider this program: void callback() { printf("the callback fired!\n"); } int main() { void (*cb)(void) = callback; cb(); } A pointer to the callback() function is saved within the variable cb. Using the () suffix in conjunction with the variable, the function may then be invoked. So throughout the indirection of pointers it is possible to use functional features, such as saving functions within variables, passing functions as parameters or e.g. returning functions from other functions. In short: functions as higher class citizens. After a bit of discussion with Markus it became clear to me that my impression of C having a lot of datatypes was wrong. I got confused by the whole uint32_t stuff. Now I know that the ``_t'' suffix denotes a type. This way more portable programs can be written. On one machine uint32_t may actually be a typedef to an int, since an int is 32 bit on this certain machine. On another machine it could as well be some other datatype which consists of 32 bits on this certain machine.