iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何理解声明式与命令式代码
  • 647
分享到

如何理解声明式与命令式代码

2024-04-02 19:04:59 647人浏览 泡泡鱼
摘要

这篇文章主要讲解了“如何理解声明式与命令式代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解声明式与命令式代码”吧!命令式编程命令式编程是我们从As

这篇文章主要讲解了“如何理解声明式与命令式代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解声明式与命令式代码”吧!

命令式编程

命令式编程是我们从Assembly(1949)开始并以诸如C,C ++,C#PHP和Java之类的语言继续的方式。过程和面向对象的编程属于命令式范式。

代码基于通过告诉计算机如何执行操作来更改程序状态的语句。换句话说,代码基于定义变量并更改这些变量的值。

对于那些告诉机器如何思考的人,他们拥有不亚于天真的恋物癖的人,这是理想的编程范例。

过程编程

程序代码使用过程来管理其结构。过程只是一组按特定顺序运行的操作,可以重复调用这些操作,而不必使用Goto命令进行跳转。

#include <stdio.h> int main() {     int num1, num2, num3;     int *p1, *p2, *p3;      //taking input from user     printf("Enter First Number: ");     scanf("%d",&num1);     printf("Enter Second Number: ");     scanf("%d",&num2);     printf("Enter Third Number: ");     scanf("%d",&num3);      //assigning the address of input numbers to pointers     p1 = &num1;     p2 = &num2;     p3 = &num3;     if(*p1 > *p2) {       if(*p1 > *p3){         printf("%d is the largest number", *p1);       }else{         printf("%d is the largest number", *p3);       }         }else{       if(*p2 > *p3){         printf("%d is the largest number", *p2);       }else{         printf("%d is the largest number", *p3);       }     }     return 0; }

上面的C语言示例读取三个数字,使用指针,并通过条件逻辑驱动程序流,以确定三个数字中的最大数字。像C这样的过程语言可以提供一个非常简单且非常高效的解决方案,以应对应用程序挑战。

通常,需要从上至下阅读每个过程以了解其作用。有时可能会批评过程程序员编写意大利面条代码的趋势。但是,任何不依赖意大利面条和番茄酱做晚餐的大学生,生活都很轻松。

过程编程语言的示例是Pascal(1970)和C(1972)。过程编程具有强大的支持。linux之父Linus Torvalds对C ++和面向对象编程的批评一直很开放。

面向对象编程

面向对象编程是对具有内部状态的对象进行建模。然后,编程代码基于这些对象之间的关系。在基于分类的语言中,对象是类的实例。

对象方法中的代码仍然是命令性的,并且基于修改状态的语句。

public interface Retile {    void walk(); }  public class Turtle implements Reptile {    @Override    public void walk() {       System.out.println("Turtle is walking!");    } }  public class Tortoise implements Reptile {    @Override    public void walk() {       System.out.println("Tortoise is walking!");    } }  public class ReptileFactory {    public Reptile getReptile(String reptileType){       if(reptileType == null){          return null;       }            if(reptileType.equalsIgnoreCase("TURTLE")){          return new Turtle();       } else if(shapeType.equalsIgnoreCase("TORTOISE")){          return new Tortoise();       }       return null;    } }  public class ReptileDemo {    public static void main(String[] args) {       ReptileFactory reptileFactory = new ReptileFactory();        Reptile reptile = Reptile.getReptile("TURTLE");        reptile.walk();    } }

上面是用Java实现的工厂设计模式的示例。注意所有代码如何集中于定义类并通过接口使用它们之间的关系。通常,所有这些类都将被分离到各自的文件中。

面向对象语言的示例包括Smalltalk(1972),C ++(1985),python(1991),Java(1995),javascript(1995),Ruby(1995),C#(2000),Scala(2004)和Swift(2014)。

JavaScript最初是基于原型的,没有类的面向对象语言。在2015年的ECMAScript 6中添加了类。

在学习编程时,在所有范例中,最有可能会遇到面向对象的代码。尽管它是最流行的范例,但由于其复杂性,理解设计模式的难度以及整个应用程序中棘手的状态管理,它仍然遭到严重的批评。同时,面向对象的编程语言非常成熟并且受到专业人士的赞赏。

在JavaScript中,前端框架angular是C#的一个很好的例子,它对希望将更强的面向对象原理引入web开发开发人员有很大的影响。

请继续在所有项目中使用面向对象的编程。因为如果不这样做,所有只知道这一范例的人都会突然失业,然后住在纸板箱中。而且你不想为此承担责任,对吗?

声明式编程

声明性代码非常普遍,并且由领域特定的,逻辑和功能性编程语言表示。这些示例包括htmlsql,F#,Prolog和Lisp。

