zoukankan      html  css  js  c++  java
  • 7-[函数]-函数式编程

    1.引入

    一直以来,作为函数式编程代表的Lisp,还是Haskell,更多地都是在大学中,在实验室中应用,而很少真的应用到真实的生产环境。
    先让我们再来回顾一下伟大的摩尔定律:
    1、集成电路芯片上所集成的电路的数目,每隔18个月就翻一番。
    2、微处理器的性能每隔18个月提高一倍,而价格下降一半。
    3、用一个美元所能买到的电脑性能,每隔18个月翻两番。
    一如摩尔的预测,整个信息产业就这样飞速地向前发展着,但是在近年,我们却可以发现摩尔定律逐渐地失效了,芯片上元件的尺寸是不可能无限地缩小的,这就意味着芯片上所能集成的电子元件的数量一定会在某个时刻达到一个极限。那么当技术达到这个极限时,我们又该如何适应日益增长的计算需求,电子元件厂商给出了答案,就是多核。
    多核并行程序设计就这样被推到了前线,而命令式编程天生的缺陷却使并行编程模型变得非常复杂,无论是信号量,还是锁的概念,都使程序员不堪其重。
    就这样,函数式编程终于在数十年后,终于走出实验室,来到了真实的生产环境中,无论是冷门的Haskell,Erlang,还是Scala,F#,都是函数式编程成功的典型。

    2.函数式编程

    简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
    主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式:
    (1 + 2) * 3 - 4

    传统的过程式编程,可能这样写:
    var a = 1 + 2;
    var b = a * 3;
    var c = b - 4;

    函数式编程要求使用函数,我们可以把运算过程定义为不同的函数,然后写成下面这样:
    var result = subtract(multiply(add(1,2), 3), 4);

  • 相关阅读:
    浅谈CSS3 Filter的10种特效
    简评Photoshop CC新增的复制CSS功能
    首页背景图自适应
    CSS常用浮出层的写法
    隐藏"站长统计"图标
    响应式网站代码收集整理
    【leetcode❤python】 58. Length of Last Word
    【leetcode❤python】 88. Merge Sorted Array
    【leetcode❤python】 234. Palindrome Linked List
    【leetcode❤python】 20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/venicid/p/8409736.html
Copyright © 2011-2022 走看看