你应该知道的5种函数式编程语言

想了解更多编程知识吗?函数式编程以及什么编程语言支持它是值得学习的。...

如果你花大量的时间阅读互联网上的编程趋势,你就会听说函数式编程。这个词经常被提及,但它是什么意思呢?

functional-programming-languages

即使您知道什么是函数式编程,您也可能不清楚哪些语言最适合它。毕竟,并非所有的编程语言都是平等的。虽然您可以在许多语言中应用函数式编程范例,但仍有一些地方您会感觉舒服得多。

什么是函数式程序设计(functional programming)?

如果你有数学背景,那么你在函数式编程方面就有了先机。这是因为函数式编程范式将计算视为数学函数。如果你没有数学背景,这会让你感到困惑。

基本上,函数式编程将函数和数据视为不可变的。将数据传递到函数中,它通常会返回已转换的数据或其他类型的数据。在函数式编程中,函数不应改变原始数据或程序状态。

每个程序都应该做好一件事,这与Unix的理念有相似之处。函数不应该触及程序的各个部分。相反,它应该接受它的输入并给您一个输出。

理想情况下,函数在函数编程中应该尽可能的纯。这意味着给定相同的输入,函数的输出将始终保持不变。

函数式与面向对象编程

这与面向对象编程有很大的不同。在面向对象编程中,通常有一个基本对象,它有各种方法专门用于更改作为该对象一部分的数据或状态。如果没有显式声明,方法甚至可以更改数据或状态。

在实际程序中,有时这是有意义的。也就是说,它会使程序更难维护,因为并不总是清楚是什么在改变状态或数据。函数式编程最初用于学术环境,但也可以帮助防止此类问题。

1javascript语言

JavaScript logo

一些编程语言允许函数式编程,而另一些语言则鼓励甚至强制函数式编程。JavaScript属于第一类。虽然您可以在语言中使用函数式编程范式,但也可以轻松地使用面向对象的方法。

也就是说,JavaScript中内置了很多函数式编程范例。以高阶函数为例。这些函数可以将其他函数作为参数。

JavaScript有几个与数组一起工作的函数,比如

map()

,

reduce()

,

filter()

,以及其他,所有这些都是高阶函数。这使您可以将它们链接在一起,以便使用数组快速执行各种操作。

虽然早期的JavaScript在可变性方面存在一些问题,但ECMAScript标准的较新版本提供了修复。而不是包罗万象

var

定义变量的关键字,现在

c***t

let

. 第一个允许您定义常量,顾名思义。第二次,

let

,将变量的作用域限制为声明它的函数。

2python

Python logo

与JavaScript一样,Python是一种通用语言,您可以使用任意数量的编程范式。Python可能有它的缺点,但函数式编程不是其中之一。官方Python文档中甚至有函数式编程的介绍。

首先,你会发现许多相同的

map()

,

filter()

,

reduce()

,以及上述内置的类似功能。与JavaScript一样,这些函数是高阶函数,因为它们将其他函数作为参数。在Python中,函数式编程以

lambda

关键字。

可以通过几种方式使用lambda表达式。一种使用它的方法是作为简单函数的速记。当赋值给变量时,可以像调用标准Python函数一样调用lambda表达式。lambda表达式的真正优势在于将它们用作匿名函数。

匿名函数也可以用JavaScript和此列表中的其他语言工作。当与高阶函数一起使用时,它们特别方便,因为您可以当场定义它们。如果没有匿名函数,就必须将即使是简单的添加项也预先定义为定制函数。

三。克洛朱尔

Clojure programming language logo

与JavaScript和Python不同,Clojure可能不是家喻户晓的名字,甚至在程序员中也是如此。如果您不熟悉的话,Clojure是Lisp编程语言的一种方言,可以追溯到20世纪50年代末,它带来了一种非常特殊的方式来做事情,恰好非常适合函数式编程。

与其他Lisp方言一样,Clojure将代码视为数据。这意味着代码可以有效地改变自身。与其他Lisp方言不同,Clojure运行在Java平台上,并被编译成JVM字节码。这意味着它可以与Java库一起工作,不管它们是否用Clojure编写。

与此列表中以前的语言不同,Clojure是一种从头开始的函数式编程语言。这意味着它尽可能地提倡不变性,特别是在数据结构中。

Clojure并不期望所有的程序在数学上都是“可证明的”,但鼓励尽可能使用纯函数。

4榆树

Elm programming language logo

Elm是这个列表中较新的语言之一,它是一种纯函数式语言,最初由evanczaplicki在2012年设计。这种语言已经在web开发人员中流行起来,特别是在创建用户界面方面。

与此列表中以前的每个条目不同,Elm使用静态类型检查。这有助于确保没有运行时异常,而是在编译时捕获错误。这对用户来说意味着更少的可见错误,这是一个主要的优点。

