当前位置: 首页 > news >正文

深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum

作者 | Annie Xu

采访 | 卢威

责编 | Echo Tang

出品丨GOSIM 开源创新汇

编程语言的种类令人眼花缭乱,但成功的、常用的编程语言却是凤毛麟角。在深耕编程语言研发 18 年的 Sophia June Turner 看来,编程语言成功的关键在于其研发团队的透明度和机制建设。

在Mozilla工作时期,Sophia 加入了 Rust 团队。作为 Rust 的核心成员,曾参与设计了 Rust 报错信息格式,被许多编译器采纳,并与 Nick Cameron 共同创建了 Rust 语言服务器。她也曾作为 TypeScript 的核心贡献者,参与了 TypeScript 的创建

2023 年,由于 Rust 社区“内讧”,感到伤心的 Sophia 辞去了 Rust 项目的工作。而她自 2019 年主导开发的 Nushell 经过几年发展,已经成为了许多开发者口口相传的开源 Shell 神器,用 Rust 编写,安全性提高的同时,也降低了 Bug 率。

GOSIM 2024 欧洲站的现场,GOSIM 独家对话栏目 Open AGI Forum 特别邀请到 Sophia,CSDN&Boolan 首席顾问卢威主持对话。从 Rust、TypeScript 到如今的 Nushell,Sophia 与我们深入分享了对编程语言构建的思考与实践:

  • 成功的编程语言编码团队应当透明、开放、平等。团队成员了解和认可项目的目标和方向,并为之努力。否则,项目将很难有进展。

  • 开源项目获得成功的关键是建立起人才循环机制:即使某个人离开,项目也能生存下去。如果一个项目依赖于某个特定的人才能成功,那它发展得并不“健康”。

  • 不同组织群体的风格不同。Nushell 开放平等的沟通风格,鼓励团队成员共同参与讨论。当他们参与到对话时,他们实际上正在帮助创造 Nushell 的未来。

以下是本次采访的主要内容:

图片

从 Rust、TypeScript 到 Nushell,编程语言开发的背后

GOSIM:大家好,欢迎来到 Open AGI Forum。我是来自 CSDN 的卢威,在风景优美的荷兰代尔夫特,我们非常荣幸地邀请到了 Sophia June Turner ,欢迎 Sophia,你能先向我们的观众简短地介绍一下自己吗?

Sophia:大家好,我是 Sophia,我从事编程语言方面的工作已经18年了。

GOSIM:你参与创建了 TypeScript,后来加入了 Mozilla,专注于编译器错误处理、IDE 支持以及 Rust 的可用性相关工作。第一个问题是,在你看来,TypeScript 和 Rust 在设计理念和目标用户上的主要区别是什么?

Sophia:TypeScript 与Rust的不同之处在于,TypeScript 是基于 JavaScript 的编程语言,可以通过拓展类型进行发展。C 和 C++ 是每个人都知道的标准语言,它一开始就拥有更多受众。没有人觉得会有默认安全的系统语言,而 Rust 必须证明自己系统编程的安全性与可行性。

GOSIM:你参与了许多有影响力的项目,如 TypeScript 和 Rust,现在是Nushell 核心团队的一员。你在他们之间是如何过渡的呢?你采取了什么方法保持与这些多样化组织的有效沟通和协作?

Sophia:我觉得不同组织风格各异。在 Nushell,我们每周都有会议,任何人都可以参加,内部十分平等,没有谁是老板。有时他们会把我当作老板,但我尽量表现得不像老板,努力让任何想要任何有想法、有贡献的人都能参与到对话中。我认为,当他们参与到讨论时,他们也成为了 Nushell 的一部分,他们投身共创 Nushell 的未来。我很喜欢这种开放的风格。

GOSIM:在 Mozilla,你参与了 Rust 编译器错误处理和 IDE 支持。你能具体分享一些你所做出的改进或取得的成就吗?这些改进如何影响 Rust 用户的日常编程体验?

Sophia:我参与的一个令我感到自豪的事情是设计了新的报错信息格式——这也是我加入 Mozilla 后做的第一件事。目前这个设计已经被各种编译器和命令行工具所采纳。我不知道它的影响具体有多大,我只是非常开心我能做到这一点。

GOSIM:Rust 核心团队的经历对你产生了什么影响?

Sophia:Rust 核心团队增加了我在团队规模方面的认识。当我加入 Rust 核心团队时,每个团队中已经存在数百万 Rust 开发者和数百名 Rust 贡献者。这与我加入 TypeScript 时截然不同:TypeScript 的规模并不大,10 到 12人 的团队负责 TypeScript 的全部工作。这使我进行团队规模方面的思考。

图片

开源项目成功的秘诀:透明度与机制建设

GOSIM:那在你看来,成功的编程语言编码团队应该具备哪些品质或策略?

Sophia:我认为最重要的一点是透明度。团队成员需要理解项目的方向,能够对项目方向做出贡献,并且能够认同项目的理念。也就是说,你需要了解并在某种程度上赞成项目的方向,然后大家一起努力,我认为这一点非常重要。如果每个人都朝着不同的方向“使力”,项目很难取得任何进展,只会停留在原地。

