對于初學編程的同學來說,有一個很大的難點,那就是無法理解每一段代碼什么意思,能實現(xiàn)什么功能。能否理解執(zhí)行每段代碼的功能相當關鍵,這一點對于學習編程語言的同學來說,應該頗有感觸。本文就給大家?guī)硪豢钌衿?,可以讓初學者輕松理解每一段代碼實現(xiàn)的功能過程。
實現(xiàn)一個排序、回溯、遞歸算法,它執(zhí)行的過程到底是什么樣的?為什么有的測試用例總是過不去?
手動一步一步寫出來顯然是很繁瑣的,要么就借助IDE
,把每一步的執(zhí)行結(jié)果以調(diào)試日志的形式輸出到控制臺,看一下每一步到底發(fā)生了什么。
曾經(jīng)看過一則消息,VS Code
正準備加入可視化調(diào)試過程這項功能,這讓我頗為期待,但是目前還無法提供這項功能。
python Tutor
Python Tutor
是一款在線的代碼執(zhí)行過程可視化工具。
def listSum(numbers):
if not numbers:
return 0
else:
(f,rest) = numbers
return f * listSum(rest)
myList = (1,(2,(3, None)))
total = listSum(myList)
你可以把上面這段代碼黏貼到 python Tutor
的編輯框點擊Visualize Execution就可以動態(tài)的執(zhí)行你的代碼,并且實時展示每一步的執(zhí)行過程。
變化的效果如下圖(實現(xiàn)過程圖片過來,節(jié)選其中幾張):
整個程序數(shù)變動的過程活生生呈現(xiàn)你眼前,夠明了了吧。
python tutor 我多作為程序出現(xiàn)自已解釋不了的錯誤,在網(wǎng)站上運行一次,執(zhí)行過程對比,查找錯誤原因,又快又準。
然后,這款工具的名稱為 Python Tutor
,但是,它支持的語言卻不止 Python
這一種。它目前支持如下編程語言:
- Python
- Java
- C
- C++
- JavaScript
- TypeScript
- Ruby
其中,支持比較全面的就是 Python
,對于 Python
,它支持 Python 3.6
、 Python 2.7
、 Python with Anaconda
。
Python是一門對第三方包依賴很強的一種編程語言,因此,在開發(fā)過程中會經(jīng)常用到 numpy
、 pandas
、pprint
等工具包。默認的 Python 3.6
和 Python 2.7
只有一些標準庫,沒有第三方包。
所以,如果你執(zhí)行的代碼片段中用到了第三方工具包,可以選擇 Python with Anaconda
,這是因為 Anaconda
默認會安裝常用的工具包。
但是,使用 Python with Anaconda
的速度會慢一些。
在我個人看來,這個工具比較適合編程初學者,例如面臨校招的同學,這個工具對于熟悉編程幫助很大,可以加快你的學習效率,提升對編程語言的理解。
最后推薦一下上述7門編程語言的教程,感興趣的同學可以看一下:
- Python教程:http://m.hgci.cn/python/
- Python微課:http://m.hgci.cn/minicourse/play/python3course
- Java教程:http://m.hgci.cn/java/
- Java微課:http://m.hgci.cn/minicourse/play/javaminicourse
- C教程:http://m.hgci.cn/c/
- C++教程:http://m.hgci.cn/cpp/
- C++微課:http://m.hgci.cn/minicourse/play/cppminicourse
- JavaScript教程:http://m.hgci.cn/javascript/
- JavaScript微課:http://m.hgci.cn/minicourse/play/jscourse
- TypeScript教程:http://m.hgci.cn/typescript/
- TypeScript微課:http://m.hgci.cn/minicourse/play/tsminicourse
- Ruby教程:http://m.hgci.cn/ruby/
- Ruby微課:http://m.hgci.cn/minicourse/play/rubycourse