我想自學haskell無其他語言基礎 我該怎麼學 有什麼推薦的教材嗎?
首先我好奇一個沒有其他語言基礎的人, 會有什麼原因主動想學 Haskell.
然後我想提醒下不會寫代碼但是又想學寫代碼的童鞋在 Peter Norvig 的 Teach Yourself Programming in Ten Years 里提到的選擇語言的建議:
Use your friends. When asked "what operating system should I use, Windows, Unix, or Mac?", my answer is usually: "use whatever your friends use." The advantage you get from learning from your friends will offset any intrinsic difference between OS, or between programming languages. Also consider your future friends: the community of programmers that you will be a part of if you continue. Does your chosen language have a large growing community or a small dying one? Are there books, web sites, and online forums to get answers from? Do you like the people in those forums?
翻譯: (via 4G Spaces)
朋友在用的. 當 人們問我:」我該用什麼操作系統的時候」, 我通常的回答是:「用你朋友用的」. 這樣的好處是從朋友那兒學習可以彌補複雜的操作系統差異或者編程語言差異(給你造成的困惑)。這裡也要考慮你未來的朋友:如果你一直使用的話,開發社區會 是你的朋友。你選擇了一個具有有巨大的增長的開發社區還是一個小的快消失的開發社區的語言? 它有相關的書,網站和論壇可以獲取解答么? 你喜歡那些論壇上的人么?
其實 Haskell 相對與 Python, Ruby, PHP, Javascript 這些"流行"語言來說還是不那麼 approachable
最後推薦一個學習的網站: CodeWorld , 用類 Haskell 的語言來畫下畫寫下遊戲之類的. 同時整個項目前後端都是用 Haskell 寫的 google/codeworld (GHCJS + GHC)
還有 作者在 BayHac 2017 的 talk https://goo.gl/w2wCIP (自帶梯子):
http://haskellbook.com
edx 有 Erik Meijer 的課程,配套書籍是 hutton 的 Programming in Haskell,很精練的一本。之後可以看 Real World Haskell
另外就是 https://github.com/bitemyapp/learnhaskell/blob/master/README.md主要是 cis194 data61 cs240h
恕我直言,趣學指南對於一般人來說是本難度梯度相當不合理的書,前面太簡單,後面又會讓人不知所云。這本書出名一方面就是讓很多人能愉快地看完前幾章……然後就沒有然後了。建議刷一刷這個[functional language](https://www.inf.ed.ac.uk/teaching/courses/inf1/fp/),有videos以及assignment, 或許有用
programing functional in scala
我或許可以手動at很多大佬(都是作者),,但是去jd亞馬遜,,有中文版的書都可以,,亞馬遜上那幾本只有英文電子版的書不是入門的(也不便宜。,。)
最實用的 haskellwiki(http://wiki.haskell.org)
亞馬遜或京東上都是有賣的書的,,
(所有的書,都是不可能看一遍完事,反覆的看,,不可能一遍看懂的)趣學指南(Learn You A Haskell for Great Good) 和 Haskell 函數式編程基礎 (Haskell: The Craft of Functional Programming) 這兩書,我個人感覺是比較不錯的,講的已經很通縮易懂了(後者我看的是英文影印版。。) 可以一看 講的內容不深,,但是都是世界內的東西(這裡是指都是Haskell 語言的世界,涉及到一些IO,套接字之類的世界,很少)
然後是張淞(應該沒寫成我們大一的高數老師的名字。。)和韓冬兩位前輩書,(兩位大佬據說均在知乎),張的書涵蓋了一些較深的內容,我個人感覺書裡面內容的難度有一種斷崖式的上升,但是幹活對於當時的我,還是蠻多的,,而韓的書,買回來還沒有細看。。只是把特別感興趣的內容和目錄看來,給我有點 像 Real World Haskell 的感覺,,覆蓋的內容比較全,,世界內和世界外的東西基本都涉及了。。
然後是 Real World Haskell 國內沒有出版,,也老的不得了,但是,很多章節還是可以借鑒的。
{下方高能}{不負責任地瞎寫}
極度建議除了Haskell有關的內容之外,其他的相關內容比如範疇論,也可以看看,,下面的內容在起飛階段是一種輔助的內容。。
GHC Users Guide 對高級內容的解釋,對新手,還算友好,,
真正有效的是 HaskellWiki 上面涵蓋的還是比較全的內容
{未完}我好奇,題主是如何知道Haskell,並堅定要學的。
一般高Haskell的,不都應該是有3,4門語言基礎,對比一圈之後,才堅定的「我不管,我不管,我就是要用Haskell」的信仰么。
沒有被OO虐過的FP教徒,就好像沒有經歷過試煉一樣,是不夠虔誠的。&<&
邏輯與計算 (邏輯的小站)
不要害怕數學理論,不要害怕沒有編程過。
先在網上找資料隨便看;然後真想系統地學習,你就自然而然知道要看什麼書了。
學習是個循序漸進的過程,你不可能想通過一本好書就學到某個領域的全部。
從來不存在這樣的書。
唯一的途徑就是:多讀書(非正常人可能不適用)。
讀這個領域相關的很多書:不同層次的書;同一層次不同方面的書。
Hashshell入門的書:haskell趣學指南(封面有一隻大象的)。
學習這件事最害怕的不是沒有基礎,不是沒有老師,而是熱情的殆盡。
我老師翻譯有兩本Haskell函數式程序設計 (豆瓣) Haskell函數式編程基礎 (豆瓣) ……看著都挺弱智的題主還是先說說自己的數學背景吧,編程零基礎的人也分好多種啊
可以學Haskell,正好我這學期就在學Haskell.可以給你一些建議。
首先關於能不能直接學Haskell的問題。我認為是能,而且是有好處的。我校大一新生是從scheme作為大一新生第一門編程課的。當時我對計算機了解的也沒有那麼深刻。所以可以理解為從scheme入門的吧。然而學完以後對遞歸有了一個很清晰的認識。
為什麼遞歸很重要,甚至比循環重要的多。因為很多優化演算法都是基於遞歸的。遞歸往往能推導出OlongN的演算法。而循環往往是O N起。所以你當然可以再不知道循環是什麼的情況下直接學遞歸。思考問題首先用遞歸而不是循環是一個好習慣。
然後說如何學Haskell. Haskell是一門還算挺友好的語言。基本上作為初學者學到Monad前的部分就可以了。Monad後的內容對於初學者來說意義不大。上面回答的一些書籍都可以參考下。都大差不差。
http://www.learnyouahaskell.com
不要在沒有任何編程基礎的情況下直接學Haskell
不要在沒有任何編程基礎的情況下直接學Haskell
不要在沒有任何編程基礎的情況下直接學Haskell
重要的事情說三遍
我聽說anu就是這麼做的。。用的penn的那門(然而很痛苦
趣學指南
learn you a haskell for great good
題主你好,我是來勸退的。雖然我沒系統學過Haskell 。
Haskell 是一門很優雅的語言。這種優雅就是數學那種優雅。就是一通公式變數概念糊上去問題就已經解決了的那種優雅。
題主既然沒有編程經驗。那學Haskell就好像不知道該抽象什麼,卻直接學了抽象過的各種東西。
連崩的程序都沒寫過就直接學保證編譯通過就沒有類型錯誤的語言?
連 c++ 都沒迷信過,就來迷信Haskell?
過程式都沒學利索就來學函數式的?
數據結構可能都沒學呢就直接來學可變和不可變數據結構的區別?
知識真的是有依賴關係的, 學 Haskell 之前接觸接觸 C/CPP/Java/Python/Scheme/SML。多學點數據結構和演算法。再整點大一數學教材看看。
再來學Haskell 不遲。
如果決心足夠的話 從 category theory 開始吧 不要把編程作為目標 把如何抽象的認識這個世界作為目標
請認真思考是否有以上覺悟,仔細評估是否有實施的可能
| 兩個答案都是肯定的話 = 請繼續往下看
| otherwise = 請不要浪費有限的生命
人類會善意的把大猩猩用樹枝捕捉螞蟻叫做使用工具,但是如果大猩猩勸人類的小孩兒不要去上學直接用樹枝這就非常可笑了
沒有 imperative programming 基礎 對於想要學習 functional programming 的人來說是上天的恩賜
不接觸Monad的建議就好比買櫝還珠
學習曲線會很陡,但所得會非常驚人
推薦閱讀:
※Haskell 狂信徒的 Scala 入坑筆記(1)
※仙境里的Haskell(之四)—— Functor類型類
※函數式編程在Redux/React中的應用
※為什麼諸多編程語言都將模式匹配作為重要構成?
※Haskell中的foldl和foldr的聯繫?