不要用面向對象來迷惑程序員新手
本文是從 Don't Distract New Programmers with OOP 這篇文章翻譯而來。
當我被問及“哪種編程語言是教我[兒子/女兒/其他沒有編程經驗的人的首選]時,”我的答案這五年多來一直沒變:Python。
這也許會出乎你的意料,經常有人會說這是非主流語言,但我堅持我的看法。
Python十分適合解決很多簡單的、有趣的問題,比用C語言要省力的多。(這是實話,幾行Python代碼你就能制作一個簡單的拼寫檢查程序。)你會發現這種語言里幾乎沒有任何復雜或讓人困惑的東西,用它編程簡單易懂,比如說數組更新你可以用固有的方法來實現任何的操作算法。在Python里,你學習的曲線很平滑。數組,字典,集合是最主要的東西。
把Python當作入門語言,有一點需要注意:避免使用面向對象特征。你當然不可能完全的回避它們,有些基本數據類型里一些有用的方法跟它們有關聯,問題不大。你只是使用它們已經提供的東西,不要去創建什么類,要避免任何的面向對象設計里的聲明,否則的話,你一點點的數據都需要會打包成類。
從面向過程到面向對象的轉移帶來后果是你從關注問題和解決方法轉移到關注架構。你通過對比面向過程的程序和面向對象的程序,很容易能看出這點來。后者的程序會更長,到處是多余的接口和縮進和標記。你也許忍不住想將一些小代碼移進類里,或往類里添加一些小方法,這些都沒必要,等日后你再做這些也不遲。
當你在幫助某人把一個有問題的語句改正確的時候,你要做的最后一件事是給他們布置一些沒有實際用處的技術工作。因為有些人沒事時就喜歡玩能一些面向對象的知識技術,做一些可怕的類繼承,最終沒有學到他們該學的東西。有些人在學習的時候慢慢的會失去興趣,因為他們看到了太多的這些沒有實際用處的繼承、接口代碼,感覺程序越來越笨重、難以處理。
從某方面說,當然,你需要學習一下Python的面向對象的知識,但盡可能的避免使用它們吧。