Python 与 C 语言,谁是编程世界的王者?

在当今数字化的时代,编程已经成为一项至关重要的技能。而在众多编程语言中,Python 和 C 语言无疑是备受关注的两大热门。那么,对于初学者或者想要在编程领域深入发展的人来说,学习 Python 与 C 语言,到底哪个更好呢?

首先,让我们来聊聊 Python 。Python 以其简洁易懂的语法而闻名,就像是一把轻巧灵活的瑞士军刀。它拥有丰富的库和强大的功能,无论是进行数据分析、机器学习,还是构建网站、开发游戏,Python 都能轻松应对。据统计,在数据科学领域,超过 80%的专业人士都选择使用 Python 来处理和分析数据。比如说,在处理大规模数据集时,Python 的 Pandas 库可以让复杂的数据操作变得轻而易举。

C 语言则是编程世界的老牌劲旅,就像一位经验丰富的武林高手。它具有高效、底层控制能力强等特点。在系统编程、嵌入式开发等领域,C 语言一直占据着不可替代的地位。许多操作系统和底层驱动程序都是用 C 语言编写的。举个例子,手机的操作系统内核,很多就是基于 C 语言开发的。

从学习难度上来看,Python 相对来说更容易上手。对于没有编程基础的小白来说,Python 的简洁语法和丰富的学习资源,能让他们更快地感受到编程的乐趣和成就感。而 C 语言则需要对计算机底层原理有更深入的理解,学习曲线较为陡峭。

然而,这并不意味着 C 语言就应该被冷落。在追求高性能和对系统资源精确控制的场景下,C 语言的优势无可替代。

综上所述,Python 和 C 语言各有千秋。如果你对数据分析、人工智能等领域感兴趣,想要快速入门并在短时间内看到成果,那么 Python 可能是你的不二之选。但如果你立志于深入研究计算机系统、追求极致的性能优化,或者从事底层开发工作,C 语言将是你攀登技术高峰的有力工具。

其实,无论选择哪一种语言,关键在于你的兴趣和目标。只要持之以恒地学习和实践,都能在编程的世界里闯出一片属于自己的天地!

会写代码的AI开源!C语言比Codex写得好,掌握12种编程语言丨CMU

萧箫 发自 凹非寺量子位 | 公众号 QbitAI

比Codex还会写C语言的AI代码生成模型,现在开源了!

这段时间,用AI写代码可以说是大火,其中最著名的要属OpenAI的Codex和DeepMind的AlphaCode。

△基于Codex的Copilot

然而,这两个AI模型,全都没有开源:

其中AlphaCode只给出了一些测试样例,而Codex只开放了API。

为此,来自CMU的几个研究人员,用GPT-2搞出了一个名叫PolyCoder的AI代码生成模型,而且还是开源的

据研究人员表示,虽然PolyCoder最大只有27亿参数(相比Codex有120亿参数),但它用C语言写出来的代码,比Codex的效果还要好。

这里面究竟有什么秘诀?

首先来看训练用的数据集,这也是PolyCoder的最大特点之一。

此前,包括Codex、CodeParrot等AI代码生成模型,主要都是基于Python语言的代码来训练。

例如Codex的评估数据集之一HumanEval,评估的也是生成Python代码的效果。

相比之下,PolyCoder采用了多种编程语言代码集来训练,一共有12种:

C、C#、C++、Go、Java、JavaScript、PHP、Python、Ruby、Rust、Scala和TypeScript。

其中,C语言的代码量是最多的,达到了221GB;而Python代码的数据量比Codex和CodeParrot用得都要少。

这里PolyCoder用的是GitHub上的公开代码,主要选取的是各种编程语言中比较受欢迎的库,每个库至少有50 Stars。

据研究人员表示,每种编程语言库的Stars总数加起来不超过25k,以避免模型生成的代码效果太过于倾斜最流行的编程语言(通常编程语言越流行,库的Stars就越多)

通过提取库中的文件、经过简单处理(包括消除重复代码)后,一共筛选出大约254GB的数据用于训练。

然后是预训练的方法。

语言模型的预训练方法通常有三种。

第一种是自左向右的语言模型,根据上文预测下文,比较适用于代码生成等;第二种是掩蔽语言模型,基于上下文预测屏蔽片段,比较适合代码分类等;第三种是编解码器模型,比较适用于代码注释等任务。

这里PolyCoder主要采用的是第一种预训练方法。

相比于同样采用GPT-2训练的CodeParrot和Codex,PolyCoder在超参数设置上也稍微有一些差异:

PolyCoder一共提供了三种不同的模型,分别有27亿参数、4亿参数和1.6亿参数,研究人员可以根据自身需求和不同的训练能力来选取合适的模型。

那么,最终训练出来的AI模型,代码生成效果如何?

研究人员将PolyCoder与已有的AI代码生成模型进行了对比。

由于AlphaCode不好比较(接口没开放),所以研究人员主要分析了下面这些模型,包括GPT-Neo、CodeParrot和Codex等。

其中蓝色的是开源的,橙色的是没开源的:

从参数量来看,PolyCoder并不是最顶尖的,最大的27亿参数模型也只有Codex的四分之一不到。

研究人员先是用语言模型评估常用的困惑度对一系列模型进行了比较。

困惑度(Perplexity),用于衡量语言模型(LM)的好坏。困惑度越低,语言模型面对代码感到困惑的程度就越低,模型生成效果越好。

从图中来看,PolyCoder在C语言中意外取得了最好的效果(困惑度最低)

用大量C语言训练PolyCoder的结果说明,即使模型整体原理不变(基于GPT-2),单纯改变训练用的代码集,也能训练出擅长不同语言风格的AI代码生成模型。

可惜的是,从其他语言来看,生成的效果就完全没办法和Codex相比了:

例如,在主要用于评估Python代码的HumanEval上,PolyCoder的能力远不如Codex好:

据论文分析,这可能是Python代码数据量、模型参数量不足等原因导致的。

此外,作者们也提到,做出PolyCoder的目的主要还是为了开源一个AI代码生成模型,让更多人参与研究和使用。

目前代码已经开源,无论是直接拿来用,还是试着在它的基础上开发新模型都可以。

感兴趣的小伙伴可以上手一试了~

一作许方正(Frank Xu),目前在CMU读博,研究方向是NLP、信息抽取等,发表过多篇顶会论文,包括ICLR、ACL和EMNLP等。本硕毕业于上海交通大学,师从朱其立教授。

Uri Alon,在CMU进行博士后工作,研究方向是编程语言处理(PLP)、NLP和深度学习。

Graham Neubig,CMU助理教授,研究方向是NLP、机器翻译和基于机器学习的自然语言理解。

Vincent J. Hellendoorn,CMU计算机助理教授,主要研究方向是软件工程和机器学习,致力于利用智能方法帮助软件开发人员减少代码调试、程序优化等繁琐工作的时间。

不知道作者们是否已经在用这个AI撸代码了(手动狗头)

项目地址:https://github.com/VHellendoorn/Code-LMs

论文地址:https://arxiv.org/abs/2202.13169

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。