无人编程让程序员失业

无人编程让程序员失业

开发无人编程即编程自动化系统,让程序员失业

不久前我写了汉澳sinox无人工厂,引起很大反响,东莞开始有工厂实施无人工厂计划,取代工人。虽然目前即使开发无人工厂也可能只是0.1版本,然后有1.0,2.0,无人工厂不断升级版本,当然跟预想中的汉澳sinox无人工厂还有很大距离,但是毕竟提出了概念,并指明了方向,无人工厂技术研究很可能在中国引发新的工业革命。也为中国制造业指明了出路,不用担心产业转移等让中国丧失世界工厂的地位,无人工厂技术和资金投入会越来越多,保持中国制造业领先地位还是有可能的。

我有时在想,无人技术发展很快,比如无人机技术已经很成熟,最近无人驾驶也开始实用,无人工厂如果技术也成熟了,那么下一步发展的无人技术是什么?无人是指不需要人,完全自动化操控的技术,不是没有人。作为程序员,我很懒,我希望很多简单重复的工作不需要人去做,直接自动化编程就好,比如软件代工,没什么技术含量,总是由编码工人做重复工作,而不熟练的程序员还做不了,如果用机器来做,其实应该是软件来做,就不需要重复工作的编码工人了。软件设计不需要机器生产,只是脑力劳动,所以也没有无人编程工厂,应该是无人编程软件,用软件生产软件,只是高智慧的软件生产普通应用程序。无人编程工具,应该叫自动化编程系统,还是需要人输入需求的,否则软件不知道生产什么。需求千变万化,不像工厂生产的固定产品,软件生产需要面对复杂的应用程序生成,估计开发难度会比无人工厂大很多,甚至不可能。不过我觉得既然提出了无人编程,即使只是感念,也要把它完善,也许几十年以后无人编程会变成现实。

一旦无人编程技术成熟,程序员,这个最富智慧和脑力的职业,也要面临消失的可能。程序员将会继产业工人之后走向失业。而很多普通的工作比如理发,护理,打杂等,都可能由机器人完成,这个可能比较容易,要是能取代程序员,那么估计没有什么工作不可以由无人机器或者软件替代。这将是非常可怕,这样还需要什么工作呢?大家都失业在家,让机器人、智能软件接管世界?开发机器人可以由无人工厂完成,而开发机器人软件则由无人编程软件完成,最后只有开发无人编程软件的人员不失业。开发无人编程工具的人是谁?应该是各专业的顶尖科学家。

只有顶尖科学家可以工作,其他人都失业,成为类似原始部落社会的人,不用做事。这个扯远了,不过程序员应该是最后一批失业的产业工人。

好,现在已经知道有无人编程这个软件了,那么这个软件是怎么实现呢?说实话,这个软件现在技术还不成熟,我们只能探讨各种可能,并找到开发方法。

.net类库的优势

我用过汇编。c/c++,java,perl,php等各种编程语言和工具,直到我用了C#.net,才知道编程真的越来越容易了,汇编不用说了,用机器语言写程序,难。c语言,好些了,不过每个函数功能自己写,累。vc好点,但是mfc写界面还是很难,而且很多算法要自己实现,或者抄袭别人写的类。java更好点。而脚本语言perl.php等怎么说呢?管理系统和做网页是适合,但是做界面是很难的。最后出现了伟大的.net,很多功能函数,数据结构,算法都由.net类库分门别类实现好了,比如要把“1,2,3,4,5”字符串按逗号分开,用split函数就好了,以前见vb有这个函数,觉得很方便,但是c/c++是没有的,现在C#就特别方便了,直接用split就好。所以.net类库非常方便用户编程,而且界面控件也很方便实现,甚至web网页程序也可以用控件实现。.net让程序员开发速度快了好多倍。只可惜.net不能跨平台,windows贵且不好用,所以被抵制。java现在也开发了很多类库,跨平台很好,所以被unix/linux世界推崇。

.net类库让人类开发能力上了一个档次,虽然面对各种多样复杂的计算,还是需要设计数据结构和逻辑算法,但是大部分基础功能还是可以由.net类库实现了。

能不能把.net类库提升到一个档次?开发更多的函数功能应该是可能的。但是也不可能包罗万象,把所有计算都包含进去,比如新加坡总理李显龙写的数独求解算法,把算法加入类库,普通程序员就可以开发九宫这种数独游戏。不过数独算法应该找到源代码,这样不需要加入.net类库也可以引用。

