w******p 发帖数: 166 | 1 your input is definitely different than mine, my log lines are all very long
, thousands of chars each line.
with Perl I don't need to do the filtering to check if the search candidates
are within the first 30 chars, with Haskell I have to make code much more
lengthy and harder to read to try to be on par with Perl.
同样的事情 for me is to get my result as soon as could be operating on my
long log-line files, perl one line vs. Haskell multi-line ugliness I had to
do -- perl one-liner sufficient, and ... 阅读全帖 |
|
w***g 发帖数: 5958 | 2 monad transformer我一直没练到可以自己写程序的地步, 而不用monad transformer貌
似能做的事情很有限. 我觉得是monad子语言设计的问题. 比如两个带I/O的功能A和B,
procedural language里面可以平等共存, haskell里就得变成不对称的
MonadATransformer套到MonadB上或者反之, 人为引入了不对称性. 一旦有了这种不对
称性, 功能一多就想不清楚了. 而且你要是去看眼Haskell那些应用程序的源代码, 其
实每一个都是用imperative的子语言写的, 跟functional programming P关系都没有.
Haskell语言本身没有问题, 以后完全有可能有人能设计出比monad更加intuitive的
paradigm. 但是我觉得functional programming这个提法有问题. 我有一个猜想: 一
个程序里面本质上可以用functional programming完成的功能, 都可以放到编译阶段完
成(C++的template系统基本上在数学上可以和Haskell等价,就是目前... 阅读全帖 |
|
c*******0 发帖数: 5247 | 3
从上个世纪不知道多少年代开始,从LISP到Haskell,大家都是说“有潜力成为最好的
xxxx”。
潜力这玩意太虚了。大家搞点实际的吧,做一个最好的web framework吸引人用才是正
道。现在haskell社区的大部分人就是成天嘴上说,挺没意思。
我2,3年前就把learn yourself a haskell整个读了一遍,写了一些小程序,但实在是
平时没有任何场景能用到Haskell,最后就扔了。周围无人使用,要让别人看吧,都没
啥理由,性能没有优势,上手速度慢,维护难度大。
现在已Haskell为首的FP,给编程语言社区最大的贡献就是让一些新语言集成一些FP的
feature,而且还都在swift或者rust这种没有被证明过的语言上,仅此而已。Haskell
社区,叫嚷自己是最牛逼语言的人的比例是最大的,看不起Lisp,看不起Scala,更看
不起传统语言。我说大家豪气冲天这点很好,别眼高手低。现在除了金融行业一些企业
用,别的任何领域没有任何有影响力的项目。这你让普通coder怎么说服manager接受新
语言?
关于这个web framework吧,还是那句话,写一个... 阅读全帖 |
|
a*****e 发帖数: 1700 | 4 工业界主要是银行,比如 Goldman Sachs, Merril Lynch, Standard Chartered, Jane
Street, 和一些更小的 Hedge Fund.
然后 Facebook 最近把 Haskell/GHC 的主要作者之一 Simon Marlow 给挖走了。
Realworld Haskell 的作者之一 Bryan O'Sullivan 也在 Facebook 做了快一年了吧。
Twitter 用 Scala (和 Clojure ?),Ericsson 用 Erlang,还有用 FP 的多是一些小
的公司。关注工业应用的可以上 CUFP.org 去看看。
学术界就多了,不一一列举。如今学术界 FP 这一块最前沿的研究 90% 都是在
Haskell 及其衍生的语言上做的,这也可以作为一个学习 Haskell 的理由。
Haskell 另一个工业界适用的领域是 Domain Specific Language 的实现和嵌入,有
type system 的帮助,和各种抽象模式 (functor/monad/arrow/etc.) 的运用,在这方
面表... 阅读全帖 |
|
w***g 发帖数: 5958 | 5 二爷你还是别折腾haskell了。我几年前折腾过一阵haskell,没啥用还在其次,关键是
学了这个以后再看啥都不怎么顺眼了。
其实那个IO monad,本质上来说还是procedural的,不信你随便找个带网络通信的
haskell代码看,大段大段的披着functional
马甲的procedural code。下面随便贴几行用haskell写的gitlib里面的代码为证。
Monad transformer这东西我现在已经忘了怎么回事了,不过if-then-else-throw还是
直接就能看懂的。这段代码用C++/java/python哪个写都会看起来比haskell更加清楚。
copyCommit cr mref needed = do
let oid = untag cr
sha = renderOid oid
commit <- lift $ lookupCommit cr
oid2 <- parseOid sha
if HashSet.member sha needed
then do
l... 阅读全帖 |
|
a*****e 发帖数: 1700 | 6 你那行 perl 显然做的不是同一件事情。如果做和 perl 同样的事情,以下是 Haskell
程序:
main = parse >>= mapM_ (putStrLn . show)
parse = readFile "records" >>= return . concat . map (takeOut . words) .
lines
where
takeOut x = let v = (x!!1,x!!2,x!!29,x!!27,x!!32,x!!33,x!!49)
in [(x!!1,v), (x!!2,v)]
以下是 Perl 程序:
my $filename = "records";
open (my $fh, $filename)
or die ("could not open file '$filename'");
while (my $row = <$fh>) {
my @x = (split(/ /, $row))[1,2,29,27,32,33,49];
print "($x[1], @x)\n";
... 阅读全帖 |
|
b***e 发帖数: 1419 | 7 Ah? Haskell has OO, please teach me. I'm not a professional Haskell
programmer, but I think I am proficient enough, and I never knew Haskell
developed OO mechanisms. Is it recently?
BTW by Haskell, we either refer to Haskell98 standard, or GHC, not the 10
million other dialects, like Hugs, O'Haksell, O'Hug...
etc.
it
means.
do
are |
|
r*******n 发帖数: 3020 | 8 以前看过haskell实战的人说,如果你用haskell做实际项目,
至少60%的code是monad,也就是说的妖怪,俺也是不喜欢这个
东西, 不知道热爱haskell的怎么接受的。
纯haskell确实看着比较漂亮
type |
|
r*******n 发帖数: 3020 | 9 以前看过haskell实战的人说,如果你用haskell做实际项目,
至少60%的code是monad,也就是说的妖怪,俺也是不喜欢这个
东西, 不知道热爱haskell的怎么接受的。
纯haskell确实看着比较漂亮
type |
|
a*****e 发帖数: 1700 | 10 Haskell 并发性能强于 erlang 和 go 好不好,整个 runtime 和 GC 的质量都高不止
一个档次。Erlang 的长处是 distributed fault tolerance,不是单机并发性能。
而且取决于你什么应用,追求速度的 HPC 应用显然都比 java 快多了。
Haskell 的短板在于对程序员要求高,理论层面不搞清楚,写不了 Haskell。这基本无
解,写“显然正确的程序”,和用什么语言关系不大,写的人本身得有那个水平才行。
Haskell 的门槛在于,水平没达到,程序本身都组织不出来,更不要说后面的编译和调
试了。 |
|
a*****e 发帖数: 1700 | 11 原来你说的是简单的 dom parser,Haskell 里面这种库也有:
http://community.haskell.org/~ndm/tagsoup/
文档也比较全面,例子什么的都不缺。
其实这些也没什么好比的,我用流式处理是因为有这方面学习需要,之前没做过,用用
试试看,感觉上手并不难。
我的观点无非是,Haskell 上手有 entry barrier,过了这个坎,后面都还好。基本要
用的库都能找到。有些文档欠缺的,对我来说不是大问题,看看 type signature 基本
上就能明白怎么用。
我也不鼓励别人抛弃现有的语言工具来学习 Haskell,除非是有 type safety 的刚性
需求,否则用什么都差不多。
谓。 |
|
w***g 发帖数: 5958 | 12 Haskell曲高和寡,感觉发明这个语言不是为了解决实际问题。楼主还是别折腾了。我曾
经花不少时间研究haskell的monad到底是什么意思,最后还是没有练到可以使用的水平
。fu
nctional language限制太强,以至于一般语言中很容易实现的东西都需要引入非常深奥
的数学概念才能勉强解决。functioinal language前段时间又有点抬头是因为多核处理
器和集群计算的兴起对并行语言的需求。其实是否可并行化是由问题本身决定的。有些
问题本质上不可并行,用functional language即使极其艰难地实现了其实还是不能并行
的。
我同意python should DIE。haskell从来就没正经活过。
it is
at |
|
b***e 发帖数: 1419 | 13 Oh, really? How would that be?
If you mean Java Generics (which is new and ugly BTW), then Haskell probably
helps a little bit. But for the major OO concept, I don't see any help
from Haskell. Haskell does not have any OO, which determines its doomed
destiny. |
|
I*******e 发帖数: 1879 | 14 ☆─────────────────────────────────────☆
wdong (cybra) 于 (Tue Jan 27 13:02:50 2009) 提到:
我刚开始看haskell的时候感觉非常浪漫,就跟谈恋爱似的,一切都是那么简洁优美。一
直
读到调性能那块,才发现开始的那些都是幌子。用那套简洁优美的语言写的东西不但运
行极
慢而且内存开销极大(space leak)。然后他们告诉我haskell也能写高性能的程序,但是
得
用另外一套语言(比如说不能用foldl,要用foldl' -- 把性能好的那个加上撇藏起来等
最
后才给你看,可见用心险恶)。而且他们告诉你理论上来说有些优化是可行的,但是你
要用
的话还要等等,因为相关的理论还在研究中。然后你在写程序的时候要到处担心在一个
函数
前到底是要加~还是要加!,真是令人发指!
版上的牛人出来拍砖吧,希望我说的那些都不是真的。我已经在haskell上面花了好多时
间
了。。。
☆─────────────────────────────────────☆
Xentar (思考猪) 于 (Tue Ja |
|
w***g 发帖数: 5958 | 15 你有什么实际的需要要用haskell的. 就我的理解,haskell在性能上并不比C/C++好. 所
谓的并行化什么的都是噱头. C++的template meta programming跟haskell基本上是一个
东西, 但更实用. |
|
n****1 发帖数: 1136 | 16 monad的却有不对称的问题, 但是那是由它的数学结构决定的,Haskell也没办法哦.
其实monad早就不是唯一的选择,譬如写parser,monad的限制就太强了. Alternatives有
functor/applicative functor/arrow/iterable这类的啊. 而且applicative functor
应该是对称的. 现在的parser很多用arrow, 比如hxt(xml parser).
关于do block:
haskell官方wiki里面是不鼓励大家滥用do block的, 的却, do block很多情况可以
被>>=代替.
但我个人觉得完全不是问题啊! Haskell所有东西是immutable的,也就是说referential
transparency在do block里面也能保证, 那这玩意就算再像imperative些(其实骨子里
还是FP),再丑陋些, 也不会影响逻辑或者程序的正确性吧.
换句话说,如果c语言没有指针,所以变量都是immutable,那c也是FP.
,
), |
|
n****1 发帖数: 1136 | 17 Seriously? Haskell on client side, you got to be kidding me.
And since when did embedding haskell into C become a good idea?
Technically, Haskell has Clang/LLVM backend. |
|
n****1 发帖数: 1136 | 18 That is not going to happen. Even I would say NO.
不是每个人都喜欢数学的, haskell是试验田, 是长见识的一种途径。 这个就像物理
与工程的关系一样, 你不能指望建筑工人都懂力学吧。
Haskell的社区是有学界支持的, 虽然不流行,但也不会死, 保持research oriented
的心态, 不愁没有新鲜血液加入。 F#没准哪天就挂了。
个F
haskell |
|
d******e 发帖数: 2265 | 19 你这个例子不好。
用python的话,我用scrapy写。框架都有了,最后作个写filter 搞定。还是基于
twisted的,效率也不错。
haskell我还没有狗到任何框架,但是简单的也是一个html table parser的事情。
如果有高性能的爬虫框架的需求,也许haskell 更有优势,但是,一般来说,后面的
filter非常简单,以至于用python写也很难出错,看不出haskell在这个方面有什么理
论上的好处。
Re: 请推荐几个编程用的字体 (30b)(0/16) YHFG Jun 19
103349 ├ Re: 请推荐几个编程用的字体 (57b)(1/14) YHFG
Jun 19
103350 ├ Re: 请推荐几个编程用的字体 (25b)(0/17) TheMatrix
Jun 19
103351 ├ Re: 请推荐几个编程用的字体 (16b)(0/12) rodney
Jun 20
103352 ... 阅读全帖 |
|
w***g 发帖数: 5958 | 20 从审美角度讲和Haskell比scala就是垃圾。Haskell有一个明确的核心子集,简化得不
能再简化,然后外加一点点语法糖,基本上能模拟procedural programming。Scala基
本上就是个全堆程序语言,大家有我也有的,连XML都可以直接写在程序里,我觉得寿
命长不了。这两个基本上可以代表编程语言的两个极端了。
学过机器学习的人可能知道,用来表达模型的"语言"越简单,generalization error
就越小。其实计算机语言也一样。靠流行啥就往里面加啥是和scalability反其道而行
的,比如scala里面的xml模式就是一个典型的例子。相反的做法是设计一种尽可能简
单的语法(Haskel的模式匹配)可以表达现有的各种模式,那么将来出现新的东西能
用这种语法表达的可能性也就越大。 |
|
|
c*******9 发帖数: 9032 | 22 朋友的动态页面的网站屡屡遭攻击,如果用haskell写是否好些? 一是多数黑客对
haskell不熟悉,二十haskell的
严格类型检查。 |
|
k***r 发帖数: 4260 | 23 i don't know much about these languages. haskell could be more
mature than the other languages because i've seen people who came from
ocaml to haskell...maybe there's some advantages to it.
asshole? As for lisp, any paren-matching tool in modern editors will help,
e.g., emacs/vim. |
|
n******t 发帖数: 4406 | 24 学Haskell我的感觉是,绝对比C,C++之类的东西简单。
欧洲很多大学计算机系一年级第一门语言就是haskell,
这里面还N多,非计算机专业的副修学生。
当然设计这么一个语言是另外一回事。
我曾
fu
深奥
并行 |
|
a******e 发帖数: 982 | 25 haskell irc 裡的人非常願意幫助, 去那裡問問吧。
real world haskell 三個作者一天到晚都在上面回答問題。 我也常
上去問些 newbie 蠢問題。 |
|
s*******n 发帖数: 344 | 26 学了一圈lis, haskell, ruby ,python, lua.发觉还是后两者比较有用
lisp, haskell再活。貌似公司里也没有用这个的。
PYTHON用的非常多,LUA也很多。 |
|
r*******n 发帖数: 3020 | 27 Haskell语言很漂亮,但是monad太丑了,如果直接采用python语法或者ruby就好了。
你后面的猜想俺没有看懂,FP怎么可以在编译阶段完成?
c++ template 充其量算个lisp里的macro,跟haskell语言是不能等价的。
,
), |
|
E*****m 发帖数: 25615 | 28
這幾乎無解, Haskell/Clojure 對大部份人來講就是 Black Magic, 很難說服人家
和你一起用。 大部份成功例子都是在新公司,年輕人比較願意學新的。
折衷一點,你可以用 Scala。 你可以只用 Functional/Immutable 部分, 當作
用不了 Haskell 的安慰劑。 哈哈! |
|
h***s 发帖数: 1716 | 29 Sorry I have to type in English here.
I wouldn't worry about Haskell's practical usefulness. One point might be
relevant to you is that, complex algorithms/intensive computations and big
data always want the better parallelism and performance. Clojure or Haskell,
which one has the better odd? Did you have any reasonales/data on this kind
of comparison? I would suggest that be a good point to consider. Just a
thought... |
|
E*****m 发帖数: 25615 | 30
Clojure 可以直接用 Java library, Haskell 當然比不上。
本身語言特性來說, Haskell 嚴謹點, Clojure 自由點,各有長處。 |
|
t****a 发帖数: 1212 | 31 Hickey: I think Haskell is a fantastic, awe-inspiring piece of work. I haven
’t used it in anger, but it certainly was a positive influence. Haskell
obviously goes much further than Clojure in pursuing the ideals of
functional programing. In particular they differ in the approach to using
types to enforce things.
连rich hickey都这么说,搞FP的筒子门还有什么犹豫的阿。 |
|
t*s 发帖数: 1504 | 32 对,就是
俺写的第一个Haskell程序
用imperative的话,用我的傻算法,从头到尾就是10000个int
但fp, 因为不让改值,10000次循环就成了1000000000个int
Haskell也不智能,不知道garbage collection |
|
c*******9 发帖数: 9032 | 33 嗯。学这些效果不是那么立竿见影。haskell platform下载慢估计是考验人的耐心。
我如果不是学过一些category theory 也不会想学haskell。 |
|
n****1 发帖数: 1136 | 34 大家都知道脚本语言的开发效率通常高过C/Java这些只能编译运行的语言, 原因包括
1. 不用输入类型, 节省时间。
2. Interactive shell, 能够即刻知道错误, 不用等到编译时再去看那整屏的错误信息
。 而且debug方便.
3. 语法简洁, 没有太多括号。
这些haskell都有. 虽然是强类型, 当haskell的type inference几乎可以自动获取所
以类型。 所以在快速开发时可以不用做type signature. Signature更多是起到注释的
作用。
scala也有interactive shell, 但type inference要弱一些, 只能做local inference
, 没有global inference. 所以还是省不了类型。
clojure括号一大堆, 用interactive shell反而没有用编辑器顺手(shell里面 数括号
就把人数晕了). |
|
|
g*****g 发帖数: 34805 | 36 你这啥眼神?黑highlight的是haskell的快,没highlight的是java快。
这不是haskell快4个,慢6个吗?java小胜还差不多。 |
|
d******e 发帖数: 2265 | 37 我觉得这里面还有一个经济上的考量。
你可以20万请一组废物java 程序员+QA加上1000台机器,
或者
你可以花40万-50万请3,4个haskell高手加上100台机器
那么到底那个更加合算?
特别是,不知道多少java程序员只会摊大饼if else打补丁带来的程序质量下降的损失
,我感觉haskell搞不好要翻盘。 |
|
e*******o 发帖数: 4654 | 38 放心吧。
怎么合算,资本家比你我清楚。
3,4 个haskell高手出的活,不一定有你说的3,4个java废物多,因为,java 的,都
搞定了,haskell的那几个轮子还没造好。哈哈。 |
|
a*****e 发帖数: 1700 | 39 这个例子有什么不好?我来说说自己的实际经验。
我两年前用 shell script (wget, curl, grep, sed, awk) 写了一个微博备份(从网
页登录,抓取所有历史微博、图片及留言)的工具,3个小时左右基本完成。但感觉不
爽,就是个 quick&dirty hack,整体来说用 regex 来做这种事情,程序本身流程很差。
然后我用 Haskell 重新写,包括学习 conduit 的过程,大概用了 6 个小时。对结果
非常满意,直接有流式的 html parser 可用,run in constant memory。而且页面流
程被抽象出来,可读性高多了。fully typed,调试很方便,而且我对程序的正确性和
后续维护也更有信心。后来又稍微改了一下,可以备份整个微群所有帖子和图片。
记得两年前的时候 conduit 刚刚 0.3 发布,和它竞争的那个 pipes 库也刚开始写,
远不如目前成熟。所以你说没有狗到haskell框架,其实还是不熟悉它的生态。 |
|
|
|
a*****e 发帖数: 1700 | 42 Erlang 的优势向来不在运行速度或者 runtime 效率。Go 嘛,等有 concurrent 或者
generational GC 再来说话。
硬要直接比 lightweight thread,只好去看 language shootout 啦,并发能力可以看
thread-ring,慢的表示 thread context-switch overhead 大。
关于 Haskell 做 I/O 并发,有一篇论文可以看看
http://haskell.cs.yale.edu/wp-content/uploads/2013/08/hask035-v
Section 5 报告了通过压测 GHC Concurrent I/O Manager 所发现的 Linux Kernel 关
于 epoll 的 bug. 后面 benchmark 章节有一些和 Ngnix 的比较。 |
|
a*****e 发帖数: 1700 | 43 的确,潜力太虚了,Haskell 永远不会成为主流语言。什么时候明白这点了,什么时候
再来学习一下 FP 吧。
Haskell |
|
|
|
p*****2 发帖数: 21240 | 46 看来看去还是coffee clojure haskell这几个语言舒服
coffee 就是reactor
clojure是stm和csp
haskell也是stm? 还有其他吗? |
|
|
c******o 发帖数: 1277 | 48 Scala是不如Haskell美。这个我也这么认为。
但是,公司里写东西用Scala比Haskell 舒服多了,eco system 改变一切。
BTW, xml将不在scala default 包里。scala其实不想太臃肿。 |
|
p*****2 发帖数: 21240 | 49
先学学,因为学scala的话,感觉还是需要学习haskell。
学的差不多的话可以看看haskell的concurrency,如果好用的话,可上。因为现在除了
node,没有什么其他语言做concurrency满意的。 |
|
p*****2 发帖数: 21240 | 50
do确实就是语法糖,不然都用>>=麻烦死了。
我主要是觉得不学haskell的话,scala很多东西都不能理解透彻。haskell学FP比scala
应该更容易。 |
|