如何直观地理解程序的运行过程?

简介: 了解代码的执行过程是编程的基本要求。一个熟练的编程老手只需要用肉眼看着代码,就能对其运行的过程有所了解。然而对于刚接触编程不久的新手来说,这种事情就没那么显而易见了。于是在编写代码和调试代码时,一旦程序的逻辑有些复杂,就像掉进代码的迷宫,完全不知道东南西北。


了解代码的执行过程是编程的基本要求。一个熟练的编程老手只需要用肉眼看着代码,就能对其运行的过程有所了解。然而对于刚接触编程不久的新手来说,这种事情就没那么显而易见了。于是在编写代码和调试代码时,一旦程序的逻辑有些复杂,就像掉进代码的迷宫,完全不知道东南西北。


所以,每当有人对自己的代码没有给出预想结果而百思不得其解,无奈寻求帮助时,我都会建议在程序中增加输出,一方面是根据不同输出的先后顺序来判断程序的运行路径,另一方面则是观察各变量在运行过程中的实际数值,确认是在哪里发生了错误。


还有种方法就是使用 IDE 提供的调试功能,通过添加断点和单步运行,了解程序的运行状态。Visual Studio、Eclipse、xCode 等常见的 IDE 几乎都提供了调试工具。对于 Python,也可以使用 pdb 库来实现断点调试。


上述两种途径应该是大部分程序员 debug 时候的基本套路。但同样的,对于新手来说,即使这样的工具,用起来仍然有些费力。


有时我会选择在纸上画出一些流程和图形来向人解释程序,虽然效果会好些,但显然不是一种可以广泛推广的方式。后来意外发现有一款工具满足了此类需求,非常适合新手,可以让你直观地“看”出程序是怎么运行的。对于初学编程,难以理解程序运行过程的苦手来说,绝对可称之为“神器”。


这就是 Online Python Tutor。一款免费的在线代码运行及演示工具。


项目地址:pythontutor.com


关于此项目的介绍(摘自网络,出处未知):


Online Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。通过这个工具,教师或学生可以直接在 Web 浏览器中编写 Python 代码,并一步一步可视化地执行程序。


截至 2013 年 12 月,来自 165 个国家和地区共 50 万多人使用了这个在线工具,通常是用作教材、讲义或在线编程指南的补充。每天共执行和演示超过 6,000 段 Python 程序。除了自学的初学者,Online Python Tutor 的用户还包括了那些参加 Coursera、edX 和 Udacity 等在线课程的学生,还有诸如 MIT、UC 伯克利等高校的教师。


  • Python Tutor 支持 2.7 和 3.3 两个版本的 Python。
  • 除了 Python 外,还可运行 Java、JavaScript、TypeScript、Ruby,另外也有支持 C、C++ 的版本。
  • 可以通过一行 JS 代码,把此工具嵌入到你自己的页面中。
  • 也可以生成链接,把你的代码直接分享给别人。
  • 附带单元测试功能。
  • 网站上还提供了很多的实例,其中包括一些比较经典的算法。


再来体验一下其使用过程:


在编辑器里输入代码,点击 “Visualize Execution” 即可运行并演示。


import randomdef fn(x):
    return x**2result = []for i in range(3):
    t = random.randint(1, 10)
    print t
    r = fn(t)
    result.append(r)print result


我用了段包含循环、列表、函数、模块的代码片段。看看效果如何:


左上是代码,箭头表示当前运行到的位置。

通过下面的按钮和进度条可以直接控制程序的进行。

左下是输出。

右边就是程序的可视化模拟。在这个例子里,可以清楚地看到过程中变量的变化,何时调用了函数等信息。


不过同很多在线运行环境一样,Python Tutor 不支持运行过程中的输入功能。所以没法把我们的猜数字或是罚点球的小游戏直接放上去运行。希望以后能够增加此功能。


借助 Python Tutor,可以更轻松地理解一些算法。最后放一个冒泡排序的实现,点击文章下方的“阅读原文”可查看。

相关文章
|
9月前
|
搜索推荐 编译器 开发者
应用程序的运行:原理、过程与代码实践
应用程序的运行:原理、过程与代码实践
273 1
|
Java C语言 C++
编程语言运行过程
计算机的计算方式:二进制(0,1)所有都是;电脑是由:硬件+系统(组成的)。 操作系统:软件的服务平台,开发都是基于操作系统。抛弃系统(所有都要进行开发)很麻烦。 编程:就是将编程语言转换成(机器码)电脑只认识机器码,然后再由系统执行。
1448 0
|
算法 安全 前端开发
程序常用的设计技巧
程序常用的设计技巧
程序常用的设计技巧
|
3月前
|
存储 缓存 测试技术
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
在数字化时代,图形界面程序的性能至关重要。本文介绍了使用 C++20 优化图形界面响应速度和渲染效率的方法。通过利用 C++20 的新特性,如概念(Concepts)、范围(Ranges)库、属性(Attributes)等,优化事件处理、内存管理和多线程渲染,从整体流程上提升图形界面程序的性能,确保用户获得流畅、高效的使用体验。
|
安全
程序人生 - 怡宝和农夫山泉有什么区别,哪个更好一些?
程序人生 - 怡宝和农夫山泉有什么区别,哪个更好一些?
268 0
|
8月前
|
监控 Serverless 开发工具
函数计算产品使用问题之要确保服务能在后台持续运行,而不依赖于WebUI是否打开,该怎么操作
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
数据可视化 搜索推荐 测试技术
如何用工作清单减少错误,提高效率?
清单的本质在于聚焦与掌控,它能帮助我们将无序的任务变得可管理,减少认知负荷,提高工作效率。通过明确目标、分解任务、标记优先级,清单不仅提升了个人的工作效率,也促进了团队间的协作与沟通。无论是简单的日常任务还是复杂的项目管理,清单都是不可或缺的工具。
|
9月前
|
编译器 C++
我终于体会到了:代码竟然不可以运行,为什么呢?代码竟然可以运行,为什么呢?
我终于体会到了:代码竟然不可以运行,为什么呢?代码竟然可以运行,为什么呢?
111 0
我终于体会到了:代码竟然不可以运行,为什么呢?代码竟然可以运行,为什么呢?

热门文章

最新文章