編程思維的養成——我的信息技術之路之五


  提到編程,當然要知道編程思想的進化史,而半路出家又特別是自學編程的人往往沒有經過系統專業培養,這部分往往會被忽視,但“是思維習慣指導着行動”,了解程序編寫的發展歷史才能了解進化思路。
  作為我入手的VB6並不是完美的面向對象的高級語言,但已算是比較合適學習的優秀的面向過程的高級語言了,初學之,從歸提煉代碼,養成面向過程——形成養成寫可重復使用的塊的好習慣,也是編程路上必不可少的階段。
  我自己作為一名小學老師深知:思維習慣的形成非常緩慢,絕非說今天想到今天就可以做到,是不斷在反復的反饋刺激后才能固定下來的思維回路,最終才可以在不經主觀強化約束的情況下默認執行。剛開始必須反復糾正之,反復重構之。
  一開始寫代碼,舉個例子,連接ACCESS數據庫,按鈕一的點擊代碼中需要打開數據庫的某個表進行操作,然后關閉它;按鈕二的點擊代碼中也需要打開這個數據庫的另一個表進行另一些操作,然后再關閉它(這兒只是簡單舉例,初學者可關注,高手請繞道)。那么查閱自己過往作品,特別是能找到的初期作品,就發現一個問題:兩個按鈕的點擊事件中的代碼都是按照如下流程走的:

按鈕一被單擊時要執行的操作()
  找到要連接的ACCESS數據庫文件
  判斷這個文件是否存在
  連接到指定的ACCESS數據庫文件
  打開要操作的數據表一
  執行按鈕一要做的操作
  關閉要操作的數據表
  斷開與指定的ACCESS數據庫文件的連接
結束按鈕一被單擊時要執行的操作
 
按鈕二被單擊時要執行的操作()
  找到要連接的ACCESS數據庫文件
  判斷這個文件是否存在
  連接到指定的ACCESS數據庫文件
  打開要操作的數據表二
  執行要做的操作
  關閉要操作的數據表
  斷開與指定的ACCESS數據庫文件的連接
結束按鈕二被單擊時要執行的操作

  兩個按鈕中加粗顯示的部分可以發現是重復的,如果在兩個按鈕的點擊事件中都寫這些代碼,將造成重復勞動,當然事實上是復制粘貼,但又造成另一個問題,出了錯,將要修改兩處,如果找不到錯誤在哪兒就更慘——這種事在我的過往經歷中經常發生,往往花個通宵甚至都無法找到到底錯在哪兒。
  其實我們可以將上面加粗顯示部分的操作,分別放到兩個可調用 的 程序 塊中,稱之為 函數的東西里,使用時直接調用之就可以了。
  而事實上上面兩個按鈕的單擊事件中,斜體顯示的部分,雖然操作的是兩個不同的表,但基礎操作是一樣的:都是打開某一張表,則也可以放到一個程序塊中,只是在調用塊時,需要告訴這個程序塊,你給我打開哪張表就行了。
  但是,往后過了將近一年,這種不是面向過程的思維習慣才被慢慢改正過來,可見一個思維習慣的形成是多么艱難。往后查看一些作品源代碼,就可見如上例中的程序流程就變成了這樣:

程序塊一_我是負責連接那個ACCESS數據庫文件的()
  找到要連接的ACCESS數據庫文件
  判斷這個文件是否存在
  連接到指定的ACCESS數據庫文件
  返回連接后的結果
結束程序塊一
 
程序塊二_我是負責斷開與那個ACESS數據庫文件的()
  斷開與指定的ACCESS數據庫文件的連接
  返回斷開是否成功的結果
結束程序塊二
 
程序塊三_我是負責打開想要打開的表(這兒告訴我要打開哪個表)
  打開【這兒告訴我的要打開的那個表】
  返回打開的結果
結束程序塊三
 
程序塊四_我是負責關閉想要關閉的表(這兒告訴我要關閉哪個表)
  關閉【這兒告訴我的要關閉的那個表】
  返回關閉的結果
結束程序塊四
 
按鈕一被單擊時要執行的操作()
  呼叫 程序塊一 完成它的操作
  呼叫 程序塊三(表一) 完成它的操作
  執行按鈕一要執行的操作
  呼叫 程序塊四(表一) 完成它的操作
  呼叫 程序塊二 完成它的操作
結束按鈕一單擊時的操作
 
按鈕二被單擊時要執行的操作()
  呼叫 程序塊一 完成它的操作
  呼叫 程序塊三(表二) 完成它的操作
  執行按鈕二要執行的操作
  呼叫 程序塊四(表二) 完成它的操作
  呼叫 程序塊二 完成它的操作
結束按鈕一單擊時的操作

  正是保證學習的思維每天都有進步和改變,也正是堅持每天都改變自己一點點,這種面向過程的編程思維就形成了一種習慣思維,每次開始寫具體控件(如按鈕就是一種控件)時,都會先自發地想到是否 些代碼可以單獨放到一個 程序 塊中?獨立的程序 塊(就是專門供別人笑呼叫使喚的程序 塊)多了,是不是可以專門建立 一個模塊文件保存起來?
  通過這樣每天進步一點點,每天改變一點點,終於完成了編程思維完全的完成面向過程編程的轉變。
  后來,當學習JAVA等時,又自然地養成了面向對象的思維習慣的轉變,一下手,就會自覺地習慣地想到:把這些要反復和到的功能當作一個獨立的類吧,讓它自己做什么,有什么特點,有什么可自上繼承的等等,這樣,思維一到,代碼竟活了起來,編程竟自然有趣起來。
因為日子每天在改變,世界每天在改變,只有讓自己每天都有新的改變與進步,才可能適應這個變化 的世界,那就是每天進步一點點,一年,十年,變化 就相當驚人了。轉變思維,跟上時代的思維才能讓自己永遠走在時代的前列。
  記得讀書時代,教我畫國畫的老師講過一個小事,他說他有個鄰居很喜歡畫國畫,但好多年來,每次下筆畫小雞等,筆法順序基本一樣,只只小雞都差不多,雖然確實是特別愛畫畫,但多年來畫作幾乎數年如一日,沒有二致,還到處賣弄自己的作品——旁人不語,但實在可悲。
  這個故事當時給我巨大的觸動,這些年來,給願意向我學習的徒弟們,我多數並不會教他們具體要怎么去寫代碼,要做些什么,我只告訴他們要達到什么目標,其余讓他們自己去探索,只是上面那個故事是要經常作為鞭子鞭策他們的。很多徒弟們進步還是非常之大,迅速實現了自我的不斷蛻變,這便是從心培養思維,由內心思維的轉變而驅動外在行動變化 的力量。
  如果說編程學習除了改變了我粗枝大葉的行動習慣之外還給我帶來了什么的話,最大的收獲便是——改變了人思維的習慣,使思維可以如水般隨時適應時代這個容器的任何變化 。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM