j8typz 发表于 2024-7-29 10:22:35

下一代前端语言之争,JavaScript 要被新语言反超?


    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://mmbiz.qpic.cn/mmbiz_gif/YriaiaJPb26VPQqHC66RJFpttVIMWG83T3lWHahUD4bvhxlKSayjeV2ibvC5ydqklP9QHDPD3qHJM07TV3IfHstjA/640?wx_fmt=gif&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1" style="width: 50%; margin-bottom: 20px;"></p>作者|Nicholas Yang
    译者|核子可乐
    策划|褚杏娟 <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">假如<span style="color: black;">大众</span>正在编写前端代码,<span style="color: black;">那样</span>会<span style="color: black;">选取</span>哪种编程语言?<span style="color: black;">日前</span>来看,最有<span style="color: black;">期盼</span>的选手<span style="color: black;">重点</span>有三个:<span style="color: black;">首要</span>是最常规的 JavaScript,<span style="color: black;">而后</span>是能编译为 WebAssembly(Wasm)的语言,最后则是能编译成 JavaScript 的语言。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">常规 JavaScript 需要的配套工具最少,但代价是调试起来相当麻烦,代码可读性<span style="color: black;">亦</span>差。虽然<span style="color: black;">选取</span> JS 确实门槛较低,<span style="color: black;">不外</span>除了一味痴迷“极简主义”的铁粉以外,我个人觉得这个选项只能说<span style="color: black;">通常</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">能编译为 Wasm 的语言虽然越来越多,但总体上还是新生事物。这些语言<span style="color: black;">常常</span>带有<span style="color: black;">海量</span>的二进制文件,<span style="color: black;">由于</span>其中大多需要<span style="color: black;">协同</span>额外的运行时。Interop 距离发展成熟还差得远。<span style="color: black;">另一</span>,即使两种语言都能编译成 Wasm,<span style="color: black;">亦</span>不<span style="color: black;">表率</span>它们之间就能良好实现互操作。再有,这个阵营的生态<span style="color: black;">贮存</span>还远远比不上<span style="color: black;">累积</span>了几十年的 JavaScript DOM 库。在 Wasm 这边,React 和 Svelte 应该是最好的选项了。大家千万别误会,我可不是在唱衰 Wasm。它<span style="color: black;">已然</span><span style="color: black;">持有</span>专属于自己的表现舞台,<span style="color: black;">倘若</span><span style="color: black;">大众</span>想要在浏览器中运行高计算量原生代码,但 Wasm <span style="color: black;">便是</span>最完美的选项。可<span style="color: black;">倘若</span>不是这种<span style="color: black;">状况</span>,我个人不太<span style="color: black;">举荐</span>用它进行<span style="color: black;">平常</span>前端<span style="color: black;">研发</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">最后剩下的<span style="color: black;">便是</span>能编译成 JavaScript 的语言了。但这个阵营形<span style="color: black;">成为了</span>一家独大的局面,其中的老大<span style="color: black;">咱们</span>稍后会<span style="color: black;">详细</span>讨论。相比之下,ClojureScript、Elm、ReScript、Dart 等语言都形<span style="color: black;">成为了</span>颇<span style="color: black;">详细</span>量的社区,但<span style="color: black;">将来</span>市场份额还能<span style="color: black;">不可</span>进一步扩大尚未可知。这就很尴尬了,毕竟能编译成 JavaScript 的语言<span style="color: black;">表率</span>的基本<span style="color: black;">便是</span>浏览器上的最佳编程体验。在它们的支持下,<span style="color: black;">咱们</span>既能享受 JS 所不具备的良好功能,<span style="color: black;">例如</span>静态类型、强类型、不变性、宏等,<span style="color: black;">同期</span><span style="color: black;">亦</span>能<span style="color: black;">经过</span> bindings 支持 JS 及其广泛的生态系统。<span style="color: black;">况且</span>,它们还不需要笨拙的大型运行时。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因为</span> Wasm 的存在,我<span style="color: black;">可疑</span> JS 编译阵营会有所<span style="color: black;">保存</span>,毕竟<span style="color: black;">非常多</span>人觉得前者才是浏览器上的最佳编译<span style="color: black;">目的</span>。我其实并<span style="color: black;">区别</span>意这种观点,能编译成 JavaScript 的语言还是越多越好。总之,我想借这篇<span style="color: black;">文案</span>跟<span style="color: black;">大众</span>聊聊现有及<span style="color: black;">将来</span>可能<span style="color: black;">显现</span>的前端语言,应该朝着哪个方向发展。</p>
    <span style="color: black;">TypeScript 还行吗?</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这<span style="color: black;">便是</span>我前文<span style="color: black;">说到</span>的 JS 编译阵营中的“老大”——TypeScript。TypeScript 是种很棒的语言,<span style="color: black;">明显</span>改善了<span style="color: black;">研发</span>者体验。它还新增了安全层,促进工具质量<span style="color: black;">提高</span>,并大大降低了<span style="color: black;">运用</span>门槛。<span style="color: black;">思虑</span>到生态系统的繁荣<span style="color: black;">状况</span>以及对 JS 类型<span style="color: black;">检测</span><span style="color: black;">困难</span>的妥善<span style="color: black;">处理</span>,TypeScript 确实取得了非凡的成就。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当然,<span style="color: black;">亦</span>有不少针对 TypeScript 的非议值得关注。<span style="color: black;">首要</span><span style="color: black;">便是</span>这门语言的性能和健全性问题。需要<span style="color: black;">重视</span>的是,TypeScript 团队其实很清楚这两大顽疾,而其根源是<span style="color: black;">研发</span>团队在项目之初做出的<span style="color: black;">知道</span>权衡。在我看来,这些权衡是当时为了<span style="color: black;">加强</span>执行效率而做出的正确<span style="color: black;">选取</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">话虽如此,但性能确实是 TypeScript 最受诟病的问题。TypeScript 是自实现的,<span style="color: black;">况且</span>这种实现非常<span style="color: black;">繁杂</span>。它的类型系统本身<span style="color: black;">能够</span>算是种迷你编程语言,这<span style="color: black;">引起</span>类型<span style="color: black;">检测</span>的速度极其缓慢。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">第二个问题就是健全性。这事的讨论热度没<span style="color: black;">那样</span>高,但在编程<span style="color: black;">兴趣</span>者群<span style="color: black;">身体</span>部还挺受关注。概括来讲,TypeScript 一身都是“缺陷”——allwJs 配置选项、any 类型和 intersection 类型,其类型系统<span style="color: black;">基本</span><span style="color: black;">没法</span><span style="color: black;">保准</span>代码的类型安全。换言之,<span style="color: black;">咱们</span>编写的 TypeScript 很可能会触发运行时 bug。<span style="color: black;">另一</span>,除了极其简单的场景之外,TypeScript 还缺乏<span style="color: black;">靠谱</span>的类型推断,<span style="color: black;">因此</span><span style="color: black;">研发</span>者在<span style="color: black;">非常多</span><span style="color: black;">地区</span>都得<span style="color: black;">知道</span>标出类型注释。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">但<span style="color: black;">一样</span>的,这两点<span style="color: black;">亦</span>是项目权衡的结果。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">引导编译器的存在<span style="color: black;">针对</span> TypeScript 的内部测试至关重要,这能<span style="color: black;">帮忙</span>项目<span style="color: black;">研发</span>者理解 TypeScript 这种语言用起来的真实感受。<span style="color: black;">详细</span>来讲,项目团队要体验<span style="color: black;">怎样</span>编写大型 JS 代码库,再逐步采用代码库中的类型。在健全性方面放松一点,<span style="color: black;">研发</span>者<span style="color: black;">才可</span>在现有 JS 代码库中逐步引入 TypeScript,<span style="color: black;">亦</span>能<span style="color: black;">容易</span><span style="color: black;">运用</span> any 类型来直接摆脱类型系统的<span style="color: black;">捆绑</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">光是这部分就够单独写篇<span style="color: black;">文案</span>了。在我看来,TypeScript 可能是<span style="color: black;">第1</span>种<span style="color: black;">更加多</span>关注<span style="color: black;">研发</span>者体验、而非<span style="color: black;">自己</span>语义的编程语言。它并<span style="color: black;">无</span>添加任何运行时结构、不插手性能,而是添加了一套类型系统,并让<span style="color: black;">全部</span>语言社区接纳了这种<span style="color: black;">不消</span>类型<span style="color: black;">亦</span>行、没高质量工具<span style="color: black;">亦</span>行,还不强调正确性的生态氛围。这简直是个<span style="color: black;">难以置信</span>的壮举。</p>
    <span style="color: black;">下一代前端语言是什么样?</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">所有这一切都<span style="color: black;">显示</span>,TypeScript 早在十年前就做出了一众对<span style="color: black;">自己</span>产生巨大影响的权衡。而随着时间推移,我觉得是时候<span style="color: black;">经过</span>新语言再做一轮权衡了。确切来讲,<span style="color: black;">咱们</span>需要一种具备健全性、类型推断和更快编译速度的语言。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">需求</span><span style="color: black;">知道</span>了,但<span style="color: black;">咱们</span>该拿什么来换?</p>
    <span style="color: black;">健全性</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">先从健全性说起。下一代语言<span style="color: black;">再也不</span><span style="color: black;">奋斗</span>对<span style="color: black;">各样</span> JS 模式进行类型<span style="color: black;">检测</span>,而是以独立语言的形态<span style="color: black;">经过</span>更简单的类型系统将代码编译成 JS。它会将现有 JS 代码视频<span style="color: black;">外边</span>互操作对象,对 JS 代码执行显式运行时类型<span style="color: black;">检测</span>,<span style="color: black;">况且</span>依靠<span style="color: black;">区别</span>的原生语言来实现。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">为何</span>要<span style="color: black;">这般</span>?<span style="color: black;">首要</span>,我个人<span style="color: black;">尤其</span><span style="color: black;">爱好</span>具备既健全、又相对简单的类型系统的语言。我<span style="color: black;">期盼</span>这种语言能够在浏览器中运行良好,<span style="color: black;">况且</span>能顺畅适配现有 Web 生态系统。<span style="color: black;">哪些</span>能编译成 Wasm 的语言经常忽略 Web 生态系统中的其余部分,总想在浏览器中<span style="color: black;">创立</span>起基于像素的原生 UI。我觉得这个想法不错,只是跟我的观念相悖。我只想用下一代语言<span style="color: black;">研发</span>常规网站;我不想要纯函数式语言,而更倾向于跟 C 的老派风格<span style="color: black;">类似</span>的语言(对不起了,Elm!);我<span style="color: black;">期盼</span>这种语言能<span style="color: black;">表现</span>出我在工具设计上的想法。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">那<span style="color: black;">为何</span>下一代前端语言应该诞生在<span style="color: black;">此刻</span>这个时间点?俗话说得好,种一棵树最好的<span style="color: black;">机会</span>是十年前,其次是<span style="color: black;">此刻</span>。这十年来,JS 社区<span style="color: black;">已然</span><span style="color: black;">出现</span>了很大变化。人们<span style="color: black;">起始</span>学习 TypeScript,<span style="color: black;">亦</span>习惯于关注编译器并<span style="color: black;">经过</span>类型进行数据建模。<span style="color: black;">此刻</span>,<span style="color: black;">非常多</span><span style="color: black;">研发</span>者<span style="color: black;">起始</span><span style="color: black;">运用</span> Rust、Swift 和 Kotlin 等语言,<span style="color: black;">亦</span><span style="color: black;">认识</span>到高质量工具的重要性。我不是说十年前的人们会抵抗强调类型安全的语言,但那时候的普及难度确实更高。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">知道</span>表达了<span style="color: black;">需要</span>,有些<span style="color: black;">伴侣</span>可能觉得这说的不<span style="color: black;">便是</span> ReScript/ReasonML 吗?没错,确实有几分相像。但在理想<span style="color: black;">状况</span>下,我期待的下一代语言应该能对 JS 代码和特性进行显式运行时类型<span style="color: black;">检测</span>。运行时类型<span style="color: black;">检测</span>是达成良好互操作性的前提,<span style="color: black;">这般</span><span style="color: black;">咱们</span>就能更<span style="color: black;">容易</span>地随意<span style="color: black;">运用</span> JS 库。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">一样</span>地,我觉得 traits 对用户<span style="color: black;">来讲</span><span style="color: black;">亦</span>很重要,它们<span style="color: black;">能够</span>跟其他语言特性映射起来,<span style="color: black;">例如</span> Java 接口和 C++ 概念。这可太方便了,<span style="color: black;">例如</span><span style="color: black;">容易</span><span style="color: black;">经过</span> Display trait 输出任意类型。这类<span style="color: black;">需要</span>听起来简单,但确实能大大<span style="color: black;">提高</span>语言的可用性,消除“我该怎么输出这个?”<span style="color: black;">或</span>“<span style="color: black;">为何</span> + <span style="color: black;">表率</span>整数加法,而 +. <span style="color: black;">表率</span>浮点加法?”之类<span style="color: black;">尤其</span>劝退的问题。再有,我还想去掉<span style="color: black;">有些</span>没用的东西,<span style="color: black;">例如</span>对象、链表、多态变体等。这些都是 ReScript/ReasonML 做不到的,<span style="color: black;">况且</span>我上次试用的时候,ReScript 的<span style="color: black;">研发</span>体验和错误<span style="color: black;">信息</span><span style="color: black;">亦</span>没给我留下深刻印象。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">亦</span><span style="color: black;">便是</span>说,我不排除 ReScript <span style="color: black;">表率</span>着正确方向的可能性。毕竟上次尝试<span style="color: black;">已然</span>是几年之前了,<span style="color: black;">亦</span>许是我记错了、<span style="color: black;">亦</span>许它<span style="color: black;">已然</span>变得更好了。<span style="color: black;">况且</span>随着同 OCaml 的剥离,ReScript 确实<span style="color: black;">成为了</span>很好的前端语言选项,我有必要再确认一下。</p>
    <span style="color: black;">类型安全</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">针对</span>下一代前端语言,我<span style="color: black;">期盼</span>能用一种更系统的<span style="color: black;">办法</span>实现类型安全。<span style="color: black;">详细</span><span style="color: black;">来讲</span>,我觉得用 Rust 处理非安全代码块的方式实现 JS 互操作性的好办法。基本上,在调用 JS 的过程中,<span style="color: black;">咱们</span>需要将代码打包在一个非安全代码块中。这会是个<span style="color: black;">知道</span>的标志,提醒<span style="color: black;">研发</span>者要认真阅读这段代码。接下来的<span style="color: black;">目的</span>,<span style="color: black;">便是</span>在这些指向 JS 库的非安全代码块上实现 bindings。起初这个过程需要手动完成,但后续应该会有类似 bindgen 和 cxx 的工具<span style="color: black;">显现</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在 JS 中<span style="color: black;">运用</span>非安全代码块<span style="color: black;">好似</span>有点反直觉,毕竟 JS 的安全性又不像 C <span style="color: black;">那样</span>糟糕。但<span style="color: black;">非常多</span>人似乎没<span style="color: black;">认识</span>到,安全的<span style="color: black;">道理</span>并不仅限于安全本身。<span style="color: black;">所说</span>安全,<span style="color: black;">指的是</span><span style="color: black;">能够</span>任意<span style="color: black;">运用</span>一个值、而不必担心其<span style="color: black;">是不是</span>为 null 的<span style="color: black;">保证</span>能力。<span style="color: black;">所说</span>安全,是在不致引入 Bug 或混乱的前提下<span style="color: black;">保准</span>可变性的能力。Rust 的非安全块概念<span style="color: black;">准许</span>用户既<span style="color: black;">守护</span>自己的安全区,又能与<span style="color: black;">海量</span>非安全代码交互。下一代浏览器语言<span style="color: black;">亦</span>该做到这一点。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">至于运行时<span style="color: black;">检测</span>,我觉得它仍然物有所值。<span style="color: black;">咱们</span><span style="color: black;">已然</span>在 JS <span style="color: black;">其中</span>进行过<span style="color: black;">海量</span>模式验证,只是以往只能<span style="color: black;">经过</span> zod 这类临时性机制完成。在下一代前端语言中,这类功能<span style="color: black;">亦</span>许是在运行时出错时对语言类型执行自动转换,<span style="color: black;">亦</span>许能对 JS 值进行模式匹配。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">针对</span> WebAssembly,我还是很看好它的发展前景的。但要说它<span style="color: black;">必定</span>能<span style="color: black;">作为</span>浏览器的通用运行时,我个人还是持<span style="color: black;">可疑</span>态度。<span style="color: black;">亦</span>许<span style="color: black;">将来</span>我的态度会有转变,但<span style="color: black;">日前</span>我更<span style="color: black;">大都是</span>将 Wasm 看作一种硬件加速器。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当用户的高强度计算任务<span style="color: black;">需求</span>调用固定宽度整数和静态函数时,<span style="color: black;">大众</span>就会<span style="color: black;">运用</span> Wasm;这就像在需要执行并行计算时,<span style="color: black;">大众</span>会<span style="color: black;">选取</span> GPU <span style="color: black;">同样</span>。在<span style="color: black;">这般</span>的模型中,我看到了支持异构编译的<span style="color: black;">潜能</span>——其中部分代码<span style="color: black;">能够</span>被编译成 JS,另一部分代码则可编译为 Wasm。这项工作<span style="color: black;">能够</span>由用户显式完成,由分析自动完成,<span style="color: black;">乃至</span><span style="color: black;">能够</span>即时完成。<span style="color: black;">经过</span>对 JS 和 Wasm 代码的<span style="color: black;">同期</span><span style="color: black;">掌控</span>,编译器就能最大限度减少跨越语言边界的次数,从而<span style="color: black;">加强</span>性能水平。我觉得<span style="color: black;">将来</span><span style="color: black;">乃至</span><span style="color: black;">能够</span>有某种机制将部分代码发送给 WebGPU。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在<span style="color: black;">这般</span>的模型之上,<span style="color: black;">亦</span>许<span style="color: black;">咱们</span><span style="color: black;">能够</span>更<span style="color: black;">容易</span>地编写计算密集型程序,<span style="color: black;">例如</span><span style="color: black;">设备</span>学习模型、电子游戏和渲染软件。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这种对 Wasm 和 JS 进行分别编译的概念,<span style="color: black;">能够</span>在下一代前端语言中<span style="color: black;">表现</span>出来。我<span style="color: black;">期盼</span>其中能有显式整数和浮点类型,最好还能有 Rust 中 usize 那样的显式索引类型。<span style="color: black;">这般</span><span style="color: black;">倘若</span>需要把代码编译成 Wasm,新语言就能利用 Wasm 的固定宽度整数。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">还有另一种可能性,<span style="color: black;">便是</span>为语言创建一个子集,在<span style="color: black;">这儿</span>整合闭包、垃圾收集等动态特性以<span style="color: black;">提高</span> Wasm 编译质量。要跟这个子集交互,<span style="color: black;">研发</span>者需要<span style="color: black;">运用</span> unsafe 代码块,<span style="color: black;">例如</span> strict 块,<span style="color: black;">或</span>让该子集<span style="color: black;">经过</span> dynamic 块跟<span style="color: black;">外边</span>代码交互。这些都是假设,但我觉得其中确有探究的价值。</p>
    <span style="color: black;"><span style="color: black;">详细</span>实现</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">这种新语言可能会用 Rust 来实现。毕竟我个人是 Rust 的粉丝,<span style="color: black;">况且</span>相信代数数据类型、相对更高的代码性能、受限但可用的可变性,以及比较丰富的库组合足以支撑起一套优秀的编译器。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">倘若</span> Wasm 后续发展得够好、性能几乎逼近原生水平,那我<span style="color: black;">亦</span>会<span style="color: black;">思虑</span><span style="color: black;">运用</span>由编译为高速 Wasm 代码的语言子集来引导编译器。但这应该不着急,毕竟一个 Rust 编译器应该就够用好<span style="color: black;">数年</span>了。</p>
    <span style="color: black;">总&nbsp; &nbsp;结</span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">大众</span>可能<span style="color: black;">已然</span><span style="color: black;">重视</span>到,类型安全和 Wasm 部分其实<span style="color: black;">便是</span>在从系统语言(例如非安全概念和硬件加速)中汲取灵感,再把它们应用到基于浏览器的语言<span style="color: black;">其中</span>。这是设计使然,毕竟不少最有趣的编程语言都是从系统层面衍生出来的。我只<span style="color: black;">期盼</span>这些好点子<span style="color: black;">亦</span>能在浏览器上有所<span style="color: black;">表现</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">这儿</span>我要澄清一下,我所指的下一代前端语言绝不是单一语言,我<span style="color: black;">期盼</span>能有多种语言齐头并进、朝着前面<span style="color: black;">说到</span>的方向<span style="color: black;">一起</span>探索。我想激励<span style="color: black;">更加多</span><span style="color: black;">伴侣</span>在浏览器语言<span style="color: black;">行业</span><span style="color: black;">持续</span>创新。当然,我个人<span style="color: black;">亦</span>会参与其中,<span style="color: black;">日前</span>正在<span style="color: black;">科研</span>的是名叫 vicuna 的实现<span style="color: black;">方法</span>,但还<span style="color: black;">处在</span>非常<span style="color: black;">初期</span>的<span style="color: black;">周期</span>。</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">原文链接:</span></strong></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">https://uptointerpretation.com/posts/the-next-browser-language/</span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">声明:本文为 InfoQ 翻译,未经许可禁止转载。</span></strong></span></strong></span></strong></span></span></strong></p><span style="color: black;">今日好文<span style="color: black;">举荐</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">反Twitter平台用户激增250万,这名29岁程序员<span style="color: black;">怎样</span>凭一己之力扛住超8倍流量增长?</a></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">张勇、刘强东、马化腾接连“发飙”,痛批内部问题;头条抖音飞书<span style="color: black;">起始</span>优化,部分员工零赔偿;推特自马斯克接管<span style="color: black;">败兴</span>首次大范围宕机|Q<span style="color: black;">新闻</span></a></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">取代搜索,“干掉”艺术家?顶流「AIGC」的疯狂与争议</a></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><a style="color: black;">市场增速超</a>20%,国产操作系统“浴火重生” | <span style="color: black;">诠释</span>操作系统的 2022</p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://mmbiz.qpic.cn/mmbiz_gif/YriaiaJPb26VNBX66P2F9dF2yuYfbcibGMuaBYgvK62MGPE9HhgU2vptFAUZdaO2cGKCsP4h1DnibIGywKSkFv9b6g/640?wx_fmt=gif&amp;wxfrom=5&amp;wx_lazy=1&amp;tp=webp" style="width: 50%; margin-bottom: 20px;"></p>




cvh132 发表于 2024-8-24 13:13:59

“板凳”(第三个回帖的人)‌

明月几时有 发表于 2024-8-26 12:10:28

说得好啊!我在外链论坛打滚这么多年,所谓阅人无数,就算没有见过猪走路,也总明白猪肉是啥味道的。

听听海 发表于 2024-9-1 16:49:18

认真阅读了楼主的帖子,非常有益。
页: [1]
查看完整版本: 下一代前端语言之争,JavaScript 要被新语言反超?