主要观点:工具常同时想得过大和过小,新语言声称有优势导致用户因切换成本而持续使用,进而工具不断增长直至停滞,有两种方式可逃离此陷阱,一是限制增长(不受欢迎),二是降低切换成本,包括保持向后兼容、标准化、FFI(通过外国函数接口通信较难)、IPC(通过进程间通信可自由组合工具但接口无结构)等,各方式都有优缺点,程序如同监狱,数据被困其中,不同语言和工具虽有尝试但仍受局限,下一篇将讨论如何逃离此“盒子”。
关键信息:
- 切换成本与工具增长:工具承诺能做一切但用户因切换成本持续使用,导致工具过度增长。
- 互操作性方式:限制增长不受欢迎,降低切换成本有多种方式,如保持向后兼容、标准化等。
- Unix shells:传统通过shell和IPC自由组合程序,但数据流向为DAG,接口无结构。
- 结构化IPC:powershell和nushell扩展传统Unix管道,但存在互操作性等限制。
- RPC:通过建立带结构信息的通信实现良好互操作性,但添加到程序较复杂。
- 程序如监狱:数据被困在程序“盒子”中,各语言和工具虽有尝试但仍受局限。
重要细节:
- 语言方面,如ripgrep与GNU grep语法相似,多数编译语言保留花括号等。
- RPC有前后兼容框架,不同语言互操作只需写绑定。
- Unix shell管道中程序以多种方式自由交互,如传递输出等。
- powershell基于.NET运行时,nushell有自身特点和限制。
- 不同语言和工具在互操作性等方面的具体情况及面临的问题,如CUDA二进制格式未记录等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。