[TL] Haskell的杀手应用?

1,154 views
Skip to first unread message

Christian

unread,
Apr 22, 2010, 11:25:32 PM4/22/10
to pon...@googlegroups.com

   想请教各位Haskell目前是否有杀手级应用程序?或者说特别擅长的领域,工程或者科学计算的都行。
   因为稍微搜索了一下,没有找到特殊的应用,感觉可以预见的几年之内似乎没有特别突出Haskell优势的方向。

--
因为无知而傲慢,因为有知而谦逊

liuxinyu

unread,
Apr 23, 2010, 2:23:57 AM4/23/10
to TopLanguage
Hi,

为什么一定要有呢?Haskell社群的Slogan: Avoid success at any cost

大家在用数学公式时几乎不会考虑如下的一些问题:

"数学公式是否要有杀手级的应用?"
"数学公式是否有很大的社群?"
"数学公式是否流行,是否过几年就被淘汰了?"
"数学公式是否受某个大公司青睐?"
"学好数学公式是否能找个好工作,薪水会不错否?"
...

我觉得对待Haskell就像对待数学公式一样好了,它是帮助我们思考问题,并表达我们思路和解法的一个方便体系。

几百年前当欧拉,高斯他们兴味十足的研究数论时,谁想到了几百年后的RSA和密码应用呢?
有应用自然很好,没有应用仅仅欣赏它的优美也很好

--
http://sites.google.com/site/algoxy

> --
> Subscription settings:http://groups.google.com/group/pongba/subscribe?hl=zh-CN

Kenny Yuan

unread,
Apr 23, 2010, 2:29:33 AM4/23/10
to pon...@googlegroups.com
敢问你是想借这个找工作?或者想学习它但没有一个很功利的理由说服自己?
--
Kenny Yuan
-->CS, MMA, Psychology, Automobile...
http://twitter.com/kenny_yuan
http://csbabel.wordpress.com/
http://blog.csdn.net/yuankaining/

机械唯物主义 : linjunhalida

unread,
Apr 23, 2010, 2:34:00 AM4/23/10
to pon...@googlegroups.com
能够做“没有用处”的事情是贵族的象征??

2010/4/23 Kenny Yuan <yuank...@gmail.com>

Alleluia

unread,
Apr 23, 2010, 2:44:26 AM4/23/10
to TopLanguage
Haskell的杀手应用?
有阿,比如C#.

On 4月23日, 下午2时34分, 机械唯物主义 : linjunhalida <linjunhal...@gmail.com>
wrote:
> 能够做"没有用处"的事情是贵族的象征??
>
> 2010/4/23 Kenny Yuan <yuankain...@gmail.com>
>
>
>
>
>
> > 敢问你是想借这个找工作?或者想学习它但没有一个很功利的理由说服自己?


>
> > 在 2010年4月23日 上午11:25,Christian <silvert...@gmail.com>写道:
>
> >> 想请教各位Haskell目前是否有杀手级应用程序?或者说特别擅长的领域,工程或者科学计算的都行。
> >> 因为稍微搜索了一下,没有找到特殊的应用,感觉可以预见的几年之内似乎没有特别突出Haskell优势的方向。
>
> >> --
> >> 因为无知而傲慢,因为有知而谦逊
>
> > --
> > Kenny Yuan
> > -->CS, MMA, Psychology, Automobile...
> >http://twitter.com/kenny_yuan
> >http://csbabel.wordpress.com/
> >http://blog.csdn.net/yuankaining/
>

吴道远

unread,
Apr 23, 2010, 2:58:38 AM4/23/10
to pon...@googlegroups.com
我有个同学用Haskell做程序切片,据他说还蛮不错的。

2010/4/23 Christian <silve...@gmail.com>

Christian

unread,
Apr 23, 2010, 6:57:07 AM4/23/10
to pon...@googlegroups.com
为了避免进入价值观和意识形态的争论。我还是修改一下问题好了:
Haskell在实际工作学习中有哪些对比其他语言具有较大优势的特点,或者擅长的领域?
譬如Lisp,Prolog擅长描述和推导逻辑关系,ASM适合对内存和效率要求较高的环境,Perl擅长处理文本。

我个人对于计算机语言的态度基本上类似于物理学家对待数学的态度。我认为无论自然语言还是机器语言,其主要功能就是为了描述语义,从工程的角度来说,在具备近似功能的情况下,我觉得更易于理解和学习的机器语言就是“好”的语言。在计算机领域,我觉得比语言重要的东西有很多很多。以我个人有限的才智和精力,只能对其中自己感兴趣的部分加以投入。

