自动编写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 ...
随机推荐
- java程序猿工具
1.做为一个程序员打字最重要 指法打字练习软件:http://home.bdqn.cn/thread-11142-1-1.html 2.JDK必不可少 JDK6.X下载 JDK ...
- springboot+quartz+数据库存储
Spring整合Quartz a.quartz调度框架是有内置表的 进入quartz的官网http://www.quartz-scheduler.org/,点击Downloads, 下载后在目录\do ...
- redis实现分布式锁--工具类
1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- cf 01mst
https://codeforces.com/contest/1243/problem/D 题意是说:给一个图对吧,然后给出点与点的关系,边权为1,没有给出的点与点关系,则这两点边权为0,求出最小生成 ...
- 【洛谷5794】[THUSC2015] 解密运算(模拟)
点此看题面 大致题意: 对于一个字符串,我们在其末尾添加一个'.',将字符串视作一个环,则可以从\(n+1\)个位置断开得到\(n+1\)个新串.现将这\(n+1\)个新串按字典序排序('.'的字典序 ...
- Python备份脚本(Win10+Python2.7+PyCharm)
说一下程序来源,是从<Python简明教程>上面看到的程序,试了一下之后,居!然!不!行!!! Google了老半天,也看了好多个博客,也未能解决. 除了一些基本语法问题.字符串中队'\' ...
- 汇编子程序模块化(near&far)
1: Near 近端使用 C语言实现: #include <stdio.h>#include <stdlib.h> void print(){ printf("p ...
- go语言变量作用域
Go 语言变量作用域 作用域为已声明标识符所表示的常量.类型.变量.函数或包在源代码中的作用范围. Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 函 ...
- RobotFramework不同版本优劣势
一.RIDE 1.5.2.1 1. 安装: pip install robotframework-ride==1.5.2.1 2. 优点: 此版本是RIDE发布以来最为稳定的版本,使用性能上也较为流畅 ...
- ZooKeeper(五):事务处理之更新数据逻辑解析
通过前些文章,我们已经完全从整体架构和数据接入方面理解了ZK的前情工作.接下来,我们就来看ZK的正式工作吧. 本文以 setData /a data 这个命令作为出发点,来观察zk是如何处理来自客户端 ...