學習理論的實用意義

來源:互聯網
上載者:User

為什麼要學CS理論呢?成天研究MSO=MSO0一類的問題對一個程式員的職業發展到底有什麼好處呢?知道Ranked Tree Automata和Unranked Tree Automata的互換又怎麼樣呢? 不知不覺學習形式化方法一年多了,學了一大堆數理邏輯和自動機理論,可計算性和複雜性理論也多學了不少。 這些理論除了有趣,有沒有什麼實用的價值呢?我不過是一小小程式員,沒有能力也沒有打算在CS理論方面一展身手。既然這樣,難道這一年多來在工作之餘狂讀論文不過是出於個人興趣?我好像還沒有那麼純潔吧?  還好,隨著學習的逐漸深入,我好像悟到了一些理論的現實意義:

1。學習理論能拓展我們總結一般規律的能力。一個優美的理論總能用很少的元素涵蓋廣泛的現象,包括理論產生時還沒有出現的情況(實際上,合格的理論必須有預見能力)。比如雖然Lambda Calculus只有7條公理,但它的表達能力和圖靈機等價。換句話說,實現了Lambda Calculus的程式設計語言(比如LISP)儘管句法簡單,卻能和基於圖靈機的語言(比如C++)一樣強大。而在程式設計方面,一個好的設計也應該能處理一般情況,而不是一堆特例。比如如果一個程式裡有大量分散而臃腫的case..switch或者if..else,這個程式多半有問題。進一步說,理論學習能訓練我們抽象的能力。關於抽象能力和理論的關係,這篇文章說得很清楚。

2。學習理論能訓練我們洞察不同事物間聯絡的能力。很多時候,我們編程的目的無非是把一種形式的資訊轉化為另一種形式的資訊,而且這種轉換往往受到計算資源的限制。理論恰恰關注事物間的聯絡。比如討論樹的時候,能不能只討論二叉樹,或者NFA是否很DFA等價。

3。學習理論讓我們能迅速掌握電腦的前沿動態。沒辦法,現在發表的論文往往用形式化的方法表達研究結果。沒有一定的理論只是,還真看不懂,更不用說和論文的作者討論了。別告訴我看論文不重要。要開發出別人開發不出的軟體,廣看Dr. Dobb's Journal 是遠遠不夠的。

嗯,能想到就這麼多了。哪位高人來指點一下迷津就好了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.