w****c 发帖数: 2667 | 1 各位如果对Functional Programming和Higher Level Abstraction感兴趣的的话,有两
本书和一篇文章是经典中的经典,必看的。而且不管是学哪种语言,都管用的。就是:
1. SICP: http://mitpress.mit.edu/sicp/
2. HTDP: http://www.htdp.org/
3. How To Become A Hacker: http://www.catb.org/~esr/faqs/hacker-howto.html
Some quotes from ESR's "How To Become A Hacker":
(这就是现代的“禅”了:)
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
(这是黑客的信仰:)
So, if you want to be a hacke |
T*****9 发帖数: 2484 | |
w****c 发帖数: 2667 | 3 牛和基础好似不甚矛盾的嘛。据说,牛有两种,一种是能让所有人都懂;另一种是能让
所有人都不懂。SICP貌似前者的。
* The Little Schemer(还有The Seasoned Schemer)也很牛的,同时也很基础的。
* 另外,还可以看看Paul的On Lisp http://www.paulgraham.com/onlisp.html和ANSI Common Lisp。
* 如果哪位同学认为Lisp不Practical,还可以看看Practical Common Lisp http://gigamonkeys.com/book/。
其实,Functional Programming主要是思维方式与传统的Turing Machine不太一样(但
它们是完全等同(Equivalent)的)。SICP主要的贡献实际上就是帮助初学者在入门的时
候就培养好的思维方式,因此它的内容和思想大多可以应用到其他的语言,甚至其他非
Functional Programming语言。所以,有相当一段时间,MIT用SCIP做计算机专业的入
门课程。
还有一个好东西,Good Math的L |
b***e 发帖数: 1419 | 4 一般lisper都会anti Haskell/ML. 这是dynamically typed和statically typed之争。
这文章不提Haskell/Erlang绝不是因为这些语言在文章写时还不够流行。如果说Erlang
还有道理,现在也没红到哪去。但是Haskell可是成名多年。如日中天到谈不上(你见
过哪个functional language如日中天过),但是在业内是尽人皆知的。
【在 w****c 的大作中提到】 : 各位如果对Functional Programming和Higher Level Abstraction感兴趣的的话,有两 : 本书和一篇文章是经典中的经典,必看的。而且不管是学哪种语言,都管用的。就是: : 1. SICP: http://mitpress.mit.edu/sicp/ : 2. HTDP: http://www.htdp.org/ : 3. How To Become A Hacker: http://www.catb.org/~esr/faqs/hacker-howto.html : Some quotes from ESR's "How To Become A Hacker": : (这就是现代的“禅”了:) : To follow the path: : look to the master, : follow the master,
|
n******t 发帖数: 4406 | 5 要红和语言本身其实关系不大,主要是开发平台和功能的问题,这些主要是靠
商业公司推。
其实真的要学点functional programming,又想立刻完成比较复杂的功能,
不如学学Mathematica.
Erlang
【在 b***e 的大作中提到】 : 一般lisper都会anti Haskell/ML. 这是dynamically typed和statically typed之争。 : 这文章不提Haskell/Erlang绝不是因为这些语言在文章写时还不够流行。如果说Erlang : 还有道理,现在也没红到哪去。但是Haskell可是成名多年。如日中天到谈不上(你见 : 过哪个functional language如日中天过),但是在业内是尽人皆知的。
|
n*w 发帖数: 3393 | 6 为什么有了python还要perl?
如果没精通Java,可以用C#代替吧。
"It's best, actually, to learn all five of Python, C/C++, Java, Perl, and
LISP. Besides being the most important hacking languages, they represent
very different approaches to programming, and each will educate you in
valuable ways." |
w****c 发帖数: 2667 | 7 这个就见仁见智了。ESR提到这5种语言,当然有他的道理,不过这也不是一成不变的,
灵活掌握吧。我个人就差Perl了,不过暂时还不打算学它。另外,个人很看好Erlang +
Python。
作为一种语言,C#是相当不错的,认真吸收了不少其他语言的优点;不过从社区的支持
和认同的角度来说,似乎不能替代Java。
【在 n*w 的大作中提到】 : 为什么有了python还要perl? : 如果没精通Java,可以用C#代替吧。 : "It's best, actually, to learn all five of Python, C/C++, Java, Perl, and : LISP. Besides being the most important hacking languages, they represent : very different approaches to programming, and each will educate you in : valuable ways."
|
b***e 发帖数: 1419 | 8 我不这么认为。物竞天择,优胜劣汰。大公司选择支持一个语言是有道理的。我不认为
任何大公司会大规模支持Haskell, 原因很简单,根本找不到足够的人能够弄懂这个。
我很负责任的说,搞Haskell是需要资质的。不是任何阿三/F2们学个一年半载就能蒙事
的。
秀才造反,十年不成。真正能用的language往往不是搞language research的人坐在实
验室里闭门造车出来的,而是业界的强者根据自己多年的经验,真正体会到编程的需求
后搞出来的。我不看好Haskell/Erlang这些东西,因为它们本是一群research为了发
paper自己在YY。这些人大多没真正的干过工业界,根本不明白真正的需求在那里。同
样的语言还包括Scala/ML/Link。
拿link举例子,号称是三位一体,集数据库,中间层和前台界面与一身之大成之器。我
fuck,完全是胡说八道。这些人根本就他妈的们干过真正的web application,不知道
难在哪里,问题在哪里。做了几个toy就以为大成了。不说别的,就但说link/
javascript compilation我根本就不信。随便搞几个cross
【在 n******t 的大作中提到】 : 要红和语言本身其实关系不大,主要是开发平台和功能的问题,这些主要是靠 : 商业公司推。 : 其实真的要学点functional programming,又想立刻完成比较复杂的功能, : 不如学学Mathematica. : : Erlang
|
w****c 发帖数: 2667 | 9 拜托一下,你要批判的话也要有针对性和专业精神嘛,具体说说好在哪里、不好在哪里
。另外,你要批Haskell/Link/GWT的话,尽管批,不过不要一竿子打倒一船人。
你在另外那篇的回帖里提到,Python/Ruby都不算Functional Programming语言,因为
只有First class functions的支持。难道你要忽略Python的Lambda支持?要知道,一
个Lambda就可以成为整个Functional Programming的基础了。而且,实际上具体的语言
并不重要,重要的是这种不同的思维方式。最近,许多“传统”和新兴语言都在竞相加
入对Functional Programming的支持,包括C#、Java等等,这也说明,这已经早就突破
了Research的范畴了。
说到大公司的支持,对C/C++、Java等的支持,更多的是历史和社会经济的原因,并不
是技术的原因。比如,IBM在WAS/RAD上挣了这么多,他们是不会放弃Java,而主动支持
Functional Programming,这也是可以理解的。
但是,新兴的公司可不管这些,也不吃着一套。比如, |
r*********r 发帖数: 3195 | 10 HTDP 是给中学生看的,谁有那个耐心去看啊。别浪费时间了。
SICP 也是给本科低年级的看的,基本上是 cs101, cs102的内容。
要学scheme语言本身,把他那个 R5 report 看一下倒是很有用。 |
|
|
w****c 发帖数: 2667 | 11 得,你老这一下,把99.99%的H1B和F2都给吓跑了,就剩您老一人玩了。:-D
【在 r*********r 的大作中提到】 : HTDP 是给中学生看的,谁有那个耐心去看啊。别浪费时间了。 : SICP 也是给本科低年级的看的,基本上是 cs101, cs102的内容。 : 要学scheme语言本身,把他那个 R5 report 看一下倒是很有用。
|
r*********r 发帖数: 3195 | 12 不是吗?sicp 是 mit 6.001这门课的教材。什么是001? 那就是本科入门课。 |
w****c 发帖数: 2667 | 13 没说不是,没说不是,我在4楼里也说过这个的的。这个帖子不就是想跟大家说说*入门
*的方向嘛。要提高,还得你老来说,哈哈。
【在 r*********r 的大作中提到】 : 不是吗?sicp 是 mit 6.001这门课的教材。什么是001? 那就是本科入门课。
|
r*********r 发帖数: 3195 | 14 大部分人都是先学的imperative language,而且也够用了。
接触functional 很多只是好奇,或者要上programming language的课不得已。
这种情况下,去翻那些给本科生用的教材,不是找罪受吗。啰嗦了半天,
都是一些老概念用新名词重写一遍。解的题也不过是八皇后,迷宫之类的。 |
g*****e 发帖数: 87 | 15 Ericsson SGSN control plane is all programmed by Erlang, about 5~6 million
lines of code. It is the best selling SGSN in the industry, about 50% the
market share. |
b***e 发帖数: 1419 | 16 * 我没说ruby/python不好。我本人是ruby的fans。我只是说它们不能作为严格意义上
的函数式语言。在学术界,大家认为Haskell/Lisp/ML/Ocaml/Erlang是函数式语言,但
没有人认为ruby/python是。不是有lambda就是funtional language。
* Ruby on Rails并没有颠覆任何东西,它只不过是把复杂的java based web
framework搬到scripting language上的一个先驱。python/php/perl/any script
language can do the same thing. It's not a language specific thing at all.
* Google only uses Python because they suck, not because python is
particularly better than other languages in any sense.
* map/reduce is just a term. It roots
【在 w****c 的大作中提到】 : 拜托一下,你要批判的话也要有针对性和专业精神嘛,具体说说好在哪里、不好在哪里 : 。另外,你要批Haskell/Link/GWT的话,尽管批,不过不要一竿子打倒一船人。 : 你在另外那篇的回帖里提到,Python/Ruby都不算Functional Programming语言,因为 : 只有First class functions的支持。难道你要忽略Python的Lambda支持?要知道,一 : 个Lambda就可以成为整个Functional Programming的基础了。而且,实际上具体的语言 : 并不重要,重要的是这种不同的思维方式。最近,许多“传统”和新兴语言都在竞相加 : 入对Functional Programming的支持,包括C#、Java等等,这也说明,这已经早就突破 : 了Research的范畴了。 : 说到大公司的支持,对C/C++、Java等的支持,更多的是历史和社会经济的原因,并不 : 是技术的原因。比如,IBM在WAS/RAD上挣了这么多,他们是不会放弃Java,而主动支持
|
w***g 发帖数: 5958 | 17
严重同意。
【在 b***e 的大作中提到】 : * 我没说ruby/python不好。我本人是ruby的fans。我只是说它们不能作为严格意义上 : 的函数式语言。在学术界,大家认为Haskell/Lisp/ML/Ocaml/Erlang是函数式语言,但 : 没有人认为ruby/python是。不是有lambda就是funtional language。 : * Ruby on Rails并没有颠覆任何东西,它只不过是把复杂的java based web : framework搬到scripting language上的一个先驱。python/php/perl/any script : language can do the same thing. It's not a language specific thing at all. : * Google only uses Python because they suck, not because python is : particularly better than other languages in any sense. : * map/reduce is just a term. It roots
|
b***e 发帖数: 1419 | 18 * 我没说ruby/python不好。我本人是ruby的fans。我只是说它们不能作为严格意义上
的函数式语言。在学术界,大家认为Haskell/Lisp/ML/Ocaml/Erlang是函数式语言,但
没有人认为ruby/python是。不是有lambda就是funtional language。
* Ruby on Rails并没有颠覆任何东西,它只不过是把复杂的java based web
framework搬到scripting language上的一个先驱。python/php/perl/any script
language can do the same thing. It's not a language specific thing at all.
* Google only uses Python because they suck, not because python is
particularly better than other languages in any sense.
* map/reduce is just a term. It roots from the list operations from
functional languages, and in particular, from the church encoding of list
data structure. reduce is also commonly called foldr in functional academia
. But hell, they have VERY little to do google map/reduce. They just
borrow the name.
* Yahoo is using Erlang, that's pretty interesting. But let me tell you
what, whatever Yahoo does, they fuck it up. No one would be ethusiastic in
playing with Erlang while they don't know whether they need to come to work
tomorrow.
【在 w****c 的大作中提到】 : 拜托一下,你要批判的话也要有针对性和专业精神嘛,具体说说好在哪里、不好在哪里 : 。另外,你要批Haskell/Link/GWT的话,尽管批,不过不要一竿子打倒一船人。 : 你在另外那篇的回帖里提到,Python/Ruby都不算Functional Programming语言,因为 : 只有First class functions的支持。难道你要忽略Python的Lambda支持?要知道,一 : 个Lambda就可以成为整个Functional Programming的基础了。而且,实际上具体的语言 : 并不重要,重要的是这种不同的思维方式。最近,许多“传统”和新兴语言都在竞相加 : 入对Functional Programming的支持,包括C#、Java等等,这也说明,这已经早就突破 : 了Research的范畴了。 : 说到大公司的支持,对C/C++、Java等的支持,更多的是历史和社会经济的原因,并不 : 是技术的原因。比如,IBM在WAS/RAD上挣了这么多,他们是不会放弃Java,而主动支持
|
w***g 发帖数: 5958 | 19
严重同意。
【在 b***e 的大作中提到】 : * 我没说ruby/python不好。我本人是ruby的fans。我只是说它们不能作为严格意义上 : 的函数式语言。在学术界,大家认为Haskell/Lisp/ML/Ocaml/Erlang是函数式语言,但 : 没有人认为ruby/python是。不是有lambda就是funtional language。 : * Ruby on Rails并没有颠覆任何东西,它只不过是把复杂的java based web : framework搬到scripting language上的一个先驱。python/php/perl/any script : language can do the same thing. It's not a language specific thing at all. : * Google only uses Python because they suck, not because python is : particularly better than other languages in any sense. : * map/reduce is just a term. It roots from the list operations from : functional languages, and in particular, from the church encoding of list
|
m****a 发帖数: 2593 | 20 呵呵
但是,新兴的公司可不管这些,也不吃着一套。比如,
* YouTube就基本上整个是用Python写的。
* Google内部,Python也用得很广的,Norvig老大就把Python当牙刷用的;前不久发布
的AppEngine目前只有Python接口。Google吃饭的老本钱之一的MapReduce也是一种
Functional Programming的特性的一个C++的实现。
* 还有RubyOnRail(Django也是)也基本上颠覆了“传统”的Web开发。
* Delicious在Yahoo刚刚完成了用Erlang的全面重写。注: Erlang的发展道路十分曲折
,现在看起来,在Multi-core、Many-core和Cloud的时代,它绝对是一个利器。
【在 w****c 的大作中提到】 : 没说不是,没说不是,我在4楼里也说过这个的的。这个帖子不就是想跟大家说说*入门 : *的方向嘛。要提高,还得你老来说,哈哈。
|
|
|
d*******r 发帖数: 3299 | 21 感觉跟以前看的王垠同学推荐的资料类似, 也是从 SICP 看起
【在 w****c 的大作中提到】 : 各位如果对Functional Programming和Higher Level Abstraction感兴趣的的话,有两 : 本书和一篇文章是经典中的经典,必看的。而且不管是学哪种语言,都管用的。就是: : 1. SICP: http://mitpress.mit.edu/sicp/ : 2. HTDP: http://www.htdp.org/ : 3. How To Become A Hacker: http://www.catb.org/~esr/faqs/hacker-howto.html : Some quotes from ESR's "How To Become A Hacker": : (这就是现代的“禅”了:) : To follow the path: : look to the master, : follow the master,
|
z****e 发帖数: 54598 | 22 ror真心谈不上颠覆
java那帮人早在00年就作出了struts
远比ror要早四年实现mvc,比django要早五年
改点语法不算啥,核心构架是一样的就谈不上颠覆
最初的颠覆应该是cgi->php,然后jsp抄袭php,asp一年后也抄了
这样可视化通过在html中插入逻辑代码而不是在逻辑代码中插入html
成为主流的web开发模式
然后是mvc的颠覆,触发点是
jsp&servlet->mvc,同期甚至搞出了ejb这么神奇的东西
mvc里面就可以直接把service->ejb,ejb连接口都定义好了
但是太过于复杂和超前,所以ejb一直都没有掀起太大波澜
ejb就是今天npm那些的prototype,idea是一样的
但是mvc还是比较颠覆的,相比之下,php就显得很无能
因为逻辑代码和html等无法分离,比较乱,mvc可以
struts比较早实现了mvc,然后ror,django这些,这些玩意本质上是一样的
作为一个证据,其实ror可以在安装了jruby的j2ee容器中使用
同样,django也可以在安装了jython的j2ee容器中使用
ibm一些产品就支持这两个东东,一样的嘛
然后是async的颠覆,eventmachine,twist,node这些
主要是把mvc给改了以提升效率,这期间脚本通过单线程,fp通过immutable来实现
但是都比较浪费,无论是多线程还是mutable,都相对省资源
而好容易通过async节省下来的资源,都被单线程和immutable给浪费掉了
所以一般async的使用集中在web层面,不深入进去,一旦深入还是要用sync的方式
所谓worker就是传统sync的模式
然后vert.x再把传统并发的优势和多线程以及mutable的这些优势都给融合起来
作出了一个牛逼的架构,甚至还把npm以及ejb等这种比较笨重的打包方式给淘汰掉了
当然还会继续支持,但是不再是core的一部分,有兴趣的人可以通过额外的extension
予以加载
但是从本质上说,web是一个很简单傻瓜的东西,谈不上什么高科技
无非就那么一回事,初中生看明白了构架,背背语法也都能写出来
【在 w****c 的大作中提到】 : 拜托一下,你要批判的话也要有针对性和专业精神嘛,具体说说好在哪里、不好在哪里 : 。另外,你要批Haskell/Link/GWT的话,尽管批,不过不要一竿子打倒一船人。 : 你在另外那篇的回帖里提到,Python/Ruby都不算Functional Programming语言,因为 : 只有First class functions的支持。难道你要忽略Python的Lambda支持?要知道,一 : 个Lambda就可以成为整个Functional Programming的基础了。而且,实际上具体的语言 : 并不重要,重要的是这种不同的思维方式。最近,许多“传统”和新兴语言都在竞相加 : 入对Functional Programming的支持,包括C#、Java等等,这也说明,这已经早就突破 : 了Research的范畴了。 : 说到大公司的支持,对C/C++、Java等的支持,更多的是历史和社会经济的原因,并不 : 是技术的原因。比如,IBM在WAS/RAD上挣了这么多,他们是不会放弃Java,而主动支持
|
z****e 发帖数: 54598 | 23
最后一句太精辟了
人家把app做出来都更新5-6个版本了
他还在八皇后,数独
fp太华而不实了,就跟hpc一样
很高大上,其实是千老的走向
人生苦短,抓紧时间赚钱,做点自己感兴趣的事情才是王道
oop搞定完全可以开始工作和创业了
【在 r*********r 的大作中提到】 : 大部分人都是先学的imperative language,而且也够用了。 : 接触functional 很多只是好奇,或者要上programming language的课不得已。 : 这种情况下,去翻那些给本科生用的教材,不是找罪受吗。啰嗦了半天, : 都是一些老概念用新名词重写一遍。解的题也不过是八皇后,迷宫之类的。
|
g****v 发帖数: 971 | 24 说句冒犯的话,你就是努力使这个语言看起来更复杂更可怕。难道你用relational
database的时候还需要学习relational algebra么?
【在 w****c 的大作中提到】 : 各位如果对Functional Programming和Higher Level Abstraction感兴趣的的话,有两 : 本书和一篇文章是经典中的经典,必看的。而且不管是学哪种语言,都管用的。就是: : 1. SICP: http://mitpress.mit.edu/sicp/ : 2. HTDP: http://www.htdp.org/ : 3. How To Become A Hacker: http://www.catb.org/~esr/faqs/hacker-howto.html : Some quotes from ESR's "How To Become A Hacker": : (这就是现代的“禅”了:) : To follow the path: : look to the master, : follow the master,
|
l******t 发帖数: 55733 | 25 还真不是。lambda,combinator就算把wiki的几个条目都看一遍自己推一遍都强很多
【在 g****v 的大作中提到】 : 说句冒犯的话,你就是努力使这个语言看起来更复杂更可怕。难道你用relational : database的时候还需要学习relational algebra么?
|