GOSIM:作为 Rust 领导委员会的创始人之一,你如何看待社区治理在开源项目成功中的作用?

Sophia:我认为需要建立一种机制,即使某个人离开,项目也能生存下去。如果一个项目依赖于某个特定的人才能成功,那它不是一个健康的项目。项目发展初期可以接受这样的,但随着时间的推移、项目发展得更大,需要一种机制让它能够持续存在,减弱人员来去的影响。

GOSIM:你认为 Rust 社区在这方面有何独特之处?

Sophia:Rust 社区的独特之处在于它具有非常强烈的目标感,有着非常强烈的尝试理解当前状况、理解正确方向,并推动它向前发展的意愿。它不会让自身变得懒惰,它总是在尝试发展得更好。

图片

面向未来:Rust 与 Nushell 路在何方?

GOSIM:基于你在编程语言和开发工具方面丰富的经验,你对 Rust 未来发展的期望是什么?在未来几年,你认为它需要解决的关键问题或挑战是什么?

Sophia:我认为 Rust 才刚刚起步。Rust 正在进入不同的新行业,如几年前的汽车工业,它正在持续地发展。我不知道它的极限在哪儿,我认为它会继续成长。它未来发展面临两个关键问题:第一,它需要一个团队根据 Rust 公司和使用者的信息明确一个特定方向,并确保团队每个人都能理解并认可这个方向;第二,确保项目团队能够采取行动并朝这个方向前进。

GOSIM:对于 Nushell 的未来发展或新功能,最令你兴奋的是什么?

Sophia:目前最令我兴奋的是 Nushell 正面临一个关键的转折点。很多人在试用 Nushell 前一直在观望,但是越来越多曾经对 Nushell 持犹豫态度的人在尝试了最近的版本后表示:“很好,我不会再退回 bash,我不会使用其他 shell。”我们知道它具有吸引人们的潜质,让人们持续使用。但我们需要让 Nushell 变得更稳定,达到 1.0 版本,之后人们就可以开始用它构建真正的程序。

GOSIM:你是否计划在 Nushell 中利用 AI 或 LLM?

Sophia:还没有,我不是 AI 的专家,也不是 LLM 的专家,可能会有其他人引入这些内容来补全相关功能吧。

GOSIM:感谢 Sophia 带来的分享和讨论,感谢观看的开发者。今天的对话就到这里,我们下期再见!

延伸阅读:

关于 Rust 社区“内讧”可参见:

《Rust 社区管理再起“内讧”,外部专家遭排挤,核心成员主动请辞,立即生效!》

Sophia 也写了一篇博文详细地讲述了自己为什么离开 Rust 社区,链接:https://www.sophiajt.com/why-i-left-rust/

相关文章:

深耕编程语言18年,对话 Rust、TypeScript、Nushell 核心贡献者 Sophia Turner | Open AGI Forum

作者 | Annie Xu 采访 | 卢威 责编 | Echo Tang 出品丨GOSIM 开源创新汇 编程语言的种类令人眼花缭乱,但成功的、常用的编程语言却是凤毛麟角。在深耕编程语言研发 18 年的 Sophia June Turner 看来,编程语言成功的关键在于其研发团队的透明度和机制建…...

深度学习--图像分割UNet介绍及代码分析

UNet介绍 参考UNet网络介绍整体架构UNet过程输入编码器(下采样)中间特征表示解码器(上采样)输出 代码详解unetUP和Unet关系上采样模块——unetUp用于图像分割的卷积神经网络(CNN)架构模块——Unet类的定义初…...

接了一个2000块的小活,大家进来看看值不值,附源码

如题,上周的一天,朋友圈的一个旧友找到了我,说让我帮他开发一个小工具,虽然活不大,但没个几年的全栈经验还不一定能接下来,因为麻雀虽小,涉及的内容可不少: 需求分析 原型设计 详细…...

基于MindFormers实现GPT2模型的推理

前言 针对MindFormers的安装,可参考本专栏里的另一篇博客 安装MindFormers(昇腾910)-CSDN博客 pipeline方式 from mindformers import pipeline from mindformers import GPT2LMHeadModel, GPT2Config, GPT2Tokenizer tok GPT2Tokenizer…...

探索腾讯云AI代码助手:智能编程的新时代

智能编程的新时代 前言开发环境介绍腾讯云 AI 代码助手使用实例生成文档解释代码生成测试修复代码人工智能技术对话 智能编程获得的帮助与提升对腾讯云AI代码助手的建议结语 前言 hello,大家好我是恒川,今天我来给大家安利一款非常好用的AI 代码助手&…...

MySQL 之 MHA 高可用架构详解

这个是在内部分享做的一个 Keynote 动画,用来演示 MHA 高可用架构及发生故障时的 Failover。动画如下: 数据库相关分享之 MySQL 的 MHA 架构详解 引言 MySQL 数据库在企业和应用中扮演着举足轻重的角色,其稳定性和可靠性对于业务的连续运行至…...

WangEditor自定义新元素,并解决自定义元素中换行无法消除样式的问题