又比如开发3d游戏,虽然可以直接用directx渲染引擎库,但是要实现游戏功能还不是简单调用api就可以,所以又有3D游戏引擎,把更多的函数功能封装成游戏调用接口,但是引擎接口也是很复杂的,熟悉引擎还要花时间,更不要说调用引擎完成游戏场景开发,而游戏数据结构设计,比如静态场景物体和动态物体,通关逻辑设计,对话等,内容非常复杂,不是会写程序就能解决的。我们能不能把游戏引擎再次加入.net类库,让.net类库功能无所不包呢。完全可能,只是这个是.net要做呢,还是属于开发人员引入的引擎类库?如果.net类库无所不包,不过也不可能解决所有的问题,如果有上百万个类,用户又怎么知道怎么使用呢?

用框架自动生成基础代码

.net类库无所不包,但是用户怎么用呢?我们开发3d游戏首先要用的是directx(简称dx)显示引擎,在此基础上再使用Unity3D游戏引擎,然后才可以设计数据结构和逻辑算法,现在Unity3D是在dx引擎之上更高一级的引擎,可见需要层层调用引擎。.net类库–>dx–>Unity3D–>游戏,要开发游戏要调用3层引擎,我们称为框架,基础代码,这些框架让我们节省大量工作,如果没有这些框架,开发一个游戏几乎是难以上青天。现在开发者只要集中在游戏逻辑设计以及图像设计就可以了,省去了底层编码。编程自动化就要首先调用框架,然后集中在逻辑设计,从而大大简化无人编程工具的开发。

我们写程序也是这样,是在操作系统这个框架平台上开发,否则从开发操作系统开始,设计程序简直是不可能。

我们设计几万个最佳的框架,放入无人编程工具里面,根据需要调用框架,从而实现编程自动化。数独最优解法也可以加入框架,属于数学类框架,供上层调用。

用脚本语言实现自动代码生成

有了框架基础代码,我们设计应用程序就集中在数据结构和逻辑算法设计,根据用户的数据结构和逻辑算法自动生成源代码。比如我们说的元语言编程,通过定义元语言,用脚本自动生成代码。我们可以用shell,perl,python等脚本语言自动生成代码,可以输入元语言脚本,自动生成某种语言的源代码。比如说要生成登录程序,会根据用户定义生成账户的注册,修改,删除,登录,验证码等包含数据库操作和界面交互的源代码,不再需要普通程序员编写代码了。脚本的定义和解释都是由用户写的脚本决定,可以根据需要修改脚本。这个方法可以生成大部分代码,只是灵活性不是很高,可能满足比较固定的应用程序代码生成。

用lisp等高级语言实现自动代码生成

lisp是表处理语言,拥有xml,元语言,模版等特征,可以用来生成新的应用程序代码,不过代码生成都用lisp实现,一旦改动,是不是也要修改lisp程序,跟脚本生成差别不是很大,不过对某些程序生成可能有用。比如cad用lisp脚本生成三维模型,也许在涉及开发制图程序,可能lisp很有用。比如很多模型可以用lisp保存。

现在已经有一些代码生成器软件,可以通过向导方式生成源代码。

用模版实现自动代码生成

我们开发大同小异的网页程序,为了满足个性化的界面输出,大量使用模版功能。在无人编程工具里面,我们是不是可以引入模版,从而满足大同小异的多样化应用程序生成需要。我们编程语言也引入了模版,也称为泛型,泛类型,开发程序用代表任何类型数据,这样写程序调用会有统一的接口,不管这个类型是整数,实数还是字符串,使用的时候指定T的类型就可以。

我们开发自动代码生成也可以用模版,比如指定数据库字段的名字和类型,就可以自动生成数据表字段,以及操作数据库的类,界面操作的类。而界面颜色用了模版,用户指定了某种颜色,就在生成的代码中产生指定的颜色,而不是固定死,对于动态生成颜色的代码可能没用。模版可能适合生成某些比较固定的模式。

用大数据云计算实现自动代码生成

我看到语音识别系统存入数百万个语音片段,而表情识别系统则有几百万个表情存入数据库,可见自动代码生成可能存入数百万个代码片段,然后有数百万个分门别类好的功能函数,大量的数据结构,大量的逻辑算法,甚至是逻辑算法生成模型。比如生成1到1万的素数和,就要调用循环代码,素数判断函数,累加几个功能,显然用大数据,模版等技术,生成生成1到1万的素数和代码是完全可能的。

