2025-05-16

41 篇热帖

2. A Research Preview of Codex (openai.com)

Codex 概述

Codex 是由 OpenAI 推出的一个云端软件工程代理,能够并行处理多项编码任务。它由专门为软件工程优化的 codex-1 模型驱动,旨在帮助开发者提高生产力。

核心功能与工作原理

  • 任务处理:用户可以在 ChatGPT 侧边栏中通过输入提示并点击“Code”或“Ask”来分配任务。Codex 能够编写功能、回答代码库问题、修复错误并提出拉取请求。
  • 独立执行环境:每个任务都在一个预加载了用户代码库的独立、隔离的云沙盒环境中运行。它可以读写文件,并运行命令(如测试、代码检查器)。任务完成时间通常为1到30分钟。
  • 可验证与可追踪:任务完成后,Codex 会提交代码变更,并提供终端日志和测试输出等可验证的引用证据,使用户能够追踪其每一步操作。
  • 指导文件:用户可以通过在代码库中放置 AGENTS.md 文件来指导 Codex,告知其如何导航代码库、运行哪些测试以及遵循哪些项目标准。

安全性、对齐与可信度

  • 安全设计:Codex 作为研究预览版发布,优先考虑了安全性和透明度。用户可以通过引用、日志和测试结果来验证其输出。在不确定或测试失败时,代理会明确沟通问题。
  • 恶意用途防护:Codex 经过训练,能够识别并拒绝旨在开发恶意软件的请求,同时支持如底层内核工程等合法任务。其政策框架和安全评估已得到强化。
  • 隔离与限制:任务执行完全在安全的隔离容器中进行,且默认禁用互联网访问,仅限于用户提供的代码库和依赖项。
  • 人类偏好对齐codex-1 模型经过训练,旨在生成更接近人类风格和偏好的代码,产生的补丁更整洁,适合人类审阅和集成。

早期应用与更新

  • 内部与外部采用:OpenAI 内部技术团队已将其用于重构、修复错误、编写测试等重复性任务。外部合作伙伴如 Cisco、Temporal、Superhuman 和 Kodiak 也在利用它加速功能开发、调试和代码重构。
  • Codex CLI 更新:与 Codex 同时发布了适用于 Codex CLI(一个本地终端编码代理)的更小版本 codex-1 模型,优化了低延迟代码问答和编辑。同时简化了 CLI 的账户登录流程,并提供了免费 API 额度。

可用性、定价与未来展望

  • 可用性:最初向 ChatGPT Pro、Enterprise 和 Business 用户推出,现已扩展至 Plus 用户。初期提供慷慨的免费使用额度,之后将推出按需付费的灵活定价方案。
  • 当前限制:作为研究预览版,目前缺乏图像输入支持、任务中途纠正等功能。远程代理的响应时间也长于交互式编辑。
  • 未来方向:OpenAI 预见了开发者驱动式工作与代理委托相结合的未来。计划引入更灵活的代理工作流(如中途指导、进度更新),并深化与现有开发工具(如 IDE、问题跟踪器)的集成。其目标是让实时配对与异步任务委托最终融合。
3. I don't like NumPy (dynomight.net)

本文批评了NumPy在处理多维数组时的复杂性和不直观性。作者认为NumPy虽然简单任务易用,但一旦涉及稍复杂的批量操作、广播、索引和高维函数调用,代码会变得晦涩难懂、难以调试且难以理解。

主要问题点

  1. 广播与维度对齐复杂:处理多维数组时,经常需要插入None维度进行广播,使得代码冗长且易出错。例如,计算涉及多个多维数组的操作时,需要大量None索引来对齐维度。
  2. 索引行为不直观且不可预测:高级索引(如使用数组索引)会导致输出数组的维度顺序难以预测,甚至让AI模型也感到困惑。简单代码也可能隐藏复杂行为。
  3. 函数设计缺乏一致性:NumPy函数对多维输入的处理方式不一,有的通过axes参数,有的遵循隐式约定,有的根本不支持。用户无法通过现有函数组合来构建新的抽象功能,必须重写代码。
  4. 缺乏理论框架:NumPy的“广播”机制取代了显式的索引操作,导致对于“在数组A的特定维度、数组B的其他维度上操作”这类需求,没有清晰、统一的表达方式。
  5. 可读性和可维护性差:即使对于专家,阅读和调试涉及广播或高级索引的NumPy代码也极其困难。以自我注意力机制为例,向量化实现比循环实现晦涩得多。

