代码都可以智能生成了,是不是预示着一大批程序员即将失业?

  关注我,你的眼睛会辣    


来源|网络

编辑|猿姐


说到开源精神,阿里估计在国内能够排在最前列。而且近几年,阿里接二连三做出了一些大事情。根据阿里近期发布的《2018 年度代码报告》显示,目前阿里巴巴就已经有 400 多个开源项目,涉及中间件、框架、组件、数据库、存储等,包括滴滴、网易、Netflix、Uber 在内的互联网公司都是阿里开源项目的使用者。最近阿里也没闲着,又发布了大家喜闻乐见的代码自动生成工具 imgcook。


代码是如何自动智能生成的


imgcook 中文译为“图像大厨”,顾名思义,它是一款专注于各种图像(Sketch、PSD、静态图片)处理的工具,通过智能化手段将各种图像一键生成可维护的 UI 视图代码。虽说目前还只是社区体验版,但其也是经过淘宝前端团队内部近 2 年的打磨才推出的全新产品。按照阿里官方的说法,这个打着“高度还原各种图像,释放 UI 开发生产力”口号的imgcook 未来足以成为一位 P5 级别的重构工程师,实现 100% 的还原、100% 的兼容、以及一键上线!也就是说,设计师再也不用还原走查了,测试再也不用适配样式了,开发再也不用切图写样式了,是不是觉得瞬间解放了很多……


事实上,此前也曾出现过大量的代码自动生成器,但似乎并没有掀起太大的波澜。一键自动生成各种代码,可以节省大量的时间来做业务逻辑的代码,那些重复的代码就交给它去做吧,1分钟生成一个架构所有的基本代码。有了它开发项目的效率简直轻松多了。



自动编程真的有实际价值吗


有很多广为人知的自动代码生成工具都曾引起过公众的关注,比如微软的 Robust Fill、上面提到的 pix2code、DreamViewer 等等,此前微软发布的 Visual Studio 还支持智能辅助编程。但是喧嚣之下,更多的却是跟风模仿,鲜少有人会真正在编程中应用,其生产价值也无从考究。


那么实际上来说自动编程是不可能实现的。首先,要机器做事人必须至少告诉机器自己“想要什么”,然而表达这个“想要什么”的难度,其实跟编程几乎是一样的。所以说,好的编程工具可以让程序员工作更加舒心和高效,但任何试图取代程序员工作、节省编程劳力开销、克扣程序员待遇、试图把他们变成“可替换原件”的做法最终都会倒戈,使得雇主收到适得其反的后果。


就比方说很多人对人工智能都很喜欢,自动车,机器人等技术,然而如果你仔细观察,就会发现这些人不但不理解人类智能是什么,不理解人工智能有什么局限性,而且这些“AI 狂人”们的心,已经严重的机械化了。他们或多或少的失去了人性,仿佛忘记了自己是一个人,忘记了人最需要的是什么,忘记了人的价值。这些人就像卓别林在“大独裁者”最后的演讲里指出的:“机器一样的人,机器一样的心。”


每当提到AI,这些人都会号称要“取代人类的工作”,“节省劳动力开销”。暂且不讨论这些目标能否实现,它们与我的价值观,从一开头就是完全矛盾的。一个伟大的公司,应该为社会创造实在的,新的价值,而不是想方设法“节省”什么劳动力开销,让人失业!想一下都觉得可怕,我创造一个公司,它最大的贡献就是让成千上万的人失业,为贪得无厌的人节省“劳动力开销”,让贫富分化加剧,让权力集中到极少数人手里,最后导致民不聊生,导致社会的荒芜甚至崩溃……



应该如何看待自动代码生成的产生


首先,好的编程工具可以让程序员工作更加舒心和高效这是一个前提,但任何试图取代程序员工作、节省编程劳力开销、克扣程序员待遇、试图把他们变成“可替换原件”的做法却是倒戈相向的。


打个比方,一个创业公司最不好招的或许不是合伙人,而是看似不起眼的程序员,他们手上掐着CEO们做产品、做服务、做数据的梦,至少是圆梦途中必须夯实的后方基础性建设。尽管程序员的工资水平处于中上游,但就业市场中前端人才的缺口却不断扩大,加上企业在技术开发上的投入占比越来越大,直接影响到企业在生长期和扩张期的技术转化和资金周转。然而市场上冒出的代码自动生成工具均存在不同程度的漏洞,用户的选择范围很小,而所谓的自动还是需要大面积的人工操作。


目前这个工具做的事情是把一个已经精确描述的东西(图片)转换为另一个精确描述的东西(代码)。单从生成ui代码的角度来讲,这当然是有很大的正面意义了。在需求发生不大的变更时,人写的代码一般来说也不会发生太大的变化,但这个工具呢,也许需求变化并不大,但产生出来的html结构会变化很大。如果说,它产生的html结构变化太大,那交互怎么办呢,交互的代码必然跟html结构有很强的相互依赖关系。所以以目前ai的能力,是绝对不可能把交互的代码也生成出来的。


要知道,对于前端来说,ui加上交互就是完整的产品功能了,而交互这个东西,复杂程度本身就很高,又有大量细节,而且还必须要精确的描述出来。目前软件行业,能够精确描述交互的东西除了代码好像没有其它的了,即便有,同等信息量下需要的字符量(或者图片,流程图等)也必然不会比真正的代码少。而这部分目前必须由人力来完成,其实ai用于转换的图还不是人画的,因为需求是由人自己制定的,至少要由人先描述出来,ai才能把它转换成代码。可是精确描述需求,目前又只有代码可以做到。这就是目前的矛盾点,交互细节不可能由机器来确定,然而人如果把交互确定了,代码基本上也就写出来了,那么不需要ai来生成交互的代码了。


就像你不可能通过一句话就让ai生成出一个你想要的软件,因为一句话中根本就没有包含软件任何的细节,就算生成出来了,也是包含大量默认设定的软件。最终你会说很多很多的话让ai来调整这个软件的功能细节,而你所说的所有的话最终成为了这个软件的精确描述…


猿姐瞎BB

真正的使用性工具的诞生都是为了让人用的更加的便捷和舒适,但是代替人却是不可能的,所有的设置包括你想要的最后的结果都不是你一句话说出来就够了,所以归根结底,有的工作是没有办法被取代的。



牛B程序猿


孤独地写程序时,你需要一些陪伴,一些快乐,一些”干“货。

扫码关注!


Back To Top