软件之禅(一)Hello,World!

黄国强 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 的代码最大的问题是无法维护。每增加一个类型都要修改现有代码,属于典型的屎山代码。那么如何解决这个问题,下一篇文章将继续,今天不写了。


【参考文献】
马斯克第一性原理

软件之禅(二)数据类和输出类
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值