对比与亮点

  • np.einsum是例外:它引入了一个基于索引的小型领域特定语言,使得爱因斯坦求和约定表达清晰、通用。这证明了基于索引的明确方法的优越性。
  • 循环更清晰:在许多情况下,显式循环虽然性能可能不佳,但代码逻辑清晰易懂。作者认为NumPy追求的“去循环化”有时牺牲了可读性和可调试性。
  • 其他库的问题:PyTorch等主流机器学习库也存在类似问题,因为它们继承了NumPy的范式。

结论: 作者认为NumPy的核心设计——用广播取代索引——是根本缺陷,导致在扩展性、可读性和可组合性上存在严重问题。尽管np.einsum等特例是好的方向,但NumPy的整体设计未能满足“操作明确、代码易懂”的基本要求。作者表示正在开发一个原型方案“DumPy”,旨在保留NumPy能力的同时解决这些问题。

4. NASA keeps ancient Voyager 1 spacecraft alive with Hail Mary thruster fix (www.theregister.com)

: Failure could've triggered a small explosion

6. Ollama's new engine for multimodal models (ollama.com)

Ollama now supports new multimodal models with its new engine.

8. BuyMeACoffee silently dropped support for many countries (2024) (zverok.space)

Silent changes in payment methods on big creator funding platforms raise some unpleasant questions.

10. In Memoriam: John L. Young, Cryptome Co-Founder (www.eff.org)

John L. Young, who died March 28 at age 89 in New York City, was among the first people to see the need for an online library of official secrets, a place where the public could find out things that governments and corporations didn’t want them to know. He made real the idea – revolutionary in its...

11. Ground control to Major Trial (virtualize.sh)

When a $130M aerospace company chooses to endlessly abuse free trials instead of typing git pull, you start to question gravity, or at least common sense.

12. Show HN: Visual flow-based programming for Erlang, inspired by Node-RED (github.com)

Erlang interpreter for Node-RED (visual flow based programming) with Elixir support - gorenje/erlang-red

13. Ollama violating llama.cpp license for over a year (github.com)

What is the issue? ollama uses projects like llama.cpp as a statically linked dependency. The terms of the MIT license require that it distribute the copyright notice in both source and binary form. Yet if I grep for "Georgi Gerganov" on...

14. Grok's white genocide fixation caused by 'unauthorized modification' (www.theverge.com)

Elon Musk’s xAI says it’s working to improve transparency and reliability after a rogue employee modified Grok to talk nonstop about South Africa.

16. Initialization in C++ is bonkers (2017) (blog.tartanllama.xyz)

C++中的初始化机制(2017年)

文章主旨

本文探讨了C++语言中初始化操作的复杂性和混乱性,指出其规则繁多且不直观,给开发者带来了显著的困惑和挑战。

核心问题

  • 多样化的初始化语法:C++提供了多种初始化方式,包括直接初始化、复制初始化、值初始化、列表初始化(统一初始化)等,每种语法在特定上下文中有细微不同的语义和行为。
  • 令人困惑的优先级规则:在不同初始化场景中,编译器的解析优先级和规则复杂,容易导致意料之外的绑定或类型转换。
  • 历史包袱与兼容性:C++为了保持与C的兼容性以及向后兼容,引入了许多遗留的初始化行为,这些行为在现代C++(如C++11后)中与新增特性(如花括号初始化)产生了冲突和歧义。

具体表现

  1. 基本类型初始化:对于int x;这样的声明,变量值是未定义的;而int x();可能被解析为函数声明而非初始化(“最令人头疼的解析”问题)。
  2. 聚合初始化:对数组和结构体的初始化规则因标准版本(C++98/03 vs C++11+)和初始化形式(圆括号 vs 花括号)而异。
  3. 类类型初始化:涉及构造函数重载、explicit关键字、拷贝列表初始化与直接列表初始化的区别,以及花括号初始化可能导致窄化转换的编译错误。
  4. 自动类型推导auto变量的初始化依赖于推导规则,与显式类型声明的行为可能不同。

潜在风险

  • 窄化转换:花括号初始化禁止可能导致数据丢失的隐式转换,但圆括号初始化允许,这可能导致行为不一致。
  • 空括号陷阱Widget w();声明了一个函数而非对象,这常被新手误解。
  • 移动语义的影响:C++11引入移动语义后,初始化过程中的临时对象处理和资源管理进一步复杂化。

开发者建议

  • 尽可能使用花括号初始化(统一初始化)以获得更一致的行为并避免窄化问题。
  • 显式使用={}进行值初始化以避免未定义值。
  • 注意区分初始化赋值,前者在对象生命周期开始时发生,后者是更新已存在对象的值。

结论

