Documentation identifies key function input requirements, references for more information, parameters, and return values. As with any written communication, the focus should be on the user new to the software package - or to your future self who has forgotten what the project was due to passage of time.

Language Choice

While the Internets continuously debate the merits of one programming language over another and the relative performance of one language over another, a more pragmatic approach is recommended that is situation specific. The key consideration of language selection should be efficiency for humans: what can a person both write quickly and understand quickly. This consideration should include not only base language functionality, but the library of capabilities built by others and made available for others to use. After the human concerns have been addressed, attention should be placed on other characteristics including performance, portability, etc. 
As discussed previously, software maintenance is a large portion of any software lifecycle. As maintenance involves repeated reading and understanding by humans of what has already been written, it is a large part of the overall cost of software.  While experience, training, and available tools to solve a particular problem has a large impact on both creation and understanding of software, when faced with options, users should choose a language that favors ways people think rather than ways computers operate. <Mashey ACM reference>. 
Programming languages such as R that are distributed typically as source files rather than binaries, do not require compilation to run
Low level languages require compilation
https://queue.acm.org/detail.cfm?id=1039532
As an example, here is an example of a code snippet written in C++: 
Need to come up with better example - these two are NOT actually equivalent.