A comment may need to go either above or below a piece of code, depending on what kind of comment it is: if it gives an ultra-brief explanation of what the code does, then it needs to precede the code; if it elaborately clarifies a technical detail about how the code works, then it needs to follow the code.

Luckily, a comment can go either above or below a piece of code, and still leave no doubts about which piece of code it pertains to, by making proper use of blank lines. Of course, programmers who do not pay attention to the use of blank lines will not know what I am talking about; if you are one of those, please skip this answer and move on with your life. But programmers who pay attention to blank lines know very well that blank lines are used to divide code up into logical entities. So, if you see the following:

[blank line]
/* comment */
{ code }
[blank line]


You know that the comment belongs to the code, and that it tells you what the code does. Whereas, if you see the following:

[blank line]
{ code }
/* comment */
[blank line]


Again you know very well that the comment belongs to that code, and it is a clarification about how the code does what it does.

Comment before or after the relevant code
I know what computation is in some vague sense (it is the thing computers do), but I would like a more rigorous definition. 

Dictionary.com's definitions of computation, computing, calculate, and compute are circular, so it doesn't help. 

Wikipedia defines computation to be "any type of calculation that follows a well-defined model." 
It defines calculation as "the deliberate process that transforms one or more inputs into one or more results, with variable change." But it seems this definition includes many actions as computations even though they aren't typically thought of as computation. 

For example, wouldn't this entail that, say, a bomb exploding is a computation, with the input being the fuse being lighted and the output being the explosion?

So, what exactly is computation?