C++初始化的复杂性源于其长期演进过程中积累的特性和兼容性需求。开发者需要深入理解初始化规则的细节,才能编写出健壮、可移植且无歧义的代码。本文强调了初始化作为C++中一个亟需细致掌握的基础概念。

17. After months of coding with LLMs, I'm going back to using my brain (albertofortin.com)

作者是一名拥有15年经验的软件工程师,为开发SaaS新基础设施(从PHP+MySQL转向Go+Clickhouse),在数月内高度依赖AI工具(如Claude、Cursor)进行编码,旨在追求开发速度。初期进展顺利,但几周后问题逐渐暴露:代码库缺乏一致性,出现命名混乱、方法重复定义、配置不统一等问题,如同由多名互不沟通的开发者独立编写。尽管作者提供了大量上下文,AI仍无法保证代码质量,调试也因问题深入而变得更加困难。

这一经历促使作者反思并改变工作方式。他开始主动学习Go和Clickhouse的最佳实践,放慢速度,亲自审查和重构代码,并减少对AI的依赖。他意识到,过度依赖AI可能导致自身编程能力的退化,包括规划、设计和编写整洁代码的能力。如今,他将AI定位为辅助工具,主要用于代码重命名、伪代码转换或学习语言特性,而非从零生成代码或制定方案。

作者认为,目前的AI编程工具(如Cursor)对非专业开发者可能弊大于利,容易导致难以维护的“技术债”。同时,他对AI工具的现状提出批评:尽管外界宣传和基准测试显示其强大,但实际应用中表现不稳定,性能波动大,且在处理复杂、资源受限的数据库查询等场景时仍力有未逮。他担忧过度炒作和工具的不一致性可能对开发者产生误导,甚至削弱人的核心技能。尽管如此,作者仍对AI的未来持乐观态度,但强调当前需审慎使用,避免盲目追随趋势。

18. Run your GitHub Actions locally (github.com)

Run your GitHub Actions locally 🚀. Contribute to nektos/act development by creating an account on GitHub.

19. A leap year check in three instructions (hueffner.de)

How to test for leap years (until year 102499) in the proleptic Gregorian calendar with just three 32-bit instructions, with detailed explanation of the bit-level tricks.

20. The unreasonable effectiveness of an LLM agent loop with tool use (sketch.dev)

How a simple loop enables powerful AI assistants

22. X X^t can be faster (arxiv.org)

Abstract page for arXiv paper 2505.09814: $XX^{t}$ Can Be Faster

23. Java at 30: Interview with James Gosling (thenewstack.io)

Java 30周年:与James Gosling的对话

Java编程语言于2025年5月23日迎来30周年。其创始人James Gosling的历程与见解,深刻反映了编程语言的发展与计算领域的变迁。

个人历程与Java的诞生

Gosling出身寒微,自幼对技术充满热情,通过“翻垃圾桶找废旧电视”等方式自学成才。他在卡尔加里大学物理系读高中时便获得编程工作,之后进入卡内基梅隆大学攻读博士。职业生涯始于IBM研究院,后加入Sun Microsystems。

在Sun,Gosling找到了技术卓越与创意乐趣共存的环境。公司文化鼓励创新,也催生了传奇的愚人节恶作剧(如将跑车放入池塘)。正是在这种氛围下,他和团队在1995年推出了Java语言,实现了“一次编写,到处运行”的愿景,彻底改变了软件开发范式。

Java的技术演进与现状

Gosling指出,Java的核心设计哲学是务实和有效,而非追求时尚。其持久生命力源于:解决真实问题、尊重用户、保持向后兼容、提升开发者生产力以及优先保障可靠性。

他认为Java近30年最重要的进展在于运行时环境的提升。现代JVM的性能,尤其是垃圾收集器,已变得“惊人”。它能高效管理巨大内存,将曾经长达数秒的暂停时间减少到毫秒级。在云原生时代,Java通过优化对多核处理器、内存管理和大规模分布式系统的支持,变得更为稳固。

关于语言特性,Gosling赞赏了近年来引入的类型推断等改进,并期望数组声明能进一步简化。但他强调,真正的突破在运行时而非语法糖。

职业变动与行业洞察

Oracle于2010年收购Sun后,Gosling曾短暂加入谷歌,后投身于机器人公司Liquid Robotics(开发海洋监测自主机器人),最终加入亚马逊云科技(AWS),参与Greengrass物联网平台等开发工具项目,并于2024年退休。

对AI的批判性观点: Gosling对当前AI热潮持强烈怀疑态度。他认为“AI”一词是“营销术语,自带一桶毒药”,实质是高级统计方法。他批评风投和炒作,并直言“AI在很大程度上是场骗局”。对于AI编程助手,他承认其演示效果惊人,但指出一旦项目稍复杂就会“崩溃”,因其只能复制已见代码,而专业开发的核心在于解决未重复的新问题。他认为AI最有价值的应用是充当智能文档助手。

