当你夜深加班,头昏脑胀,用发酸的手腕在键盘上敲if else for 的时候,有没有想过,要是能让计算机自动为我们编程,彻底解放我们的双手,让我们有充分的时间,可以睡觉睡到自然醒,泡妞泡到手抽筋,该有多好。
这并非天方夜谈。有一批异想天开的家伙搞这个事情已经很有些年头了,他们搞的这个领域被称为Genetic Programming(简称GP,javaeye刚发了个相关新闻http://www.iteye.com/news/6797-apache-mahout-0-1-release-machine-learning-algorithm),中文叫“遗传编程”或“基因编程”,顾名思义,就是模拟生物学上进化论来自动产生程序。理论上的东西先不讲,按照规矩,先来个GP的“Hello World”。
比如,我们想要一个程序,功能是对两个数求和,得到类似下面这个c函数代码:

//compute the sum of a and bint Sum(const int a, const int b){    return a+b;}

解决问题的思路是从大师的教导出发。大师教导我们:
[b]程序 = 数据结构 + 算法[/b]
很明显,这里我们的数据有两个,[i]a[/i]和[i]b[/i],记为:
[i] data = { a,b }[/i]
为简化起见,算法假设只有三个,加、减、乘,记为:
[i] op = { +,-,* }[/i]
那么,所有可能的代码组合为:

                      s = a ;                      s = aa;                         s = aa+;                        s = a;                          s = a+;                         s = a;                          s = ab;                         s = ab+;                      s = a ;                         s = aa;                         s = aa-;                        s = a;                          s = a-;                         s = a;                          s = ab;                         s = ab-;                        s = a ;                         s = aa;                         s = aa*;                        s = a;                          s = a*;                         s = a;                          s = ab;                         s = ab*;  

现代的电脑,可以在0.00001秒内找到正确的程序代码:
[b] s = ab+; [/b]
顺便说下,GP中采用后置表达式更方便,所以搞GP、AI的人都喜欢用Lisp一类的语言。

至此,我们终于让计算机我们编写了第一个程序,虽然这个程序只有一行代码。

当然,对于简单的程序还可以采用这种穷举的办法,但对于一个复杂程序,采用这种方法已经不是当前的计算机所能承受的了。牛人们给出的道路是采用遗传算法,其思想就是模拟大自然中种群在选择压力下的演化,从而得到问题的一个近似解。科学松鼠会的fwjmath就成功的模拟了如何从一堆杂乱的图形,进化出一个 firefox 图标的过程:
[align=center][img]http://blufiles.storage.msn.com/y1p96zcjxuwxolgnU-4kYeJil49VAcoYd0ieRPXt9jLGTd7UOR8kUlNdb1ZAzScolGo?PARTNER=WRITER[/img][/align]
你可能会认为GP只能搞点这些华而不实的小玩意儿。但GP实际上已经做到的事情可能会让你大吃一惊,下面直接引用wiki上的一段话:
[quote]“近年来,随着遗传编程技术自身的发展和中央处理器计算能力的指数级提升,GP开始产生了一大批显著的结果。例如在2004年左右,GP在多个领域取得近 40项成果:量子计算,电子设计,游戏比赛,排序,搜索等等。这些计算机自动生成的程序(算法)中有些与2000年后人工产生的发明十分类似,甚至有两项结果产生了可以申请专利的新发明”。[/quote]
如果你还对GP的能力有怀疑,那么你要先问下自己:自己写过的那么多代码中,产生过一项专利吗?所以,夺取我们饭碗的敌人,不是ruby on rail,不是90后,而是GP啊。当然,我们目前暂时还不用太担心:产生那些成果用的都是一些昂贵的大型机,至少目前,这些大型机的价格还是比程序员贵很多。

让计算机自动为我们写程序吧相关推荐

  1. Python实现过段时间计算机自动锁屏小程序

    1.直接上代码: from ctypes import * import timeprint("是时候展示真正的技术了,哈哈哈") # 睡眠一段时间 time.sleep(10) ...

  2. 计算机能自动写程序,忘掉编程语言吧,微软想让计算机自动生成程序 | 一周 AI 新闻...

    本文来自"百度大脑" 微软RobustFill:让计算机自动生成程序 | 前沿 | 在最近的一项研究中,微软发布了自己的深度学习程序生成研究.在该研究中,深度神经网络学会了遵从用户 ...

  3. 我的一个学生在运维工作中写的自动日志清理脚本程序

    本文是我的一个学生在运维工作中写的自动日志清理脚本程序,我这里不评价该shell脚本写的好与坏,只是发出来,和大家做一个分享,如果能给大家带来一点点思路上的参考就够了. 自动日志清理脚本程序 #!/b ...

  4. 计算机怎么取消u盘启动程序,计算机设置U盘自动启动程序| U盘自动播放设置

    计算机设置U盘自动启动程序| U盘自动播放设置 我相信每个人都知道USB闪存驱动器具有自动播放功能.插入计算机后,它将自动运行某个程序.最初,此功能使每个人都可以更方便地使用USB闪存驱动器,但是由于 ...

  5. 给计算机写程序的第一人竟是一位女子

    来源:https://baike.baidu.com/item/%E9%98%BF%E8%BE%BE%C2%B7%E6%B4%9B%E8%8A%99%E8%8E%B1%E6%96%AF/1201094 ...

  6. python饮料购买_Python写的一个自动售饮料小程序!

    写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手 ...

  7. 盲人如何学计算机编程,你知道盲人程序员是如何写代码的吗?

    原标题:你知道盲人程序员是如何写代码的吗? 程序员生涯以困难模式开局:出生在伊朗,生下来就看不见.14岁学VB编程.大学读计算机专业.是PHP程序员.一开始在工作中被歧视.始终热爱编程.很励志. 这是 ...

  8. 计算机会操作软件怎么填,人是一台计算机,每个人都在写程序

    原标题:人是一台计算机,每个人都在写程序 今天如海破天荒跟我分享了自己最近的读书心得.他说"其实人都是一台机器,我们每个人都是程序员." 我拍案叫绝!毕竟平时我就常常跟他开玩笑,你 ...

  9. 51单片机usb烧录电路_51单片机怎么用usb烧写程序 - 全文

    单片机怎样用usb烧写程序 首先,需要安装keil软件和STC_ISP程序下载软件. 先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给单片机提供电源就 ...

最新文章

  1. python-34:极视界爬虫总结
  2. MIT:睡眠不足会让你连路都走不好,但补觉还有救
  3. mysql怎么执行任务_Mysql怎么定时执行任务
  4. 22:00直播|当加班男程序猿 被美女主播~ 捕到后...
  5. SAP CRM和Cloud for Customer的数据同步一例
  6. 混合云是趋势?阿里云与私有云厂商 ZStack合作
  7. LOJ 2339 「WC2018」通道——边分治+虚树
  8. hdu 1394Minimum Inversion Number
  9. 我在项目中运用 IOC(依赖注入)--入门篇
  10. Packet Tracer 5.0建构CCNA实验攻略2配置vlan
  11. 计算机基础知识试题分值,计算机考试题分值分布.doc
  12. SpringMVC 刷课笔记
  13. 超实用一键破解网页不能复制/右键菜单限制的 Bookmarklet 收藏夹书签小工具
  14. Beer-Lambert Law and LAI
  15. GBase 8c 全局死锁解除
  16. 人們還有「自由」這個詞,但他們學到的卻是服從和奴役!
  17. 如何让百度搜索网站带图片公司logo
  18. 广州楼市:这类楼盘持续跑赢大势,聪明人只看这点
  19. JS中的event 对象详解
  20. 第七届计算机科学夏令营,2020年中国科学技术大学第七届计算机科学暑期夏令营报名通知...

热门文章

  1. Android发展简介
  2. MBD——Bus使用全解
  3. 简述回归分析及其在车险定价中的应用
  4. 晟宝通投资:“行胜于言”,是互联网企业的践行社会责任的关键词
  5. 系统设计(还需要输入1个字)
  6. 用字蛛(font-spider)压缩字体,字体大小不变问题。
  7. QPixmap设置尺寸
  8. 0基础小白该怎么自学好平面设计
  9. [N20040501](Deadline)-The Render Farm Based on Deadline 10#基于Deadline 10搭建渲染农场
  10. 关于探索者机器人模块的相关学习(一)——机械运动