至于用数学来类比,我觉得不是很恰当。因为数学的杀手级应用太多了,一个FFT就涵盖了多个领域。至于最基本的自然数运算更是无处不在。然而我觉得Haskell似乎并没有到此种程度。当然这里也还有历史问题,以自然语言为例,假使某种非通用语言比英语优美精确得多,大概它也只对语言学家有一定意义。

谈到数学,其实数字的发明本身就是实际生活中计量的需求。微积分,复数,几何学,全是由实际需求驱动而产生的。也许在哲学或者社会科学领域,为了研究而研究的情况比较多,但是在自然科学领域,这种情况并不多。

--
因为无知而傲慢,因为有知而谦逊

qingant

unread,
Apr 23, 2010, 7:54:04 AM4/23/10
to pon...@googlegroups.com
killer app算不上,但是已经到非玩具程度的应该perl6和darcs都算,可能用来做编译器不错。

2010/4/23 Christian <silve...@gmail.com>

qingant

unread,
Apr 23, 2010, 8:05:43 AM4/23/10
to pon...@googlegroups.com
就拿Real World Haskell typeclass那章的Eq那个例子来说,
class BasicEq3 a where
    isEq3 :: a -> a -> Bool
    isEq3 x y = not $ isNotEq3 x y
    isNotEq3 :: a -> a -> Bool
    isNotEq3 x y = not $ isEq3 x y 

那个语言的类型系统能有这样的表达能力?而这个似乎也没有增加多少学习成本。

2010/4/23 Christian <silve...@gmail.com>

Wei Hu

unread,
Apr 23, 2010, 12:23:55 PM4/23/10
to TopLanguage
目前的杀手级应用是编译器,因为操作语法树非常方便。还有就是需要正确性比较高的领域,比如XMonad就通过QuickCheck自动检查出很多错
误。更广泛地说,所有I/O与逻辑有比较明确的分割的问题,都可以用Haskell来写,甚至可以用Haskell写脚本程序,因为Haskell的类
型推导可以让你不必写出太多的类型声明,而Haskell的强大的表达能力则是其它脚本语言无法比拟的。

Yongwei Wu

unread,
Apr 23, 2010, 12:30:10 PM4/23/10
to pon...@googlegroups.com
换句话说是让人舒服,不是让机器舒服?这样的话,要出杀手级应用需要点时间了。

有实际写编译器的例子吗?性能如何?GCC我都觉得不够快啊,特别是编译C++时。

2010/4/23 Wei Hu <wei...@gmail.com>:

--
Wu Yongwei
URL: http://wyw.dcweb.cn/

Wei Hu

unread,
Apr 23, 2010, 12:32:38 PM4/23/10
to TopLanguage
忘了提了,未来的杀手级应用就是多核上面的并行程序了,因为Haskell是唯一的纯函数式语言。

Yongwei Wu

unread,
Apr 23, 2010, 12:36:24 PM4/23/10
to pon...@googlegroups.com
LISP程序员要来找你单挑了。

个人对"纯"毫不感冒。现实世界总需要很多折衷,"纯"这时通常不是好事。

2010/4/23 Wei Hu <wei...@gmail.com>:

--

Christian

unread,
Apr 23, 2010, 12:39:11 PM4/23/10
to pon...@googlegroups.com
非常感谢:)。正好我目前在实现一个类java的语言,现在是用C实现的,看来有必要试试用Haskell实现。
另外Haskell的稳定性确实有很多人提及。

在 2010年4月24日 上午2:23,Wei Hu <wei...@gmail.com>写道:
XMonad



--
因为无知而傲慢,因为有知而谦逊

Wei Hu

unread,
Apr 23, 2010, 12:40:46 PM4/23/10
to TopLanguage
实际的例子就是ghc了,还有其它一些爱好者用Haskell写的各种编译器。Haskell的性能由于采用lazy evaluation,分析起来
比较费脑子。

编译C++的速度慢主要是因为C++语言本身的问题吧,像Google的go语言就考虑到编译器的速度专门做了设计,其它语言设计时好像都没有考虑这一
点。

Haskell还有一种很流行的应用是EDSL (embedded domain specific language),近几年的ICFP和
CUFP会议上都有一些例子。

