首页 >>  正文

python中item指什么

来源:baiyundou.net   日期:2024-09-20

作者 | 苏宓

出品 | CSDN(ID:CSDNnews)

AI 编程距离程序员还有多远?如果说 GitHub Copilot 的到来,让众多开发者看到了希望,那么初创公司 Kite 的倒闭,也让我们认清了现实。

Kite 是一家使用 AI 帮助开发者编写代码的初创公司,也是 Python 代码自动补全的神器。一直以来,因为其在「Intelligent Snippets」功能的加持下,可以帮助 Python 程序员减少一半的操作,而备受大家喜爱,甚至此前 Python 之父 Gudio van Rossum 在使用之后,也强烈推荐。

然而这款工具经历了几年的迭代之后,11 月 16 日,Kite 创始人 Adam Smith 发布一则《Kite is saying farewell》(Kite 正在说再见)的公告,正式宣布 Kite 开发工作已经停止,日后该团队也不再支持 Kite 的软件,就此为 Kite 画上了句号。

Kite 失败的两重因素:技术超前与不赚钱

对于这款工具的突然停更,Adam Smith 也在公告中从两个维度分析了 Kite 业务失败的主要原因。

一、Kite 早在 10 多年前诞生,然而当时的技术还不成熟,未能实现人工智能辅助编程的愿景

在 Adam Smith 看来,Kite 建立了当时最先进的 AI 来帮助开发者,但它没有达到开发者所需的 10x 改进的突破,因为机器学习在代码上的最新技术还不够好。现如今出现的 GitHub Copilot 虽然展现了很大的发展前景,但仍然有很长的路要走。

Adam Smith 表示,“Kite 最大的问题是,最先进的模型不理解代码的结构。我们在为代码建立更好的模型方面取得了一些进展,但这个问题是非常工程化的。要建立一个能够可靠地合成代码的生产质量的工具,可能要花费超过 1 亿美元,目前还没有人尝试。”

二、Kite 未能实现商业化,产品不赚钱

作为一款旨在用 AI 帮助开发者提升 10x 生产力的工具,Adam Smith 直言,Kite 团队起初并没有将赚钱排在业务的第一位,这也是后来他们花了很长时间才弄清楚的失败原因。

对于 2014 年成立的 Kite 而言,由于当时环境下构建一款超前概念的 AI 代码自动补全工具,无论是在技术还是落地应用层面,都存在着巨大的挑战。因此,Kite 创建之初,便花了很大的功夫去构建世界一流的工程团队。

在工程团队人员集结之后,Kite 才去专注于产品研发。然而,或是自身低估了 Kite 产品研发的难度,也或是高估了市场人才的技能,仅是这两个流程,Kite 团队便花费了 5 年的时间去组队与研发。

直到 2019 年,Kite 才达到产品与市场的契合度,正式面向开发者推出。

初发布时,Kite 仅支持 Python,即使如此,也受到了很多用户的喜爱。

次年,Kite 相继支持 Java、Kotlin、C/C++、Objective-C、C#、Go、TypeScript 等十多种编程语言,也可以在 VS Code、Vim、Sublime、Atom、Android Studio 等开发环境中工作。

那时 Kite 官方表示,在该工具的帮助下,活跃开发者甚至每天只需编写由大约175 个“单词”组成的代码。

凭借这些便捷性,Kite 后来开始大力发展用户群体。对此,Adam Smith 表示,“我们在这方面执行得很好,将我们每月活跃的开发者用户群发展到 50 万名,而营销支出几乎为零。”

如果说前面几个创业的流程,Kite 走得顺风顺水,那么作为创业公司,要持续发展下去的源泉必然是实现营收。遗憾的是,Kite 产品未能产生收入,其拥有的 50 万开发者也并不愿意付费使用。

Adam Smith 在公告中指出,「我们的诊断是,个人开发者不会为工具付费。他们的经理可能会,但工程经理只想为离散的新功能付费,也就是说,让他们的开发人员在写代码时快 18% 的速度并没有引起足够强烈的共鸣。」

Kite vs GitHub Copilot

正是因为这两点,即使 Kite 后来也开启了新的业务探索,如代码搜索,也依然未能拯救这款工具的颓势。

