亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5499 | 回復(fù): 7
打印 上一主題 下一主題

haskell學(xué)習(xí)的幾點(diǎn)思考 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-09-22 01:45 |只看該作者 |倒序?yàn)g覽
學(xué)習(xí)haskell一段時(shí)間了,這中間斷斷續(xù)續(xù)磕磕碰碰,到現(xiàn)在也還遠(yuǎn)沒達(dá)到應(yīng)用自如的程度。其實(shí),Haskell并不是一門很難學(xué)的語言,至少其語法是很簡(jiǎn)潔統(tǒng)一的,之所以感覺上比較難入門,我想有一下幾個(gè)方面:

1. 純函數(shù)式范型。本質(zhì)上與常見語言有所不同。

2. 中文資料稀少,而且翻來覆去就那么幾篇數(shù)學(xué)游戲性質(zhì)的介紹。英文的資料倒是不少,不過啃那些書真是太耗精力了。

3. 國內(nèi)應(yīng)用環(huán)境的稀少。缺少實(shí)際應(yīng)用環(huán)境。大的項(xiàng)目直接用haskell不現(xiàn)實(shí),輔助工具可以嘗試,不過經(jīng)常python就搞定了,更快更方便,主要是更熟悉啊。

4. 缺少引導(dǎo),都是自己摸索,加之本人并沒有幾兩理論基礎(chǔ),剛一接觸haskell就見到一堆的lambda演算,beta替換,monad,范疇論之類的東西,很容易溺水身亡。說到這里,我覺得這一點(diǎn),是我走彎路的根本原因:Haskell及其涉及的領(lǐng)域,社區(qū),缺少一個(gè)由淺入深的層次,新人進(jìn)入總會(huì)不知所措,不知深淺,信息超載。一個(gè)初學(xué)者要經(jīng)過不斷的碰壁挫折之后才能理出一個(gè)學(xué)習(xí)的路徑來。而大多主流語言,因?yàn)榍靶姓弑姸啵呀?jīng)給踏出了明晰的路徑來,后來者循序漸進(jìn)即可快速入門,不斷提高。

在此根據(jù)我遇到的挫折與走過的彎路,跟想學(xué)習(xí)haskell的人提供幾點(diǎn)基本建議,因?yàn)楸救艘矊儆趧倓側(cè)腴T階段,所提建議僅供參考。

1. 樹立信心: Haskell 絕對(duì)不是一門“怪異”的語言,當(dāng)你熟悉了他之后就會(huì)覺得:程序就該是這個(gè)樣子的!與C++比較起來,Haskell絕對(duì)要容易的多。
     以應(yīng)用為目的的話,haskell是比較容易掌握和上手的,至少比C++容易。

2. 區(qū)別對(duì)待語言知識(shí)點(diǎn),對(duì)于以應(yīng)用為目的話,就不需要在開始糾纏于lambda演算,Monad定律,范疇論,Arrow什么的。我們用C++的話,寫很久程序也不會(huì)天天糾纏于模板一類的東西。我們用命令式語言,也不一定要深曉圖靈機(jī)的理論。

3. 選擇一個(gè)好用的編輯器,如果之前就會(huì)用emacs的話,最好用emacs,因?yàn)閑macs里haskell的自動(dòng)函數(shù)名補(bǔ)全,縮進(jìn)對(duì)齊等都很好用。

4. 類型是個(gè)好東西,因?yàn)橛幸粯咏?Hoogle 的工具,用hoogle可以根據(jù)參數(shù)與返回值的類型,在不知道函數(shù)名的情況下快速搜索到想要的函數(shù)。

5. 熟悉下基本語法后,就要開始熟悉各種lib。 尤其是熟悉list 的處理,Data.List 模塊中有大量的函數(shù)。Prelude 里的函數(shù)更是要很熟悉。有了大量的函數(shù)打底,就可以構(gòu)建一個(gè)堅(jiān)實(shí)的基礎(chǔ),遇到問題可以多種函數(shù)組合起來,不只提高效率,更重要的是構(gòu)建一種FP解決問題的感覺。

6. Monad,初學(xué)者的攔路虎,我沒啥好說的,如果像我一樣笨的話就先繞過去吧。了解了 do <- 的基本用法后,應(yīng)該就可以實(shí)際用了。并不是每個(gè)用 C++ STL的人都能說清楚模板的使用的。

7. 推薦下 Real world haskell 這本書。大部分Haskell的文檔資料都太學(xué)術(shù)化,缺少與實(shí)際開發(fā)場(chǎng)景的聯(lián)系, real world haskell算是目前最照顧程序員的了。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-09-22 03:41 |只看該作者
我的感受是,不是在實(shí)際工作中需要而學(xué)習(xí)haskell多多少少有些自我感覺良好與好強(qiáng),很難暫時(shí)去放棄某幾個(gè)點(diǎn),比如Monad,但是像Monad這東西初學(xué)者很難徹底理解。

