Code Generation as a Dual Task of Code Summarization