随想011:关于编程

news2024/11/24 12:24:51
  • 1945 年时,刚开始有计算机,那时候使用二进制数编程
  • 到了40年代末期,出现了汇编器,可以自动将汇编程序转换为二进制数序列
  • 1951 年 Grace Hopper 发明了编译器
  • 1957 年,Fortran,第一个高级语言,首次亮相
  • 接下来就是层出不穷的新编程语言 - COBOLCPascalC++Java 等等1

经过了几十年的发展,今天的软件与过去的软件本质上仍然是一样的,程序都是由 顺序结构分支结构循环结构 组成,再没有出现新的结构。

  • 1958 年 John Mccarthy 发明了 LISP 语言,函数式编程 范式诞生
  • 1966 年 Ole Johan DahlKriste Nygaard 的论文开创了 面向对象编程 范式
  • 1968 年 Edsger Wybe Dijkstra 论证了 goto 语句的危害,结构化编程 范式诞生

经过了几十年的发展,今天的编程范式与过去完全一样,也是结构化编程 范式、 面向对象编程 范式和 函数式编程 范式,再没有出现新的编程范式。

到 1968 年,今天所有的程序结构和编程范式就已经全部出现,从那之后的半个多世纪以来,软件工程领域只是更新了更好的工具以及沉淀了一些构建程序的关键经验。

软件工程的最基本经验是:保持简洁2

软件设计有两种方式:一种是设计得极为简洁,明显没有缺陷;另一种是设计得极为复杂,没有明显的缺陷。第一种方式要难得多。3

大多数软件禁不起磕碰,毛病很多,就是因为过于复杂,很难通盘考虑。如果不能够理解一个程序的逻辑,就不能确信其是否正确,在出错时,你将更加没有头绪:可能性太多。

Brian Kernighan 认为 “计算机编程的本质就是控制复杂度”。要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。

要保持代码简洁,需要艰辛的劳动和严格的职业操守,遵循的原则是“童子军规范”:每次迁入都要比迁出好一些。

要保持架构简洁,需要理解“单一职责原则”、“开闭原则”、“接口隔离原则” 、和“依赖反转原则”。

要保持设计简洁,需要思维上的转变。能删除什么?能简化什么?能重新定义什么?

所有的这些,一言蔽之,就一个字:简

把复杂的事情变简单,简单的事情便可靠






读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
千金难买知识,但可以买好多奶粉


  1. 《架构整洁之道》 ↩︎

  2. 《嵌入式系统设计的艺术》 ↩︎

  3. 《UNIX编程艺术》 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

npm 无法下载 win32-x64-72_binding.node

使用npm安装node-sass时,其依赖了win32-x64-72_binding.node,但是一直提示“cannot download http://xxx/win32-x64-72_binding.node”,有两种方案可以解决,一种是在有私服的情况下,可以通过设置 SASS_BINARY_SITE 环境…

百度云原生数据库GaiaDB的HTAP与多地多活技术实践

