声明式编程:程序=数据+逻辑(what)+算法(控制+计算)
接口:what;
实现:算法;指令;
编程语言中,凡是不涉及到算法的部分,都可以认为是声明式编程。
命令式编程可以与算法划等号;算法要求严格的计算逻辑和控制,是实施细节的精准描述;
命令式编程与声明式编程只是侧重点的不同。一个侧重计算控制,一个侧重逻辑描述。
命令式编程通过一系列改变程序状态的指令来完成计算,声明式编程只描述程序应该完成的任务。
命令式编程模拟电脑运算,是行动导向的,关键在于定义解法,即“怎么做”,因而算法是显性而目标是隐性的;
声明式编程模拟人脑思维,是目标驱动的,关键在于描述问题,即“做什么”,因而目标是显性而算法是隐性的。
声明式编程的使用场景:
描述:结构(xml)、组织(makefile)、逻辑(sql)、依赖(cocoaspod)、特征(dsl)、流程(linq、function)
https://www.cnblogs.com/feng9exe/p/10190716.html
声明式编程:程序=数据+逻辑(what)+算法(控制+计算)的更多相关文章
- 微信小程序实现部分双向数据绑定(为input、picker、textarea编写统一的更新数据逻辑)
		
wepy开发小程序 以input为例,微信小程序没有数据双向绑定,input要显示绑定的数据即value等于一个绑定的量 <input type="text" value=& ...
 - Javascript模板及其中的数据逻辑分离思想(MVC)
		
#Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...
 - 程序语言的奥妙:算法解读   ——读书笔记
		
算法(Algorithm) 是利用计算机解决问题的处理步骤. 算法是古老的智慧.如<孙子兵法>,是打胜仗的算法. 算法是古老智慧的结晶,是程序的范本. 学习算法才能编写出高质量的程序. 懂 ...
 - 基于libUSB的USB设备固件更新程序(下载数据)(转)
		
源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libU ...
 - SparkMLlib学习分类算法之逻辑回归算法
		
SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693 ...
 - ActiveX数据对象之事务控制在VB和DELPHI中的应用
		
本文发表在中国人民解放军"信息工程大学"学报 2001年第3期. ActiveX数据对象之事务控制在VB和DELPHI中的应用 ...
 - 胖子哥的大数据之路(9)-数据仓库金融行业数据逻辑模型FS-LDM
		
引言: 大数据不是海市蜃楼,万丈高楼平地起只是意淫,大数据发展还要从点滴做起,基于大数据构建国家级.行业级数据中心的项目会越来越多,大数据只是技术,而非解决方案,同样面临数据组织模式,数据逻辑模式的问 ...
 - PHP 程序员学数据结构与算法之《栈》
		
“要成高手,必练此功”. 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...
 - 5、Android-跨程序共享数据--内容提供器
		
Android数据持久化技术:文件存储.SharedPreferences存储.数据库存储 使用这些持久化技术保存的数据只能再当前的应用程序中访问 但是对于不同应用之间的可以实现跨程序数据共享的功能 ...
 
随机推荐
- (译) 在AngularJS中使用的表单验证功能【转】
			
验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...
 - WebApi实现单个文件的上传下载
			
上传和下载是很常用的功能了,只有当用到的时候才发现不会写...,经过一番百度.筛选.整理修改后,实现了功能,下面简单的记录下实现方法. 一.上传功能 1.前端代码 上传文件 <input typ ...
 - Linux创建用户等操作
			
转自: https://www.linuxidc.com/Linux/2017-06/144916.htm 与大家分享下Linux系统中创建用户.设置密码.修改用户.删除用户的命令,希望对你有所帮助. ...
 - Romantic(hdu2699+欧几里德)
			
Romantic Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
 - 关于UltraWinGrid选中行只读设置
			
刚开始设置了 一些属性不起作用,后来检查下属性发现一旦对DataSource赋值 则属性会被重置 如果是通过绑定DataSet的方式 则需要再后面设置 ].Override.CellClickActi ...
 - 教你用Cordova打包Vue项目
			
现在国内越来越多的开发者使用Vue开发混合app,但是当大家开发完成过后才发现不知道该怎么将Vue项目打包成app. 据我现在的了解打包Vue项目目前流行的就是使用weex和cordova.weex是 ...
 - Can’t connect to local MySQL server through socket的解决方法
			
http://www.aiezu.com/db/mysql_cant_connect_through_socket.html mysql,mysqldump,php连接mysql服务常会提示下面错误: ...
 - 数组无法使用 forEach() 方法 - 分号的重要性
			
问题描述: 函数的结构如上图所示,在调用该函数的时候,浏览器报错: 分析原因: 在 js 的语法中,如果语句独占一行,通常可以省略句末的分号 但实际上 js 解析代码的时候,只有在句末缺少分号就无法正 ...
 - django-缓存的应用
			
为什么需要缓存? django中文文档: 通常,计算值是昂贵的(即资源匮乏和缓慢),因此将值保存到可快速访问的缓存中可以有巨大的好处,为下一次需要做好准备. 这是一个足够重要和强大的技术,Django ...
 - 本地服务器搭建服务:svn
			
SVN(使用VisualSVN-server)可视化SVN 服务搭建,适合小白:简单又快捷,深入了解命令行方式等高手请移步官网看教程 1.官网 :http://subversion.apache.or ...