对开源与趋势的看法: 观察到开源已找到多种成功模式,在Sun时期主要用于协作与营销推广。对“低代码/无代码”趋势持怀疑态度,指出类似宣传从COBOL时代便存在,通常只擅长狭窄领域。

对Oracle管理Java的评价: 他给Oracle打“B+”分,坦言收购时“极度恐惧”,因Oracle有“掠夺”历史,但结果“好于预期”,尤其赞赏Oracle让Java团队保持独立性,未加过多干涉。

工具与编程未来: Gosling日常使用NetBeans IDE,推崇现代开发环境。他坚信编程仍是必备技能,即使AI盛行,人们也需理解系统原理。他强烈反对科技高管(如扎克伯格、贝尼奥夫)关于AI将减少工程师需求的言论,斥之为“完全自利的废话”。

轶事与个人哲学

采访末尾,Gosling分享了在旧金山Thanh Long餐厅享用其最爱的Dungeness蟹的趣事,体现了他“选择与喜欢共进晚餐的人共事”的哲学。这场对话也约定了未来共进螃蟹餐的计划。

26. Evolution of Rust Compiler Errors (kobzol.github.io)

Rust编译器错误消息的演变研究表明,从1.0版本开始,其错误报告一直保持高质量并持续优化。作者通过脚本下载所有稳定版Rust(从1.0至今),在包含错误的小程序上运行每个版本的编译器,收集错误输出并进行可视化分析。

关键观察包括:

  1. 错误消息本身质量很高,且随时间推移不断改进。
  2. Rust 1.2.0 引入了数字错误代码(实际上在1.0.0已添加,但特定错误在1.2.0才有代码)。
  3. Rust 1.26.0 引入彩色错误输出,并添加了 rustc --explain <error-code> 提示,显著提升了可读性。
  4. 错误消息在不同版本间偶有波动,例如“aborting due to previous errors”的措辞在1.19.0和1.20.0之间来回变化。
  5. 错误指针(error spans)也在各版本间持续改进,例如1.87.0中对“Wrong field”程序的处理变化。

研究最深层的意义在于揭示了优秀错误消息背后非自动化的、长期的投入:这是数百位贡献者历时十多年进行持续设计、实现、审查和测试的成果,并非编译过程的自动生成。作者感谢所有贡献者,并提供了脚本供进一步探索。

29. The current state of TLA⁺ development (ahelwer.ca)

The 2025 TLA⁺ Community Event was held last week on May 4th at McMaster University in Hamilton, Ontario, Canada. It was a satellite event to ETAPS 2025, which I also attended, and plan to write about in the near future. I gave a talk somewhat-hucksterishly titled It’s never been easier to write TLA⁺ tooling! which I will spin into a general account of the state of TLA⁺ development here. The conference talks were all recorded, so if you’d like this blog post in video form you can watch it below:

30. Stack Overflow is almost dead (blog.pragmaticengineer.com)

Today, Stack overflow has almost as few questions asked per month, as when it launched back in 2009. A recap of its slow, then rapid, downfall.

32. Leeks and Leaks (daniel.haxx.se)

On the completely impossible situation of blocking the Tor .onion TLD to avoid leaks, but at the same time not block it to make users able to do what they want. dot-onion leaks The onion TLD is a Tor specific domain that does not mean much to the world outside of Tor. If you try … Continue reading Leeks and leaks →

33. I was a Theranos whistleblower. Here's what I think Elizabeth Holmes is up to (www.statnews.com)

STAT First Opinion essay: Tyler Shultz says he always knew Elizabeth Holmes would have a second act, “shocked it's starting while she's still behind bars.”

36. Apple Blocks Fortnite's Return to iOS App Store, Epic Claims (www.macrumors.com)

Epic Games said today that Apple has blocked its attempt to bring Fortnite back to iOS devices, leaving the popular battle royale game unavailable on iPhones and iPads worldwide. "Apple has blocked our Fortnite submission so we cannot release to the US App Store or to the Epic Games Store for iOS in the European Union," Epic stated via its Fortnite account on X (Twitter). "Now, sadly, Fortnite on iOS will be offline worldwide until Apple unblocks it".

38. Windsurf SWE-1: Our First Frontier Models (windsurf.com)

Introducing our first Frontier Models!

41. Show HN: A platform to find tech conferences, discounts, and ticket giveaways (www.tech.tickets)

Discover and register for upcoming events from TechTickets