声明性代码专注于在不添加方式的情况下说出什么的表达式。例如,HTML代码告诉浏览器不显示浏览器图像就显示乌龟图像。声明式代码通常避免状态和变量的突变。

特定于域的代码

特定领域的语言不是图灵完整的,这意味着它们无法完成其他图灵完整的语言可以做的所有事情。例如,C#(命令式)和F#(声明式)都是图灵完备的语言,可以用一种语言开发的所有内容,也可以用另一种语言开发。HTML并非图灵完整的,并且仅允许做特定的事情。

数据库中查找员工及其经理的SQL代码示例:

SELECT e.name, m.name  FROM Employee e, Employee m  WHERE e.Employee_id=m.Manager_id;

特定领域的语言通常很容易编写和阅读。因此,它们是最流行的用户界面声明方式。例如,JavaScript编程库React使用jsX定义组件:

const myComponent = props => (    <h2>Hello, {props.userName}</h2> };

特定领域语言的示例是SQL(1974),HTML(1993),CSS(1996)和XML(1996)。

逻辑编程

逻辑编程是基于形式逻辑的声明性范式。程序是一组逻辑形式的句子,表达有关某些问题领域的事实和规则。

图灵完备的最典型的逻辑编程语言是Prolog(1972)。这意味着理论上可以用C语言编写的所有内容,也可以在Prolog中编写。

Prolog基于定义谓词的谓词,这些谓词定义了它们的参数之间的关系。

food(salad). % <- salad is food fact food(pizza). % <- pizza is food fact  ?- food(salad). % <- is salad food? True ?- food(turtle). % <- is turtle food? False

在上面的示例中,您定义了导致真实的事实,然后又问了一些导致真实或错误的布尔值的问题。

请记住,海龟不是食物,有人应该告诉赤裸裸和害怕的饥饿者。

当你使用Prolog工作时,Prolog有点神奇,如果你不同意,那么你还是个邪恶的家伙。

函数式编程

函数式编程是基于纯函数组成的声明性范例。函数式编程语言是图灵完备的,并且基于lambda微积分,它是1930年代的一种数学逻辑系统。

纯函数是仅依赖于其输入并且始终提供输出而不会改变或读取任何外部状态的函数。这与过程编程大不相同。然后,函数组合是关于按顺序一起使用简单函数来构建代码。

在过去的几年中,函数式编程的流行一直稳步增长,并且已进入命令式编程语言。这意味着诸如Python,C ++和JavaScript之类的语言是多范式的,因为它们支持以多种范式编写代码。

这是使用@ 7urtle / lambda库用JavaScript编写的功能代码的示例:

import {upperCaseOf, trim, map, compose, Maybe} from '@7urtle/lambda';  const getElement = selector => Maybe.of(document.querySelector(selector)); const getText = element => element.textContent; const transfORMer = compose(trim, upperCaseOf); const getElementText = compose(map(transformer), map(getText), getElement);  getElementText('#myTurtle'); // => Maybe('shellY')

函数式程序设计带来了许多面向对象程序设计中没有的新概念,例如纯函数,高阶函数,不变性,函子,部分应用程序,无点函数等等。因此,入门的门槛似乎很高,尤其是因为许多函数式编程文章都喜欢深入其数学基础。我建议看一下简单的文章,例如@ 7urtle / lambda JavaScript函数式编程基础知识。https://www.7urtle.com/javascript-functional-programming-basics

只有邪恶的巫师认为函数式编程是不好的。因此,要聪明一点,不要听他们邪恶的诅咒,而要在他们所属的木桩上焚烧他们。请记住,如果有人说原子很复杂,那只是假新闻。

函数式编程语言的其他示例是LISP(1984),Haskell(1990)和F#(2005)。

感谢各位的阅读,以上就是“如何理解声明式与命令式代码”的内容了,经过本文的学习后,相信大家对如何理解声明式与命令式代码这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何理解声明式与命令式代码

