zoukankan      html  css  js  c++  java
  • 2. 声明式编程和命令式编程有什么区别?

    计算机系统是分层的,也就是下层做一些支持的工作,暴露接口给上层用。注意:语言的本质是一种接口,就是我编程的目的只是为了调用硬件为我做事情;

    个人理解 declarative programming 是相对更高层面的编程,也就是很多被被别人特别好的给封装了起来,自己要做的事情少;也就是高级,跟C#一样

    计算机的最下层是CPU指令,其本质就是用“变量定义+顺序执行+分支判断+循环”所表达的逻辑过程。计算机应用的最上层是实现人类社会的某种功能。所以所有计算机编码的过程,就是用逻辑表达现实的过程。

    层与层之间定义的借口,越接近现实的表达就叫越“声明式”(declarative),越接近计算机的执行过程就叫越“命令式”(imperative)。注意这不是绝对的概念,而是相对的概念。

    Declarative programming 声明式:

    又称之为"说明式"

    你告诉机器你想要什么,机器去做

    蔬菜.做成菜(蔬菜沙拉)

    常见的声明式有: SQL,HTML,Linq

    Imperative programming 命令式:

    又称之为"指令式"

    命令机器如何去做事情,这样不管你想要什么,它都会按照你的想法编程

    洗干净(蔬菜)
    混合(蔬菜, 沙拉)
    放入盘中(混合物)

    举个例子:

    leicheng 公司年会说明式就是 每个节目负责人告诉HR我需要什么

    命令式就是你们又自己的预算,自己想办法去买,怎么买去哪儿买,自己搞定,记得要发票,拿发票去填写报销流程,去采购,运输,最后跟HR报销

    C#中二者对比

    // 原来的命令时语法
    var petLookup = new Dictionary<int, Pet>();
    
    foreach (var pet in pets)
    {
        petLookup.Add(pet.RFID, pet);
    }
    // 等效的Linq表达式
    var petLookup = pets.ToDictionary(pet => pet.RFID);
    
    //代码的意图不是创建新的 Dictionary<int, Pet> 并通过循环在其中添加条目,而是将现有列表转换为字典! LINQ 维持这种意图,而命令性代码则不会。
  • 相关阅读:
    hdoj_1016Prime Ring Problem
    毛玻璃
    HDOJ1175连连看
    const小结
    指向二维数组的指针
    关于对ACM OJ大数据递归栈溢出问题的解决方案
    Hessian的使用与介绍
    Tomcat调优
    ant使用
    ant使用
  • 原文地址:https://www.cnblogs.com/maanshancss/p/13086812.html
Copyright © 2011-2022 走看看