免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: freearth
打印 上一主题 下一主题

大家认为是否需要在国内的程序员中推广一下Haskell? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-23 20:57 |只看该作者
而且,做翻译的话还有另外一件麻烦的事情,那就是需要和对方的作者及出版社联系版权之类的问题。很难做到几方都满意。所以,我倾向于大家写一本。
但是,如果我们自己写,那么最大的问题就是如何保证质量。现在书店里关于计算机的书的情况相信大家都清楚。
关于这个质量问题,如果说到讲解语言本身,我想大概不难讲清楚,影响质量的关键因素是讲解语言的过程中如何潜移默化地教给读者用这个语言思考问题的思想。
原帖由 flw 于 2009-3-23 17:37 发表

其实吧,我现在觉得,翻译是一件出力不讨好的事。
而且翻译对人的要求很高,既要准确理解原意,又要能够清晰地用汉语表达出来,碰到拗口的地方稍微有所变化,就会被说成是不遵从原文。

我觉得还是自己写书 ...

论坛徽章:
0
12 [报告]
发表于 2009-03-23 21:13 |只看该作者
1、上周我和与CU合作出书的那个出版社的一个编辑用邮件聊了一下,他们去年出过一本Erlang的书,对函数式语言也有所了解,只是没有仔细调查过Haskell,我向他大概说了一下Haskell的特点,感觉他们还是有一定兴趣的。
2、这个也是我的顾虑之一,万一虎头蛇尾甚至半途而废......我们可以一起商量主要内容、时间表等,我也愿意 负责在每个MileStone的前3天提醒一下相关的人,但我想我能做到的也只有提醒,真正能够让我们完成承诺 的只能是我们自己。套用某个人的一句话“互联网出现的一个坏处就是,你不能走到那个人的办公室把他骂一顿 。”呵呵

原帖由 win_hate 于 2009-3-23 15:57 发表
出书的想法不错,我支持。写一本 Haskell 的入门书,我们还是力所能及的。

但我有两个顾虑:

1、这个书的市场前景如何? 出版社是否会有兴趣?
2、说起来容易,做起来难。必须有几个积极性比较高,空闲时 ...