本文链接: https://www.lsjlt.com/news/84188.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解声明式与命令式代码
    这篇文章主要讲解了“如何理解声明式与命令式代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解声明式与命令式代码”吧!命令式编程命令式编程是我们从As...
    99+
    2022-10-19
  • JavaScript命令式和声明式代码有哪些区别
    这篇文章主要介绍“JavaScript命令式和声明式代码有哪些区别”,在日常操作中,相信很多人在JavaScript命令式和声明式代码有哪些区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2022-10-19
  • Vue简介、引入、命令式与声明式编程详解
    目录一、初识Vue1.1.vue简介1.2.Vue引入方式1.3.计数器案例原生js和vue开发不同1.4.声明式编程和命令式编程总结一、初识Vue 1.1.vue简介 Vue 是一...
    99+
    2022-11-13
  • React从命令式编程到声明式编程的原理解析
    目录1 HTML 构建静态页面2 DOM 构建页面3 从命令式到声明式4 JSX5 总结6 完整代码这个系列的目的是通过使用 JS 实现“乞丐版”的 Reac...
    99+
    2022-11-13
  • html div 透明样式代码怎么理解
    html div 透明样式代码怎么理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。参数解析: alpha是来设置透明度的,它...
    99+
    2022-10-19
  • spring注解如何开启声明式事务
    目录spring开启声明式事务导入依赖配置类文件业务逻辑编写测试代码总结spring开启声明式事务 导入依赖 pom.xml <dependencies>        ...
    99+
    2022-12-28
    spring 注解 注解开启声明式事务 spring声明式事务
  • 如何理解Java设计模式的命令模式
    本篇内容主要讲解“如何理解Java设计模式的命令模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java设计模式的命令模式”吧!一、什么是命令模式命令模式是一个高内聚的模式,其定义为:...
    99+
    2023-06-25
  • 如何在Spring中使用声明式事务管理
    本篇文章为大家展示了如何在Spring中使用声明式事务管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。基于TransactionProxyFactoryBean的事务管理配置Spring中配置AO...
    99+
    2023-05-31
    spring 声明式事务管理
  • Java命令设计模式优雅解耦命令和执行提高代码可维护性
    目录介绍实现总结优点缺点应用场景介绍 Java命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成一个对象,从而使不同的请求可以进行参数化,并支持请求的排队...
    99+
    2023-05-17
    Java命令设计模式 Java命令模式 Java设计模式
  • 如何利用PHP7的类型声明编写更容易理解和维护的代码?
    如何利用PHP7的类型声明编写更容易理解和维护的代码?随着PHP7的发布,类型声明成为了PHP开发者们的新宠。通过类型声明,我们可以在函数参数和返回值中明确指定数据类型,从而增加代码的可读性、可维护性和安全性。本文将介绍如何利用PHP7的类...
    99+
    2023-10-27
    PHP 类型声明 理解和维护
  • Go语言与Git:如何优化分布式代码管理?
    在当今软件开发领域中,Git已成为最受欢迎的版本控制系统之一。而Go语言则因其高效性和简单性而备受青睐。在本文中,我们将讨论如何使用Go语言和Git来优化分布式代码管理。 一、Git简介 Git是一个分布式版本控制系统,它最初是由Linu...
    99+
    2023-11-01
    git 分布式 npm
  • 如何解决spring声明式事务@Transactional不回滚的多种情况问题
    这篇文章给大家分享的是有关如何解决spring声明式事务@Transactional不回滚的多种情况问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、 spring 事务原理一、Spring事务原理在使用JD...
    99+
    2023-06-25
  • ubuntu命令行模式与图形桌面之间如何切换
    这篇文章给大家分享的是有关ubuntu命令行模式与图形桌面之间如何切换的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ubuntu命令行模式与图形桌面切换方法,具体如下:嵌入式软件开发需要依赖Linux操作系统,常...
    99+
    2023-06-13
  • 如何使用命令行方式管理MySQL数据库
    这篇文章主要为大家展示了“如何使用命令行方式管理MySQL数据库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用命令行方式管理MySQL数据库”这篇文章吧...
    99+
    2022-10-19
  • 如何理解linux shell命令行选项与参数用法
    这篇文章主要讲解了“如何理解linux shell命令行选项与参数用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解linux shell命令行选项与参数用法”吧!问题描述:在lin...
    99+
    2023-06-09
  • 如何理解ASP.NET与Ajax的实现方式
    如何理解ASP.NET与Ajax的实现方式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Ajax 应该不是一项技术,是一种思想而已,跟 ASP.NET 以及其它...
    99+
    2023-06-17
  • 鸿蒙代码如何配置混淆原理以及混淆命令
    本篇内容主要讲解“鸿蒙代码如何配置混淆原理以及混淆命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“鸿蒙代码如何配置混淆原理以及混淆命令”吧!一、前言Java代码会被编译成字节码,字节码非常容易...
    99+
    2023-06-15
  • 如何深入理解Java设计模式的迭代器模式
    如何深入理解Java设计模式的迭代器模式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、什么是迭代器模式迭代器模式是针对集合对象而生的,对于集合对象而言,肯定...
    99+
    2023-06-25
  • 如何理解bash shell命令行选项与修传入参数处理
    本篇内容主要讲解“如何理解bash shell命令行选项与修传入参数处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解bash shell命令行选项与修传入参数处理”吧!在编写shell...
    99+
    2023-06-09
  • 如何理解Redisson分布式锁的源码
    本篇内容介绍了“如何理解Redisson分布式锁的源码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Red...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作