想写出杰出程序吗?少动计算机多动脑子! | 程序师



想写出杰出程序吗?少动计算机多动脑子! | 程序师

我最近想明白了一些事情。最好的写程序的地方不是在你的计算机前,不是使用你的编译器、IDE或其它一些工具。这最好的地方是一个远离这些工具的场所 ―― 是某个能让你认真的思考的地方。对于一个你很熟悉的编程语言,你很容易把你脑子里已经构思好的程序转换成编译器/解释器可以编译/解释的程序 ―― 难就难在如何在脑子里先把程序编好。

有一天我乘火车旅行。我带了笔记本,但没有网络。不幸的是,我使用的是一种商业编程语言(IDL,真不巧),这种语言需要使用我大学网站上的许可证。因为不能连上互联网,我拿不到许可证,于是我的编译器和IDE就跑不起来。你可能会喜欢使用一个需要昂贵的许可证的商业编程语言,但它的确使我不能在编辑器里写任何的代码。而你猜这么着 … 这让我开始思考!

我想这篇博客正好印证了Does Visual Studio rot the mind?这篇博客的内容,它里面说道:

我从我的第一个老板那里学到的最大的一个教训是:"当你的程序运行异常时,不要使用debug工具,用你的大脑。"

这就是远离电脑后会迫使你去做的事。通常你很容易进入这样一种编程习惯:

  1. 写一些程序(乱糟糟的)
  2. 编译,运行
  3. 使用简单的测试用例进行测试
  4. 发现有问题
  5. 小改一下程序,也许能解决这个问题
  6. 重复 …

这当然会导致程序最终乱糟糟的,无法阅读理解,很有可能问题多多,没有很好的测试。

远离计算机能迫使你在大脑里周全的思考所有的问题 ―― 这跟你抱着计算机编译、运行你的程序相比可能会花更长的时间(至少对于小程序是这样)。可是,这样做后,你就不会去一点一点的改动程序、一遍遍试着运行它 们了,你是真正的思考这些代码是做什么的。在那天、在火车上之前,我还从没有在纸上规划过任何的程序。

而从此之后我努力在写程序之前会把思路画在纸上,思考它,一步一步的用代码实现,做出高质量的,高效的,没有问题的程序,多去思考,最后才在编译器上运行。程序是最后才从纸上拷贝到编译器里。

任务完成的很好 ―― 我自认为,希望这是一个有用的建议。


Read full article from 想写出杰出程序吗?少动计算机多动脑子! | 程序师


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts