为什么程序员写的第一个程序是“Hello World!”

Posted 嵌入式软件实战派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么程序员写的第一个程序是“Hello World!”相关的知识,希望对你有一定的参考价值。

《三体》小说中有很多让人“虎躯一震”的概念,例如这个“降维打击”的概念。小说里面讲的,歌者向太阳系扔了一个“二向箔”,接着三维的太阳系瞬间变成了二维世界……

这是小说里面的情节,而现实生活中,我们有很多类似“降维打击”的事。

我说“程序员写代码”是一件“降维打击”的事,或者更应该说是“降维创造”的事,你信么?

你有没有想过,为什么程序员写的第一个程序绝大多是输出:

“Hello, World!”

而不是“Hello, Kitty!”,也不是“Hello, Program!”?

看起来好像是“祖上的传统”,然而我觉得有特殊含义。

我们写代码,是在创造一个世界。

程序员接触这个世界,第一件事就是向这个世界Say Hello。

也许你觉得我是在吹水,甚至是胡说八道。

如果你是从事嵌入式软件的工程师,你就会知道,芯片里面的基本上所有内容都有个地址,一维的。

装载的运行程序,在于Flash或ROM中,是一段线性空间,每个字节都有唯一地址;动态变量所在RAM也是有地址的;甚至MCU内部的寄存器,也是有地址的。

不仅仅是MCU里面的空间是一维的,你写程序也是一维的,每个运行的函数,每个代码行,甚至每个byte都是有唯一地址的。

好多做应用软件开发的工程师,是不知道可以直接操作地址的,例如以下代码,看得他们是一愣一愣的:

#define MPU_CTRL 0xE002ED94
*(uint32_t*)MPU_CTRL |= 0x00002000;

以上我想说的是,这是一个一维的世界。

你写代码就是建造这个一维世界,也可以理解,这是一个“降维创造”。

这样想想,程序员真是一个牛逼而高尚的职业。

你忍着,先别喷,我知道你自从干了程序员,内心奔腾着万千草泥马,分分钟想删库跑路。

别!“删库跑路”是一件“降维打击”的事,我们现在讲“降维创造”!

想想,你当初因为什么而做程序员的?我想,大多数也许是对软件的好奇吧,是个很好玩的东西,可以做很多很神奇的事。

所以,不忘初心,要继续着这伟大的事业!

回过头来,继续说嵌入式软件这个一维世界。

上面提到,嵌入式软件里所有的目标对象,几乎都有地址,都像是生存在一个一维世界中。

程序运行的每一步,都像推动着那个世界在运转。

一步一步的,这个世界挺安稳的,听随你的每一个指令。

一开始,你小心翼翼地让它一步一步走,感受其神奇的开始;

后来,你尝试着多步多步地跳,体验其带来的快感;

再后来,你大胆尝试让它飞起来,无比刺激!

然后,你发现它迈的步伐太大了,容易扯到蛋。

指针,让你欢喜让你忧!

这时,你体验到了C语言的指针,是个神奇的东西,C语言没指针会黯然失色,有指针,又让这个你创造的世界充满无数的坎坷——bug!

其实,这不是你吐槽的原因。而那些满身铜臭味的“老板们”,对你趾高气扬的说这说那,时不时又用“大跃进”的想法来冲刺着项目的进度,让你不爽。

于是,时间长了,内心开始畜养“草泥马”。这是后话了,本文不讨论这个。

现在,你相信我说“程序员写代码”是一件“降维创造”的事了吧,有人不爽老板,就分分钟想“删库跑路”这种降维打击的事,可那一维世界是无辜的。

有人不爽,他在歪曲他创造的那个一维世界,写一堆屎山一样的代码。

以至于后来很多人,不喜欢“祖传”的代码,呵呵!

低维创造世界这个事,来的太快了,以显得创造世界的规则来的很慢。

甚至,程序员还产生了鄙视链。

很多人通常无视编码规则,也不喜欢那些条条框框的设计方法。

自我的程序员,创造的世界通常是很平庸的,思想也是停滞不前的。

程序员是需要不断学习的。停滞不前的程序员很容易被淘汰的。

好了,也许你会问,为啥程序员创造的世界是“一维”的,不是二维的,三维的,甚至四维的。

我说的是,程序运行和基础硬件空间这些基础,本身是一维的,但可以抽象出二维,三维甚至四维的世界,例如平面显示,三维动画等,这些应该算是人体感官认为的吧,不过从这个角度想,也没毛病。

再想想哈!很多人很担心,我们人类世界会不会被人工智能占领甚至统治了。

说不定哦,一旦人工智能拥有思想,那是一件很可怕的事。

我们辛辛苦苦创造的软件世界,说不定哪天对我们人类的世界进行“降维打击”了。

谷歌的AlphaGo,通过“深度学习”,已经打败围棋冠军了。

前些天,谷歌员工说,AI已具备人格。

细思极恐啊。

总觉得这些离我们很远。

但是你的手机,你的电脑,一刻不停地收集你的个人行为,分析你的喜好,给你推荐你可能喜欢的产品。

另一方面,你常常点开的阅读,通常是某一方面的内容,好像已经被困在“信息茧房”里面了。

这一切,不管好的还是不好的,都在潜移默化地影响着我们的生活,改变着这个世界。

从我们输出“Hello, World!”起,人类让其不断进步,不断进化,渗透着人类世界的每个角落,也每分每秒在改变我们的世界。

这些,是程序员的杰作。

程序员真真实实地在改变着这世界。

可能你离不开你的手机了吧;

没有电脑,你的工作好像干不下去了吧;

现代社会,没有软件好像要崩塌一般。

程序员将很多现实世界的观念融入了程序世界。这些,你在编写代码的时候你就会体会到,就连这个“地址”的概念,都是来源于人类世界的地址。在深入一点,观察者模式、工厂模式等这些设计模式的概念,都是来源于人类生活。

而这些,优秀的思想或者观点,不断迭代,让这个软件世界丰富多彩。

如果你创造的MCU小程序是一个世界,我创造的软件程序也是一个小世界,他写的软件也是一个小世界,那么将这些小世界连接起来,互通有无,这会形成一个大世界,正所谓“万物互联”就这样诞生了。

好了,丰富多彩的世界,是程序员创造的功劳。

看着我这个文章的读者,如果你刚刚高考完,填报志愿的时候,是否考虑下这么崇高的专业?

哈哈哈!

以上是关于为什么程序员写的第一个程序是“Hello World!”的主要内容,如果未能解决你的问题,请参考以下文章

为什么程序员写的第一个程序是“Hello World!”

C程序编译过程浅析

运行第一个Python程序

用VC写的第一个窗口程序 Hello World!

那些被岁月遗忘的UNIX经典著作

用pb写的第一个数据窗口