1.10. Experimental Debugging


One of the most important skills you will acquire is debugging. Although it can be frustrating, debugging is one of the most intellectually rich, challenging, and interesting parts of programming.
In some ways, debugging is like detective work. You are confronted with clues, and you have to infer the processes and events that led to the results you see.
Debugging is also like an experimental science. Once you have an idea what is going wrong, you modify your program and try again. If your hypothesis was correct, then you can predict the result of the modification, and you take a step closer to a working program. If your hypothesis was wrong, you have to come up with a new one. As Sherlock Holmes pointed out, When you have eliminated the impossible, whatever remains, however improbable, must be the truth. (A. Conan Doyle, The Sign of Four)
For some people, programming and debugging are the same thing. That is, programming is the process of gradually debugging a program until it does what you want. The idea is that you should start with a program that does something and make small modifications, debugging them as you go, so that you always have a working program.
For example, Linux is an operating system kernel that contains millions of lines of code, but it started out as a simple program Linus Torvalds used to explore the Intel 80386 chip. According to Larry Greenfield, one of Linus’s earlier projects was a program that would switch between displaying AAAA and BBBB. This later evolved to Linux (The Linux Users’ Guide Beta Version 1).
Later chapters will make more suggestions about debugging and other programming practices.
ột trong những kỹ năng quan trọng nhất bạn sẽ đạt được là gỡ lỗi. Mặc dù nó có thể là bực bội, gỡ lỗi là một trong những trí tuệ giàu nhất, thử thách và thú vị nhất của chương trình.
Trong một số cách, gỡ lỗi giống như công việc thám tử. Bạn phải đối mặt với các đầu mối, và bạn phải suy luận các quá trình và sự kiện đã dẫn đến kết quả bạn nhìn thấy.
Gỡ lỗi cũng giống như một khoa học thực nghiệm. Một khi bạn có một ý tưởng về những gì đang xảy ra sai, bạn sửa đổi chương trình của bạn và thử lại. Nếu giả thuyết của bạn là đúng, thì bạn có thể dự đoán kết quả của sự sửa đổi và bạn tiến thêm một bước gần hơn đến một chương trình làm việc. Nếu giả thuyết của bạn sai, bạn phải đưa ra một giả thuyết mới. Như Sherlock Holmes đã chỉ ra, Khi bạn đã loại trừ được điều không thể, bất cứ điều gì còn lại, tuy nhiên không thể xảy ra, phải là sự thật. (A. Conan Doyle, Dấu hiệu của Bốn)
Đối với một số người, lập trình và gỡ lỗi là cùng giống nhau. Nghĩa là, lập trình là quá trình gỡ bỏ dần dần một chương trình cho đến khi nó làm những gì bạn muốn. Ý tưởng là bạn nên bắt đầu với một chương trình làm điều gì đó và thực hiện các sửa đổi nhỏ, gỡ lỗi chúng khi bạn đi, để bạn luôn có một chương trình làm việc.
Ví dụ, Linux là một hạt nhân hệ điều hành có chứa hàng triệu dòng mã, nhưng nó bắt đầu như là một chương trình đơn giản Linus Torvalds được sử dụng để khám phá chip Intel 80386. Theo Larry Greenfield, một trong những dự án trước đó của Linus là một chương trình có thể chuyển đổi giữa hiển thị AAAA và BBBB. Điều này sau đó đã phát triển thành Linux (Hướng dẫn Người dùng Linux Phiên bản Beta 1).

Các chương sau sẽ đưa ra nhiều đề xuất hơn về gỡ lỗi và các thực tiễn lập trình khác
References:

http://interactivepython.org/runestone/static/thinkcspy/index.html

Nhận xét

Bài đăng phổ biến từ blog này

2.7. Operators and Operands - toán tử và toán hạng

1.11. Formal and Natural Languages