📅  最后修改于: 2021-01-07 05:14:18             🧑  作者: Mango
功能编程语言是专门设计用于处理符号计算和列表处理应用程序的。函数式编程基于数学函数。一些流行的函数式编程语言包括:Lisp, Python,Erlang,Haskell,Clojure等。
函数式编程语言分为两类,即-
纯功能语言-这些类型的功能语言仅支持功能范例。例如-Haskell。
不纯功能语言-这些类型的功能语言支持功能范例和命令式编程。例如-LISP。
函数式编程的最显着特点如下-
函数式编程语言是根据数学函数的概念设计的,该数学函数使用条件表达式和递归来执行计算。
函数式编程支持高阶函数和惰性求值功能。
函数式编程语言不支持流程控制(例如循环语句)和条件语句(例如If-Else和Switch语句)。他们直接使用函数和函数调用。
像OOP一样,函数式编程语言支持流行的概念,例如抽象,封装,继承和多态。
函数式编程具有以下优点-
无错误代码-功能编程不支持state ,因此没有副作用,我们可以编写无错误代码。
高效的并行编程-功能编程语言没有可变状态,因此没有状态更改问题。可以对“功能”进行编程,使其作为“指令”并行工作。这样的代码支持简单的可重用性和可测试性。
效率-功能程序由可以同时运行的独立单元组成。结果,这样的程序更加有效。
支持嵌套函数-功能编程支持嵌套函数。
延迟评估-函数式编程支持延迟函数构造,例如延迟列表,延迟映射等。
缺点是,函数式编程需要很大的存储空间。由于它没有状态,因此您每次都需要创建新对象来执行操作。
函数式编程用于必须对同一组数据执行许多不同操作的情况。
Lisp用于人工智能应用,例如机器学习,语言处理,语音和视觉建模等。
嵌入式Lisp解释器为某些系统(如Emacs)增加了可编程性。
下表重点介绍了函数式编程和面向对象编程之间的主要区别-
Functional Programming | OOP |
---|---|
Uses Immutable data. | Uses Mutable data. |
Follows Declarative Programming Model. | Follows Imperative Programming Model. |
Focus is on: “What you are doing” | Focus is on “How you are doing” |
Supports Parallel Programming | Not suitable for Parallel Programming |
Its functions have no-side effects | Its methods can produce serious side effects. |
Flow Control is done using function calls & function calls with recursion | Flow control is done using loops and conditional statements. |
It uses “Recursion” concept to iterate Collection Data. | It uses “Loop” concept to iterate Collection Data. For example: For-each loop in Java |
Execution order of statements is not so important. | Execution order of statements is very important. |
Supports both “Abstraction over Data” and “Abstraction over Behavior”. | Supports only “Abstraction over Data”. |
编程代码的效率与算法效率和执行速度成正比。良好的效率可确保更高的性能。
影响程序效率的因素包括-
通过执行以下任务,可以提高编程语言的效率-
通过删除不必要的代码或用于冗余处理的代码。
通过利用最佳内存和非易失性存储
在适用情况下使用可重用的组件。
通过在程序的所有层上使用错误和异常处理。
通过创建可确保数据完整性和一致性的编程代码。
通过开发符合设计逻辑和流程的程序代码。
高效的编程代码可以在对操作环境造成最小风险的情况下,尽可能地减少资源消耗和完成时间。