大语言模型加速信创软件 IDE 技术革新

QCon 全球软件开发大会(上海站)将于 12 月 28-29 日举办,会议特别策划「智能化信创软件 IDE」专题,邀请到华为云开发工具和效率领域首席专家、华为软件开发生产线 CodeArts 首席技术总监王亚伟担任专题出品人,为专题质量深度把关。

作为拥有云和开发工具领域近 20 年经验的老兵,华为公司软件开发工具领域的领军人物,20 多项软件开发技术发明专利的拥有者,王亚伟对于「智能化新创软件 IDE」这个专题有着怎样的理解?在会议即将开幕之际,王亚伟与 InfoQ 分享了他的核心观点。

图片

“信创”是信息技术应用创新的简称,其本质是发展国产替代技术,实现核心技术的可掌控、可研究、可发展等。

相比“信创”,“智能化”在过去 5 年中被业界反复提起,智能化技术的发展必然会使诸如 IDE 这样的软件开发工具更加强大。随着大语言模型的诞生,IDE 除了可以自动地完成一些重复性工作之外,还可以协助开发人员在软件的设计和开发过程中完成更多创新性的工作,比如:

自动化重构:将一段复杂的代码分解为更小、更易于管理的函数或类。开发者可以描述他想要实现的重构目标,然后让模型生成相应的代码;

代码翻译:大语言模型可以将一种编程语言的代码翻译成另一种编程语言,再配合 IDE 的语法高亮和错误检查功能,可以帮助开发者使用不熟悉的编程语言编写代码;

自动化文档生成和更新:大语言模型可以根据代码和注释生成相应的文档,或者在修改代码时自动更新文档。大语言模型是 IDE 的智能化加速度。

IDE 的”信创“化旨在将基础软件开发的核心技术实现自主可控,在拥抱开源的同时逐步建立基于自有技术内核的架构和标准,形成自有开放生态。信创化的目的是为了规避可能或已经发生的风险:

信息安全和供应链安全风险:在关键时刻,国外的产品和技术可能会面临供应链中断的风险。此外,国外产品或开源技术可能会存在安全漏洞或后门,基于这些技术打造的商业解决方案会威胁用户的信息安全 - 2020 年 3 月发生的 SolarWinds 攻击事件导致业界领先的开发工具公司 JetBrains 遭受牵连;

技术依赖风险:如果完全依赖于外国的技术,那么我们在软件开发核心技术领域的研究、发展和创新能力就会受制于人,最终导致落后;

经济风险:技术上依赖意味着我们需要持续支付大量的许可费用。

“信创”化不意味着重复造轮子或为了与现有技术不同而进行盲目创新,而是目标实现核心技术可控的前提下,解决现有技术的问题,从而对现有技术实现某些方面的超越。举个例子,代码索引是 IDE 的文件查找、代码提示等功能的基础数据源,现有商业 IDE 代码索引的创建、存储和访问效率并不高,索引数据基于对象存储访问时,一个只有 8 字节(2 个 int)内容的数据封装成对象后要占据至少 24 个字节的存储空间。同时,由于内存读写速率要远低于缓存,如果在存储和访问索引时没有以一种缓存友好的方式进行,读写效率甚至 100 倍下降。我们团队在代码索引存储和访问领域提出了一种基于内存压缩的索引自动化存储和访问技术,可以做到 50 倍以上的综合效率提升,该技术已经被评选为华为云高价值专利,并应用到 IDE 内核、运行时优化、云编译等多个领域。

技术的积累需要时间,产品研发更需要打磨。王亚伟介绍道:“从 2019 年初开始,我们逐步组建了一支数百人的软件研发专家队伍,分布在中国、俄罗斯、欧洲等国家地区,其中一半成员来自于业界顶尖的软件和工具公司,超过 40% 的成员是开源社区的 Committer 和 Contributor,整个团队都围绕着‘做最好的产品’展开工作,我们建立了从产品、运营、UX 到开发、测试的完整专业的产品研发流程,每月一个小版本、三个月一个大版本,基于内外部用户的反馈快速迭代。过去五年我们真正做到了深耕软件开发工具这个专业领域。”

