专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

被逼出来的自主可控,从华为自研看国产IDE的未来和商业模式

  作者王亚伟
  策划Tina编者按:目前我们所使用的IDE基本都是由国外巨头提供,比如VisualStudio、Eclipse、JetBrains,但IDE是软件开发生态的入口,是软件开发的技术根基,所以作为有断供风险的根技术之一,IDE跟操作系统、芯片、编程语言一样非常重要。另外,随着越来越多的软件开始采用云上开发模式,使用国外的开发环境,开发者团队和个人也面临着无法确认的保密性、完整性等问题。因此,IDE自主可控的未来发展其实是一件十分值得重视的事情。
  但比起其他领域,IDE开发需要较高的能力和大量的编程经验,国内从事IDE开发的技术专家不算多,而本文作者恰恰在云和软件开发工具领域从业多年、经验丰富。在这篇文章中,他从产品形态、内核技术、商业价值和产业机会角度,基于目前IDE领域的发展,展望了IDE的未来,并引出了下一代IDE在技术、产品和生态构建方面的投入方向。无论是从观点洞察角度还是经验传承方面来说,本文都对整个中国软件产业有重大参考价值。
  华为的自研IDE之路
  我所在的部门华为云PaaS服务产品部在软件开发工具领域肩负着两大使命:一是为华为内部各产业开发者提供软件开发工具,提升开发效率;二是以华为云为承载平台,将华为内部优秀的软件工程工具和研发实践服务于广大外部开发者。
  纵观华为公司的IDE发展历程,大致经历了三个阶段:插件开发,自研内核,商业化探索。
  华为从90年代起开始投入通信产品的研发,有着丰厚的嵌入式软件开发底蕴。华为嵌入式软件开发有几个显著特点:代码量巨大,可达千万行级别;运行环境强依赖特定平台,调试验证困难;过程质量要求高,有集成各IT系统诉求,以满足研发流程要求。彼时华为仍是一家以通信产品作为主要方向的设备厂商,对IDE领域并未过多投入,加之市场上已有一些成熟的商业和开源软件,能基本满足华为软件研发需求,此阶段IDE策略主要是基于以采购商业软件和使用开源软件为主。同时,由于公司对研发过程的质量要求高,大量研发流程需要在IDE中承载,这就对IDE提出了定制扩展的诉求。因此,各产品团队结合自身业务特点,开发了多款IDE插件。
  时间来到了2019年5月,由于众所周知的原因,华为内部研发工具需要进行大面积的自研,以保障研发作业的安全性。面对巨大的生存风险,我们做出了艰难但正确的战略决策:自研IDE内核。随后,我们联合各个产品线基于统一底座插件生态语言支持的框架,建设公司的IDE解决方案。IDE是一个复杂的软件系统,要实现所有组件的完全自研不现实也没必要,我们只需要找到最硬的那几根骨头把它们啃下来。到2021年底,我们基本实现了内部嵌入式软件开发领域CCIDE工具的自研替换,部分能力甚至实现了对原有商业工具的超越。
  解决自身生存问题的同时,我们也在积极地进行商业化探索。华为云软件开发生产线CodeArts就是华为软件研发能力外溢的第一次成功尝试。经过多年持续研发投入,CodeArts从最初的云上软件开发平台DevCloud成长为覆盖软件开发全生命周期的生产线,并一跃成为中国DevOps平台市场领导者。而本文的重点CodeArtsIDE系列产品(https:ide。huaweicloud。com),就是CodeArts产品族中的核心之一。
  WebIDEvs桌面IDE
  也是在2019年5月,我们开始做WebIDE服务(本文WebIDE指代所有在浏览器当中完成编码调试测试的IDE产品形态包括后端部署在云端虚机、容器中的CloudIDE),当时目标的细分场景是云原生应用快速开发和部署。2020年HDC(华为云开发者大会),我们推出了与华为鲲鹏芯片协同的云端开发环境华为云CloudIDE,成为鲲鹏原生应用开发的首选平台,用户反馈正面。
  随着应用现代化、云原生的发展,云端开发场景越来越丰富,CloudIDE再次被推到舞台中央,这次主打轻量级云原生应用开发部署。我们开发了大量打通云服务开发、调试和部署的插件,并于2021年推出了ToB的云原生应用集群调试服务CloudDebugger和面向云资源租户的CloudShell服务。2019年到2022年三年艰难的探索,我们其实做到了不忘初心,并且深刻认识到:随时随地编码可能并非高频刚需场景,WebIDE一定要服务于某个细分场景才能发挥其最大价值。事实上WebIDE在华为内部某些嵌入式开发场景已经规模应用起来,特别是开发环境配置复杂,编译构建环境特殊,提供一个开箱即用的WebIDE托管服务,对于开发者特别是新手非常有价值。
  但是,单纯从一个效率工具的角度看,WebIDE的还是有一些明显的痛点:首先是性能,托管服务的资源规格相对固定,算力可能不如本地环境强大;其次是灵活性,由于安全合规的要求,云端环境通常不能随意安装组件;再次是安全感,WebIDE实例随时创建随时销毁,让开发者担心开发较大项目时数据会丢失。最后是使用习惯,在浏览器中进行开发作业需要适应,网络连接也要足够稳定。鉴于这些明显的痛点,我认为下一代IDE的主流产品形态应该还是类似传统桌面IDE,但内涵更广泛。具体来说,下一代IDE除了具备传统桌面IDE的主要特征外还应该具备以下特征:
  第一,智能化全面融入编码、浏览、调试、搜索等各个开发环节。
  以代码补全为例,这里大体会有两个方向,一个是类似GitHubCopilot和CodeArtsIDESnap所谓的AI配对程序员,开发者用自然语言注释描述,AI自动生成代码;一个是短符号的TabComplete代码生成。
  关于第一个方向,我个人观点:类似AI配对程序员的技术在中短期来看,重点是编程辅助,而不会进入主流开发流程,也不会成为高频刚需场景。究其原因,还是在于安全感,AI生成的大段代码没人敢不做检查就直接提交到代码仓,而代码审核可能更耗时耗力。
  关于第二个方向,我们进行了一系列概念验证,发现开发者喜欢一切尽在掌握的感觉。在短前缀或者无前缀的情况下,轻量级的AI模型对不同场景下的补全结果进行排序,让开发者通过敲击Tab键,连续多次完成短符号的代码生成,这种TabCompleteDone的体验让人愉悦。并且由于是短符号推荐,Top1命中率远高于多符号补全。当然在推荐列表里也存在当前上下文的可能的长结果(整行补全),开发者可以通过上下键自己选择。
  举个TabComplete的例子,比如下面这段代码,理想情况下开发者敲击‘D’Tab,‘。’Tab,‘。’Tab,‘。’Tab共八次按键,IDE连续完成四次函数补全。
  DocumentdocDocumentBuilderFactory。newInstance()。newDocumentBuilder()。newDocument();
  复制代码
  第二,随时创建并连接到短暂的、可扩展的远程异构环境。
  简单来说,如果开发者需要一个MySQL的环境,他不需要在自己IDE环境中安装MySQL,只需要通过IDE创建并连接到一个临时的远程MySQL环境进行开发测试,环境使用完毕即自动销毁,远程环境的生命周期管理对于开发者来说是透明,开发者也不用关心环境的可获得性。当然,这个能力光靠IDE还不行,还需要远端环境服务的支持。事实上过去三年我看到的趋势是,同时做云和IDE的厂商持续加强其工具和云服务的联系,只做云或者只做IDE的厂商正在尝试报团取暖。
  第三,技术上同时兼容WebIDE和桌面IDE两种使用方式。
  随着远程开发技术的成熟,技术上实现一个IDE支持两种模式(服务器和桌面模式)已经成为可能。这种架构可以给开发者提供足够的灵活度,彻底解耦编码和编译构建调试环境,也避免交叉编译可能带来的痛苦。
  第四,丰富的插件生态、多语言支持和扩展的能力。
  VisualStudioCode插件已然成为事实的标准,下一代IDE只要能兼容该标准就能迅速获取海量插件。云原生应用的微服务、容器化、分布式架构等特征也带来了多样化技术栈和多编程语言支持的需求。新场景新编程语言的出现也要求IDE能提供扩展语言支持的能力。
  IDE的核心技术是什么
  这里首先澄清一点,以VisualStudioCode为代表的代码编辑器即使搭配语言插件也并不等同于传统桌面IDE。代码编辑器以文本编辑为中心,以文件和目录为访问对象,而传统桌面IDE以代码编辑为中心,以项目为访问对象,二者有本质区别。那么IDE的核心技术是什么?图形用户界面GUI?文本或可视化编辑器?编译构建调试工具的集成?其实都不是。IDE作为一个效率工具最核心的部分是代码模型的处理引擎,其处理代码的性能,内存占用,索引大小,API好坏直接决定了上层特性如语法高亮、浏览、补全、重构、检查等的易用性和整个IDE的体验是否丝滑流畅。
  一个完整的代码模型处理引擎至少包括如下四个子系统:
  一、项目模型(ProjectModel)。该子系统主要负责构建项目结构的高级视图,并提供接口访问当前工作空间的项目及其依赖关系、代码在磁盘上的文件夹和文件如何组织的数据结构。以Java项目模型为例,其最核心的组件是一个称为代码根(CodeRoot)的底层接口实现,代码根从逻辑层面代表Java项目所有代码的可能来源本项目源代码、底层运行时依赖或第三方依赖包,并提供分析和处理上述代码和生成索引的功能。
  二、索引(Index)。每次打开项目,IDE都要需要花费时间来解析和处理所有源代码,这种处理的中间结果就存储在索引子系统中。项目第一次打开将构建完整的索引,一旦索引构建完成,所有后续的项目加载只需要对增量改动进行索引。索引又分基于文本的索引和基于语义的索引。前者很好理解,创建索引的信息是基于文本的,它不依赖于任何特定于语言的语义,因此是完全本地化到源文件中,该类索引的更新完全基于增加删除改动的文件。而基于语义的索引就比较复杂,它包含的语义信息可能涉及多个源文件。比如所有返回类型为A的方法的索引就是基于语义的,它给出了一个返回类型为A的方法列表。该索引的生成就要依赖于对该项目模型所有源文件的名字解析的过程,并且仅仅考虑添加删除修改的文件来进行更新也是不够的,因为语义依赖信息可能并不仅仅存在于改动的文件中。
  三、语法(Syntax)。语法是编程语言的底层结构和规则。IDE使用抽象语法树(AST)来理解编程语言的源代码,而AST的访问是高频操作,所以语法子系统的任务就是提供高效和方便的AST访问接口给IDE其他模块使用。
  四、语义(Semantics)。给出一个表达式ax;,如何判断‘x’的种类?是本地变量、函数参数、类字段还是方法名?如何判断‘x’的类型?int,long,string?语义子系统可以回答这些问题。一般来说,AST是一种低层的代码文件结构,用于表示特定的源文件,AST节点通常不具备具体的类型信息。还有一类数据称之为符号(Symbol),从IDE角度看符号是一类更高层的数据结构,它是从多个源文件的AST或者二进制依赖包中生成的,代表的是AST节点跨文件的类型信息,它可以告诉你某个方法是否是构造函数,某个变量属于哪个类型申明。语义子系统会构造完整的符号表并把对应符号附着到AST节点上,使之成为具备类型信息的AST(TypedAST),这个过程称为类型绑定(typebinding)。而基于TypedAST回答上述如何判断的问题的过程称为名字解析(nameresolution)。
  讲了这么多,那下一代IDE的代码模型处理引擎是什么样的呢?这个问题我也没想清楚,但我们在探索一种基于统一架构的代码模型处理引擎,架构大致分为三层:语言解析层:语言相关,不同语言不同的解析逻辑;语法、语义适配层:语言无关通用接口;索引持久化层:语言无关,基于索引元数据的高性能存储系统。这样设计的好处是最大化重用各子系统,并且可以快速支持新编程语言。技术指标层面,下一代代码模型处理引擎应该在补全或引用查找等高频特性方面有指数级的性能提升。
  商业价值和产业机遇
  最后我想聊聊IDE未来在我国市场的商业价值和产业机遇。去年(2022年)是微软VisualStudio诞生25周年,从第一个版本VisualStudio97到VisualStudio2022,其主要商业模式一直都是订阅或者许可售卖。VisualStudio对于微软的商业价值是否只是销售收入?如果是,后来的代码编辑器VisualStudioCode是免费产品,它的商业价值又是什么?
  微软于2008年左右开始做云,2014年萨提亚成为微软CEO后,提出移动为先、云为先战略,并且彻底拥抱开源,Windowsistheairwebreathe被扔进历史的垃圾堆,随后。NET开源,2016年发布VSCode1。0并开源,2018年收购GitHub,最终组成了软件开发工具(VSVSCode)GitHubAzure的强大的开发者生态价值链,成为驱动微软营收持续增长的引擎。微软深谙得开发者得天下这个道理,在云这个战场开辟了一条新赛道:
  云服务供应商必须打通开源软件到云服务的价值链。软件开发工具(特别是IDE或类IDE产品)是这条商业和生态价值链的起点,云服务是终点。在转化率不变的前提下,工具的用户越多,生态入口越大,云的生态越繁荣。
  回到我们自己,咱们国家软件产业是否需要一个拥有自主可控核心技术的IDE?这个问题没有统一答案,不同行业差异很大。但软件供应链攻击的问题(大家有兴趣可以关注下SolarWinds供应链攻击事件)让我始终坚信:信创基础软件工具链对于我国高科技企业来说是一个巨大的产业机遇。因此,关乎国家安全的战略性产业,对技术自主可控要求高的企业,这个问题的答案就显而易见。对于需要构建开发者生态的企业或产品,拥有自己的IDE可以打造定制化的开发者体验和工作流,降低应用开发难度方便开发者,同时也可以避免将生态构筑在别人的平台之上,在当下这个脆弱的全球产业链大背景之下,这点尤为重要。
  未来不管技术如何发展,软件架构如何演进,IDE作为开发者的效率工具其核心的编码调试测试等功能不会改变。在不同细分领域如AI、智能汽车、芯片等,其集成的工具链会更广泛,开发场景也会具备更多的业务属性。
  作者简介:
  王亚伟,华为云开发工具和效率领域首席专家,华为软件开发生产线CodeArts首席技术总监,当前领导一支国际化软件专家团队负责CodeArtsIDE系列产品的研发和华为云开发者生态能力建设。加入华为前,曾任微软开发者事业部资深开发经理,在微软全球多个国家地区工作13年。近20年的云和开发工具的行业经验让他具备从底层技术、产品规划到开发者生态能力建设洞察的能力。王亚伟先生发表和被授予20多项软件开发技术相关的发明专利。
  本文转载来源:
  https:www。infoq。cnarticled4613NRodWJEAXqRblEu

