edit控件自动换行 mfc_软件产业升级(四):软件开发已部分自动化,未来程序员会失业…

在前面的文章当中,我提出了软件产业分5级的概念,并详细分析了中国在软件产业一、二、三、四级的表现,同时给出了大量的实例进行形象化描述以加深大家的印象。感兴趣的同学可以翻看我之前的头条号发文。

209c174ab2c53267075e525af310b9f6.png

一定要站上主席台

本文并不是一篇严肃的学术论文,不妨对未来技术增加一些超越当前技术能力的想象,毕竟未来一切皆有可能,也欢迎大家留言讨论。

自动化编程可万倍提升软件开发效率

设计人员只需要将自己需要实现的功能设计好,并且告知自动化编程机器人,机器人将在几分钟之后将几万行代码写完并且提交给设计人员进行验收。

0f5bc24cfd76c3c02369cbc830cb6096.png

我一向认为现在的编码是很低效的

机器人自动化编程可能吗的不可能吗/p>

爱立信和华为曾经对自动化编程进行过探索

编程自动化并不是一个新话题,早在十几年前就有人提出这个概念,并做过一些有益的尝试,只是当年自动化编程造成的负面效果比较大而且很难彻底解决。

这个试点自动化编程的公司正是当年的移动通讯设备巨头爱立信,因为是直接竞争对手的关系,华为也试着赶了一把时髦尝试过。为什么这两个公司对自动化编程感兴趣为通讯设备的代码实在太过庞大了,动辄几亿行,两个公司又分别都拥有一只几万人的软件开发团队,人力资源负担相当沉重,大幅度提升软件开发效率是非常合理的追求。

c2d0ef374e9b256e5c63a03b1fd16c83.png

软件开发三个主要流程

  • 测试首先被自动化了

大家意识到一步到位过于挑战之后,纷纷转移方向,华为从2008年左右开始暂时放弃做软件编码的自动化,转去实现软件测试的自动化。

d8b0ac29fa5d7b16ece9411971b3f04c.png

自动化测试用例守护代码质量,忠于职守

刚刚有一个程序员小哥哥提交了代码,机器马上针对这段代码和相关功能进行了上万测试用例的验证,当场告诉小哥哥说你这代码有问题,今晚上请加班改。小哥哥立即就尴尬了,如果自己不改好,别的小哥哥的代码也就没法好好运行了,好吧,只能加班改。但是如果没有机器人忠于职守,这个软件缺陷就可能遗漏到网上去,下一步就可能导致你打不了电话。

更进一步,华为又基于自动化建设了模拟现实环境的性能冲击自动测试。我们使用的基站软件版本上网前,上万部手机在华为实验室里,由机器人控制着不断地进行着各种场景的同时呼叫冲击测试,夜以继日,这种测试要持续几个月的时间,这种性能测试靠人工是没办法实现的。

ba217029484495fc165f802c954ae5ad.png

MFC编程框架

还有一类典型的例子是VB编程和Excel配套的VBA宏编程,他们都定义了很多标准功能的“控件”和公共“函数”,当你要实现的算法没有太多奇特要求的时候,你只需要引用这些定制好的功能,拖拖拽拽设置下入参就完成了。这些标准的功能“控件”和函数,背后都有成千上万的代码是机器帮你自动生成的。

740accac6fbe8c07033293662db52d75.png

软件开发V模型

最顶部的产品规划和需求分析,那是真正的智人活动,是我们作为人类才具备的灵魂目的性和驱动力活动,关系到我们要做什么和为什么要做的问题。这一部分暂时先不考虑让机器人介入,因为我不敢啊。

而这个图里面的右边,根据上一节的分析,整个测试过程和一部分的编码过程已经被自动化了,剩下没有自动化的主要是左面的部分。如果一次性考虑将左面的四个步骤全部自动化掉,恐怕会陷入爱立信那种步子迈的过大扯到蛋的情况,所以,最好一步一步的来走。

我们首先应该考虑的是将伪代码自动转换成代码。其实在我们在观察程序员写的一个典型的函数的时候,我们发现,里面有大段的跟算法没有直接关系的东西,比如变量的定义和赋值,还有内存的申请归还一类。反正我在写这部分的时候是很崩溃的:

06e9155fbc7ee84ab37450d47cf7f2cc.png

所以能不能先从这里入手,把这些给自动化掉,或许这里需要发明一种更高级一点的编程语言,让我们聚焦于算法本身,而不是聚焦于那些繁琐的准备工作。谁先发明这种编程语言,自然可以在未来的软件产业中呼风唤雨。

伪代码直接翻译成编程语言如果实现了,纯粹的程序员码农们注意了,如果不能提升自己,失业就不远了。

如果我们成功把伪代码变成了能够自动化生成的,然后就可以考虑下能不能把我们的概要设计也变得轻松一点。恐怕这需要发明一种更高明的概要设计的工具才行,现在的概要设计做出来其实是给人看的,并不是给机器看的,机器拿过去根本看不懂。

a98f571e76d9300902fe71539ab26693.png

概要设计有不少类型的工具

当然,这种概要设计的工具想让机器人明白你要做什么,是比较的困难。等概要设计也被自动化以后,再考虑把系统设计也自动化了如何术难度当然是一步比一步更大,但是结果也非常可怕。

马化腾只需要对机器人说:我需要个微信抢红包的功能,一人发多人抢,抢到的金额随机分配给每个人。

机器人:好嘞,稍等。

几分钟后,微信红包软件发布了,马化腾第二天就会把他的软件团队90%的人都解雇,剩下几个人纯粹是怕自己寂寞而已。

软件自动化对产业的影响

软件底层自动化,首先就可能会导致整个软件一层产业的极大萎缩甚至于完全消失。最没用技术含量的工作首先被替代,这也符合工业发展的普遍规律。

这种情况下的印度软件外包产业岌岌可危,未来没有核心技术的国家,想给别人代工赚点辛苦钱也做不到了。

随着软件编程层级的逐步提升,软件二三四级也将发生巨变。软件二级由于应用为主,并不涉及复杂的算法,所以软件二级的编程人员也将大量消失,剩下的也许只有那些能够提出微信钱包这种新功能构想的人,因为软件二级最值钱的只是这些创意想法。

软件三级由于嵌入了大量的行业复杂算法,比如5G协议,未来也许只剩下了那些设计协议和算法的人,不懂专业知识的纯软件实现人员将大部分消失。

软件四级将出现全新的编程语言和编程工具,谁发明这些语言和工具,谁就是未来的软件之王。希望中国在新的软件领域中可以引领技术发展。

预告:对未来的软件产业来说,编程自动化也只是冰山一角,未来会产生全新的编程理念比如量子计算机编程,或者全新的编程方式比如脑意识编程,这些更有可能是未来软件产业的重中之重,感兴趣的同学请关注我的后续发文。

#科技V计划##我要上头条#@枫叶科技2020

相关资源:迈创Matrox G200eV

来源:weixin_39747075

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月3日
下一篇 2020年11月3日

相关推荐