F#,印度數學教育與優秀編程

來源:互聯網
上載者:User

這個周末,我終於可以坐下來做我在一年來一直承諾要做的事情:我開始應用F#。這次體驗相當有趣。十多年來,我第一次不能只是通過坐著瞧一些樣本代碼來理解一門語言。

這次體驗強化了當前通用程式設計語言的可悲狀況。確實,過去我曾多次抱怨過VB.NET、C#、Java等語言的平庸之處。但明白我的所作所為對我的思考方式有著重大影響,這引起我的強烈興趣。

我在11年級使用EdScheme時初次遇到一種函數程式設計語言。雖然F#的文法與EdScheme大有不同(EdScheme是Scheme的一個版本,是Lisp的一個術語;F#以OCaml為基礎),它們的許多原理是一樣的,特別是在“標籤”與“值”相對的概念方面。

在函數程式設計語言中,有一種避免(或完全禁止)“值”概念的傾向。相反,每個標識符實際上作為一個標籤,引用一個特殊的函數。

例如,“let x=5+y”並不是設定x的值等於y加5得到的值。相反,x是一個函數,調用後,它計算5+y並返回結果。如你所見,這種思維方式與我們大多數人學會的過程代碼截然不同。

說明一下,我在“過程代碼領域”中包含了物件導向(OO)代碼,因為在最原始、低級的層次,每個OO程式都以一個非常傳統、過程化的思考過程結束。換句話說,OO只是訪問和編寫過程代碼的一個非常優秀和有組織的方法。

姑且不談那一點。我發現我的思維很難接受某些概念。讓人感到沮喪的是,我過去瞭解這種情況。並不僅僅是因為我有些遲鈍或缺乏練習,我發現自己難以接受F#的思考方式。

想象一下,如果你去騎單車,但由於你開了15年的汽車,你的腳總是不由自主的伸向油門處;你說的情況和這類似。

這讓我記起我在幾個月前的一次談話。與我交談的是一位由印度訪美的程式員,他和我彼此相當熟悉,他做程式員已有相當長一段時間了,可能和我的時間一樣長。他和我談到教育。

眾所周知,印度、中國和許多其它國家在數學教育上遠遠超過美國。因此我問他在印度如何教授數學。我的問題讓他感到十分困惑,好像學習數學還有別的方法,而這是他第一次聽說似的。

“從書本,通過黑板上的例子(學習數學);還有別的方法嗎?”我向他詢問計算機和電腦的使用方式,這兩種工具在美國的數學教育中應用廣泛。

他對我解釋說,印度高中禁止使用計算機;大學也只允許使用計算機進行基本的計算(如加、減、乘、除、指數、平方根、對數和自然對數);他們反對使用計算機甚至達到這樣的程度:使用計算機可能會招致奚落和羞辱。

這聽起來與美國的教育環境全然不同,在美國,學校如今要求七年級的學生擁有T1-85——一種可能比巡航飛彈的導航系統還更加強大的計算機。

所有這一切歸結於基本的思維方法。編寫代碼(並寫出好代碼)需要某種思維能力。我的多次經驗證明:一旦某種思維方式得以確定,就很難發生改變。對F#而言,當我在經驗極為不足時可以輕鬆學會的思維方式卻因為如今經驗豐富而變得艱難起來。

一所搖搖欲墜的房子建立在優秀的早期教育打下的牢固思維基礎之上,如果我希望建立一幢漂亮的新房子,就必須將其摧毀。但如果我推倒這間危房,至少我還有一個堅固的基礎,乾淨的水井和完整的管道裝置。

那些企圖在鬆軟地基上建立一間搖搖欲墜的房子的人將會遇到嚴重的問題。這也是我為何如此關注普通教育的緣由。

我知道我可以學會F#。雖然我的學習過程要比平常人困難得多,但學會的可能性依然很大。我只是需要一直自我提醒函數語言的運行機制,這樣就不存在什麼問題。

但對於缺乏那種經曆的人而言,缺少基本的思維基礎,他們怎麼能學會它呢?對此我一片茫然。瞭解一種函數程式設計語言是成為程式員的先決條件嗎?當然不是。

許多優秀的程式員並沒有接觸過函數程式設計語言。但是,從這種經曆汲取的思維方法卻異常寶貴。我知道,我學習EdScheme的經曆對我成為一名優秀的程式員大有裨益,即使一段時間以來我一直陷入“通用OO語言”的怪圈之中。

所以,與印度朋友交談後,我感到十分擔心。在我看來,印度、中國和其它許多國家的學校似乎為他們的學生打下非常優質的普通教育基礎。

我看著我的兄弟姐妹(我比他們大得多)學習的“數學”,我可不希望讓我的孩子接受這種糟糕的“教育”(我還沒有正式成為父親,但幾天或幾個星期後就會做父親!)我喜歡看到人們接受最好的教育。電腦和進階計算機打下的數學基礎並不能使你成為一名優秀的程式員。

我想,一旦我完成這段F#經曆(我希望瞭解更多內容,以便評估它在現實編程中的適應性),就該是返回基礎理論的時候了。幾個星期以前,一名讀者推薦了幾本ER Tufte的書籍,我想我應以此為起點。

在我當前的任務中,自己動手的編程工作已減到最少。我需要再次溫習我的編程原理,盡量做到最好。

來源:http://www.builder.com.cn/2007/0601/405708.shtml

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.