未来程序员会被机器取代吗?
导读:很可能,在不久的将来大多数的岗位都会由机器来担任。很多职位,如司机、医生,将会很快消失或发生巨大变化,进入全新的发展时代。看起来程序仍会继续担任程序员助手或后备的角色。毕竟,像无人驾驶、医疗诊断、切肉机等都需要先进行编程,对吗? 答案是否定的。
什么是编程?
编程就是把想法如数理模型,游戏,商业等转化为代码的活动,从而使计算机可以执行它同时其他人可以读懂它。伟大的程序员都擅长于解决某个领域上的问题,技术精湛和领域认知深入的程序员才有机会会创造出一流的产品。
人人都能够编程
水平平平的程序员将会被被淘汰。
该状况在过去10年里正悄然发生。更高级的编程语言,更便捷的在线资讯获取,都使得编程的门槛不断降低甚至接近零门槛。更低的门槛和更多的生产力应该会使程序员就业市场变得更具竞争性,然而实际上却不是,因为需求也在增长。
编程改革创新的脚步近年来似乎一直停滞不前。我们最重要的工具,编程语言在近代历史里实际上并没有发生很大改变。最新的最流行的语言(如Go或Rust)带来的更多是范式上的进步而不是功能上的变革。今天最热门的语言还是Java,C/C++。编程业界当前更关注的是配套工具的开发和提高生产力的方法。
这又意味着什么呢?
S曲线
技术发展看起来就是这样的:SSSSSSSSSSSSSSS
更详细解释可用下图说明:
例如,IBM第一个文字处理程序(FORMAT)是以繁琐的打孔卡作为输入的。同一时间,最先进的打字机可以实现文字外形变更,自动字符复写以及打印出数学方程式。然而今天打字机已成历史,文字处理程序最终站在发展的前列。我想说的是我们正处于一个类似的技术停滞期,一个新的时代将会到来。
无编程的编程语言
要把平庸的程序员从系统里分离,我们需要一个开发平台来自动识别出问题且无需进行编程。
这可不是一个全新的事物。在1963年,计算机科学家Ivan Sutherland使用了计算机几何画板演示了如何使用系统来解决给定限制的问题。1972年出现的Prolog是一种声明式的编程语言,用于解决给定的逻辑条件集合问题。它虽然最终没有获得广泛认可,但是没有完全消亡。例如著名的IBM华生超算机器就是以它为基础的。
一个最有希望可用于进行无编程的候选人是—自然语言,例如:英语。从二进制代码到汇编,从C到Python,编程语言都是与自然语言相似的。作为一个综合的最佳实践,程序员也在尝试把代码编写成接近于普通英语以便他人或将来自己进行查阅。但这会有什么限制吗?
NLP
如今自然语言处理(NLP)系统已可以根据上下文读懂词的语义以及关联关系。最近,苹果,谷歌,微软等公司已开发出基于语音识别的产品进行自然语言处理。在这些巨头的带动下,相关领域将会得到长足发展。
基因编程(Genetic programming)
另一个朝气蓬勃的领域是基因算法。其使用类似于自然选择的处理方式,使用基因算法进行最优解决处理。对于火箭引擎或游戏等皆可运用。
但是基因算法是不能生成程序代码的,对吗?再想想。
开发者Kory Becker编写了一个程序来生成Brainfuck代码以试图解决该问题。如他所演示的,将来随着计算机计算能力的进一步增强,最佳方案的寻找将会更加精确。
例如如下代码,它是由程序自行编写的,输出结果是hello。
[js] view plaincopy
+-+-+ - [++++ +++++ + ++] [-[---.--[[-.++++[+++..].+]],] -+ +,.+ [[.,],+ .+- ,--+.]],+]
把NLP和GP相结合,无疑是强强联合的最佳典范,也为将来进一步开拓自然语言系统开发打下坚实基础。
写在最后
我认为机器不可能取代所有的编程工作,至少不会很快发生。因为很多代码仍需人工进行优化,很多算法还需人来完善。此外,每个应用领域涉及面很广也很复杂。我的想法是专为生产力而培养的新程序员数目将会减少,而对于能实现真正软件创新人才的需求会增加。
原文发布时间为:2015-09-25
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
还记得计算机的诞生吗?哪些人适合学习计算机编程?有衡量的标准吗? 随着经济的发展,时代的进步,我国人民内部的矛盾已经逐渐转变成为生活品质幸福的进一步需求,而不在像是很早以前只需要自己吃饱穿暖喝足即可。与此同时,人们也讲究实惠,也就是性价比高。当然,还有一种就是异军突起的迹象,就属计算机编程了!
让软件自己写软件,机器编程未来会取代程序员吗? 近年来,随着计算机领域的快速发展,逐渐形成了一股对立的趋势:计算机资源愈发异构化,因而需要更多硬件领域的专家级程序员 VS 软件开发人员更青睐抽象高效的编程语言,导致硬件性能得不到充分发挥。 这样的趋势下,如果有一款工具可以让计算机自己编程岂不是解决了这个矛盾?基于这种思考,英特尔提出了“机器编程”这个概念,旨在通过自动化工具提升开发效率。
C | 一种需要特别留心的编程错误(++i) + (++i) + (++i) 诸如此类的表达式`(++i) + (++i) + (++i)`,很多学校都喜欢用在学生的期末考里,看似经典的考题,有没有可能本身就是错误的呢?这种错误并不是语法错误,是可以正常运行的,这就造成了“==它是正确的编程==”这种假象
让机器「看懂」语言,更加自然地与人交流 人工智能相关技术近几年进展飞快,但许多人并未在太多产品中体验到技术带来的机器智能和效率的提高。百度新闻客户端近期推出了「个性化语音播报」功能,让机器把新闻生成摘要并以更加自然的方式读出来。将自然语言处理和语音合成应用在新闻领域是一次独特的尝试,机器之心对百度自然语言处理和语音合成的工程师进行了专访,讨论了背后的相关技术,并结合自然语言处理和语音合成的行业和技术情况进行了分析。
有这样一个问题:人的价值体现在哪里?也有这样一个答案:人的价值体现在他的工作成果。 但,一个人在工作的时候,他究竟是在干什么?他的工作成果到底是个什么东西? 在我看来,工作成果只是表面现象。
相关文章
- 神经网络与机器学习 笔记—改善反向传播的性能试探法
- 李宏毅机器学习_作业2
- [吴恩达机器学习笔记]14降维3-4PCA算法原理
- [吴恩达机器学习笔记]12支持向量机1从逻辑回归到SVM/SVM的损失函数
- Stanford大学机器学习公开课(六):朴素贝叶斯多项式模型、神经网络、SVM初步
- 在新机器部署Qt+mysql程序
- 机器学习笔记之受限玻尔兹曼机(四)推断任务——边缘概率
- 网络直播被严查,机器如何帮助鉴别小黄图?
- 17张思维导图,一网打尽机器学习统计基础(附下载)
- 为何机器学习识别声音还做不到像识别图片那么容易?
- Apache Spark机器学习3.6 结果解释
- 小科普:机器学习中的粒子群优化算法!
- iOS11新特性 之 Core ML [机器学习]
- Python3 机器学习之kNN(k-邻近算法)含源码
- 【转载】How to Use t-SNE Effectively —— (机器学习数据可视化) t-SNE使用指南
- 机器学习原来如此有趣!全世界最简单的机器学习入门指南
- Kaggle机器学习之模型集成(stacking)
- 利用Azure上的AutoML进行机器学习前配置
- <机器学习实战>读书笔记--朴素贝叶斯