软件之禅(一)Hello,World!

news/2025/2/22 15:42:22/

黄国强 2023/5/19

近半年比较空,思考多了一点。
之前工作比较忙,而且工作中遇到的问题都能用自己掌握的方法应付。这样思想就懈怠了。
个人打算写一个系列文章,试图用第一性原理来把我自己掌握的知识梳理一遍,看看是否能更深入的认识软件的本质。
第一性原理意思是:“每个系统中存在一个最基本的命题,它不能被违背或删除。”
这个原理因为马斯克而广为所知,马斯克对于事物的认知远高于常人,这和他经常用“第一性原理”分析事物分不开的。
下面这段 C++ 代码程序员都很熟悉,应该是学习编程的人看的第一段演示程序。

#include <iostream>int main()
{std::cout << "Hello World!\n";
}

这段程序运行会在电脑屏幕上输出一行"Hello,World!"。

这里 std::cout 是 c++的标准输出, "Hello,World!" 是内部字符串数据。
从这行代码我们获得两个基本概念,即输出和数据。我们先从输出开始分析,输出有很多形式,比如,显示器,打印机,磁盘,扬声器,网络等等。
而数据也有很多形式,比如,上面的是字符串,还有整形数,浮点数,图像等等。
我们的代码应该针对这些不同的形式写响应的代码,是不是应该写成下面这段伪代码形式呢?

#include <iostream>void func(int i,           // 输出类型int j,           // 数据类型void * pData)    // 数据
{switch (i){case 0: // 屏幕{switch (j){case 0: // 字符串std::cout << (const char *)pData << std::endl;break;case 1: // 图像// 显示图像代码break;}break;}case 1: // 磁盘{switch (j){case 0: // 字符串// 保存字符串代码;break;case 1: // 图像// 保存图像代码break;}break;}}
}int main()
{func(0, 1, "Hello World!\n");return 0;
}

这段代码问题很大,这种 switch 里面套 swtich 的代码最大的问题是无法维护。每增加一个类型都要修改现有代码,属于典型的屎山代码。那么如何解决这个问题,下一篇文章将继续,今天不写了。


【参考文献】
1 https://baijiahao.baidu.com/s?id=1752365602831430393
 


http://www.ppmy.cn/news/73707.html

相关文章

计算机视觉的应用6-利用VGG模型做毕加索风格图像迁移

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用5-利用VGG模型做毕加索风格图像迁移&#xff0c;本文将利用VGG模型实现毕加索风格图像迁移的方法。首先&#xff0c;我们将简要说明图像风格迁移的原理&#xff0c;然后使用PyTorch框架&#xff0c…

Redis哨兵集群搭建及其原理

Redis哨兵集群搭建及其原理 1.Redis哨兵1.1.哨兵原理1.1.1.集群结构和作用1.1.2.集群监控原理1.1.3.集群故障恢复原理1.1.4.小结 2.搭建哨兵集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.测试 3.RedisTemplate3.1.引入依赖3.2.配置Redis地址3.3.配置读写分离 1.Redis哨兵 R…

数据库相关知识

一.1 数据库 与Sybase不同&#xff0c;一个用户就对应于一个数据库。 create user CBMAIN identified by "sunline" default tablespace CBMAIN_DATA  -- 表空间 temporary tablespace CBMAIN_TEMP; -- 临时表空间 一.2 表空间 表空间由一个或多个物理文件组成&…

【新星计划】数据库 排名函数 初识

数据库 排名函数 初识 查询排序初识排名函数row_number()rank()dense_rank()ntile()percent_rank() 开窗函数为聚合函数使用开窗函数 小结 查询排序 在日常工作中&#xff0c;我们对所有需要的数据都会进行一个排序操作&#xff0c;以获得我们最需要的数据。 排序指令 order …

联想首次展示全栈算力方案服务,品牌换新亮相

1、联想算力&#xff0c;第一次真正被所有人感知。 2、基于软硬服一体化的优势&#xff0c;联想打造了丰富多样的四维算力服务&#xff0c;即融合化、场景化、订阅化、绿色化&#xff0c;可以满足不同企业、不同行业的定制化需求。 5月20日&#xff0c;主题为“联想方案服务&am…

就业内推 | 应届生专场,有华为、思科认证优先,六险一金

01 金科 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;职责描述&#xff1a; 1、为银行、企业客户提供技术服务&#xff08;包括驻场支持和现场技术支持&#xff09;&#xff1b; 2、驻客户现场配合客户完成思科、华三、华为主流网络设备的配置、管理&#xff1…

机器学习 | MATLAB实现Bayes贝叶斯优化机器学习模型答疑

机器学习 | MATLAB实现Bayes贝叶斯优化机器学习模型答疑 目录 机器学习 | MATLAB实现Bayes贝叶斯优化机器学习模型答疑问题汇总问题1答疑问题2答疑问题3答疑问题汇总 问题1:想问一下贝叶斯优化最小目标值,是什么值? 问题2:想问一下贝叶斯优化目标函数? 问题3:贝叶斯优化的…

webpack将vue3单页面应用改造成多页面应用

上篇文章搞了个单页面vue&#xff0c;现在要将其改成多页面&#xff0c;只是简单尝试&#xff0c;给了例子 其实也就是改个webpack的入口和html模版的配置&#xff0c;其他的话&#xff0c;每个页面都有自己的vue和路由实例&#xff0c;pinia的话就共享吧 &#xff01;import…