自动编写Python程序的神器,Python 之父都发声力挺!
就在不久前,kite——那个能够自己编写python代码的AI,Python 之父 Guido van Rossum 使用之后,也发出了「really love」感叹,向大家墙裂推荐了这一高效工具。莫非程序员离“失业”又迈进了一步吗?要想知道这个答案,首先得看看kite的代码编写究竟能做到何种程度。
1
什么是Kite
最新的kite是一款桌面应用程序,可以与现有的编辑器和终端进行集成化、并行运行,你可以将kite视为IDE的一个插件,它以大量的云端代码为基础,使用机器学习进行训练,从而预测下一步所需要写的代码,达到“智能编程”的效果。目前Kite支持的编辑器包括Sublime Text、emacs、vim、PyCharm和 Atom,支持windows和大多数linux操作系统。

根据官网的介绍,kite主要有以下几个作用和特点:
1).超强的代码补全功能
相对于传统的“单词”型代码补全,kite的AI模型在某些情况下可以根据上下文预测下一步需要的一系列代码元素,从而省去大量的修补工作,极大提升工作效率,在下图中的例子中,使用kite后的手动输入量比不使用kite几乎减少了1倍。此外,kite还具备简单的错误识别和修正功能。
2).友好的代码示例参考
当我们需要使用一个新的库或者函数的时候,通常会去查阅它的文档,而kite则提供了示例代码,它可以让我们跳过文档了解其他人(云端上的代码)是如何使用这个函数的(下图),这个功能同样适用于我们自己定义的方法。
3).清晰的终端索引文档
除了示例代码之外,kite还提供清晰的终端索引文档(下图),支持以统一的格式显示文档,其中收集了800多个带有代码示例的Python库,我们可以很轻松地获取文档、查询需要的内容。
kite发展至今绝非一日之功,从下面这张图能够看到kite最近的几个演化阶段,除了代码补全功能的增强外,最重要的一点就是实现了kite的本地化。
要知道以前我们必须把自己的代码上传到云端才能享受kite提供的各种便利功能,虽然有一些加密措施,但安全和隐私方面还是存在不小隐患的。现在好了,我们将代码放在本地的计算机上也可以使用kite,安全性大大提升。
2
安装和配置
虽然kite目前已经支持linux,我在这里还是以windows为例进行演示,不管哪个版本的安装程序,都可以在kite官网进行下载。
下载并运行安装文件,kite安装完成后会弹出下图中的界面,要求选择安装模式——安装所有支持的IDE插件或者手动指定需要安装的插件,选择哪一个要根据自己的实际情况而定,如果你的电脑中安装了emacs、vim、PyCharm等大量的IDE,不妨选择第一项;如果仅仅安装了一两个IDE,个人建议选择第二项比较合适。
如果想用固定账号使用可以在此处输入自己的邮箱,否则直接点击最下边的“continue without email”也能够正常使用。
下图显示的是kite的文档页面,在右上角可以切换文档模式,在“follow cursor”模式下,kite会实时跟踪当前代码中正在输入的库和函数,并显示对应的文档。当然,无论在哪个模式下,在文本框中手动查找函数文档都是可行的。
点击上图中右下角的齿轮标签进入设置的Home页面,在这个页面中可以进行账号的相关操作,也可以进行风格设置。
然后切换到Plugins页面,这里可是kite能否顺利使用的关键。从下面这幅图中想必一眼就能看出是与IDE的关联集成有关,如果在安装后选择了手动安装指定的插件,就需要在这里为自己的IDE安装kite支持。虽说在官方说明中写的是支持多种编辑器,但其实kite还是很挑剔的,比如pycharm它只支持2018.01以后的版本,对sublime text 3则要求必须与kite安装在同一盘符。看来选择手动安装指定插件还是有好处的,不然怎么会发现这么多坑。
我不想更新pycharm版本,在经过一番折腾之后成功地实现了sublime与kite的集成,打开sublime后会在左下角出现“kite:ready”的字样(下图),证明安装关联成功。
3
效果实测
眼动不如手动,既然kite如此好用当然要亲自尝试一番了。
1).kite的代码补全和文档功能确实非常好用。
我个人偏爱sublime,但是sublime有一个重大缺陷就是代码补全功能偏弱,这下问题得到了完美解决;另外,当kite文档切换到“following cursor”模式的时候,kite会自动跟踪当前光标所在的库或者方法,同步显示对应的文档信息。下图就是我在使用detetime模块时的代码提示效果和kite页面。
2).看下代码示例
紧接上一步的操作,当完整地输入准备使用的函数后,在光标附近就会弹出对应函数的使用样例
(下图)。当然,datetime.datetime.strptime方法的自由度比较低,所以给出的示例就比较单一,但是像matplotlib或者pandas中的有些方法,可能会给出很多条示例代码供我们参照。
需要注意一点,当kite和IDE的相关插件成功安装后,在启动IDE时kiteserver会自动加载,即使不启动kite应用程序也可以使用代码补全、示例提示等功能,不过如果要查阅文档的话,还是需要启动kite的。
最后说下我个人对kite的看法,其实与kite类似的项目还有很多,例如谷歌的AutoML系统、Codota公司的人工智能辅助编程项目等等。就目前来看,这些号称能够自动编程的人工智能还只能完成一些较为简单的任务,距离能代替人类程序员的程度还有很长的路要走。
自动编写Python程序的神器,Python 之父都发声力挺!的更多相关文章
- 通过编写聊天程序来熟悉python中多线程及socket的用法
1.引言 Python中提供了丰富的开源库,方便开发者快速就搭建好自己所需要的应用程序.本文通过编写基于tcp/ip协议的通信程序来熟悉python中socket以及多线程的使用. 2.python中 ...
- java调用python程序以及向python程序传递参数
在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...
- Python程序 #!/usr/bin/python 的解释
关于脚本第一行的 #!/usr/bin/python 的解释,相信很多不熟悉 Linux 系统的同学需要普及这个知识,脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定本脚本用什么解释器 ...
- 编写爬虫程序的神器 - Groovy + Jsoup + Sublime
写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET BCL只提供了"底层"的HttpWebRequest和"中层& ...
- 第一个Python程序的Hello Python,竟然有问题
print 'hello python' 运行时显示:SyntaxError: invalid syntax 解决办法: 这应该是版本的问题,Python2的话直接就可以输出,但是到了Python3需 ...
- 编写爬虫程序的神器 - Groovy + Jsoup + Sublime(转)
写过很多个爬虫小程序了,之前几次主要用C# + Html Agility Pack来完成工作.由于.NET FCL只提供了"底层"的HttpWebRequest和"中层& ...
- 编写高质量代码--改善python程序的建议(八)
原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax, ...
- 教你如何编写、保存与运行 Python 程序
第一步 接下来我们将看见如何在 Python 中运行一个传统的“Hello World”程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Python 来运行的你的程 ...
- python笔记:#002#第一个python程序
第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3.x 版本简介 执行 Python 程序的三种方式 解释器 -- python / python ...
随机推荐
- Redis和MongoDB区别
MongoDB 更类似 MySQL,支持字段索引.游标操作,其优势在于查询功能比较强大,擅长查询 JSON 数据,能存储海量数据,但是不支持事务.Redis 是一个开源(BSD许可)的,内存中的数据结 ...
- ORACLE 12.2RAC之问题 ora.chad OFFLINE
问题描述: 早上巡检是发现一套RAC的ora.chad一个节点的状态是offline,其他的均正常. crsctl stat res -t ora.chad ONLINE ...
- 数据库 tcp协程实现并发 回调函数
数据库 tcp协程实现并发 回顾 一.回顾 进程池,线程池,回调函数 # from gevent import monkey;monkey.patch_all() #补丁 from gevent im ...
- centos7中安装python3.6.4
1.在安装Python之前,需要先安装一些后面遇到的依赖问题(如果有依赖问题,按照提示安装): yum -y install zlib-devel bzip2-devel openssl-devel ...
- OAuth2.0授权登录
最近工作中遇到了多系统间的授权登录,对OAuth2.0进行了学习研究,并总结备忘. [场景] 我们登录一些论坛等网站的时候,如果不想单独注册该网站账号,可以选择用微信或QQ账号进行授权登录. 这样的第 ...
- Java描述设计模式(01):单例模式
本文源码:GitHub·点这里 || GitEE·点这里 一.单例模式 1.概念图解 单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象. 2.样例代码 package co ...
- Spring3:spring的事务操作
三.事务操作 1.导包 2. jdbc模板与开源连接池(DBCP与C3P0) 2.1DBCP 2.2C3P0 :: 2.3.抽取配置到属性文件 定义一个属性文件 在Spring的配置文件中引入属 ...
- GO-&获取地址与*解引用
&变量 获取变量在内存空间的地址 *变量地址 获取变量的值 一.普通数据 package main import "fmt" func main(){ b :=1111 c ...
- 你看不懂的spring原理是因为不知道这几个概念
背景 问题从一杯咖啡开始. 今天我去楼下咖啡机买了一杯「粉黛拿铁」.制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力.咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉得 ...
- echarts 柱状图
效果: 图一:Y轴显示百分比 柱状图定点显示数量个数 图二:x轴 相同日期对应的每个柱子显示不同类型的数量 代码: 容器: <div id="badQuaAnalyze" ...