更复杂的,游戏设计,设计背景物体,怪物,玩家数据结构设计,物体出现、运动、死亡的逻辑,要完全自动生成,需要开发人员定义很多元数据,而且可能还不够,需要设计独有的算法,只是编写代码是不需要了。应用程序复杂多样,可能自动生成工具也不是那么简单能实现,不过像教学类的,比如出题考试,无非是建立题库,出题逻辑算法,答案比较和分数生成,最难得是作文计分,这个智能程度很高,开发自动生成工具需要熟练的了解相关专业,然后可以生成一万个考题应用程序,甚至考题系统也能智能化,这个程序本身就能应付一万种考题系统,那么自动生成考题系统可能就不需要了。

综合多种技术人工智能自动生成代码

大数据可能还不能满足代码生成需要,可能还需要各种代码生成模型,我们说这是更高一级的代码生成人工智能,人工智能将应用上面提高的各种程序生成技术和手段,甚至自我学习能力,完成自动代码生成。人工智能的神经网络,深度学习技术,可能对代码生成很有帮助。

开发sepl自动编程工具

既然提出了编程自动化,我觉得sepl不应该只是满足于作为一个编程语言和集成开发工具,而是一个更高一级的无人编程工具。sepl无人编程工具拥有数百万个代码片段,数十万个框架,数十万个代码生成模型,大量的模版,用户只需要定义应用程序生成条件,就可以做到一键生成应用程序。这样就不再需要程序员,而只是需要需求分析员,程序代码自动生成。

新一代程序界面将智能动态输出界面,从而实现图形界面开发自动化

在多层逻辑实现的程序设计中,比如游戏,后台服务器端可能都差不多,游戏逻辑也接近,只是反映在界面上,个性化界面,导致界面设计很复杂,如果界面是静态的,那么几亿个用户,涉及界面设计,自动生成很难实现人性化界面。不过如果我们采用动态界面输出技术,系统根据个人喜好输出界面,就不再需要面对无数的个性化界面设计。动态的界面会根据个人喜好调整界面输出。这样自动化代码生成面临的复杂个性化界面输出就解决了,而后端逻辑设计,代码自动生成就变得容易了。

自动代码测试让程序合格出厂

生成的代码是否合格可用,如果用人去检查测试,也是很麻烦的。系统推出自动代码测试,生成源代码的时候也生成测试代码,可以对程序进行全面的完整的自动化测试,合格的产品可以出场了。

是噩梦还是光明?

自动代码生成系统出来后,写程序不再需要编码,程序员自然不需要很多。当人们还在因为写不好程序而困顿的时候,开发自动程序生成工具是不是早了一点。其实自动程序生成也不是不需要写程序,而是写一次程序,到处可以利用,不用重复写程序了,比如数独游戏一实现了自动生成,也许某个3d游戏需要数独游戏,这个3d游戏就不需要重新写数独程序, 而是开发工具自动生成。

就像java编写一次,到处运行一样,无人编程是写一次程序,到处可以使用,不需要写第二次了。

无人编程工具出现,编程速度会非常快,一个人顶上100个程序员,中国原来需要500万个程序员现在只需要5万个,99%的程序员失业了。

即使最复杂的应用程序都能自动生成,机器人等单一程序是不是更容易?

现在sepl无人编程工具还需要像visual studio那样到处散卖吗?估计也没有人买得起。

时间: 2024-10-28 02:31:47

无人编程让程序员失业的相关文章

2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地

2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地2018年7月新品尚家docker核心技术教程--大牛编程吧-程序员编程入门圣地 02_Docker_为什么会出现.avi03_Docker_理念.avi04_Docker_是什么.avi05_Docker_能干什么.avi06_Docker_三要素.avi07_Docker_CentOS6安装Docker.avi08_Docker_CentOS7安装Docker简介(补充知识请看34集).avi09_Docker_

编程给程序员带来哪些坏习惯

似乎任何职业都会给从业人员带来这样那样的习惯.国外某网站上有位朋友(应该也是程序员)想了解其他程序员在投身堆码事业后有什么样的坏习惯.结果一呼百应,很多程序员纷纷自爆自己的坏习惯和糗人糗事.编程无国界,相信国内堆码界的朋友,也会有同感. 1. 编程已给我带来很多坏习惯,编程也每天在继续给我新增更多的坏习惯.当然有些习惯和编程无关了.下面这些习惯尽管我也很想改掉,但已根深蒂固. a. 在天地万物中,去发现多态.继承和模式: b. 用十六进制代码中的像素和颜色来解释某东西的大小: c. 在日常交谈中