我隔幾個(gè)月想起來就看一眼haskell,大概一年前開始的,現(xiàn)在仍然只能勉強(qiáng)懂一點(diǎn),基本是上面的原因。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報(bào)告]
發(fā)表于 2008-09-22 08:50 |只看該作者
我覺得把常見的 Haskell 運(yùn)算符的優(yōu)先級(jí)搞明白,
會(huì)給 Haskell 句子加括號(hào),就算是已經(jīng)入門了。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-09-22 09:36 |只看該作者
我對(duì)C 的運(yùn)算符優(yōu)先級(jí)也沒搞明白過,所以從來就是加括號(hào)。 haskell 里,我是編譯過按照預(yù)想的輸出執(zhí)行結(jié)果就行,沒刻意注意過優(yōu)先級(jí)。

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
5 [報(bào)告]
發(fā)表于 2008-09-22 09:53 |只看該作者
原帖由 flw 于 2008-9-22 08:50 發(fā)表
我覺得把常見的 Haskell 運(yùn)算符的優(yōu)先級(jí)搞明白,
會(huì)給 Haskell 句子加括號(hào),就算是已經(jīng)入門了。

這只能算是看見門了 離入門還有一段距離

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
6 [報(bào)告]
發(fā)表于 2008-09-22 10:04 |只看該作者
原帖由 albertlee 于 2008-9-22 01:45 發(fā)表
學(xué)習(xí)haskell一段時(shí)間了,這中間斷斷續(xù)續(xù)磕磕碰碰,到現(xiàn)在也還遠(yuǎn)沒達(dá)到應(yīng)用自如的程度。其實(shí),Haskell并不是一門很難學(xué)的語言,至少其語法是很簡(jiǎn)潔統(tǒng)一的,之所以感覺上比較難入門,我想有一下幾個(gè)方面:

1. 純函數(shù)式范型。本質(zhì)上與常見語言有所不同。

這是最關(guān)鍵的。往往許多人在學(xué)習(xí) Haskell 之前就有了 imperative 語言的基礎(chǔ),也習(xí)慣了 imperative programming 的思考方式,突然換到 functional programming 后水土不服。只要思考方式能轉(zhuǎn)過來,其他的就容易很多了。

2. 區(qū)別對(duì)待語言知識(shí)點(diǎn),對(duì)于以應(yīng)用為目的話,就不需要在開始糾纏于lambda演算,Monad定律,范疇論,Arrow什么的。我們用C++的話,寫很久程序也不會(huì)天天糾纏于模板一類的東西。我們用命令式語言,也不一定要深曉圖靈機(jī)的理論。

其他可以先放一下,但是 monad 最好能盡快掌握。因?yàn)榍‘?dāng)?shù)氖褂?monad 可以使你的代碼簡(jiǎn)單易懂易讀許多。

4. 類型是個(gè)好東西,因?yàn)橛幸粯咏?Hoogle 的工具,用hoogle可以根據(jù)參數(shù)與返回值的類型,在不知道函數(shù)名的情況下快速搜索到想要的函數(shù)。

類型系統(tǒng)絕對(duì)是 Haskell 的核心(之一)

5. 熟悉下基本語法后,就要開始熟悉各種lib。 尤其是熟悉list 的處理,Data.List 模塊中有大量的函數(shù)。Prelude 里的函數(shù)更是要很熟悉。有了大量的函數(shù)打底,就可以構(gòu)建一個(gè)堅(jiān)實(shí)的基礎(chǔ),遇到問題可以多種函數(shù)組合起來,不只提高效率,更重要的是構(gòu)建一種FP解決問題的感覺。

這個(gè)多用就好了。另外,學(xué)習(xí) functional programming,光看書/資料是不夠的,你還得親自動(dòng)手寫代碼解決問題才行。

6. Monad,初學(xué)者的攔路虎,我沒啥好說的,如果像我一樣笨的話就先繞過去吧。了解了 do <- 的基本用法后,應(yīng)該就可以實(shí)際用了。并不是每個(gè)用 C++ STL的人都能說清楚模板的使用的。

在熟悉了 Haskell 基本語法后,monad 最好能盡快的啃下來,趕早不趕巧。

7. 推薦下 Real world haskell 這本書。大部分Haskell的文檔資料都太學(xué)術(shù)化,缺少與實(shí)際開發(fā)場(chǎng)景的聯(lián)系, real world haskell算是目前最照顧程序員的了。

Real World Haskell 中也有許多比較深入的內(nèi)容,例如 monad transformer,當(dāng)然對(duì)這些東西的介紹都是從實(shí)用的角度出發(fā),而且這些東西在實(shí)際中也確實(shí)有用。

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
7 [報(bào)告]
發(fā)表于 2008-09-22 10:07 |只看該作者
原帖由 albertlee 于 2008-9-22 09:36 發(fā)表
我對(duì)C 的運(yùn)算符優(yōu)先級(jí)也沒搞明白過,所以從來就是加括號(hào)。  

這個(gè)在 Haskell 中也同樣適用。而且由于 Haskell 是 static strong type system,許多不加括號(hào)導(dǎo)致的優(yōu)先級(jí)錯(cuò)誤直接就是編譯時(shí)錯(cuò)誤。

論壇徽章:
95
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀(jì)念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
8 [報(bào)告]
發(fā)表于 2008-09-22 10:09 |只看該作者
原帖由 mingyanguo 于 2008-9-22 03:41 發(fā)表
我的感受是,不是在實(shí)際工作中需要而學(xué)習(xí)haskell多多少少有些自我感覺良好與好強(qiáng),很難暫時(shí)去放棄某幾個(gè)點(diǎn),比如Monad,但是像Monad這東西初學(xué)者很難徹底理解。

一般而言 FP,特殊而言 Haskell,光看(書/資料)是學(xué)不好的,你還要寫(代碼)。當(dāng)然,看別人的代碼也很有幫助。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP