Computer program is a set of instructions written in programming languages by developers, identified and performed by computers. A large-scale computer program source code set is commonly complex and abstract, making it difficult for human recognitions. Visualizing computer program visually presents the code structures, execution processes, and running results of programs intuitively form to facilitate users' understanding and improve data mining ability. From the program execution process, the visualization targets are analyzed and the related visualization methods are introduced according to the three stages of program execution. In the pre-execution stage, visualizations show the code organization and potential exceptions in multiple levels and dimensions. In the mid-execution stage, visualizations assist in algorithm understanding, operational debugging, and status monitoring. In the post-execution stage, visualizations are used for performance evaluation, optimization, and anomaly detection. Then, the practical application cases of program visualization in various application scenarios are introduced, such as online programming debugging and algorithm visualization. Finally, the taxonomy and limitations of the current program visualization work are summarized. Future research directions are pointed out, such as visualization of algorithm understanding with high generalization ability and visualization of running debugging in teaching.