Elm编译器以HTML、CSS和JavaScript为目标。与使用Clojure编写在Java上运行的程序一样,您也可以在Elm中编写使用JavaScript库的应用程序。

Elm和其他语言之间的一个主要区别是你不会找到泛型

filter()

,

map()

,以及类似的功能。相反,它们是由数据类型定义的,比如

List.map

Dict.map

.

5哈斯克尔

Haskell programming language logo

Haskell是另一种静态类型的纯函数式语言。不像埃尔姆,哈斯克尔已经出现了一段时间。第一个版本的语言是在1990年设计的。最新的标准是Haskell 2010,而下一个版本计划在2020年发布。

正如我们已经探讨过的,Haskell纯粹的功能性意味着通过设计,功能不应该有副作用。这使得它非常适合解决现实世界中的问题,尽管函数式编程起源于学术界。

尽管Haskell缺乏主流的流行性,但它已经被广泛应用于一些项目中。Xmonad窗口管理器完全是用Haskell编写的。Pandoc也使用这种语言,它将不同类型的标记转换成其他格式。

标准

map()

,

filter()

,

reduce()

,以及其他高阶函数,这些函数应该允许您将JavaScript或Python的概念引入Haskell。如果你想更多地了解这门语言,学习Haskell是一个受欢迎的起点。

你是编程新手吗?

如果你还不是一个经验丰富的程序员,上面的一些术语和语言可能看起来有些深奥。这很好,因为知道你不知道的是成为一个更好的学习者的第一步。

上面列出的一些语言对初学者来说比其他语言更好。看看我们为初学者提供的最佳编程语言列表。你会注意到这两个列表之间有些交叉。

如果您感兴趣,请查看我们的指南,了解如何构建一个简单的PHP网站。

  • 发表于 2021-03-20 18:46
  • 阅读 ( 621 )
  • 分类:编程

你可能感兴趣的文章

声明的(declarative)和命令式程序设计(imperative programming)的区别

...重于程序应该如何实现结果。 编程范例用于根据特性对编程语言进行分类。它还允许遵循某种模式或风格来解决特定问题。 目录 1. 概述和主要区别 2. 什么是声明式编程 3. 什么是命令式编程 4. 并排比较-以表格形式的声明式编...

  • 发布于 2020-10-16 09:49
  • 阅读 ( 548 )

函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别

...建计算机程序的结构和元素的风格。编程范例有助于根据编程语言的特征对其进行分类。编程语言可能会影响更多的范例。在面向对象的范例中,程序是用对象构造的,而对象是用方法传递消息的。逻辑程序设计只能用数理逻辑...

  • 发布于 2020-10-19 02:12
  • 阅读 ( 476 )

垃圾收集器(garbage collector)和析构函数(destructor)的区别

关键区别–垃圾收集器与析构函数 大多数编程语言都支持面向对象编程。它是一种使用对象构建程序或软件的方法。对象是使用类创建的,因此它是类的实例。类提供对象应该由什么组成的描述。创建对象时,会为对象分配...

  • 发布于 2020-10-19 13:14
  • 阅读 ( 188 )

你的代码能闻到!如何修复

... 把代码气味看作是任何暗示某段代码应该被重构的迹象。这并不是因为代码有缺陷或者没有功能——通常情况下,有臭味的代码运行得很好——而是臭味的代码通常很难维护和扩展,这可能会导致技术问题(...

  • 发布于 2021-03-12 10:58
  • 阅读 ( 242 )

程序员指针简介

...汇编是由一系列执行任务的简单命令组成的,被称为低级编程语言。编写复杂的程序是可能的,但是很难表达抽象的概念,而且需要大量的考虑。 ...

  • 发布于 2021-03-15 04:42
  • 阅读 ( 177 )

10种最常见的编程和编码错误

...复的。根据经验,如果复制和粘贴代码,可能是重复的,应该更改。 ...

  • 发布于 2021-03-18 04:48
  • 阅读 ( 235 )

你今天应该掌握的5种javascript数组方法

...内置的最强大的构建块之一是数组。数组通常存在于许多编程语言中,用于存储数据。 ...

  • 发布于 2021-03-18 11:00
  • 阅读 ( 222 )

如何学习c编程与这个初学者的项目

...累的经验。除了学习所选语言的语法外,还必须学习所有编程语言使用的一般原则。 ...

  • 发布于 2021-03-22 14:01
  • 阅读 ( 207 )

为什么编程语言离不开函数

... 你有没有想过为什么函数是这么多编程语言的基石?让我们看看为什么它们如此重要,以及它们为程序员做了什么。 ...

  • 发布于 2021-03-26 09:26
  • 阅读 ( 173 )

如何使用这9个函数在php中操作文本

字符串是许多编程语言(包括PHP)中的基本标量类型之一。它们表示从单个字符到整个文档的文本数据。 ...

  • 发布于 2021-03-27 01:14
  • 阅读 ( 229 )
zwla2219
zwla2219

0 篇文章

相关推荐