`Backward` should be refactored since there are two kinds of ops.
Created by: reyoung
There are two kinds of ops are computational operators and control flow operators. They should be treated differently when backward. The backward method should be redesigned.