On Apr 23, 12:30 pm, Yongwei Wu <wuyong...@gmail.com> wrote:
> 换句话说是让人舒服,不是让机器舒服?这样的话,要出杀手级应用需要点时间了。
>
> 有实际写编译器的例子吗?性能如何?GCC我都觉得不够快啊,特别是编译C++时。
>

> 2010/4/23 Wei Hu <wei....@gmail.com>:

Wei Hu

unread,
Apr 23, 2010, 12:42:34 PM4/23/10
to TopLanguage
LISP就是一个裸奔的lambda calculus,适合初学者学习FP,在2010年,大家应该move on了。

On Apr 23, 12:36 pm, Yongwei Wu <wuyong...@gmail.com> wrote:
> LISP程序员要来找你单挑了。
>
> 个人对"纯"毫不感冒。现实世界总需要很多折衷,"纯"这时通常不是好事。
>

> 2010/4/23 Wei Hu <wei....@gmail.com>:

Wei Hu

unread,
Apr 23, 2010, 12:43:40 PM4/23/10
to TopLanguage
Haskell的parser combinator真的是很优雅

On Apr 23, 12:39 pm, Christian <silvert...@gmail.com> wrote:
> 非常感谢:)。正好我目前在实现一个类java的语言,现在是用C实现的,看来有必要试试用Haskell实现。
> 另外Haskell的稳定性确实有很多人提及。
>

> 在 2010年4月24日 上午2:23,Wei Hu <wei....@gmail.com>写道:
>
> > XMonad
>
> --
> 因为无知而傲慢,因为有知而谦逊
>

qiaojie

unread,
Apr 23, 2010, 12:43:39 PM4/23/10
to pon...@googlegroups.com
这个世界上好像除了C++编译速度慢之外,其他语言编译速度都是飞快的。

2010/4/24 Wei Hu <wei...@gmail.com>

Wei Hu

unread,
Apr 23, 2010, 12:45:39 PM4/23/10
to TopLanguage
我前面说Haskell是"唯一"的纯函数式语言有点不太精确:)Clean也是的,还有其它一些小众的语言。但是Haskell是现在最活跃的纯函数
式语言,这点没错。

On Apr 23, 12:36 pm, Yongwei Wu <wuyong...@gmail.com> wrote:
> LISP程序员要来找你单挑了。
>
> 个人对"纯"毫不感冒。现实世界总需要很多折衷,"纯"这时通常不是好事。
>

> 2010/4/23 Wei Hu <wei....@gmail.com>:

朱晋玄

unread,
Apr 23, 2010, 12:52:12 PM4/23/10
to pon...@googlegroups.com
其实现在我在物理中所用到的数学都给我裸奔的lambda calculus的感觉
不裸奔的是什么样子的情况能否说明一下;没有学过Haskell,对Haskell不了解........

qiaojie

unread,
Apr 23, 2010, 12:54:25 PM4/23/10
to pon...@googlegroups.com
不喜欢纯粹的东西,世界是复杂的多元的,科学能解决也只是很小的一部分问题,做项目的话还是应该走实用主义路线。
 


 
2010/4/24 Wei Hu <wei...@gmail.com>

est

unread,
Apr 24, 2010, 11:20:21 PM4/24/10
to pon...@googlegroups.com
Haskell的理念不是 avoid successful at all costs么?呵呵。

2010/4/23 Christian <silve...@gmail.com>:

Alleluia

unread,
Apr 25, 2010, 12:54:30 AM4/25/10
to TopLanguage
仅说GHC,那是小看它了.没有Haskell,可以有C,有Java,有Ruby,有Python,但是不会有C# Scala D.Haskell
的老大被MS收在了MS Cambridge,于是C#现在已然是半个Haskell.Linq直接来自于Monad, Extension
Method直接来自于Haskell Class.于是你可以看到从语言特性本身来说,高司令领导下的Java寸步不前,而C#每一次翻新都是脱胎换
骨.Scala的火热从另外一个侧面也说明了,程序员社区对Type inference这种技术的高度需求,也说明了程序员社区对Java这种固步自
封的不满.你们不搞,我们自立根生.