一、背景概述 项目有自定义样式模板的需求,WangEditor没有。若直接把样式的html插入WangEditor中,无法解析,且会被自动过滤。因此,需要基于WangEditor提供的API进行二次开发。 例如,需要新增以下样式: 该…...

VBA Excel口算题

口算题函数 利用随机数写个20以内加减法口算题函数 Function Kousuan()Dim intOne As IntegerDim intTwo As IntegerDim strFlg As StringDim intFlg As IntegerDim strRtn As StringintFlg Application.WorksheetFunction.RandBetween(0, 1)strFlg "-"If intFlg…...

C++理解临时对象的来源

当程序员之间进行交谈时&#xff0c;他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里&#xff1a; template<class T> void swap(T& object1, T& object2) { T temp object1; object1 object2; object2 temp; } 通常把t…...

C++协助完成返回值优化

一个返回对象的函数很难有较高的效率&#xff0c;因为传值返回会导致调用对象内的构造和析构函数(参见条款M19)&#xff0c;这种调用是不能避免的。问题很简单&#xff1a;一个函数要么为了保证正确的行为而返回对象要么就不这么做。如果它返回了对象&#xff0c;就没有办法摆脱…...

2024年睿抗机器人开发者大赛(RAICOM)国赛题解

目录 RC-u1 大家一起查作弊 分数 15 RC-u2 谁进线下了&#xff1f;II 分数 20 RC-u3 势均力敌 分数 25 RC-u4 City 不 City 分数 30 RC-u5 贪心消消乐 分数 30 RC-u1 大家一起查作弊 分数 15 简单模拟题&#xff0c;对于多行读入使用while(getline(cin…...

声明式UI语法

一、ArkTS的基本组成 Entry // 装饰器 Component // 装饰器 struct Hello { // 自定义组件State myText: string World;build() { // UI描述Column() { // 系统组件Text(Hello ${this.myText}).fontSize(50)Divider()Button(Click me).onClick(() > { // 事件方法t…...

JDBC连接数和1521连接数之间的区别和联系(Java Database Connectivity)

JDBC&#xff08;Java Database Connectivity&#xff09;连接数和1521连接数之间的区别和联系如下&#xff1a; 区别 概念不同&#xff1a; JDBC连接数&#xff1a;指通过JDBC技术建立的数据库连接数。JDBC是Java中的一套API&#xff0c;用于连接和操作关系数据库。JDBC连接数…...

Leetcode - 136双周赛

目录 一&#xff0c;3238. 求出胜利玩家的数目 二&#xff0c;3239. 最少翻转次数使二进制矩阵回文 I 三&#xff0c;3240. 最少翻转次数使二进制矩阵回文 II 四&#xff0c;3241. 标记所有节点需要的时间 一&#xff0c;3238. 求出胜利玩家的数目 本题直接暴力求解&#x…...

SQLite ORDER BY 语句

SQLite ORDER BY 语句 SQLite 的 ORDER BY 语句用于对查询结果进行排序。排序可以是升序&#xff08;ASC&#xff09;或降序&#xff08;DESC&#xff09;。默认情况下&#xff0c;如果不指定排序方式&#xff0c;ORDER BY 会以升序对结果进行排序。 语法 SQLite ORDER BY 语…...

MTK Android12 系统中应用加载 .so 文件的问题分析

在本篇博客中,我将详细总结在 Android 12 系统上进行的几个实验,包括如何加载自定义 JAR 文件、如何解压和确认 .so 文件,以及如何验证系统报错提示。本文将介绍使用 PathClassLoader 和 DexClassLoader 动态加载类的实验,分析系统报错信息,并最终得出结论。 推荐:《Andr…...

bpmn简单使用(制作流程图)

1、先下载依赖&#xff0c;下面是我下载的版本 "bpmn-io/properties-panel": "^3.23.0", "bpmn-js": "^17.9.1", "bpmn-js-properties-panel": "^5.6.1", "camunda-bpmn-moddle": "^7.0.1",…...

【算法模板】算竞技巧:Python对拍数据生成

在计算机编程竞赛中&#xff0c;对拍&#xff08;Testlib&#xff09;是一种验证程序正确性的方法。它通常用于检查一个程序的输出是否与另一个程序的输出一致&#xff0c;以确保程序的正确性。 对拍程序 【算法模板】算竞技巧&#xff1a;对拍全解_算法竞赛对拍-CSDN博客 #i…...

计算机基本理论与程序运行原理概述

目录 计算机的基本表示方法 计算机的组成 程序运行的原理 指令执行的流水线 编译原理 个人理解 面试题总结 计算机的基本表示方法 计算机系统使用高、低电平来表示逻辑1和0。数据在计算机中的存储、传输和处理均以二进制形式进行。数据通过总线作为电信号进行传输&…...

SpringBoot中的server.context-path

目录 一、问题引入 二、代码片段展示 2.1.接口层 2.2.application.properties 三、问题分析 3.1.server.context-path 作用 3.2.正确展示 四、HTTP请求响应码简介 4.1.响应码参考来源 4.2.源码示例 4.2.1.源码总述 4.2.2.正常情况——2XX: generally "OK&…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...