其实一定层面上,Kite 也是一款与 GitHub Copilot 竞争失败的代码补全工具,因为从功能性上来看,GitHub Copilot 不仅在去年上线了代码搜索 Code Search 平台,也基于 Codex 引擎提供的支持,会分析开发者正在编辑的文件以及相关文件中的上下文,并在文本编辑器中提供建议。相对 Kite 而言,GitHub Copilot 背靠大厂的支持,其整体功能更为成熟与完善一些。

如今面对 Kite 在 AI 工具领域的出局,Adam Smith 遗憾地说道:

“我们为建立 Kite 做出了无数的牺牲。我们拿着低于市场价的工资来维持并延长我们的跑道,工作时间也很长,尤其是在公司成立的前几年。我们团队工程师拥有顶尖的背景,也经常被外界‘觊觎’。但我们想以一种特殊的方式为世界做出贡献,在 Kite,我们通过巨大的努力和承担我们的项目可能不成功的风险来做到这一点。

很遗憾,最终它没有成功。我们抓住了一个机会,我们可以大大加快世界上的软件开发速度。我们进行了实验,尽管每个人都做出了巨大的努力,但实验并没有成功。

如今事后诸葛亮来猜测过去的决定,这太容易犯错了。鉴于我们在 2014 年创办 Kite 时所知甚少,我只能满怀爱意地回顾我们当初冒险的勇气。正是因为有这样的勇气,我们才生活在一个快速进步的世界里。”

程序员为什么拒绝为工具付费?

随着技术的快速迭代,Kite 的离场,令人惋惜,但是对于其归咎失败的原因之一是:个人程序员拒绝为工具付费,也引发了 HN 平台上不少开发者的热议。

很多开发者认为,程序员之所以不愿意为工具付费,一方面是因为其商业模式不可接受,另一方面则是功能没有达到自己付费的预期。

其中网友 @malwrar 分享道:

我不喜欢依赖于可能在一个月内失去的东西,或者通过这种方式把我拴在互联网上。我认为那更像是一种服务,而不是一种工具。我更喜欢只买一次就能用的东西,但这种商业模式可能也会夭折,因为人们会盗用那些没有被拴在服务器上的组件的东西。

我想要说的是,我想买工具,但现在人们只是在租用。就个人而言,我在很大程度上希望这成为某人开源的项目,这样我可以真正拥有我的工具。

@JRPT 则表示:

我从未使用过 Kite,但我尝试了两次 GitHub Copilot,发现它充其量是微不足道的(最坏的情况是分散注意力)。在使用这款工具的时候,如果不仔细检查和修改它,我就不会使用其中的任何代码。但这仍然是一个巨大的帮助,仅编写测试所节省的时间就可以为此付费。我的猜测是 Kite 将自己定位为 Copilot 的免费替代品,然后无法获利。

@Dijit 认为:

作为初创公司的首席技术官,我注册的订阅服务数量之多令人难以置信,我花费了 8 美元、19 美元,重要的东西要 49 美元、99 美元不等。

有些工具很值得,如 GitLab、Confluence、Jira、1Password、Copilot、codepen、JetBrains、Visual Studio、Docker Desktop 等。

最令人沮丧的是:

1)我需要证明这些费用各自带来的价值,有些东西是很好的,但在纸面上带来的价值太小。

2)你不能只为一些人启用或购买工具,这样有巨大的重叠,而且这种重叠越来越大。

我明白人们需要得到报酬,但这些工具产品层出不穷。我已经在订阅这类的工具上花费了支持员工工资的 7%-13%。