​摘要:云原生数据库在使用存算分离技术后,可以在完全兼容MYSQL协议和语法的情况下,极大提升单实例所能承载的数据规模与吞吐能力上限。但除了对客户端兼容外,对整个数据生态(地域容灾,数据分析&#xff0c…

javaWebssh旅游论坛系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh旅游论坛系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Mye…

机器学习中四类进化算法的详解(遗传算法、差分进化算法、协同进化算法、分布估计算法)

1、遗传算法(Genetic Algorithm,GA) GA算法原理 首先我们来介绍进化算法的先驱遗传算法,遗传算法(Genetic Algorithm,简称GA)是一种最基本的进化算法,它是模拟达尔文生物进化理论的…

牛牛截图控件与利洽远程控制产品升级-支持证书自动升级

今天我们来聊一聊浏览器控件的一个痛点!看看我们是如何解决他的。 背景信息 目前市面上存在多种浏览器,IE、Chrome、Firefox、Edge以及一众国产浏览器,这些浏览器中,IE支持ActiveX,部分国产浏览器支持npapi&#xff…

vscode开发小程序项目并在微信开发者工具运行

需求:vscode开发uniapp之后在微信开发者工具运行,更改的时候微信开发者也同步更改 1.创建小程序命令 这里的uniapp-vue是项目名称,不能大写 vue create -p dcloudio/uni-preset-vue uniapp-vue 2.选择uni-app模版 有几种模版选择&#x…

Ubuntu TDengine 集成 EMQX 通过规则引擎实现设备数据直接入库

背景 曾使用过 IoTDB 自带的 MQTT Broker 实现了设备数据入库,那么使用 TDengine 时,我们可以借助 EMQX (一款优秀的国产开源 MQTT Broker )的规则引擎结合 TDengine 的 RESTful API 完成设备数据的路由与入库。 用到的工具 TD…

PAI-Diffusion中文模型全面升级,海量高清艺术大图一键生成

作者:段忠杰(终劫)、刘冰雁(伍拾)、汪诚愚(熊兮)、黄俊(临在) 背景 以Stable Diffusion模型为代表,AI生成内容(AI Generated Content&#xff…

鸿蒙Hi3861问题解决-[OHOS ERROR] clang not found, install it please

一、简介 在使用DevEco进行编译时出现[OHOS ERROR] clang not found, install it please问题,导致编译失败,这里做个问题记录。 二、解决 这种问题其实还是工具链安装不全造成的。 安装gn 这里用的是VSCode DevEco组件,里边包含了gn组件的安…

error while loading shared libraries: libc.so.6 误删除libc.so.6急救办法,

故障原因: 在高版本的环境中编译了一个软件,然而在低版本系统中无法使用,缺少libc.so支持,然而在编译过程中误删除了 libc.so.6的软连接,rm /lib64/libc.so.6 删除后发现系统好多命令都无法使用了,悲催&#xff01…

国际最高级别认可!赛宁网安荣获CMMI5国际认证

​​近日,经国际权威机构评估,南京赛宁信息技术有限公司(简称:赛宁网安)顺利通过国际软件领域最高级别的CMMI五级(简称CMMI5)认证。荣获CMMI5证书,标志着赛宁网安在软件研发、软件成…

Axure教程—动态单散点图(中继器)

本文将教大家如何用AXURE制作单散点图 一、效果介绍 如图: 预览地址:https://q79has.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87817717 二、功能介绍 简单填写中继器内容即可生成动态单散点图样式颜色等…

前端微服务无界实践 | 京东云技术团队

一、前言 随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。 前端微服务优势…

【源码篇】基于SSM+EasyUI开发的学生后台管理系统

系统介绍 一个基于SSM的学生管理系统:代码注释详细,逻辑结构清晰,对于初学 SSM 的同学非常具有参考,及学习价值哟! 数据库中默认的管理员身份信息 账户名:admin,密码:admin 用户权限介绍: 管理员:具有所有管理模块的操控权限。学生:仅具有学生信息管理模块的查…

智能AI抢了元宇宙的风头?

前几天,微博突然出现这么一条热搜。 #ChatGPT官方APP登录美国苹果应用商店 这绝对是一条相当火爆的新闻,因为这意味着智能聊天机器人ChatGPT终于有自己的App了。值得一提的是,ChatGPT不仅仅登录了美国苹果应用商店,而且下载量迅…

80个10倍提升Excel技能的ChatGPT提示

你是否厌倦了在使用Excel时感觉像个新手?你是否想将你的技能提升到更高的水平,成为真正的Excel大师?嗯,如果你正在使用ChatGPT,那么成为Excel专家简直易如反掌。 你只需要了解一些最有用的Excel提示,就能在…

打造高效互联网医院系统源码:解读其核心功能及应用

随着互联网的不断普及和发展,互联网医院系统已经成为了现代医疗服务的一个重要组成部分。本文将介绍互联网医院系统的核心功能以及其应用,并提供一些互联网医院系统开发代码。 互联网医院系统是一种基于互联网技术的医疗服务平台,可以通过网…

Springboot +spring security,实现session并发控制及实现原理分析

一.简介 在SpringSecurity中实现会话并发控制,只需要配置一个会话数量就可以了,先介绍下如何配置会话并发控制,然后再。介绍下SpringSecurity 如何实现会话并发控制。 二.创建项目 如何创建一个SpringSecurity项目,前面文章已经…

Hive ---- 函数

Hive ---- 函数 1. 函数简介2. 单行函数1. 算术运算函数2. 数值函数3. 字符串函数4. 日期函数5. 流程控制函数6. 集合函数7. 案例演示 3. 高级聚合函数案例演示 4. 炸裂函数1. 概述2. 案例演示 5. 窗口函数1. 概述2. 常用窗口函数3. 案例演示 6. 自定义函数7. 自定义UDF函数 1.…

Unity - 记一次非正规变体优化带来的兼容性导致部分手机卡死的问题

文章目录 问题但是我咨询过 公司中台TA大佬 - 2023.4.6然后咨询 unity 技术官方 - 2023.4.6再次遇到卡死 - 2023.5.24 解决方法具体华为真机上的 DEBUG 问题 在 2023.4.6 我们的 角色展示界面 就遇到了 华为手机,red mi note 11 的测试手机上的 后 2023.5.24 再次遇…