同时,王亚伟也坦言:“虽然从产品成熟度上看我们的信创化工具跟业界成熟的商用工具相比还有差距,但‘信创’本身绝不意味着竞争力弱,体验打折。我们会继续秉持着‘做最好的产品’的信念,不断前进。”

在今年的「智能化信创软件 IDE」专题上,王亚伟带领他的专家团队将围绕大语言模型、AI 编码辅助、下一代 IDE 平台架构、动态语言类型推理等技术,给大家带来一场技术盛宴。

✔ 议题1:AI 开道,让编程体验“一路狂飙”

详细介绍华为云 CodeArts 团队应用大模型开发的 AI 辅助编程的技术 - CodeArts Snap,讲师程啸从博士阶段开始就对代码生成、RAG、代码克隆检测等领域有较深入的研究,他这次也是代表 Snap 团队进行分享。

另外三个英文议题是来自于 CodeArts 俄罗斯的专家团队。

✔ 议题2:Applying Machine Learning in IDE Challenges and Insights

将会系统讨论 AI 技术在 IDE 中的应用研究以及如何深远改变我们的开发,测试和调试代码的方式。讲师 Pavel 是俄研院新西伯利亚实验室主任,20 年开发者工具构建经验,机器学习专家、Eclipse IDE 的专家和 Committer。

✔ 议题3:Evolution of IDE Platforms

将会紧密围绕其在构建 IDE 平台时面临的问题和挑战比如分布式代码模型架构下如何确保前后端组件可以高效交互、如何直接从后端内核画出前端复杂 UI,以及我们如何做出艰难的架构和设计决策,同时分享对下一代 IDE 平台的架构和设计展望。Denis 是俄罗斯新西伯利亚实验室的首席架构师,20 多年的工具研发经验,精通编译器、DSL、编程框架,Eclipse 社区 Committer。

议题4:Type inference engine

静态语言如 Java,C# 等,它的类型推理主要通过编译器完成,代码模型可以通过类型绑定(通常存在于程序的元数据 metadata 中)获得所需要的类型信息。而动态语言的类型推理主要由 IDE 完成,由于缺少编译元数据的支持,动态语言的类型推理是一个业界难题。以 Python 为例,其有一个完全动态严格的类型系统,类型(type)在运行时动态绑定到变量(variable),变量和类型都可以在运行时动态被改变 – 这增加 Python IDE 进行可靠类型推理的难度。议题 Type inference engine 会介绍该团队在做动态语言类型推理时设计和实现的技术细节,并讨论未来该领域的发展方向。Nikolai 是俄罗斯圣彼得堡实验室的首席软件工程师,拥有 15 年 IDE 研发经验,是前 JetBrains Intellij IDEA 和 Scala 项目负责人,精通 Compiler、Program Language Design、Code Analysis 等技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/254082.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bottom-up-attention-vqa-master 成功复现!!!

代码地址 1、create_dictionary.py 建立词典和使用预训练的glove向量 (1)create_dictionary() 遍历每个question文件取出所关注的question部分,qs 遍历qs,对每个问题的文本内容进行分词,并将分词结果添加到字典中&…

解决飞书文档导出word后公式乱码/不可显示问题

目录 项目场景: 原因分析: 解决方案: 项目场景: 飞书文档导出为word: 但是公式会出现在word中无法显示、乱码等问题。 原因分析: 飞书做的有点菜

智能优化算法应用:基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.静电放电算法4.实验参数设定5.算法结果6.…

DS哈希查找—线性探测再散列

Description 定义哈希函数为H(key) key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。 –程序要求– 若使用C只能include一个头文件iostream;若使用C语言…

Java_Lambda表达式JDK8新特性(方法引用)

一、Lambda表达式 接下来,我们学习一个JDK8新增的一种语法形式,叫做Lambda表达式。作用:用于简化匿名内部类代码的书写。 1.1 Lambda表达式基本使用 怎么去简化呢?Lamdba是有特有的格式的,按照下面的格式来编写Lamd…

FPGA实现 TCP/IP 协议栈 客户端 纯VHDL代码编写 提供4套vivado工程源码和技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐我这里已有的以太网方案1G 千兆网 TCP-->服务器 方案10G 万兆网 TCP-->服务器客户端 方案常规性能支持多节点FPGA资源占用少数据吞吐率高低延时性能 4、TCP/IP 协议栈代码详解代码架构用户接口代码模块级细讲顶层模块PA…