皮肤黑的人,穿什么颜色的衣服会显白?亮色还是暗色?我也不太会搭配,我个人觉得皮肤黑的人穿淡色系或者亮色更好看些显白点。浅色系衬托皮肤一点。不过具体应该因人而异,有些皮肤特黑的那种穿白色也很有特色。当然亮色的,皮肤黑在穿上深色的衣服如何正确批评孩子?慢慢来,不要急于批评孩子!我们很多家长,非常爱孩子,可是当孩子的表现,低于自己的期待时,往往不由自主地会批评孩子。可是,你是否有这样的经历,批评之后,孩子眼角挂着眼泪,已经睡去。而孩子说谎,该怎样正确对待?要说到孩子说谎这个话题,其实没有几个孩子在长大的过程中是没有撒过谎的。在大多数家长眼中,孩子说谎就要受到惩罚,还会有说谎就是不良少年的逻辑。那么在教育孩子的过程中,发现孩子说谎了,你身边有没有农村夫妻把孩子培养的特别优秀,最后却后悔了的事?我就是一个农民,准确的说是半路出家,从十几岁到四十岁在外面打拼,后来为了儿女能学业有成,就选择回农村,因为我们打工的地方没有房子去不了好的学校,当时,我们不是买不起房子,而是不想在你对朱之文的儿子小伟和亚男的婚姻问题有什么评价,为什么?对这样的话题本人不想阐述自己的观点,因朱之文的儿子小伟和亚男的婚姻问题不做任何评语价,好与坏与普通百姓一毛钱关系都没有,全国青年男女婚姻有问题的多得事评价不过来。我只想说不要在炒作孩子学习不上进,该怎么办?这个问题我来回答一下。关于孩子的学习问题。主要看我们的父母。在什么环境下?把孩子带到正常的学习轨道。因为我们现在的孩子,基本都是爷爷奶奶。姥爷姥姥。来带。因为父母,都有自己的工作。从专业的角度分析,郎朗弹钢琴水平高吗?高在哪?一位钢琴肢体表演家。感谢网名叫我很调皮这位朋友提出的问题。下面我从不专业的角度来回答这个问题。我们大家都知道,评价任何一种乐器演奏得好还是坏,必须从技术和艺术两个方面来判断,二者缺有多少会计专业的同学后悔了的?相当相当后悔。其实本科学得不相关,第一份offer也不是财务相关,但是为了一张北京户口,把自己卖给了四大。干了三年,可以说是超负荷但确实收获颇多的三年,曾经想过要转行,但是可以说执金域检测竟然隶属于联盛集团,老铁们,你怎么看待这个事情?在资本面前,利益大于生命(普通老百姓)。滴滴有其父必有其女!金欲有其主必有其仆!指导思想唯利是图贪得无厌!当利润达到10时,便有人蠢蠢欲动当利润达到50的时候,有人敢于铤而走险当利美国有史以来主动挑起了哪些战争?曾经在美国的一档综艺节目当中,主持人谈到该如何让世界进入和平状态?然后主持人默默地将身后世界地图当中的美国摘下来扔了,随即便说到这样就可以了!不得不说,这节目非常的讽刺,但也不得不DNF手游如何快速上手,取得先期优势?DNF经过不断的努力终于出现了手游,其实手游和网游还是有很多相似的地方的。那么关于DNF手游新手如何上手取得优势今天进行分析一下。目前的DNF手游中基础职业一共有4种,每种职业有2
陈松伶和56岁陈法蓉同框输太惨!一个僵硬不自然,一个优雅老去中年女性之间的同框,总是会分一个高阶输赢,尤其是踏入了50多岁的年龄阶段,在这个时候,早已没有了年轻时的容貌,身材也开始发福变形,所以真正比拼的是气质和状态,而不是所谓的年轻。就像又是16名?媒传国足主帅难产,足协抽调陈洋或再组中方教练团队久古要说国足12强赛最奇葩的事情,就是李霄鹏接替李铁担任主帅之后,组成了一个有史以来恐怕也是世界足球史上最为庞大的一个教练团队一共有16人之巨。世人从排成长龙的教练组成员浩浩荡荡一爱美的女生千万别戴美瞳吃烤肉,不然眼睛差点失明相信生活中很多女生都爱美吧!爱美是女孩子的天性,包括日常隐形眼镜美瞳,都是平时生活中需要的也给我们增添了许多漂亮和方便,如果近视带隐形眼镜让我们看起来更加明亮而舒适,反而让人更加自一个人去配镜怕被坑?看这篇就够了!镜框怎么选?镜片怎么选?一个人去配镜怕被坑?看这篇就够了!我来帮大家总结几点实用的配镜攻略。1镜框怎么选首先要根据自己的度数和瞳距去选择镜框尺寸。瞳距60选择小框(45mm50mm)60瞳距63选择中框(癸卯二月,邂逅一场春雨二月,邂逅一场春雨二月,梅花未眠,暗香盈袖!一场春雨,悄然而至,淋湿了这个周末她,绵绵若织,她,细雨霏霏,她,如梦似幻!她是春的使者,她是绿的信差!她,飘忽着,她,簇拥着,她,喧闹善人者人亦善之!头条创作挑战赛刘备说,勿以善小而不为,勿以恶小而为之。世界上所有的惊喜与幸运,都是你积累的人品与善良。你希望别人怎样待你,你就得先怎样待人。圣经中的这句话与管子说的道理不谋而合。如远飞者当换其新羽善筑者先清其旧基老鹰在存活了40年的时候,要在石头上砸掉自己的指甲,待指甲长出之时又拔掉自己的羽毛,新生羽毛健全时又能重新翱翔几十年,蓝天因它而辽阔。大自然的善存者方知其道理,人亦如是,要想飞的更奇怪!白鹿这么漂亮,怎么在刘雯旁边就像网红了?俗话说得好,女明星的同框就是最大的修罗场。尽管没有刻意比较的意思,也会让人注意到穿衣上的不完美。白鹿和刘雯的同框是最好的例子,让人奇怪的是,明明白鹿这么漂亮,站在刘雯的身边却给一种戒指该如何戴,戴十根指头分别是什么含义?(图解)戴戒指是一件非常讲究的事情,戒指是一件非常有象征意义的饰品,不同的戴法具有不同的意义。不仅仅能代表身份地位还可以代表恋爱状态和婚姻状态,所以究竟戒指该如何戴才不会让别人更好的了解你散文只要心中有景,人生何处不是花香满径作者子墨岁月静好,春在催开了季节的暖,新的春天,染绿了枝头的风景。时光荏苒,经过一冬的酝酿,一切都有了勃勃生机,蓄势待发,时光里,一个个生命,少了内敛和谦卑,不再安于寒冷,而是以最不是那么期待了我不得不承认在某些时刻,总会对自己感到失望迷茫,似乎能做的只剩下对自己无能的狂怒,怨恨这个一无是处的自己。就像掉入了痛苦的深渊,挣扎着,呼喊着,好想得到救赎,但一切都无济于事,就这
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软网