热点|Hot CONTENTS/目录 取代Vue和React?25年码龄程序员不满Web开发现状创建新框架NueJS,能减少90%代码量!JetBrains推出独立RustIDE 访谈文章|Interview 强制向开发者提AI建议再引公愤,GitHub:我知道你们很不满,但我不改华为云开源低代码引擎TinyEngine正式发布 比Spark快9倍,超越ClickHouse,在大语言模型时代构建全新数据平台 OpenAI当家产品ChatGPT都在用的Redis,是如何从传统数据库升级为向量数据库的?美的集团:关于工业数字化的最新思考和实践 当我想要构建一款LLM应用时:关于技术栈、省钱和游戏规则 案例研究|CaseStudy 与x86、ARM三分天下,全球“开花”的RISC-V如何成为中国最受欢迎芯片架构? 弃用MySQL后存储成本降低85%,携程业务系统数据库升级技术实践实时双向同步:朴朴Elasticsearch双活自研实践与思考 推荐文章|Article 从Kinesis到Timestream:探讨基于AWS的无服务器分析架构深入解析Netflix后端架构与云服务的系统设计 比Python快68000倍!Mojo正式发布,网友:Python生态系统最重要的升级来了用Rust拯救60岁老程序员:用Ada写了几十年的飞机程序,现在终于可以改用Rust了国外20家大型科技公司薪资揭秘 ChatGPT已成为2023年最大金矿,大家是怎么靠它挣到钱的? II 架构师 2023年10月刊 本期主编凌敏 流程编辑丁晓昀发行人霍泰稳 反馈feedback@geekbang.com 商务合作hezuo@geekbang.org 内容合作editors@geekbang.com 特别专题|Topic 如何利用AIGC自动化编程提高研发效率? 视频推荐|Video 大模型颠覆研发模式:字节跳动是如何在单元测试中落地大模型的?打造更聪明的猴子:开源云测框架HydraLab的智能化测试实战 本月,这些视频值得一看! 卷首语 大模型重新定义软件开发,将带来哪些改变? 作者:凌敏 去年以来,以ChatGPT为代表的AI大模型火爆出圈,并掀起了一场全领域的效率革命。软件开发亦在其中。 在软件开发中,大模型的应用越来越广泛。凭借强大的表示能力和泛化性能,大模型正在催生软件工程的新范式,作为催化剂和创新引擎正在开启软件研发和创新效能的倍增,甚至带来指数级提升的可能。 在自然语言处理领域,OpenAI的GPT系列模型具有强大的语言生成和推理能力,被广泛应用于文本生成、对话系统、机器翻译等领域。在图像识别领域,Google的ViT模型通过将图像分割为小块并使用Transformer进行处理,大大提高了图像识别的准确率。此外,大模型在推荐系统、智能客服、自动驾驶等许多其他领域也有着广泛应用。 目前,越来越多的企业开始在实际的研发工作中,结合AI工具与LLM增强软件开发在设计、需求、测试、发布和运维等各个环节中的能力,提高质量和效率。 在字节跳动,大模型生成单元测试已经在实际业务中落地。字节跳动智能服务团队通过任务微调、强化学习等技术提升语言模型的单元测试生成语法正确率和分支覆盖率。经过测试,他们的基于Bloom70亿参数模型的生成效果不弱于通用版ChatGPT的水平,并且在低端显卡上的推理时延只有ChatGPT的25%。且目前大模型单元测试生成分支覆盖率在实际项目中达到56%,同时在抖音的Android、iOS双端落地,问题有效性达到80%,修 复率65%。 在微软,下一代跨平台软件测试基础设施HydraLab接入了LLM(AzureOpenAISer-vice),以提高在测试结果分析、探索性测试和测试用例生成方面的能力。将智能化引入HydraLab,可以看到一些自动化生成测试用例的模块、方案以及prompt。工程化和智能化是HydraLab的关键词,而工程化是智能化赋能的基础。 大模型技术的发展为软件开发范式带来了更多可能性,有受访专家对InfoQ表示,大模型将对研发的模式产生颠覆性的改变。但这一改变是一个持续渐进的过程,可能在三年、五年,甚至是十年后发生。随着大模型的不断发展和进化,对于研发工作流的影响程度会逐渐加深加强。对于身处其中的开发者而言,需要拥抱变化,并结合自身实际所需找到切入点,让大模型为己所用。此外,还需要多关注开源方案和数据集。同时也需要认识到大模型存在的潜在问题和限制,合理地使用它。 取代Vue和React?25年码龄程序员不满Web开发现状创建新框架NueJS,能减少90%代码量! 作者凌敏核子可乐 是重复造轮子,还是颠覆式创新? 近日,前端开发者TeroPiirajinen推出了一个名为Nue.js的极简化前端开发工具,并迅速引发社区讨论。Piirajinen在HackerNews上表示,它是React、Vue、Next.js、Vite、Svelte和Astro的替代品。 据悉,Nue源自德语单词neue,与英语中的“new”同义。它能帮助具备HTML、CSS和JavaScript知识的开发者构建服务器端组件与响应式界面。具体来说,Nue有三大优势:改善开发者体验;加快项目进度;加快页面加载速度。而其最大的亮点在于,它能将用户界面代码量控制在其他同类方案的十分之一。 Nue作者Piirainen是一位来自赫尔辛基的前端开发者,并在开源项目、技术产品和初创企业中工作了25年以上,比较知名的成果包括Riot.js、Flowplayer和jQuery等。目前,Piirainen正在独力开发Nue.js项目,并积极寻求更多贡献者的加入。 Piirajinen在HackerNews上的帖子中提到,过去12个月以来,他一直从事项目开发工作,最近还转为全职。他的开发目标有两个: 1.NueJS——一个用于构建用户界面的小型(压缩后仅为2.3kb)JavaScript库。它类似于React和Vue,但去掉了hooks、effects、props、portals、watchers、injects、suspensions等各种抽象元素。只要开发者具备HTML、CSS和JavaScript方面的基础知识,就完全可以轻松上手。它支持服务器端渲染和客户端响应式组件,设计灵感来自Vue2.0和Riot.js(Piirainen本人也是Riot的原作者)。 2.Nue工具——一套完整的前端开发工具集。在完成之后,Nue将能够取代Vite、Next.js和Astro等系统,这也是本项目的最终发展目标。 Piirajinen计划在2024年3月之前完成所有工具的准备工作,但具体时间取决于问题数量、开源维护工作量,以及他自己的判断水平。目前,Nue已在GitHub上开源,并遵循MIT许可证。 GitHub链接:https://github.com/nuejs/nuejs 为什么创建Nue? Piirajinen表示,他创建Nue的主要原因是他对于当前Web开发态势并不满意,主要 问题包括相关工具太复杂、代码难以理解、编译时间长、网站过于臃肿等等。 此前,Piirajinen在Flowplayer、Muut和Volument担任首席产品官(CPO)时,就有一些不太愉快的前端开发经历。虽然项目最初进展顺利,但很快就变得难以维护。经过几个月的开发,工作节奏开始明显放缓,原本乐观的未来计划也越来越难以落地。 Piirajinen认为,不只是他自己有这种感觉,整个前端开发行业都面临危机。Piiraj-inen提到,他读过不少相关文章,开发者们纷纷表示前端令他们身心俱疲。因此,Piiraj-inen想要做点什么,改变这令人恼火的现实。 Piirajinen计划以极简化方式从零开始构建一切,并用到了不少“旧有”创新成果,例如渐进式增强、关注点分离和语义网页设计。而Nue是Piirajinen改变现状的一次雄心勃勃的尝试,希望能为JS和UX开发者们提供极简化工具。它强调恢复Web标准模型的荣光,并引入现代创新的力量。Nue想要让Web开发再次变得有趣。 Piirainen表示,Nue的灵感主要来自JarredSumner开发的Bun。这是一款新的JS运行时、捆绑器、测试运行器外加NPM兼容型包管理器。Piirainen认为,Bun希望让JavaScript变得更快,而Nue希望让前端开发变得更快。Nue+Bun将成为面向前端开发者的完美组合。值得一提的是,JarredSumner和Piirainen一样,也是一个单兵作战的开发者。 Nue的其他灵感来源还包括: SalvatoreSanfilippo的推文:“纵观如今的Web,我发现开发实践仍然没能遵循最基本的导航和可用性规则。尽管硬件发展一刻不停,但Web呈现速度仍然很慢。我只能认为,现代前端开发已经走进了死胡同。” 乔布斯的名言:“一切应该以客户体验为起点,再据此倒推技术实现。” DieterRams的名言:“少,即是多。” 基于以上几点,Piirainen给Nue项目定下了三条指导原则: 1.关注点分离:让人们各自专注自己的专业领域,由此加快交付速度;内容创作者 专注于内容,UX开发者专注于交互设计,JS开发者负责前端中的后端部分。 2.“只用最普通的Web元素”:Nue将努力发掘标准HTML、CSS和JavaScript当中蕴藏的力量。 3.极简主义:小型代码库更易于维护和扩展,发生错误的几率也会更低。 代码量减少90%,Nue主张极简主义 据了解,Nue的最大优势就是帮助开发者以更少的代码达成相同的效果。在一个项目中,同样的功能实现之间存在2到10倍的代码量差异并不罕见。以用Nue编写的自定义列表框组件为例:React版本需要使用2500行JS代码,Nue版本则能够在保持50%到80%功能的前提下,把代码量控制在十分之一。 “这就是HTML” Nue使用的是基于HTML的模板语法: <div@name="media-object"class="[type]"> <imgsrc="[img]"> <aside> <h3>[title]</h3> <p:if="desc">[desc]</p> <slot/> </aside> </div> 类似于React宣称其“就是JavaScript”,Nue也可被认为“就是HTML”。而这样的特性,对于专注于交互设计、可访问性和用户体验的UX开发者来说堪称完美。 开发者可以点击此处(https://nuejs.org/compare/component.html)查看Nue编码风格与React、Vue、Svelte、Tailwind和Astro之间的异同。 为扩展而生 据介绍,Nue之所以能够为前端开发带来新的可扩展水平,主要归功于以下三大因素: 1.关注点分离,易于阅读的代码比“一团乱麻”的代码更易于扩展。 2.极简主义,100行代码肯定比1000行代码更易于扩展。 3.人员分离。保证UX开发者只须关注前端,JS/TS开发者只须关注前端的后端,这样团队技能就会达到最佳平衡。 UX开发者与JavaScript开发者能够并行工作、互不干扰,最佳结果也自然会由此产生。 对样式解耦 Nue并不主张使用域CSS、Tailwind或者其他紧密耦合的CSS-in-JS框架。相反,它认为最好将样式跟布局和结构区分开来,主要是因为: •有助于增加可复用代码:因为样式不会被硬编码进组件,所以同一组件可以根本 页面或上下文而呈现出不同效果。 •不会弄乱代码:纯HTML或纯CSS代码,其理解难度显然大大低于乱七八糟的组合代码。 •更快的页面加载速度:通过对样式解耦,开发者可以轻松从次CSS中提取主CSS, 并将HTML页面保持在关键的14kb限制以内。 四种组件类型 Nue拥有丰富的组件模型,允许开发者使用不同类型的组件构建起各类应用: •服务器组件:在服