腾讯地图绘画多边形和计算面积

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>地图</title></head><script src…

将加速度计当作麦克风来听振动

我们都知道&#xff0c;用麦克风来捕捉声音时&#xff0c;最大的挑战是&#xff1a;背景噪音。这背景噪音有&#xff0c;车辆行驶中的风噪、车辆所处周围的环境的声音&#xff08;人声、车间其它声音&#xff09;、车辆其它部件正常工作的声音。 我们测用加速度计测振动时&…

Flink系列之:监控反压

Flink系列之&#xff1a;监控反压 一、反压二、Task 性能指标三、示例四、反压状态 Flink Web 界面提供了一个选项卡来监控正在运行 jobs 的反压行为。 一、反压 如果你看到一个 task 发生 反压警告&#xff08;例如&#xff1a; High&#xff09;&#xff0c;意味着它生产数…

CTF竞赛密码学题目解析

CTF&#xff08;Capture The Flag&#xff09;竞赛是一个有趣的挑战。密码学是CTF竞赛中的核心元素之一&#xff0c;通常涉及解密、破译密码、理解加密算法等技能。以下是30个题目及答案&#xff0c;新入行的可以看看鸭。 题目及答案 1. Caesar Cipher 描述&#xff1a;给出一…

【JavaEE】多线程(5) -- 阻塞队列

目录 1.阻塞队列是什么? 2.生产者消费者模型 3.标准库中的阻塞队列 4.阻塞队列的实现 1.阻塞队列是什么? 阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则 阻塞队列能是⼀种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续⼊队列就会阻塞, …

论文阅读二——基于全脸外观的凝视估计

论文阅读二——基于全脸外观的凝视估计 基础知识主要内容文章中需要学习的架构AlexNet 代码复现 该论文是2017年在CVPR中发表的一篇关于 “gaze estimation” 的文章&#xff0c;其论文地址与代码地址如下&#xff1a; 论文地址 代码地址 论文特点&#xff1a;文章提出了一种…

IT和业务部门都想要的数据摆渡产品是这样的!

企业只要进行了网络隔离&#xff0c;就必然会需要数据摆渡相关产品&#xff0c;不管是免费的也好&#xff0c;专业收费的也好&#xff0c;总之都是需要将数据流转起来进行使用。 传统的数据摆渡产品也不少&#xff0c;比如FTP&#xff0c;甚至是U盘拷贝&#xff0c;在功能上来说…

Java数组(2)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

Docker容器如何优雅地访问宿主机网络

# 前言 某些时候&#xff0c;我们会有在容器内容访问宿主机某个服务的需求&#xff0c;比如现在 openai 无法直接访问&#xff0c;需要给项目添加代理&#xff0c;我的 chatgpt-dingtalk (opens new window) 项目支持了通过环境变量指定代理地址。 添加方式如下&#xff1a; …

微信小程序(五)地图

一、引言 作者开发《目的地到了》需要满足用户选取地址作为目的地的需求&#xff0c;所以需要使用到地图。作者用的是腾讯地图&#xff0c;这里介绍下技术实现。 二、引包 引入腾讯地图的组件包微信小程序JavaScript SDK | 腾讯位置服务&#xff0c;根据经纬度调用里面的api才…

5款不可或缺的办公软件,好用且使用频率超高,几乎每个人都需要

在当今数字化时代&#xff0c;办公软件成为了现代职场必备的工具。这些软件可以大大提高我们的办公效率&#xff0c;简化工作流程&#xff0c;使我们更加高效地完成任务。今天给大家分享5款不可或缺的办公软件&#xff0c;它们不仅好用&#xff0c;而且使用频率极高&#xff0c…

【PWN】学习笔记(三)【返回导向编程】(中)

目录 课程回顾动态链接过程 课程 课程链接&#xff1a;https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12e7b4e6 课程附件&#xff1a; https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6 回顾 管道符 | 把前一个指令的输出作…

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…

JVM-1-运行时数据区

程序计数器&#xff08;Program Counter Register&#xff09; 是一块较小的内存空间&#xff0c;它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里[1]&#xff0c;字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令&…