福格特的特点
易于入门 . 许多库组件具有 参数的默认值 . 这使得库组件在 普通情况下,但仍具有灵活性和可定制性。 代码大小 .Fudgets程序通常是 更短的 比相应的 用命令式语言编写的程序。 正因为如此,他们 拿 时间更短 书写并包含 更少的错误 . 快速原型制作 [ 1 ]. 软糖系统具有 自动、自适应 布局系统 它允许您编写工作的第一个版本 不必担心布局。 相反的情况也可能发生:您可以从设计用户开始 与特定布局交互,然后向其添加功能。 分层设计 . 没有概念上的区别 在基本构建块和完整应用程序之间。 这意味着你可以 用合成对象轻松替换按钮等简单的东西, 或者将现有应用程序重新用作新应用程序的一部分。 可扩展性 . 库组件可以很容易地与代码捆绑在一起 由应用程序程序员提供以形成新组件, 然后可以像其他任何库组件一样使用它。 你可以 从而为特定的应用程序区域创建扩展库。 陈述性风味 . 虽然可以通过以下方式启用函数语言中的GUI编程 为命令式GUI工具箱提供接口,实际上, 在功能语言中使用命令式子语言, 控件还为 GUI的构造。 状态封装 . 坚固性。 Fudget编程类似于面向对象编程 在该状态下,信息被封装并且 避免任意使用/误用。 组件 与对象相对应 软糖 。状态信息可以 只能通过向fudget发送消息来访问/更改 维护它。 并发 .控件还提醒 并发编程。 fudget是一个运行于 与其他软糖并行,并通过以下方式与其环境交互 消息传递。 软糖仍然很容易制作,比如 函数语言中的函数。 客户端/服务器编程和联网 .图书馆 为互联网通信提供了伪造工具。 创建 连接到另一个进程(在同一台或另一台计算机上) 就像在图形用户界面中创建按钮一样简单。
函数式编程语言的特点
高阶函数 和 参数多态性 . 这两者共同为 模块化编程 和 软件重用 在许多方面,它比 面向对象编程中使用的子类型和类层次结构。 懒惰的评估 确保不执行计算 不必要的。 这也支持模块化 [ 2 ]例如,通过制作库 组件功能更强大。 一个简单的例子:一个函数 获取列表并返回满足某些搜索的所有项 可以使用标准 即使你只想找到第一个匹配的项目。 的列表 匹配项将仅在使用范围内计算。 因此,没有必要了解两个不同的库 用于搜索列表的函数。 自动内存管理 . 函数式程序员不必担心分配 和释放内存。 动态数据的固有支持 函数式语言makes中的结构 使用列表和树状数据结构非常容易。 类型安全 和 记忆安全 . 现代函数式语言中使用的类型系统功能强大 足以让大多数事情 静态类型已检查。 这允许在以下位置检测到许多错误 编译时。 相反,在用C语言编程时,您通常需要 通过使用类型转换之类的东西来转义类型系统 和 空隙* 指针。 因为这排除了编译器 从协助错误检测开始,您通常直到 程序因“ 分段故障 ". 这种情况在非类型化语言(如Tcl/Tk、Perl、, LISP、Scheme、PHP、Python、JavaScript等。 简要注释 .在Haskell中引入新功能 与大多数命令式相比,符号开销非常低 语言。 这使得程序员更倾向于编写 小而可读的函数,而不是大的单片 代码块。
工具书类
保罗·哈达克和马克·琼斯: " Haskell vs.Ada vs.C++ vs.Awk vs。。。 软件原型实验 生产力 " (1994) 约翰·休斯 : “为什么函数编程很重要”。 (1984)