[注]十大编程禁忌 -- 程序员都必须克服

程序员在编程的时候难免会犯错误,但如果不从错误中吸取教训,那么习惯成自然,你会经常犯错的.从错误中不断的学习,锻炼好的行为习惯有助于事业上的稳定. 这就是我们如何将小麦从糟糠中区别出来以及如何避免编程禁忌的绝佳经验.此外,最重要的就是可以为客户带来更好的用户体验. 1. 不提升非技术技能 我们认为非技术技能是项目成功的主要因素.这些非技术技能也可以称之为“软技能”,总体上来说,它已经被公司证明为能够驾驭企业和客户之间的长期商业关系,因此也能决定公司的成长发展路径.一些关键的软技能指标包括: a.

编程范式[ 程序员的编程世界观 ]

编程范式(Programming Paradigm)是某种编程语言的典型编程风格或者说是编程方式. 随着编程方法学和软件工程学的深入,特别是OO思想的普及,范式(Paradigm)以及编程范式等术语渐渐出现在人们面前.面向对象编程(OOP)常常被誉为是一种革命性的的思想,正因为它不同于其他的各种编程范式.编程范式也许是学习任何一门编程语言时要理解的最重要的术语. 托马斯.库尔提出“科学的革命”的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三

java--网络编程--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 网络编程 主要内容:< 三要素.InetAddress类.UDP的发送方.UDP的接收方.TCP的发送端.TCP的接收端.反馈案例.客户端键盘录入服务器控制台输出 > 1.网络编程三要素 网络编程三要素: 1.IP:寄信的"地址"2.端口:相当于"收信人".在计算机上,可以同时有多个程序接收网络数据,每个程序都会占用至少一个端口:3.协议:双方要都能看

只会编程的程序员没有前途

北京时间8月7日消息,比尔-盖茨曾说:"学习编程锻炼你的思维,帮你更好地思考,它能形成一种思考方式,让你更好地思考一切,这对所有领域都有帮助." 于是,编程可以扩大你的思维,编程可以强化你的能力,编辑是可以赚大钱的-- 于是,编程被过分强调了. 让我澄清一点:编程,被过分强调了. 有一种言论很流行,那就是软件代码是未来的语言,更进一步说,编程是未来的必备技能.作为个体的你,如果想在未来有立足之地,最好学点编程. 这种言论的后果是: 1.进入学校的人,或者准备开始寻找工作的人,他们会认真

有人说中文编辑是解决中国程序员编程效率的秘密武器,请问他是一个银弹吗?

一.“银弹” 首先在这里解释一下“银弹”的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼人的,但现实中确实有银弹这个东西.而其意义也类似于能杀死狼人的最好办法.现实中的狼人可以是一个棘手的项目,或者一件不可能的事.而“银弹”就是指能解决这些事的方法,或者技术手段,被比喻为具有极端有效性的解决方法,作为杀手锏 .王牌等的代称. IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表

中文编程不是解决中国程序员编程效率的银弹

按照<人月神话>的定义,软件工程中的银弹指的是软件生产效率有指数级提高的方法. 像我题目中所说的那样,我认为,中文编程并不能使中国中国程序员的编程效率有指数级的提高 首先,从一个大的逻辑角度来看.中文编程对中国程序员的意义和英文编程对英语国家程序员的意义是一样的,无非就是使用自己的母语进行程序编写.那么在英语国家的程序员使用英语(现在的高级编程语言接近英语的表达习惯)编程的效率还没有显著地高于我们非英语国家的程序员,那又为什么说中文程序员使用中文编程后编程效率就会显著的提高呢?而且在实际情况中

“中文编程”会是解决中国程序员编程效率的秘密武器,成为中国软件工程的“银弹”么?

一.“银弹” 首先在这里解释一下“银弹”的概念,顾名思义就是银质的子弹(Silver Bullet),是古老的欧洲民间传说中能杀死狼人的利器.当然现实中是没有狼人的,但现实中确实有银弹这个东西.而其意义也类似于能杀死狼人的最好办法.现实中的狼人可以是一个棘手的项目,或者一件不可能的事.而“银弹”就是指能解决这些事的方法,或者技术手段,被比喻为具有极端有效性的解决方法,作为杀手锏 .王牌等的代称. IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表