命令式语言是那些通过状态变化来促进计算的语言。状态是指计算机的随机存取存储器(RAM)或存储器的状态。将计算机内存视为一系列快照会很有帮助,每个快照都在特定时间捕获所有内存单元中的值。每个快照记录一个状态。
当一个程序被输入时,相关数据存在于某种条件下,比如一个未排序的离线列表。程序员的工作是指定对store的一系列更改,以产生所需的最终状态,可能是一个排序列表。存储涉及的不仅仅是数据和存储的程序。它包括一个符号表、运行时堆栈(S)、一个操作系统,其CPU本身可以被视为初始状态的一部分。
函数式语言是在其编程结构中建立在逻辑函数或过程之上并围绕其构建的编程语言。它依赖于并等效于其程序流程中的数学函数。
函数式语言从Lambda演算和组合逻辑的数值结构改变了它们的基本结构。Erlang、LISP、Haskell和Scala是最著名的函数式语言。
命令式语言函数式语言ImperativelanguagesarebasedonVon-NeumannArchitecture.
函数式语言不是基于冯诺依曼架构。
Theprogrammerisconcernedwiththemanagementofvariablesandtheassignmentofvaluestothem.
程序员不需要关心变量,因为不需要将存储单元抽象到语言中。
Theimperativelanguagesfacilitatethecomputationusingthestatechanges.
函数式语言促进了程序所表示的功能,而不是仅在程序执行时逐条陈述更改。
Itcanincreasetheefficiencyofexecution.
它会降低执行效率。
Itisusedforthelaboriousconstructionofprograms.
与使用命令式语言编程相比,所需的劳动力更少。
Itisaverycleansyntacticframework.
它是一种比命令式语言复杂得多的语法结构。
Concurrentexecutionisdifficulttodesignanduse.
并发执行易于设计和使用。
Thesemanticsaredifficulttounderstand.
与命令式语言相比,语义很简单。
Theprogrammershouldcreateastaticdivisionoftheprogramintoitsconcurrentelements,whicharethenwrittenasfunctions.Thiscanbeacomplexprocess.
函数式语言中的程序可以被执行系统动态分解为并发元素,从而创建对运行它的硬件高度灵活的过程。
AnexampleofimperativelanguagesincludesC,C++,ADA,Pascal,etc.
函数式语言的例子包括LISP、ML、scheme等。