[ 本帖最后由 freearth 于 2009-3-23 21:55 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2009-03-23 21:40 |只看该作者
呵呵,严重同意“不能是冲着酬劳去”。其实,做这件事的目的之一是推广函数式编程语言,另一个潜在的对参与者的最大的利益恐怕是:总结并表达自己对函数式编程的理解,仔细阅读别人的文字并提出自己不同的理解和别人的错误, 以及在这个过程中大家互相的讨论,这些大概可以让每一个参与者都能够更深刻地理解这类语言吧。

如果我们能够完成这本书,我建议把所有的参与者——哪怕只是提出过一个意见,指出过一个问题的人——都作为作者。

原帖由 MMMIX 于 2009-3-23 17:06 发表

关键是要有人愿意翻译,而且不能是冲着酬劳去翻译,因为这种冷门的书估计不好找出版社。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
14 [报告]
发表于 2009-03-23 21:48 |只看该作者
原帖由 flw 于 2009-3-23 17:37 发表

其实吧,我现在觉得,翻译是一件出力不讨好的事。
而且翻译对人的要求很高,既要准确理解原意,又要能够清晰地用汉语表达出来,碰到拗口的地方稍微有所变化,就会被说成是不遵从原文。

agreed.
我觉得还是自己写书比较好,自己写比翻译要简单得多。

其实自己写要写好也不是什么容易的事情。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
15 [报告]
发表于 2009-03-23 21:50 |只看该作者
原帖由 freearth 于 2009-3-23 21:40 发表
如果我们能够完成这本书,我建议把所有的参与者——哪怕只是提出过一个意见,指出过一个问题的人——都作为作者。

这个就有点夸张了,提建议的在致谢里面列一下就可以了,毕竟作者应该是出力最大的那个人才对,这样对他(们)也公平一点。

论坛徽章:
0
16 [报告]
发表于 2009-03-23 21:56 |只看该作者
这样说也有道理

原帖由 MMMIX 于 2009-3-23 21:50 发表

这个就有点夸张了,提建议的在致谢里面列一下就可以了,毕竟作者应该是出力最大的那个人才对,这样对他(们)也公平一点。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
17 [报告]
发表于 2009-03-23 22:46 |只看该作者
有人催,有人审,就差干活的了!

我有瓶醋,今晚想吃饺子,谁借我点儿面皮和肉馅儿?

论坛徽章:
0
18 [报告]
发表于 2009-03-24 00:20 |只看该作者
楼上又抛出他的招牌鸡毛论了,意料之中,

谨慎是好习惯,但不可以总是这样悲观。我们的目标虽然困难,却并不宏大。只要有 3 到 4 个主力执笔,这本书是可以写下来的。

楼主最好能拟出一个大纲,划分出具体的任务,这样才容易吸到参与者。

另一方面,目前我们版的人气差了点,不一定能招到足够多的人,如果能从其它地方拉一两个人来写就好了。

要是人手确实不够,不妨把目标定得低一些。暂时放弃纸版书,先写电子文档好了,这样也是对 Haskell 的一种推广。等电子书的规模和质量上去了,再找个时机出版。

[ 本帖最后由 win_hate 于 2009-3-24 00:25 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-03-24 10:54 |只看该作者
哈哈,我自己会参加干活的。

原帖由 flw 于 2009-3-23 22:46 发表
有人催,有人审,就差干活的了!

我有瓶醋,今晚想吃饺子,谁借我点儿面皮和肉馅儿?

论坛徽章:
0
20 [报告]
发表于 2009-03-24 11:11 |只看该作者
我列了一个提纲或者说目录。这个目录给出了我觉得合适的主体内容和大致顺序。其中,在章节顺序方面我自己感觉还存在问题,但是目前没有想到具体哪里出了问题。

有意见尽管提,最好直接说,不用为我的脸皮担心。

===================================================================================

Haskell函数式编程语言导引

第一章 介绍
    1.1 Haskell简介
            本节主要介绍Haskell语言的历史、发展及特点。同时也介绍一些其它常见的函
        数式语言的发展情况(Lisp,Scheme,ML,Erlang,OCaml)。
    1.2 编译环境
            本节指导读者在自己的计算机上安装GHC编译器作为本书中所有例子使用的编译
        开发环境,并对GHC做简要介绍(GHC是目前Haskell的工业级编译器)。
    1.3 第一个Haskell程序
            该部分使用快速排序作为例子,完成一个完整结构的Haskell程序。介绍
        Haskell程序的主体结构和一些基本概念(值、函数、注释、模块等)。
    1.4 函数式程序设计的特点
            讨论为什么使用函数式程序设计。

第二章 值和表达式
        本章主要介绍Haskell语言内置的基本类型的值和内置的一些基本运算符。
    2.1 名字
            这一节独立出来强调在Haskell中没有“变量”这个东西,所有的标志符都只
        是名字。所有的量都是常量。
    2.2 数值类型
            各种数值类型的讲解,包括他们的取值范围、可以执行的操作,性质等。
    2.3 字符及字符串类型
            这里应该包括转义序列的讲解。
    2.4 条件表达式
            if-then-else表达式和case-of表达式。
    2.5 运算符
            引入前面介绍的表达式中运算符和优先级、结合性的概念,指出运算符和函数
        的同一性。
            
第三章 函数
        本章主要介绍函数的概念、类型、使用和定义,强调Haskell中函数的引用透明性。
    3.1 Haskell中的函数
            本节介绍Haskell中函数的概念以及它与其它命令式语言中的不同。
    3.2 使用函数
            本节通过调用几个预定义的库函数来讲解怎么使用函数,函数应用运算符,
        函数结合运算符,函数的函数等。
    3.3 函数的类型
            给出函数的类型的概念。这里同时给出Haskell的类型推导的介绍。
    3.4 函数的定义
            本节介绍定义函数的方法,包括分情况定义、参数的Pattern Match、Guard、
        作用域规则等。
    3.5 局部名字以及作用域规则
            本节介绍通过let和where引入局部名字,并讨论Haskell的词法作用域规则和
        使用缩进(代码排布)标定作用域的原则。
    3.6 递归的概念
            递归是函数式程序设计的核心想法,这一节至少包含以下几个小结:
        3.5.1 使用数学中的函数例子引入递归的概念
        3.5.2 非数学函数的递归的例子
        3.5.3 递归和循环的关系

第四章 列表和元组
        本章介绍Haskell中预定义的列表和元组。
    4.1 列表的概念
            本节介绍列表的概念、性质。
    4.2 列表的类型和使用
            本节讲解列表的类型和用途。
    4.3 列表的构造
            本节介绍几种列表构造的方法。
    4.5 列表与函数
            列表是函数式程序设计中的数据结构以及常用的控制结构。重点讨论列表上
        的各种操作和函数,这里是函数式程序设计另一个核心的地方。
    4.6 元组的概念
            本节介绍元组的概念、性质,与列表的不同。
    4.7 元组的定义和使用
            定义和使用元组的方法。
    4.8 元组的类型
            注意强调元组类型,这里很容易从列表类型来“递推”,强调两种类型的不同
        点。

第五章 输入输出
        本章要避开Monad的概念,讲解常用的输入输出函数。
    5.1 输入输出引发的问题
            提出“副作用”问题。
    5.2 “动作”的概念
            强调完成输入输出的是动作,强调它们与函数的不同。
    5.3 标准输入输出和命令行参数
            讲解标准输入输出的用法。
    5.4 文件输入输出
            讲解文件的输入与输出。
    5.5 Lazy特点的陷阱
            在输入输出问题上,由于Haskell的Lazy属性导致的问题。
    5.6 “纯”代码和“不纯”代码
            函数式程序设计的原则之一,将纯的代码和不纯的分开。

第六章 代数数据类型
        本章系统讲解Haskell的类型系统。
    6.1 多态类型的概念
            这一节使用数字类型和函数类型来引入多态类型的概念。
    6.2 类型类
            这一节讲解类型类的概念,使用。
    6.3 类型类的定义
            本节讲解自定义的类型类以及将一个类型加入一个已有的类型类。
    6.4 常用的类型类
            本节讲解系统预定义的几个常用的类型类。
    6.5 再看函数类型
            本节讲解多元函数类型的部分应用、高阶函数、类型参数。
    6.6 data声明自定义类型
            data声明的自定义类型是Haskell中最重要的种类型定义方式。本节讲解如何
        定义类型。通过和C语言中的struct、union、enum对比来说明如何使用这个定义。
    6.7 递归数据类型和无穷数据结构
            通过树这种数据结构来介绍递归数据类型和无穷数据结构。
    6.8 newtype声明自定义类型
            强调该类型只在编译时可见
    6.9 type声明类型别名
            本节讲解type声明的用法,强调新类型与原类型完全相同,可以互换。
    6.10 再看Pattern Match
            本节系统讲解Haskell中所能使用的Pattern Match以及可以使用的环境。
   
第七章 Monad
        本章介绍Monad概念。这个概念理解起来稍有些难度。
    7.1 什么是Monad
            本节不介绍Haskell标准的Monad,而是通过例子引入对Monad的需求,进而自
        己定义一个类似Monad的类型类。
    7.2 Monad的概念
            本节讲解Haskell中定义的Monad类型类以及Monad定律。
    7.3 Monad的使用
            本节讲解应用系统预定义的Monad。主要强调这几种常用Monad的用法和应用
        环境。
    7.4 定义Monad
            本节讲解如何定义程序员自定义的Monad。
    7.5 Monad和输入输出
            讨论输入输出的本质,以及do块真正的含义。
    7.6 更多Monad的例子
            讲解另外一些预定义的一些常用的Monad。(注释:本节和7.3节的区别在于
        7.3节只是通过几个Monad来说明Monad操作的用法和应用Monad的环境,而本节则
        介绍常用的Monad)
    7.7 MonadPlus
            本节讲解MonadPlus的概念和应用。

第八章 并行与并发编程
        本章讲解如何使用Haskell写并行和并发的程序(我觉得在现代程序中,并发与并行不再是
    “高级应用”,并发与并行应该成为很一般的编程思想,在各种程序中都有所体现,所以在
    这种“导引”书中也出现这一章)。
    8.1 并行与并发
            介绍并行与并发的概念。
    8.2 利用多核
            讲解如何让GHC使用多个核。
    8.3 规则形式
            讲解规则形式和头规则形式。
    8.4 顺序与并行构造
            讲解Haskell中的顺序和并行构造方法。使用这些方法可以控制代码的顺序或
        并行执行。
    8.5 算法和计算策略的分离
            讲解如何将算法和计算该算法的并行策略分离,这是一个原则。
    8.6 并发编程
            讲解线程的概念。
    8.7 线程的创建和终结
            本节介绍创建和终止一个新的线程来完成部分任务。
    8.8 线程同步
            讲解同步变量和同步通道的应用。
    8.10 获得线程的状态
            并发编程的综合例子。
    8.11 STM介绍
            介绍STM的概念和并发模型。
    8.12 开始和结束一个事务
            本节讲解如何使用Haskell中的STM构造来开始和提交一个事务。
    8.13 retry和alternative
            本节讲解事务逻辑中的重试和选择构造。
    8.14 几种并行/并发方法的讨论
            进一步讨论上面三种方法的优缺点和适用范围。强调STM的优点。

第九章 异常处理
        本章介绍Haskell中的异常处理机制(GHC6.10中的实现)。
    9.1 异常与异常处理
            介绍异常的概念,强调可以用Maybe等纯代码处理的异常,不要使用Exception
        处理
    9.2 惰性与异常处理
            讨论由于Haskell的惰性,导致的异常处理的一些问题。
    9.3 预定义异常
            通过预定义异常来讲解异常处理的用法。包括异常的抛出、捕获等。
    9.4 自定义异常
            讲解如何定义和使用程序员自定义异常。
    9.5 IO异常
            更仔细讲解IO异常。

第十章 Haskell程序的组织
        介绍一个比较大型的程序源文件和各种定义的组织,以及如何写编译脚本。
    10.1 模块的概念
    10.2 模块的定义
    10.3 Cabal
    10.4 编译脚本的书写

第十一章 高级主题
        这一章简单介绍一些前面没有涉及,但是比较重要的高级主题。事实上,这些主
    题对于一个真正的工程程序是非常有用的。
    11.1 FFI介绍
            介绍外部语言函数接口。这个可以让Haskell程序调用其他语言写的函数,以
        及让其他语言调用Haskell的函数。
    11.2 Monad转换器
            介绍Monad转换器。
    11.3 Functor介绍
            介绍Functor的概念。
    11.4 Applicative介绍
            介绍Applicative的概念,总结Functor、Applicative、Monad之间的关系。
    11.3 Arrows介绍
            介绍Arrow的概念。              
    11.4 Haskell的程序复杂度与性能
            介绍Haskell实现使用的一些算法,并基于这个来讨论Haskell程序的性能。
        另外,介绍严格限定符(用于指示某个数据进行严格求值)。并简单介绍如何
        调优程序性能。
    11.5 Haskell程序的测试
            介绍GHC内置的程序测试库,以及通用的函数式程序测试方法。
    11.6 Haskell的一些理论基础介绍
            类型理论,范畴论等。
    11.7 更多的资料
            如何找到更多的资料。



原帖由 win_hate 于 2009-3-24 00:20 发表
楼上又抛出他的招牌鸡毛论了,意料之中,

谨慎是好习惯,但不可以总是这样悲观。我们的目标虽然困难,却并不宏大。只要有 3 到 4 个主力执笔,这本书是可以写下来的。

楼主最好能拟出一个大纲, ...

评分

参与人数 1可用积分 +10 收起 理由
flw + 10 嗯,这根鸡毛很不错!看来鸡汤有望了!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP