什么是程序猿?

什么是程序猿?,第1张

程序猿”是对“程序员”的戏称。 因为程序员很 *** 劳,很痛苦,苦逼的长时间编程搞的一身狼藉,像一只猿猴一样,所以叫“程序猿”。

程序猿是一种非常特殊的、可以从事程序开发、维护的物种,是人类在科技研究上的一种新兴进化,拥有无与伦比的耐力、横穿社会的苦逼相和低于人类平均寿命的显著特点。

是一种近几十年来出现的新物种,是信息革命的产物,在行为和物种归类上我们也可称为码字猴。

程序猿是一种非常特殊的、可以从事程序开发、维护的动物。一般分为程序设计猿和程序编码猿,但两者的界限并不非常清楚,都可以进行开发、维护工作,特别是在中国,而且最重要的一点,二者都是一种非常悲剧的存在。

程序猿并不擅长战斗,它们生活中最主要的活动是——在树叶上打洞,然后将打洞的树叶放进一个木盒子里念咒语,并声称那些是能够提高族群的食物供给或提供其他神奇功能的伟大产品。

每个程序猿打洞的方式各不相同,他们之间也会经常爆发冲突,每个程序猿都声称自己所用的打洞方式是最好最先进,打出的洞是最美最华丽的,并不惜因此用打洞的树叶互相投掷。

大家都知道,在软件测试特别是在单元测试时,必用的一个功能就是“断言”(Assert),可能有些人觉得不就一个Assert语句,没啥花头,也有很多人用起来也是懵懵懂懂,认为只要是Assert开头的方法,拿过来就用。一个偶然的机会跟人聊到此功能,觉得还是有必要在此整理一下如何使用以及对“断言”的理解。希望可以帮助大家对此有一个系统的理解,也趁机聊聊“断言”发展一路过来的心路历程。

首先稍微介绍一下断言相关知识,对于有经验的程序员请移步到下面的“断言”进化史部分。

在单元测试时,程序员预计在程序运行到某个节点位置,需要判断某些逻辑条件必须满足,这样下面的一些业务逻辑才可以进行下去,如果不满足,程序就会"报错"甚至是"崩溃"。比如说,一段程序是负责“转账”,在真正开始转账 *** 作前首先需要“断言”这个账户是一个“合法”的账户,比如账户不是 null 。当出现些状况时,程序开发人员就可以在第一时间知道这个问题,可以去 debug 除错,而非等到交付给用户后才发现问题。其实这个功能是TDD (Test Driven Develop)的基石之一。

一开始的一些单元测试框架(比如JUnit)提供的断言语句,这样在程序某个地方确保某个逻辑关系肯定返回是true,如果不是true,这个单元测试就是没有测试通过。如下就是一个例子,如果程序运行到此行时返回false程序就会抛出一个错误(如下图一)并停止运行,开发人员可以去检查下为什么出现此问题。非常的简单粗爆。

上面这种断言除了简单之外,是有一个问题,就是当断言被触发时显示出来的错误消息不是很友好。如上图一,只是知道出错了,但是并没有太多有用的信息,比如最好是能显示出x与y的值来,这样好更快的理解为啥出错。后来,支持断言的单元测试框架升级版本出现了,它们提供了一系列的高级”断言“语句,添加了一些更加友好的程序接口,同时还提供比较亲民的错误消息,比如下面的例子使用了两个单独的断言语句。

执行的结果如下图二,你可以看到这个错误结果相对于上面“石器时代”已经包括了不少有用的信息,比如除了知道断言失败外还显示了 期望的值 以及 实际值 。

但是上面这种方式有一个弊端,就是需要大量的预置断言方法(比如判断相等一个方法,判断不相等一个方法等),去支持各种场景。接下来又出现了新的解决方案,其中的明星就是 Hamcrest (其实这个词是使用一种叫做 angram 的文字游戏,即把一个原来单词中的字母顺序改变,这个Hamcrest就是从Matchers的变形)框架。是使用一种 assertThat 组合上 Matcher 来使用。

这个有多个好处,

上面说了这么多,是不是感觉平时经常使用的一个看似简简单单的Assert还有不少的东西可以深挖一下滴。这个只是抛砖引玉,如果大家还有什么点子或建议请使用下面的方式。

人工智能程序员不是码农。

码农是指软件开发的人,随着时代的变化,很多IT工程师也自嘲为“码农”。从现有软件中提取出代码片段并不难,很多人类程序员也会这样做,只需要明确每条代码的意义,并将其用于完全不同用途的另一程序。

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。

然而不同于人类程序员的是,AI能够在很大范围内全面搜索现有程序,并用独特方式整合在一起,这些是人类程序员不太容易想到的方式。此外可以肯定的是,整个编码过程也会大大加快,DeepCoder在几分之一秒内就能编写一个程序。

可以想见的是,程序员的工作效率会有一个质的飞跃,从前靠人力的编程手段,“进化”到自动化的编码行为。未来的工作模式,将会是一场新的工业革命,未来的行业中,智力产出品最终也可以像工业品一样流水生产,这样一来人类就可以免除重复性的脑力劳动,投入到更有价值的事情中去。

人工智能是对人的意识、思维的信息过程的模拟:

它不是人的智能,只能模仿人得思考能力。它是理性的,将来它可以替代机器学习,在任何狭窄的领域,看到大量的数据,是人脑完全不能够和它竞争的。但这也只能是它对人类数学能力得延伸和延展。而在广泛,宏观得领悟里,它是无法像人一样有感情的互动,文化的创新,对不同人心理的揣摩,对音乐,艺术,诗歌的鉴赏,这些能力是它们无法替代的人的功能。

它只能是人类计算功能的替代,而永远没法超越人类的思辩能力。所以,它没法替代开发它的人。人和智能机器还是存在客观差别的,只能无限的接近,但是完全取代是不可能的;有人说的对,机器人的bug还是需要我们修复滴!作为好的远景,当然希望能够取代一些重复较劳累的“劳动”,减轻成本,提高效率,是可以实现的;但是创新,优化升级,多重构造还是要源于人类大脑思维。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10993317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存