其实,当前 Kite 的大部分代码已经在 GitHub(https://github.com/kiteco)上开源了,包括数据驱动的 Python 推理引擎、Python 公共包分析器、桌面软件、编辑器集成、GitHub 爬虫和分析器等等。最终,基于这种业务模式,Kite 折戟创业期,Adam Smith 表示,「我们迫不及待地希望人工智能能彻底改变编程。这不是我们开始时希望的结果,但我们庆祝每个人的勇气和贡献,他们使实验得以实现」。

最后,你认为什么样的 AI 软件工具会成功?你会为哪种 AI 编程工具而付费?

参考资料:

https://www.kite.com/blog/product/kite-is-saying-farewell/

https://news.ycombinator.com/item?id=33685209

","force_purephv":"0","gnid":"94ef6dc0a4f06cdbb","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t0186957a1ca5352752_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t0186957a1ca5352752.gif","width":"640"},{"desc":"","height":"241","title":"","url":"https://p0.ssl.img.360kuai.com/t0189d61ae97f8b6e4b.jpg","width":"588"},{"desc":"","height":"409","title":"","url":"https://p0.ssl.img.360kuai.com/t01b78a555e97c079d8.jpg","width":"1080"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"cache","pub_time":1669028647000,"pure":"","rawurl":"http://zm.news.so.com/ab945e25e3e1133ce0beb048652ffe40","redirect":0,"rptid":"a922af6b0c1b6411","s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:github","k":"github","u":""},{"clk":"ktechnology_1:pilot","k":"pilot","u":""}],"title":"失败告终!历经 8 年研发的 Python 代码补全神器 Kite 停止开发

牧谭洋4765Python高手,求救~~~ 怎么将python中的item = [{"name":"python","age":"12","sex":"1","phone":"13245"} -
慕通房19163259159 ______ 第一个元素是字典 所以就把item[0]当做字典来操作就可以了 item[0]['age'] =12

牧谭洋4765python中lambda和itemgetter的区别 -
慕通房19163259159 ______ operator.itemgetter函数 operator模块提供itemgetter函数用于获取象哪些维数据参数些序号(即需要获取数据象序号)面看例 a = [一,二,三] >>> b=operator.itemgetter(一) //定义函数b获取象第一域值 >>> b(a) 二 >>> b=operator.itemgetter(...

牧谭洋4765(Python)请问这段代码 if item.find(num1) == 0:的作用是什么? -
慕通房19163259159 ______ str.find(sub) 查找字符串内是否包含子字符串sub,如果包含则返回子字符串首字符的索引,否则返回-1 str.find(sub) == 0 判断str是否以sub开头,相当于 str.startswith(sub)

牧谭洋4765Python3字典中items和python2.x中iteritems有什么区别 -
慕通房19163259159 ______ Python3字典的items方法就是Python2字典的iteritems方法 都会返回iterator,而不是一个list,iterator不像list那样占用额外的内存空间

牧谭洋4765python中{}与[]怎么用 -
慕通房19163259159 ______ 你好,这个可以看看相关的解释python中的中括号[ ]:代表list列表数据类型,列表是一种可变的序列.其创建方法即简单又特别,像下面一样: >>> list('python') ['p', 'y', 't', 'h', 'o', 'n' python大括号{ }花括号:代表dict字典数据类型,字典是由键对值组组成.冒号':'分开键和值,逗号','隔开组.用大括号创建的方法如下: >>> dic={'jon':'boy','lili':'girl'} >>> dic {'lili': 'girl', 'jon': 'boy'} >>>

牧谭洋4765Python中.*和.*?的区别
慕通房19163259159 ______ .*和.*?表达式 .* 的意思很好理解,就是单个字符匹配任意次,即贪婪匹配. 表达式 .*? 是满足条件的情况只匹配一次,即懒惰匹配#-*-coding:utf8-*-import repattern_1 = re.compile(".*([1-9]\\d*|[一两二三四五六七八九十]{1,3})(百|千|)米.*")...

牧谭洋4765python 中 L=('a':1,'b':2,'c':3) 冒号什么意思 -
慕通房19163259159 ______ python内置了列表(list),元组(tuple)以及字典(dic)等数据结构,其表示方法分别如下:(1)列表:list=['welcom','you'](2)元组:tup=('welcome','you')(3)字典:使用键-值(key-value)存储,d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}'Michael','Bob'则为键值,95,85为对应的值.你所给出的应该是字典,应该用大括号 L={'a':1,'b':2,'c':3}

牧谭洋4765django 模板如何判定变量在一个列表中? -
慕通房19163259159 ______ 没有python本身那么方便的语句 需要自己在循环里加判断,比如这样:{% for item in list %} {% ifequal item var %} .... do somthing ....{% endifequel %} {% endfor %} 不过我还是建议尽量在模板里少做一些事情,模板毕竟不是用来提供计算的,只是一个展示用的框架而已.

牧谭洋4765python 列表怎么转化为字典 写了一部分了 希望能补充完整 -
慕通房19163259159 ______ list不要做变量名.result = {}for item in list_: item = item[1:-1].split(' ') result[item[0]] = item[1]print result

牧谭洋4765请问Python如何删除list某两列以及数据数据类型 -
慕通房19163259159 ______ def str2num(s): try: return int(s) except: return Nonelista = [ ['0624', 'b', 'nan', 'nan', 'nan...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024