================== The ULM C compiler ================== The C programming language was designed as a portable assembly language. That means, on every platform that provides a C compiler the source code can be translated to platform dependent assembly code. In order to be efficient the aim of C was to be as close to assembly as possible and as abstract as necessary. In the great book __The Art of Unix Programming__ by __Eric S. Raymond__ the C language is described as __thin glue__ (read at least that section) between software and hardware. # The most recent standard for the C language is __C18__ and the latest __final # draft for the C18 standard__ is available for free. The ULM C language is # intended to be a serious subset of this language. Consider this session as a # travel back in time to the origins of the language. C was first developed as # working prototype for a particular architecture (the __PDP-11__) then afterwards # generalized and standardized for a larger range of architectures. # # The C programming language was designed as a more structured assembly language # for an idealized architecture. Understanding this original intension and # considering the language as a thin abstraction for assembly code is helpful # for understanding the language itself and for making proper use of it. # # # # # # # :links: C18 -> https://en.wikipedia.org/wiki/C18_(C_standard_revision) # final draft for the C18 standard -> https://web.archive.org/web/20181230041359if_/http://www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf # PDP-11 -> https://en.wikipedia.org/wiki/PDP-11 :links: The Art of Unix Programming -> http://www.catb.org/~esr/writings/taoup/html/ Eric S. Raymond -> https://en.wikipedia.org/wiki/Eric_S._Raymond thin glue -> http://www.catb.org/~esr/writings/taoup/html/ch04s03.html