Haskell有没有用,要不要学?这个问题对于不同的人来说有不同的答案.如果你致力于程序语言本身的开发和研究特别是现代的程序语言技
术,Haskell是必学的.如果你是普通的开发人员,不学不影响你的工作和生计.但学了可以让你看到更多更超前的东
西.Fortran,Lisp,Haskell是程序语言理论的三个奠基之作.有了Fortran,才会有结构化面向对象,有了Lisp,才会有
GC,Lambda.有了Haskell,才有Type inference.程序语言的发展总是从理论研究再到工程实践.理论研究的工作就是着眼于能
行性,而工程实践的目的在于如果将能行的理论转化为在当前软硬件条件下可用的工具.工程实践总是要比计算机科学的理论慢上10-20年,这是社会经济发
展的局限。作为一个普通的开发人员,如果你只是关注当下的流行语言,那么无疑你是在疲于奔命.学院派的实验作品与工程语言有很大的不同,学院派的实验作
品严谨纯粹,成体系,语言特性高度浓缩.而工程语言,鲜有自己的发明创造。他们则为了实践的需要,他们总是从各个地方抄袭借鉴。这里抄一部分C,哪里借
鉴一点Java,再揉合一些Lisp,然后起一个花里胡哨的名字.就能培养一大批fans跟在他们后面狂欢.学院派的理论思想被打散在许许多多花里胡哨
的工程作品里。一个普通的程序员可能需要学习4-5种语言,才能学完一个学院派作品就可以讲完的东西。学院派的东西的确枯燥,抽象,学习难度非常大,而
且没啥实际的用途.但是如果你肯花一个工程语言2倍的的时间,去多看一些基础的理论,多学一点学院派的实验作品.你再回过头去看那些工程语言,浏览一下
他们的FAQ就会知道这些特性应该怎么用,怎么理解.

当然学习实验性语言不仅可以省下学习的时间,更重要的是让你在工程应用中对语言特性的选择有更明确的判断。软件开发里很多程序员喜欢钻牛角尖,学会了
OO恨不得所有的程序都OO,学会了Lambda恨不得所有的程序都FP.很多人说这是程序员的职业病,我却不以为然.我觉得这是人类接受知识的通性。
我们的学习就是在不断的试错,只有错误的结果足够的多我们才能在这些错误中总结教训,发现某种知识的局限获得新的知识.关键在于试错的成本有多大,在我
看来仅仅学习工程语言试错的成本是非常高的.学习实验性语言的最大优势就在这里,一方面它非常的纯粹,通常会把一个语言特性的推到极致,比如像
lisp.在你学习的过程中用它来尝试解决各种问题就快速会发现诸多的局限和问题,而工程语言总是给你许多不同的选择,OO不行可以用模板,模板不行用
FP.如果试错次数到总结经验之间有一个阈值的话,那么无疑工程语言是把这个次数摊薄了,你需要更多的时间和工作才能发现问题的所在。另外一方面,工程
语言往往专注于一个领域,甚至专门为某一种硬件或者软件平台而开发。而实验性语言更关注于各种领域内普遍出现的共同性问题,它会抽掉具体硬件软件背景,
把他们共同的问题抽象出来讨论甚至加以形式化比如GC,Type inference。也就是说你会在实验性语言中看到你专业领域内所看不到的东西.一
个语言特性在某个领域内是圣经,在另一个领域内却是毒药。如果不去学习实验性语言,对于这种语言特性的局限认识需要你在大量不同的领域中试错才能获
得。

我们经常说,学习一门技术不是目的,目的是用这个技术去解决问题。如果我们狭隘的理解这句话,那么Haskell这些实验性的语言自然没有什么意义。但
是在我看来,语言的学习本身就是一种问题。而学习Haskell Lisp的目的恰恰就是去解决如何学习语言这个问题。

朱晋玄

unread,
Apr 25, 2010, 7:28:38 AM4/25/10
to pon...@googlegroups.com
听说Type inference是ML而不是Haskell的
也许我记错了

Alleluia

unread,
Apr 25, 2010, 11:04:42 AM4/25/10
to TopLanguage
Haskell 是FPCA 推进的一个community 项目.基本上是一个集大成的作品.看看Haskell First meeting 制定
下的goal
1. It should be suitable for teaching,research,and
applications,including building large systems.
2. It should be completely describe dvia the publication of a formal
syntax and semantics.
。。。。
4. It should be usable as a basis for further language research.
5. It should be based on ideas that enjoy a wide consensus.

On 4月25日, 下午7时28分, 朱晋玄 <zhujinx...@gmail.com> wrote:
> 听说Type inference是ML而不是Haskell的
> 也许我记错了
>

Linker

unread,
Apr 25, 2010, 11:36:52 AM4/25/10
to pon...@googlegroups.com
我比较喜欢Haskell。
我想说的是,Haskell是比较纯粹的 学院派语言,别想用于工业用途。
我觉得在工业用途上的语言一定要是 水平一般的程序员也会用的语言。
Haskell必须是优秀勤奋的程序员才会去学习的,永远是少数人的玩具。

