从为期两年的休假和一个固执的想法,到驱动全球最大的金融科技公司之一的工程技术栈——这就是Clojure的故事。本纪录片汇集了Rich Hickey、Alex Miller、Stuart Halloway等人的访谈,讲述了Clojure非传统的起源、以价值观为导向的社区,以及该语言对我们思考软件方式产生的微妙而深刻的影响。本纪录片由Nubank赞助制作!
从为期两年的休假和一个固执的想法,到驱动全球最大的金融科技公司之一的工程技术栈——这就是Clojure的故事。本纪录片汇集了Rich Hickey、Alex Miller、Stuart Halloway等人的访谈,讲述了Clojure非传统的起源、以价值观为导向的社区,以及该语言对我们思考软件方式产生的微妙而深刻的影响。本纪录片由Nubank赞助制作!
人工智能计算能力充裕且廉价的时代正在结束。供应链紧张,尤其是英伟达 Blackwell 芯片,正在推高成本并限制对尖端人工智能模型的访问。GPU 租赁价格飙升,CoreWeave 等供应商正在提高价格并延长合同。
这种稀缺性正在重塑人工智能格局,即使像 OpenAI 和 Anthropic 这样的行业领导者也在限制对其最新技术的访问。访问正在变得“受限”,偏向于大型且资金雄厚的组织。
五大关键趋势正在显现:人工智能访问现在基于关系且昂贵,即使负担得起也可能很慢,并且正成为一种通货膨胀的商品。这迫使开发者多元化,探索更小的模型或本地解决方案,预计这种转变将持续数年,直到基础设施赶上。人工智能的充裕时代已经结束,需要新的采购和利润管理策略。
## Tree-sitter:提升 R 开发体验
Davis Vaughan 创建的 Tree-sitter 解析生成器的 R 语法,显著改善了 R 开发体验。Tree-sitter 能够快速将代码解析为结构化树,比传统方法提供更快、更准确的工具。
该语法为 Air 代码格式化和 Jarl 代码检查等功能提供支持——两者都是基于 Rust 构建的超快速命令行工具。它还增强了 Positron 等 IDE 的自动补全和悬停帮助,并改进了 GitHub 等平台上的代码搜索。
除此之外,Tree-sitter 还能促进依赖检测 (pkgdepends)、代码重构 (astgrepr/flir)、变异测试 (muttest) 和结构化代码差异比较 (difftastic) 等高级任务。R 包,如 {ts},利用 Tree-sitter 解析其他格式,如 JSON 和 TOML,同时保留注释。
生态系统正在迅速发展,但核心优势仍然是:将 R 语法集成到强大的解析生成器中,为 R 开发者解锁了大量新功能,并为进一步的贡献和工具开发提供了机会。
## “被动收入脑”的兴衰
与一位兜售玉石面部滚轮的男士的咖啡馆谈话——他用1.20美元的阿里巴巴产品和30美元的价签起家,尽管自己从未用过——引发了我对一种有害趋势的认识。在2015-2022年间,“被动收入”的概念从一种财务策略演变成了一种诱人的承诺,承诺逃离传统工作。
这种“被动收入脑”吸引着有抱负的企业家,让他们优先考虑系统而非实质,专注于构建自动化的现金流(代发货、联盟营销、电子书),而不是解决真正的问题。这种吸引力很强:财务自由和悠闲的生活,通常被想象成在海滩上工作。然而,这种追求助长了低质量在线业务的激增——70万个新的Shopify商店,90%在一年内倒闭——使互联网充斥着无用的产品和经过搜索引擎优化但无益的内容。
核心问题不在于杠杆本身,而在于优先考虑“被动性”*而非*客户价值和真诚的努力。作者认为,真正的成功来自于持续地提供人们需要的东西,建立关系,以及仅仅是*关心*——这些本质上都不是被动的。现在,随着人工智能颠覆了建立在这个模式上的内容农场,一场转变正在发生,越来越多的人专注于构建“真正用心”的企业,这些企业植根于真正的价值和持续的努力。
## J 的 `roll` 函数的历史与机制 本文深入探讨了 J (及其前身如 APL\360) 中 `roll` 函数的起源和底层原理。`roll` 函数使用一种基于数论的特定算法生成伪随机数。它通过迭代应用模指数运算来实现,种子值为 16807,模数为素数 2,147,483,647 (欧拉素数 – 超过一个世纪以来已知的最大素数,方便地适应 31 位)。 这些常数的选择并非随意。欧拉素数之所以重要,是因为它相对于常见的计算机字长而言的大小。16807 是欧拉素数的 *原根*,这意味着它的幂可以生成小于该素数的所有数字,然后重复,这对于良好的随机序列至关重要。 这种方法由 D.H. Lehmer 于 1948 年提出,被采用以取代 APL\360 中一种粗糙的早期算法。虽然素数很容易选择,但选择 16807 的起源仍然是个谜,即使对于最初的实现者来说也是如此。该函数的发展与早期的系统设计选择交织在一起,最初定义了 IBM System/360 操作中的不确定性。寻找原根仍然是数论中一个复杂的问题,本文简要介绍了识别它们的方法。
启用 JavaScript 和 Cookie 以继续。
谷歌正在发布一套新的工具,以利用人工智能代理增强Android开发,无论您使用的是Android Studio中的Gemini,还是Claude等第三方选项。这些工具旨在通过使其扎根于当前的Android最佳实践,使代理工作流程更高效、更可靠。 本次更新的核心是经过改进的**Android CLI**,它提供项目创建、SDK管理和设备模拟等命令,从而显著加快设置速度并减少LLM令牌的使用。作为CLI的补充,**Android Skills**仓库提供模块化、可操作的指令,用于执行常见任务,例如Navigation 3迁移和Compose采用。 最后,**Android Knowledge Base**确保代理可以访问来自Google Developers、Firebase和Kotlin的最新官方文档,克服LLM训练数据限制。 这些工具旨在无缝协作,并促进顺利过渡*到* Android Studio,开发者可以在那里利用高级功能进行UI设计、调试和性能分析。Android CLI现已在d.android.com/tools/agents上提供预览版。
启用 JavaScript 和 Cookie 以继续。
## 从编译器到硬件:重新发现进位保存加法 这篇博文探讨了编译器优化与硬件设计之间令人惊讶的联系,具体展示了编译器技术——循环融合——如何“重新发现”一种硬件优化,即进位保存加法。 进位保存加法通过使用全加器将三个输入减少到两个来加速多个位向量的加法,无论位向量宽度如何,其操作时间都是恒定的。传统上这是一种硬件解决方案,作者们质疑这是否可以从编译器转换中推导出来。 他们通过将位向量加法转换为具有两个顺序循环的程序来证明这一点,然后应用循环融合。虽然融合后的循环*看起来*相似,但详细的位级证明——涉及在F2中的归纳和操作——证实了它与进位保存方法的等价性。 这并非关于重新发明已知的优化,而是强调了编译器通过利用程序规律性自动发现硬件级改进的潜力。作者们建议这种方法可以解锁进一步的优化,从而弥合传统编译器技术与硬件设计之间的差距。
## 与你的狗狗一起学德语:48个指令
这份资源提供了一种有趣的方式来学习德语*和*训练你的狗狗,利用48个常见的德语狗狗指令(“Hundekommandos”)。学习这些指令可以巩固德语词汇,特别是祈使形式的动词,并提高语法技能。
指令涵盖了基本的动作,如“Sitz”(坐)、“Bleib”(待)、“Platz”(卧)、“Hier”(来)、和“Nein”(不)。你也可以教一些更活泼的指令,如“Gib fünf”(击掌)或“Rolle”(翻滚)。除了基础之外,列表还包括方向指令(“Links” - 左,“Rechts” - 右)、取物指令(“Such” - 找),甚至表达爱意的指令(“Küsschen” - 小吻)。
用德语指令训练尤其适合德国品种的狗狗,如德国牧羊犬和腊肠犬。这是一种独特的方式来给朋友留下深刻印象,加强你与宠物的联系,并使学习德语更具吸引力。提供可下载的PDF文件,方便练习,文章还推广FluentU作为一个全面的沉浸式德语学习平台。