2010/4/25 Alleluia <allu...@gmail.com>



--
Regards,
Linker Lin
linker...@gmail.com

Jeffrey Zhao

unread,
Apr 25, 2010, 11:54:24 AM4/25/10
to pon...@googlegroups.com
其实函数式编程语言、或是如今一些比Java复杂但生产力明显更好的语言,的确在许多编程方面(不是特定方面)有一定优势,甚至是很明显的优势。以前因为工具、类库、框架、运行时等东西发展地不够好,因此许多程序员会选择简单的语言,并以此发展整体平台的能力,以达到相对较高的生产力。否则原本平台就不足,不易学的语言就很难被人接受了。
 
但是现在,平台能力已经很不错了,如Java或.NET都有非常好的生态环境,也是时候推广一下稍显复杂的语言了。尤其是Java平台,因为Java实在是一门糟糕的语言,再强的程序员的生产力也非常受限。在.NET方面,C#语言发展不错,不过也可以适当开始传播F#等语言了。

Jeffrey Zhao
Blog: http://blog.zhaojie.me/
Twitter: @jeffz_cn

Wei Hu

unread,
Apr 25, 2010, 3:05:36 PM4/25/10
to TopLanguage
LINQ应该是Erik Meijer的作品,另一枚Haskell大牛

Wei Hu

unread,
Apr 25, 2010, 3:10:12 PM4/25/10
to TopLanguage
是ML开创的,但被Haskell集大成

On Apr 25, 7:28 am, 朱晋玄 <zhujinx...@gmail.com> wrote:
> 听说Type inference是ML而不是Haskell的
> 也许我记错了
>

Alleluia

unread,
Apr 25, 2010, 7:56:07 PM4/25/10
to TopLanguage
On April1,1998,John Peterson wrote a bogus press release in which it
was announced that because Sun Microsystems had
sued Microsoft over the use of Java,Microsoft had decided to adopt
Haskell as its primary software development language.Ironically,not
long after this press release,PeytonJones announced his move from
Glasgow to Microsoft Research in Cambridge,an event that Peterson knew
nothing about at the time.
Subsequent events have made Peterson's jape even more
prophetic.Microsoft did indeed respond to Java by backing another
language,but it was C# rather than Haskell.But many of the features in
C# were pioneered by Haskell and other functional languages,notably
polymorphic types andLINQ(LanguageIntegrated Query). Erik Meijer,a
principal designer of LINQ, says that LINQ is directly inspired by the
monad comprehensions in Haskell

Linker

unread,
Apr 26, 2010, 8:05:04 AM4/26/10
to pon...@googlegroups.com
最近发现一个vala语言:
把C#编译到GLib环境的C的Gnome官方项目,
C# =>C with GLib  无需Mono或者其他的框架支持,
纯C
感觉设计思想不错。

2010/4/26 Alleluia <allu...@gmail.com>

liuxinyu

unread,
Apr 27, 2010, 1:44:36 AM4/27/10
to TopLanguage
没记错。是ML最初引入的。

对于同一问题,用多种方式去解决非常有帮助,这就是我在algoxy上(http://sites.google.com/site/algoxy)对
所有问题
尽量同时给出C++的Python的,Haskell的和Scheme/Lisp4种实现的原因。

但是,根据我的体会,虽然从时间上,语言有先后之分,有前驱后继的关系。
但是并不是说所有的问题一定都是后来的新语言更适合。

另外,虽然从计算理论上来说,图灵机和lambda演算是等价的。
imperative的解必然存在等价的functional解。但是在实际问题时,两种approach会大相径庭。
有些online updating的解法,迄今为止人们没有发现同样好的纯FP解法。

另外,在长数组,Hash和数据库操作方面是纯FP的短处。虽然有一些替代方法,例如用平衡树代替数组索引和Hash,但
性能仍距离imperative的方法有差距。这些都是未来值得研究的领域。

就目前来说,技术上已经不存在阻碍FP应用的瓶颈了。唯一的问题是商业上尚不能做到广泛接受,这主要是意识问题。

--
http://sites.google.com/site/algoxy

On Apr 25, 7:28 pm, 朱晋玄 <zhujinx...@gmail.com> wrote:
> 听说Type inference是ML而不是Haskell的
> 也许我记错了
>

Reply all
Reply to author
Forward
0 new messages