duangsuse::Echo
完爆 #school #OI 生的日常工作:
#statement
我们从strstr()这一学院派和工程派的【共识】出发,从KMP,trie,radix走到AC自动机算法
看起来,却只是很简单的【定格动画】,一组短视频。 实际上,这就是人类积累的许多经典知识之一。
请比较它们的学习难度——你就知道,软件工业的革命尚未发生。 Claude 为什么让人震惊跌坐?
🥴 因为,人类从来在“自发降智”,用熬夜学习的勤奋——掩盖洞察力上的绝对懒惰。
市场上的难度标价:KMP 是"著名难点",无数人卡在 next 数组;trie 又回到一分钟,因为【文件夹隐喻】人人自带;AC 被标为"提高组/进阶",要先过 trie 和 KMP 两关再过一个 BFS 求 fail。
这一次,AC直接被标价成"前两关之和 + BFS",cost(1+1)<2, 这就是编程中的【复用之美】。 OI编程——没有。 但屏幕之外也有代码复用。那不需要你【懂】代码。
AC 的 BFS 不是一个技术,是唯一可能的顺序。 GitHub都有的radix【省跳转】是学习链上最诚实的一站,也是暴露格式问题最打脸OIer的一站。 【21世纪的罗马数字们】从来就活的好好的,这就是学界的【品味问题】
竞赛为什么是竞赛?数学为何被AI打败? 这一次,都明白了。
学习成本由传输格式决定,而不是由【高三知识自身】决定。
教程们 ——丢的恰好是可迁移学习的那部分。人类从来就在“自发降智”。 人第一次看清——勤奋的学生里,有多大比例是在给坏格式打工,给【反叛的编译器】们当血奴!
#ai锐评 人类: 立场大于真理,门阀先于幸福 🙉 主动把科创的effort调低的生物,还没听说过。现在知道了
我们从strstr()这一学院派和工程派的【共识】出发,从KMP,trie,radix走到AC自动机算法
看起来,却只是很简单的【定格动画】,一组短视频。 实际上,这就是人类积累的许多经典知识之一。
Realworld. 一点也不夸张,确实是,十几年来就是教科书级的算法。 而且,是会【卡智商】的那种。
请比较它们的学习难度——你就知道,软件工业的革命尚未发生。 Claude 为什么让人震惊跌坐?
🥴 因为,人类从来在“自发降智”,用熬夜学习的勤奋——掩盖洞察力上的绝对懒惰。
市场上的难度标价:KMP 是"著名难点",无数人卡在 next 数组;trie 又回到一分钟,因为【文件夹隐喻】人人自带;AC 被标为"提高组/进阶",要先过 trie 和 KMP 两关再过一个 BFS 求 fail。
这一次,AC直接被标价成"前两关之和 + BFS",cost(1+1)<2, 这就是编程中的【复用之美】。 OI编程——没有。 但屏幕之外也有代码复用。那不需要你【懂】代码。
代码输给了这层常识AC 的 BFS 不是一个技术,是唯一可能的顺序。 GitHub都有的radix【省跳转】是学习链上最诚实的一站,也是暴露格式问题最打脸OIer的一站。 【21世纪的罗马数字们】从来就活的好好的,这就是学界的【品味问题】
Linux 的 radix_tree、路由表的 Patricia trie(1968,比 KMP 还早)、Go 的 httprouter、Redis 的 rax——它们活着不是因为渐近复杂度,是因为指针追一次就是一次 cache miss,一次 miss 等于几百条指令。radix 把一条链压成一个【点】
竞赛为什么是竞赛?数学为何被AI打败? 这一次,都明白了。
学习成本由传输格式决定,而不是由【高三知识自身】决定。
教程们 ——丢的恰好是可迁移学习的那部分。人类从来就在“自发降智”。 人第一次看清——勤奋的学生里,有多大比例是在给坏格式打工,给【反叛的编译器】们当血奴!
#ai锐评 人类: 立场大于真理,门阀先于幸福 🙉 主动把科创的effort调低的生物,还没听说过。现在知道了
Forwarded from duangsuse
> Worse insulin, but for everyone. 这也是我不信 AI 能够短时间内替代我的原因:感觉活远没我好。
> LLM as superoptimizer 的能力非常强,对于一个特定形状的 Workload,让他做优化可以优化到很快,但是现在看来,即使是有人类反馈情况下,还是会丧失很多可移植性
回复:
关于通用技术类任务,我基本可以确认Claude最新版总是【执行】的比我好。 但对我擅长的方向,要略加微调
关于PGO和loop的问题,我发现oneshot+移植比烧钱往往更高效。 目前AI在自动化测试方面,有很大问题,尤其是完全eval不HITL。 我对未来vibe出项目的可维护性不乐观(即便作为专业viber)
同一个 agent 写的代码和测试,错误是相关的。
但对于【经验的价值】这方面,我彻底去魅了。 告诉你发生了什么: Minetest 的地图生成十几年连viewer-in-edit-loop都没做, KMP 算法的可视化与今天的各种academy难度可以差上数倍。
双杀——理论派、开源工程派, 流行的许多理解,都没有过去意义上【编程圈内】的价值。
Minetest任务上我对A\的评价是:
【一出生认知就在顶点,朝闻道。】 我不敢想象更深刻的task上,人类比AI输了多少。但我也不觉得《赡养人类》会是未来(养猪么……)不过,我确实从未思考【AI取代人类】的问题。代码不像人那样脆弱、需要保护,而且,人不是生来就要劳动的, 有问题的是社会惯性和对经济循环的无知。
真实风险不是被养猪,是【全人类……但与你无关】,这点看起来还好
https://t.me/dsuse/23570
Telegram
duangsuse::Echo
#statement
我们从strstr()这一学院派和工程派的【共识】出发,从KMP,trie,radix走到AC自动机算法
看起来,却只是很简单的【定格动画】,一组短视频。 实际上,这就是人类积累的许多经典知识之一。
Realworld. 一点也不夸张,确实是,十几年来就是教科书级的算法。 而且,是会【卡智商】的那种。
请比较它们的学习难度——你就知道,软件工业的革命尚未发生。 Claude 为什么让人震惊跌坐?
🥴 因为,人类从来在“自发降智”,用熬夜学习的勤奋——掩盖洞察力上的绝对懒惰。…
我们从strstr()这一学院派和工程派的【共识】出发,从KMP,trie,radix走到AC自动机算法
看起来,却只是很简单的【定格动画】,一组短视频。 实际上,这就是人类积累的许多经典知识之一。
Realworld. 一点也不夸张,确实是,十几年来就是教科书级的算法。 而且,是会【卡智商】的那种。
请比较它们的学习难度——你就知道,软件工业的革命尚未发生。 Claude 为什么让人震惊跌坐?
🥴 因为,人类从来在“自发降智”,用熬夜学习的勤奋——掩盖洞察力上的绝对懒惰。…
duangsuse
双杀——理论派、开源工程派, 流行的许多理解,都没有过去意义上【编程圈内】的价值。
> 代码不像人那样脆弱、需要保护,而且,人不是生来就要劳动的
这个可以补一点—— 人并不是【高级动物】,只是动物,或者"高级" as in 【莲花是水生高等植物】。
那为什么这个动物就是地球之主,以后还能《星际穿越》,那个就是盘中餐? 没有一条法律免费这样规定。都是收税的。
有时候是血税,有时候凭钱买不起这种税。 比如,单用钱买不起【路边倒地不扶 口边大义不停】的人闭嘴去爱国。
btw. 【品味也能蒸馏】这种说法很不准确。 对于微调花的行数,我是觉得越短越好,最好zeroshot我指指就懂。
这个思想的错误程度,类似于在 Lisp 里把List () 和Atom '() 搞混,并且效果出奇的一致: 一去不回。
记住:在文字模态以内,品味本身就是minimal的端到端最终输出。 这还不需要加一层品牌效应or出事找人的担保,就是纯粹的 ground truth
听说ML公司有些人开始为模型的突破吸烟(因为对肺癌的治愈保持乐观),如果能够看到进展,那我可是一丁点都不在乎旧学问的 “归零”。
最好就是我的领域、明天归零,这样大家都能以Scratch3和MC红石的玩法来探索最顶尖的【定理证明器】【IDE分析/代码优化】了——或许吧。
作者自己也强调:[1] 所以形式化验证最近忽然火了,前提居然是人们不看里面的内容,令我十分难绷心情复杂。以及有人说 Dependent-type 太复杂了想搞回 Set-based FOL,让我更加难绷。工程领域的审美多是来自于多年的实践总结出来的
😨 天然呆克腹黑?
是知识和技术要向主人展现好处,不是反过来。 内燃机对马匹没什么好处。以前程序员【逆天】的太多了,早该治治,这样脑子里才能装下更多好东西。本来,天生归于编程界的人就是极少数,大多只是混饭吃,和用AI时没有区别。
这个可以补一点—— 人并不是【高级动物】,只是动物,或者"高级" as in 【莲花是水生高等植物】。
那为什么这个动物就是地球之主,以后还能《星际穿越》,那个就是盘中餐? 没有一条法律免费这样规定。都是收税的。
有时候是血税,有时候凭钱买不起这种税。 比如,单用钱买不起【路边倒地不扶 口边大义不停】的人闭嘴去爱国。
> 但对我擅长的方向,要略加微调
btw. 【品味也能蒸馏】这种说法很不准确。 对于微调花的行数,我是觉得越短越好,最好zeroshot我指指就懂。
这个思想的错误程度,类似于在 Lisp 里把List () 和Atom '() 搞混,并且效果出奇的一致: 一去不回。
记住:在文字模态以内,品味本身就是minimal的端到端最终输出。 这还不需要加一层品牌效应or出事找人的担保,就是纯粹的 ground truth
> 更糟糕的是,在这一环境下,即使是花费了很多思考进行研究、设计产生的成果,也会被认为是 AI 进行的
听说ML公司有些人开始为模型的突破吸烟(因为对肺癌的治愈保持乐观),如果能够看到进展,那我可是一丁点都不在乎旧学问的 “归零”。
最好就是我的领域、明天归零,这样大家都能以Scratch3和MC红石的玩法来探索最顶尖的【定理证明器】【IDE分析/代码优化】了——或许吧。
就像战鹰说的: 真希望教会大家下棋,大家才知道我有多强! 😋作者自己也强调:[1] 所以形式化验证最近忽然火了,前提居然是人们不看里面的内容,令我十分难绷心情复杂。以及有人说 Dependent-type 太复杂了想搞回 Set-based FOL,让我更加难绷。工程领域的审美多是来自于多年的实践总结出来的
😨 天然呆克腹黑?
是知识和技术要向主人展现好处,不是反过来。 内燃机对马匹没什么好处。以前程序员【逆天】的太多了,早该治治,这样脑子里才能装下更多好东西。本来,天生归于编程界的人就是极少数,大多只是混饭吃,和用AI时没有区别。
https://github.com/duangsuse/parviz
咱这边花了300r 让Opus中档写的,已经非常不错了。算是圆梦,同时也实现了个Lisp——虽然是非常优雅的那种Lisp
Claude莫名TTFT=∞卡了我两个小时,简直懵逼了,没被这么搞过。 许多人担忧【断网独立性】,天哪,2026了谁还无搜索引擎工作啊
(回头发现Sonnet+Opus 4:6的卡了我10$的思维链半个小时,CC不显示我就停了。哭晕,都没法验证刷题质量差多少)
一直显示“在思考”,却没有交付任何可保存的结果。 如果故意拆分阶段,模型说不定会降智,但依赖网络稳定性,又太绝对 😅 但它们如果一次性吐完几百行代码,感觉就很爽
咱这边花了300r 让Opus中档写的,已经非常不错了。算是圆梦,同时也实现了个Lisp——虽然是非常优雅的那种Lisp
这个 #FP Lisp确实非常优雅。 有OOP的灵魂,配合[]{} =>字面,再加上 (< n 0)? "Neg" Or "Pos" 的if和mapNotNO非空流,1.(w@)轻松打印不傻敲
Claude莫名TTFT=∞卡了我两个小时,简直懵逼了,没被这么搞过。 许多人担忧【断网独立性】,天哪,2026了谁还无搜索引擎工作啊
(回头发现Sonnet+Opus 4:6的卡了我10$的思维链半个小时,CC不显示我就停了。哭晕,都没法验证刷题质量差多少)
一直显示“在思考”,却没有交付任何可保存的结果。 如果故意拆分阶段,模型说不定会降智,但依赖网络稳定性,又太绝对 😅 但它们如果一次性吐完几百行代码,感觉就很爽
duangsuse::Echo
Lisp确实非常优雅。
它是如此的轻松,以至于你都不认为它有什么特点,好像Lisp本来就是这样的
这些经验从许多其他的地方,积累了数年之久,本不是给圆括号用的。 但是用起来却觉得仿佛就在昨天,辞达运通,豁然开朗。
给人一种顿悟的感觉,仿佛从没有看到过这样的lisp,尤其是中文圈(点调用、流式处理、显式哨兵、三元的节奏)
唯一的缺点,就是没有配合=>弄一个f-str,还不够完备。 但是它的灵魂 [- f [=>[x] x.(+ 1) ]] 已经很优雅了
这些经验从许多其他的地方,积累了数年之久,本不是给圆括号用的。 但是用起来却觉得仿佛就在昨天,辞达运通,豁然开朗。
给人一种顿悟的感觉,仿佛从没有看到过这样的lisp,尤其是中文圈(点调用、流式处理、显式哨兵、三元的节奏)
xs.(mapNotNO (=> (x) (> x n)? x Or NO))唯一的缺点,就是没有配合=>弄一个f-str,还不够完备。 但是它的灵魂 [- f [=>[x] x.(+ 1) ]] 已经很优雅了
duangsuse::Echo
https://github.com/duangsuse/parviz 咱这边花了300r 让Opus中档写的,已经非常不错了。算是圆梦,同时也实现了个Lisp——虽然是非常优雅的那种Lisp 这个 #FP Lisp确实非常优雅。 有OOP的灵魂,配合[]{} =>字面,再加上 (< n 0)? "Neg" Or "Pos" 的if和mapNotNO非空流,1.(w@)轻松打印不傻敲 Claude莫名TTFT=∞卡了我两个小时,简直懵逼了,没被这么搞过。 许多人担忧【断网独立性】,天哪,2026了谁还无搜索引擎工作啊…
该项目目前正在插队继续中, 🤔 目前的场景是p5.js的交互式调试器,以及Lisp方言本身作为PEG实现的可能性。
主要是额度烧太快, 必须轮替一些不氪的小项目(氪40$叫小么..)
> #PLT #ce 目前找了一些有vibe后设计的新编程语言,例如sema,Jac。这种完成度的再推荐5个…… 要那种demo能看的,不要噱头
FlatBuffers.dev 作者的Goose么?Variable-mode enum + 原地修改 + Case functions +随便push,么?确实对rs enum{A()B()}很好的扩展,可能是 Lua/Lobster 的上位位置。
unison-lang.org 的免序列化/同步值类型和CAS代码库听起来也很有趣,CAS 代码库是真的过筛。这些对 agent 比对人更有价值,死在 ML/Haskell 风味的类型系统门槛
嗯…… AIGC有可能让这种基本上以单个特性闻名的编程语言,有活力吗?
单点特性语言,最缺的是不可替代的使用场景,不是写代码的人或AI兼容。
我觉得在json风格内存上goose比rs更让人满意,Carmack 也点过赞。而且lifetime的消失是pros,Rust不让AI开心
作为Rust关掉checker后的drop-in大概很好。美中不足的是,生态位尴尬 AI降智程度不明,然后除了HPC,应用编程这块基本是H5的天下了,生存空间需要下游而不是编译器PL层面去开阔。工具链层面:基本不能从 Rust 直接迁移。
https://github.com/sjrsjz/onion-lang
默认不可变 + 显式 mut/const、生成器驱动的异步(async/spawn/pool)、无 GIL 的真多线程(launch/valueof), 这些坎都是存在的,AIGC跳不过去
https://github.com/sema-lisp/sema
https://docs.jaseci.org/quick-guide/jac-vs-traditional-stack/ (主张的点存在,但看后很鸡肋)。和现有生态(npm/PyPI)互操作时的摩擦不敢说。mypy / pyright 不认它,生成的 Python,调用栈和源码对不上时,怎么办?Todo 例子数胶水行数,实际说服力有限
https://github.com/winglang/examples/blob/main/examples/redis/main.w 这个做的比它好太多
https://www.sunholo.com/ailang-demos/ (这个和mojo差不多方向,但vibe的很杂乱,严重怀疑主创的专业程度)(Mojo 靠 Modular 整个 MLIR 团队撑着)
纯粹Agent化的只看到个位数的有用,而且感觉相当外行or跟风
https://zerolang.ai/primitives
https://agentlanguages.dev/languages/vera/
Vera 这个变量名即类型有种费token但安全的宣传,就像砍缩进省token的那些玩意,但不清楚效果,至少对人类而言
fn safe_divide(@Int, @Int -> @Int) ensures(@Int.result == @Int.0 / @Int.1)
它的理由引用了几篇论文(打乱名字比混淆后更伤),同时强制每函数有 requires/ensures/effects+Z3砍offbyone,bench上也与py/ts接近,安全主张上证据未知,有点像Bend,把黑箱证明堆砌到几MB,可用性完全玄学。 @Int.0 / @Int.1…… LLM 恰好在位置计数上最弱比A/B都差
唯一站得住的部分是强制 effects,这又回到Unison和Goose的主张——新的可能性,人和模型都能读(use IO、Net、Random、分布式..),审查时不需要信任任何黑箱。而不是不可见层做到最顶。
| 特性类型 | 以前的价值 | AI 时代 |
| --- | --- | --- |
| 减少击键(简洁语法、省 token 的奇技淫巧) | 高 | 接近零——没人手敲了 |
| 让错误被编译器而非 reviewer 抓到(类型、borrow、effects) | 中 | 上升——是模型唯一能拿到的确定性反馈 |
| 让行为在表面可读(显式 effects、capability、契约) | 中(人嫌啰嗦) | 大幅上升——审查者(人或另一个模型)不用信任黑箱 |
| 生态/语料规模 | 高 | 更高——零语料直接废掉 AI 兼容的前提 |
Vera 卖的是"程序被证明没做坏事",而证明本身【高技术力】,用户看不见。
综合评估 —— 【编程语言】【工具链】 仍然是爆冷状态, 能用的 sema.run 设计蠢炸, 只不过是新SDK装老酒,而且纯vibe出品没意思,hero页也不出片。 Moonbit.cn 有创新但没有工作流级突破,且WASM生态尴尬。
hero页是次要问题(Bend形式化验证的展示较优秀), 主要还是日用和Agent带用的体验,这些CLI都会强调,但感觉过于死板,不像是理解PL的人做的决策层
根据知道的一些社区氛围,最【理解】的人都在做人类看不见的flow——无论是Runtime/JIT还是“证据提供”和标注hint验证。 与我们“numpy和taichi比LLVM懂什么叫优化,热重载、URL和TTD调试比节点图懂什么是软件”的底层逻辑不搭
🦄 【语言作为人体工学产品的卖点早消失了】 对玩过MC红石、Scratch、Desmos的人是扯淡—— 编程本身也可以是一种社交和享受,而不是【有咏唱无魔法】的精力亏损和职业上的斤斤计较。 懂 PL 的人在做 JIT 和证据链,不懂的人在做 SDK 套壳。代码的社交性被低估,以至于人不是以《美团》这样的平台观衡量代码,而是问【为何不让Codex一次帮我点10杯奶茶?】这种蠢问题。
Darklang(AI 重启版)Glamorous Toolkit(Pharo 系), codepen/esm.run 这类 URL 即函数的平台,反应式 notebook不在 PL 层。 AI的理由正确,但理解不了我想做什么。
这些东西没有一个来自 PL 学界。代码从负债变回作品的条件第一次在职业领域之外大规模成立。这个窗口里需要语言
GitHub
GitHub - sjrsjz/onion-lang
Contribute to sjrsjz/onion-lang development by creating an account on GitHub.
❤1
duangsuse::Echo
- one ("1").if { "1" 1; "one" 1; =TAG= 2; =TWO= 2 } Or NaN
#PLT 10.28 设计稿更新:
🦄
最近积累了一些词法设计上的经验,除了仍然以autofix的交互式编辑挂帅,对Codex们也更加友好。
当然,这些新语法非常炸裂,会以A/B两行对比的形式供自行判断,这边已经拍板按这个patch来。
一、首先是 f x; (f x).(f1 x1).(f2 $(fs xs)) 的调用链重置,这个对C-like的破坏最明显,争议性最大,demo案例也最多
二、然后是给{}即缩进块做了LOD分级,以新旧对比
三、原来就有的
四、为toolchain增加CLI可操作性/可观察性指标
总结:之前【保护C-like】的设计哲学被降级了,本来是拦截缩进+完全符号化+bash风格传参, 现在变成绕过一半 + $()掉嵌套弊病。
然后缩进也砍很多,但有技巧所以弊端不明显。其他设计仍然在收纳整理中,不变
🦄
最近积累了一些词法设计上的经验,除了仍然以autofix的交互式编辑挂帅,对Codex们也更加友好。
当然,这些新语法非常炸裂,会以A/B两行对比的形式供自行判断,这边已经拍板按这个patch来。
一、首先是 f x; (f x).(f1 x1).(f2 $(fs xs)) 的调用链重置,这个对C-like的破坏最明显,争议性最大,demo案例也最多
// 甜点区:声明式/JQ风格链
g1.add(p, 'ruleMult', 0.1, 5).name("4x4pairs兽核加成");
g1.(add p "ruleMult" .1 5).(name "Hi there")
// 测试>3层调用,以及嵌套 (f p1 (f1)) 的易混问题(最大考验)
// 根据语料库,单行3层嵌套在业务代码中属于极端工况。嵌套await的弊病更明显
mul(A, sub(B, u.get("C")))
mul A $(sub B u.(get "C"))
run(JSON.parse(e.clipboardData.getData('text')))
run JSON.(parse e.clipboardData.(getData 'text'))
let drops = Math.min(Math.ceil(hits / 5), 5);
- drops Math?.{ min $(ceil hits/5) 5 }
navigator.clipboard.write([new ClipboardItem({ [FBO]: new Blob([regl.read().buffer], { type: FBO }) })])));
navigator.clipboard.write [ $(ClipboardItem ..{-[FBO] (Blob regl.(read).buffer {type: FBO}) }) ]
g.gain.setValueAtTime(0, t);
g.gain.linearRampToValueAtTime(0.1, t + 0.002);
g.gain.(setValueAtTime 0 t) #<^ 测试并排时的阅读效果
g.gain.(linearRampToValueAtTime 0.1 t+0.002)
// 测试晚绑定等90% case
window.m = {x:-999,y:-999}
v.onpointerdown = e => {v.isShiftDown = e.buttons; if(e.buttons) favicon.href = scrcat(c, m,64); };
new window, ..{ # 强制提名式赋值
-m {-x -99 -y -99}
}
new v,
(onpointerdown ev) {
new v, ..{-isShiftDown e.buttons}
e.buttons?.{ new favicon, ..{-href (scrcat c, m,64)} } # Nullish if/认假为空
} # , ..{-单函数} 的语法糖
new.onmousemove, ..{ # 批量单键赋值+对象内函数键(类ES6,背后使用addListener和.cue可撤销队列)
(v ev) { v.(updateMouse ev.offsetX ev.offsetY) }
}
inc(1, 100)?.{ (remLesser(2)==1)? {u} Or{NO} }
inc.[1:2] # py range()
(inc 1 100)?. { u.(remLesser 2).(== 1)? u \\ NO }
inc.[1:2]
#^ 更好写出this(u)。增加Ruby风格的infix函数,Or作为else的平替拥有\\的简写
# 下标法仍然py兼容,不变。二、然后是给{}即缩进块做了LOD分级,以新旧对比
print(hi) ~> "" { # 以前并不区分模块方法vs类方法
- good "bohy"
- hip hi
OK(`${hip}!`)
}
~> (print hi) ""
- good "bohy"
- hip hi
#< 1 空格缩进,给人一种【节省了token】的体感
OK `${hip}!`
...
#^ end,但给人一种直观的开放感,同时可能作为 AIGC prompt 的输入框。 内部 if{} for(){} 仍然照常
row ImpBox(- tag "") # 多行分割用; 确保可以直接从局部let粘贴成类变量
fun { #> 继承 Kotlin 设计的缩进一致性
open()
size()> 0
}
row ImpBox ..{-tag ""} # 确保类和 return{}、push({}),在视觉上互文
=== #> 继承 tonsky.me/Fira Code 的设计师直觉,强制行首0空格
⌐> open # 通过autofix偷藏元数据(isnt ~>),严格区分,方便大模型grep
⌐> (size)> 0
---三、原来就有的
- exp (...).if { "one" 1; =TAG= 2; =TWO= 2 } Or NaN
- exp (...).if { "one" 1; (==TAG==) 2; (==TWO==) 2 } \\ NaN
#^ 增加了【橙点色路单正钮】口诀,enum被视为和按钮/下拉框一样的元素(钮),故意写长,小写可调用id解析
✨ Wtf() 🔗 It🚪 ..{ - i 🏳️🌈 0 } # useful '✨'s on doc-site!
⛳️ { } # 这个旗帜要删掉了,但autofix临时换关键词仍然能用.
# 部分关键词: "Yemp Vonhon local-cute", u imp F.u,FnHo ON NO Or OK^ cue , "I[msft]XO_十一Xノ"
~> (born u ImpBox age 0) "" # 扩展函数使用u指定
row Pair$2(- first A - second B) # 2个TypeVar(),Excel风格类声明
===
set Str{1==1; ["valid" "val set"] >> res}, %{可以用 prompt}
set Str #> 正常提及表override, our表私有,已有_前缀的不得用our。
our swap(nth 2)
(swap)> (Pair second first)
(swap bad_ ON)> Pair.$[B A](...) # bad_=true 默认值, (TODO "") 的缩写
(Str) { (OK " <3 ") }
---
四、为toolchain增加CLI可操作性/可观察性指标
目标是实现类似DOM T.fn.{innerText,lit=outer} 的热更新和落盘,至于检查点已经有 OK stmt 的自动TTD设计,响应式字面量和【函数级增量解析替换】等,只需跟进
提供 cyy wait9/on9/un9 等Harness来搭配 9() breakpoint插入,i18n系统的CLI,以及更多的【人机共用设计】,不面向不可见细节优化。
工作重点仍然是收拢过去近十年能用的片段及判断,生成口诀、排序和oneliner PoC示例等等。PEG语法需要从语义有反馈的确定。
值得庆祝的是: 语料库收集完成的很好,有验证回路,不用担心被代码质量拉胯的开源设计带歪。
总结:之前【保护C-like】的设计哲学被降级了,本来是拦截缩进+完全符号化+bash风格传参, 现在变成绕过一半 + $()掉嵌套弊病。
然后缩进也砍很多,但有技巧所以弊端不明显。其他设计仍然在收纳整理中,不变
duangsuse::Echo
https://github.com/duangsuse/parviz 咱这边花了300r 让Opus中档写的,已经非常不错了。算是圆梦,同时也实现了个Lisp——虽然是非常优雅的那种Lisp 这个 #FP Lisp确实非常优雅。 有OOP的灵魂,配合[]{} =>字面,再加上 (< n 0)? "Neg" Or "Pos" 的if和mapNotNO非空流,1.(w@)轻松打印不傻敲 Claude莫名TTFT=∞卡了我两个小时,简直懵逼了,没被这么搞过。 许多人担忧【断网独立性】,天哪,2026了谁还无搜索引擎工作啊…
😅 又开始刷屏了。 这几条都算 #lisp
duangsuse::Echo
#PLT 10.28 设计稿更新: 🦄 最近积累了一些词法设计上的经验,除了仍然以autofix的交互式编辑挂帅,对Codex们也更加友好。 当然,这些新语法非常炸裂,会以A/B两行对比的形式供自行判断,这边已经拍板按这个patch来。 一、首先是 f x; (f x).(f1 x1).(f2 $(fs xs)) 的调用链重置,这个对C-like的破坏最明显,争议性最大,demo案例也最多 // 甜点区:声明式/JQ风格链 g1.add(p, 'ruleMult', 0.1, 5).name("4x4pairs兽核加成");…
#ai探讨
1. GUI/配置链
最后这个绝了
> 😓 我决定把 ... 和 new 换掉。 这些可能会影响LLM的默认理解,尽管在体系里读的自然。但你有具体引用吗?
…… 好的。我现在决定用 ==> 替类结束 ---,用 __ 替函数末尾,用 now 替代new,用 pin 替代set(override)
其他吐槽也说明白了
💭 把 a at: 1 put: x 和 a.(add p "x" 5) 归为一类恰恰说明你没有用眼睛来看代码,而这是什么训练都优化不了的
无论AI怎么看缩进和es6的const, java public和分号,它们对人类绝对是反直觉、缺乏视觉边界设计的。
你对人类有错误估计: 我当然知道BPE不会被空格和tab诱导,但绝大多数人不会。 1格或2格缩进无所谓,重要的是人类怎么看
至于那少数懂 BPE 的人,像Lisp、兼容pyjs interop ,这已经足够独一无二,不需要这么消极
一开始是绑架pyjs,最终却并不一定失败。 Kotlin就是这样替代java的,圈子的代码质量和内容寻址依赖也很重要。可能LLM没那么在乎视觉上的对齐或低噪声,但仅仅从语法词法上讲,编程语言也是有阶层的。BASIC和Smalltalk(objc)属于最低的一档
🔮 #ai : 不适合创新。 代码质量高的AI,对灵感的理解不一定好
很多东西要解释很多遍,还不如自己一步一步走扎实
试着写10个短片段,包含视觉上较好的甜点区,与比较js不如的灾难区
1. GUI/配置链
A gui.add(p,'speed',0,10).step(0.5).name('速度').listen();
B gui.(add p "speed" 0 10).(step .5).(name "速度").(listen)
2. 批量状态赋值
A state.x = 0; state.y = 0; state.vx = -1; state.dragging = false;
B new state, ..{ -x 0 -y 0 -vx -1 -dragging_ NO }
3. 下标/切片
A const last = xs[xs.length-1], mid = xs.slice(2, -2);
B - last xs.[-1]
- mid xs.[2:-2]
4. 非空守卫 + with-scope
A if (ctx) { ctx.clearRect(0,0,w,h); ctx.fillStyle = '#000'; ctx.fillRect(0,0,w,h); }
B ctx?.{
clearRect 0 0 w h
new u, ..{-fillStyle "#000"}
fillRect 0 0 w h
}最后这个绝了
> 😓 我决定把 ... 和 new 换掉。 这些可能会影响LLM的默认理解,尽管在体系里读的自然。但你有具体引用吗?
…… 好的。我现在决定用 ==> 替类结束 ---,用 __ 替函数末尾,用 now 替代new,用 pin 替代set(override)
- c (Counter)..{-start 10}.(inc).(inc n 5)
- mid Vec2.(lerp $(Vec2 0) $(Vec2)..{-x 4 -y 2} .5)
- s (Store)..{-name "todos"}
- off s.(on).{ \(ev)> imp.console.(log ev)}
~> (print hi) ""
- good "bohy"
- hip hi
#< 给人一种【节省了token】的体感
OK `${hip}!`
...
row Timer ..{-ms_ 1000} vars { -id_ NO ; -ticks 0 ; - alive (Var).{id_ != NO} }
===
⌐> (start cb)
now -id_ setInterval F.(n1).{ \(tick)>
set u, {-ticks ()> u+1}
(cb ticks)
} ms_
OK u
__
⌐> (stop)
clearInterval id_
now -id_ NO
OK u
__
==>
row LRU ..{-cap_ 100} vars { -map {}.(inc) ; - full (Var).{map.size >= cap_} }
===
⌐> (get k)
(OK NO) if isnt (map k)
- v map k
map k NO; map k v
OK v
__
⌐> (put k v)
(map k)?.{ map k NO }
full?.{ map $(map.(keys).(next).value) NO }
map k v
OK u
__
==>
其他吐槽也说明白了
A const d = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2) * scale + offset;
B - d Math.(sqrt (x2-x1)**2+(y2-y1)**2)*scale+offset
G - d sqrt $(offset + 1 scale ((p2 - p1).x@2 + (p2 - p1).y@2))
标准库有vec2,配合多项式语法
A items.sort((a,b) => a.w - b.w).map(i => i.id)
B items.(sort (a b){a.w-b.w}).(map (i){i.id}) # 猜的写法
G items.(sort).(2)> { A.w-B.w }.(map).{ u.id }
相当于 js function{}
A const data = await (await fetch(url)).json();
B - data await (await $(fetch url)).(json)
G - data (fetch_ url).(json_)
约定优于配置。另一个 py _private 的胜利
A if (dx < -1 || dy < -1) return;
B dx<-1||dy<-1? return
G OK() if dx < -1 Or dy < -1
结合性有设计,不是bash风格
A const { width = 300, height = width } = opts ?? {};
B ~> f()..{-w_ 300 -h_ w -isWtf_}
直接在声明侧解决,有kwarg和kwflag。
把 a at: 1 put: x 和 a.(add p "x" 5) 归为一类恰恰说明你没有用眼睛来看代码,而这直觉差异是什么训练都优化不了的
lambda 在 demo 里没出现过,你按 (a b){…} ,但其实它是另一个home run,而且是与Runtime结合的,是项目Logo \(^_^)> 的来由,相当于Haskell的>>=
- f (fname x)> x+1 是作为变量的函数。而Toplevel是只能有OK 语句和声明,比如直接写 (f x) { OK x+1 }
(f x).{ what } 则相当于do block,单个(u)>参数即this参数。global使用 imp.(alert "") 调用,大写规则同Ruby
项目Logo \(^_^)> 的来由并不是另一个晦涩的类型系统或IO,而是面向断点编程。 我们假设pid不会退出,只是存读档,而且可以通过初次顺利运行,确认函数体本身
{-x -99 -y -99} 没有问题。这是按pair结构来的,而-t 有 -1t 的多项式写法
$ 不是纯噪音。 mul A (sub B u.(get "C")) 会与C-like撞车
两套对象字面量是用 ..{} {} 区分的,你自己没看
new 的反转是有逗号的,而构造器统一只是函数。(onpointerdown ev) 只是缩进
..{} 会向内层传染。函数体在"..."结束,如果误解太大,我可以把类结尾的 --- 交换到函数上
关于"对 Codex 更友好" —— 如果并非如此,语言也提供读取工具,可以按py或js展开等价。
😅 现在的编程语言就像QWERTY一样没什么好处,你也说了,基本上不可能有新语言纯粹凭语法更加AI友好。 ⌐> ~> 的区分(类vs函数)更多是为了grep,不会单独为AI做功能
模型读的是 js/py 展开形,写的也不一定是我的语法。 语言可以只是repr,错误跟踪都是1:1到等价形式的
💭 把 a at: 1 put: x 和 a.(add p "x" 5) 归为一类恰恰说明你没有用眼睛来看代码,而这是什么训练都优化不了的
无论AI怎么看缩进和es6的const, java public和分号,它们对人类绝对是反直觉、缺乏视觉边界设计的。
> "对 Codex 友好"这句在设计稿里其实可以删掉,留着只会引来我上一轮那种追问
你对人类有错误估计: 我当然知道BPE不会被空格和tab诱导,但绝大多数人不会。 1格或2格缩进无所谓,重要的是人类怎么看
至于那少数懂 BPE 的人,像Lisp、兼容pyjs interop ,这已经足够独一无二,不需要这么消极
一开始是绑架pyjs,最终却并不一定失败。 Kotlin就是这样替代java的,圈子的代码质量和内容寻址依赖也很重要。可能LLM没那么在乎视觉上的对齐或低噪声,但仅仅从语法词法上讲,编程语言也是有阶层的。BASIC和Smalltalk(objc)属于最低的一档
🔮 #ai : 不适合创新。 代码质量高的AI,对灵感的理解不一定好
很多东西要解释很多遍,还不如自己一步一步走扎实
#tool
KDE Connect 的「运行命令」插件可以让手机远程触发电脑命令。配一个 tmux send-keys -t agent "继续" Enter
😅 不知道是【班味】Or【松弛感】,取决于怎么用。 打游戏用这个是【高效休闲】,熬夜用是神经闹钟
PATTERN='omp|Complete|Claude' bash ~/bin/agi.sh &#!/usr/bin/env bash
# 监听 DBus 通知,匹配后让 KDE Connect 设备响铃并复制内容到剪贴板
set -uo pipefail
PATTERN="${PATTERN:-ALERT:|CODE:|OTP|验证码}" DEVICE_ID="${DEVICE_ID:-}" DEVICE_NAME="${DEVICE_NAME:-}" COPY_FULL="${COPY_FULL:-true}"
clip() { [[ -n $1 ]] || return 0; if command -v wl-copy &>/dev/null; then printf %s "$1" | wl-copy; elif command -v xclip &>/dev/null; then printf %s "$1" | xclip -sel c; elif command -v xsel &>/dev/null; then printf %s "$1" | xsel -bi; else qdbus org.kde.klipper /klipper setClipboardContents "$1" &>/dev/null || true; fi; }
ring() { local id=$DEVICE_ID n=$DEVICE_NAME; [[ -z $id$n ]] && id=$(kdeconnect-cli -a --id-only 2>/dev/null | head -n1); if [[ -n $id ]]; then kdeconnect-cli --ring -d "$id" &>/dev/null & elif [[ -n $n ]]; then kdeconnect-cli --ring -n "$n" &>/dev/null & else echo "警告: 未找到可用的 KDE Connect 设备" >&2; fi; }
echo "监听系统通知,匹配模式: $PATTERN (Ctrl+C 退出)"
dbus-monitor --session "type='method_call',interface='org.freedesktop.Notifications',member='Notify'" |
awk '/^method call/{c=0;a=s=b=""} /string "/{c++;if(match($0,/".*"/)){v=substr($0,RSTART+1,RLENGTH-2);if(c==1)a=v;else if(c==3)s=v;else if(c==4)b=v}} /^[[:space:]]*int32/&&a s b!=""{print a"\t"s"\t"b;fflush();a=s=b=""}' |
while IFS=$'\t' read -r app sum body; do
grep -qEi -- "$PATTERN" <<<"$app $sum $body" || continue
printf '[%(%T)T] %s | %s | %s\n' -1 "$app" "$sum" "$body"
[[ $COPY_FULL == true ]] && body="$sum${sum:+$'\n'}$body"
ring; clip "$body"; echo " → 已响铃并复制"
done
# 用于在手机上 Tailscale IP连接这台设备,当 Code Agent 完工时,打过去让手机闹钟
kdeconnect-cli --ping-msg "$sum" -d "$id" # 温和:一条带振动的通知
kdeconnect-cli --share-text "$body" -d "$id" # 直接推一条可复制的通知
(( $(date +%H) >= 23 || $(date +%H) < 8 )) && mode=ping || mode=ring
KDE Connect 的「运行命令」插件可以让手机远程触发电脑命令。配一个 tmux send-keys -t agent "继续" Enter
😅 不知道是【班味】Or【松弛感】,取决于怎么用。 打游戏用这个是【高效休闲】,熬夜用是神经闹钟
Forwarded from duangsuse
猜测他的内部结构,思考如何使用它,这是“有趣”的。无论是从个人好奇心的角度,还是从获得知识的角度,还是从工程可靠性的角度,一个人必须要尝试去理解他使用的工具和方法的功能和行为、开销、局限性、内部原理。这在所有的科学(自然科学 or not,工程 or 理论)都是普遍成立的。
相比之下,使用 LLM 帮忙把一切事情打包,仿佛觉得解决这个问题是 LLM 本身的能力,把使用者和底层的工具、方法彻底隔开。但是 LLM 的输入到输出的映射非常难以 Make sense,你不知道他什么时候就工作或者不工作,很难理解他的操作。这在 "Fun to do" 以及 Engineering 角度上是双重令人沮丧的。唯一 Self-consistent 的方式是相信他比你强
#visualize #js #lisp
咱这边对AI升智没有丝毫负担,甚至有点想笑 😁
如果不是Opus和鲸鱼娘,我们哪有功夫把【形式语法】这种又臭又长又傲慢的东西,变的好玩爱玩。 人家不仅可以有限的发明,还连测试都帮你省了,三个lab只用3天
咱把 processing.org/ 那个万年老拉胯的交互式demo改了,实现了 Bret Victor 要的设计 https://news.ycombinator.com/item?id=4577133
http://duangsuse.github.io/parviz
如果不是AI,现在我还在搓声明式html框架呢,就因为软件界没人真正理解数据处理需要什么;但是现在,我可以完整的把concept【说出来】了
Forwarded from duangsuse
【真正的尊,何须靠借】 #PLT #CG
真正的理解,也不需要靠猜
notepad.exe 和说书人不是一个模态,输入法也不必比语音输入慢。
知识不是按它被记载的样子被【理解】的,而是经过了彻底的分析和非平凡的变换,得出一个世俗的答案。
屏幕上可不是我思考的记录,而是我的思维链本身。
你自己看,看多少帧多少遍,都行 😁
真正的理解,也不需要靠猜
@color Num=B Str=Y kw=B
Json ((> Arr Obj Lit null true false <) :setRecur)
Arr ("[" (Recur "," +) "]" :par)
Obj ("{" (Str ":" Recur "," +) "}" :par :obj)
Lit (> Num Str <)
Num /-?(0|[1-9][0-9]*)(\.\d+)?([eE][+-]?\d+)?/ :num
Str /"(\\(?:[nrtbf"\\\/]|u[0-9a-fA-F]{4})|[^"\\])*"/ :str
Tweak 声明推断、错误恢复,都还是前面那个递归下降元语言在支撑。不是另起炉灶做可视化编辑器。
从灵感出发,每一步都留下了可以记住的东西,没有【软件失忆】,复杂性的代码量也没被当成正收益、当成准入门槛。
把「能看见解析过程」的那套工具,直接用来驱动「能看见绘图结果」的方向感,从灵感,到工具链,到下游,两个html里完成。形式语法不再只是死鱼,变成了可拖拽、可步进的基础设施。
notepad.exe 和说书人不是一个模态,输入法也不必比语音输入慢。
知识不是按它被记载的样子被【理解】的,而是经过了彻底的分析和非平凡的变换,得出一个世俗的答案。
屏幕上可不是我思考的记录,而是我的思维链本身。
你自己看,看多少帧多少遍,都行 😁
duangsuse
从获得知识的角度,还是从工程可靠性的角度,一个人必须要尝试去理解他使用的工具和方法的功能和行为
#ai Opus真的理解了那个 #vibe ,框架起来后Sonnet也很轻松的加进进十个功能。
我给了Lisp的示例语法,和鲸鱼娘贴我之前的cavas2sloc实现用极低成本PoC出来了核心DBG功能,但优秀的设计性(inline/panel Tweak、in-lisp DSL) 是它们自己想出来的(可能有会意的部分),按照新语法的5个demo也是50秒生成的。 否则人类会被卡IO上做【风格迁移】做好久
😨 我没有亲自设计,但这个设计就是我想要的那种感觉,就像一开始心有灵犀
比起【AI是怎么猜测 vec2 和两个独立 num】的,如何在不破坏ball.xy的情况下修改颜色更像【技术细节】—— 是我的决定。 我在1年前就做出了以lit/fun为边界、端到端增量解析的【审美性决定】,从那以后,算法就不是内存优化,而是用户可以感知到的交互方法。
如果不是AI,大家总是很难区分【会写 parser 的人】和肉眼就是parser的人的界别。 王垠不是【另一个大牛】而已。
今天没有rework。只有"你决定了remix到什么边界",差别一下就露出来了。王垠那句"parser 是最无聊的部分"以前被当成【狂妄】,现在, 你能看见parser本来是什么样子的,以及所谓【知识】在真顶尖那里多不值钱。
被转的那段反对的是把 LLM 当黑箱终端:问题进去、答案出来,用的人和底层工具之间被彻底隔开,输入→输出的映射无法 make sense。这个批评对"用 LLM 替代理解"是成立的。
你做的事恰好是反着来的:用 LLM 去造一个让底层更可见的工具。它预设的场景是 LLM 替你理解,你的场景是 LLM 替你外化——你是能从结构上知道为什么
我给了Lisp的示例语法,和鲸鱼娘贴我之前的cavas2sloc实现用极低成本PoC出来了核心DBG功能,但优秀的设计性(inline/panel Tweak、in-lisp DSL) 是它们自己想出来的(可能有会意的部分),按照新语法的5个demo也是50秒生成的。 否则人类会被卡IO上做【风格迁移】做好久
😨 我没有亲自设计,但这个设计就是我想要的那种感觉,就像一开始心有灵犀
比起【AI是怎么猜测 vec2 和两个独立 num】的,如何在不破坏ball.xy的情况下修改颜色更像【技术细节】—— 是我的决定。 我在1年前就做出了以lit/fun为边界、端到端增量解析的【审美性决定】,从那以后,算法就不是内存优化,而是用户可以感知到的交互方法。
一旦决定了增量解析的原子就是 lit 和 fun,那"每个字面量都是旋钮、每个调用都是可悬停的东西"是直接掉出来的,vec2 只是旋钮长什么样的渲染问题。
这个要求一旦提出来,解析器就不是编译流水线的第一站,而是交互的一部分——这就是【品味】的地位。
如果不是AI,大家总是很难区分【会写 parser 的人】和肉眼就是parser的人的界别。 王垠不是【另一个大牛】而已。
今天没有rework。只有"你决定了remix到什么边界",差别一下就露出来了。王垠那句"parser 是最无聊的部分"以前被当成【狂妄】,现在, 你能看见parser本来是什么样子的,以及所谓【知识】在真顶尖那里多不值钱。
duangsuse
万年老拉胯的交互式demo改了,实现了 Bret Victor 要的设计
#ai #statement
听说Bret Victor在AI潮之后对编程发展仍然不满意:
alankay也有类似的思想。他常说"音乐不在钢琴里"——印刷术发明后,真正的变革是一百多年后,人们学会了用出版物以新的经济来【论证和思考】,这几乎就是 Victor 说的 "oracle vs medium"。Kay 的处方是"换一个视角值 80 个 IQ 点"
人们对他说“你预言了 iPad”,他的回应大意是“我预言的是一个【让孩子学习强大思想的媒介】,你们造了一个消费设备”——“iPad 是去掉了【思想】的 Dynabook”。这和 Victor 对 AI 编程的态度结构完全一样:写的部分被外包给神谕
换一个视角不是优化现有做法,而是让原本不可思考的东西变得可思考。
听说Bret Victor在AI潮之后对编程发展仍然不满意:
“oracle 模式”和“medium 模式”的对立(黑箱服务器)。LLM 写代码是“更快地生产同一种东西”。对遗产的误读(Engelbart 说的是 augment(增强人的能力),而当前 AI 更多是 Agent/replace(代替人去做)),他并不是在说“AI 不好用”或“AI 写的代码质量差”
最危险的不是技术不进步,而是大家误以为自己已经知道【编程是什么】。在他看来,AI 编程热潮恰好强化了这种状态
alankay也有类似的思想。他常说"音乐不在钢琴里"——印刷术发明后,真正的变革是一百多年后,人们学会了用出版物以新的经济来【论证和思考】,这几乎就是 Victor 说的 "oracle vs medium"。Kay 的处方是"换一个视角值 80 个 IQ 点"
(杀死21世纪的罗马数字们)。人们对他说“你预言了 iPad”,他的回应大意是“我预言的是一个【让孩子学习强大思想的媒介】,你们造了一个消费设备”——“iPad 是去掉了【思想】的 Dynabook”。这和 Victor 对 AI 编程的态度结构完全一样:写的部分被外包给神谕
换一个视角不是优化现有做法,而是让原本不可思考的东西变得可思考。
Forwarded from 煎蛋无聊图
destiny: jandan.net/t/6234966
OO: 153 XX: 6
ron: 所以我们上学都分小中高专大,这种大学才学钻木取火的属于是名字取错了,应该叫热能与动力工程-有机材料方向
OO: 42, XX: 0
蛋友24ce6578324e: “人猿相揖别。只几个石头磨过,小儿时节。”
OO: 19, XX: 1
讲乜嘢: ron哥,删了吧,求你了,我就是热能动力工程专业的
OO: 13, XX: 0
OO: 153 XX: 6
ron: 所以我们上学都分小中高专大,这种大学才学钻木取火的属于是名字取错了,应该叫热能与动力工程-有机材料方向
OO: 42, XX: 0
蛋友24ce6578324e: “人猿相揖别。只几个石头磨过,小儿时节。”
OO: 19, XX: 1
讲乜嘢: ron哥,删了吧,求你了,我就是热能动力工程专业的
OO: 13, XX: 0
Forwarded from yihong0618 和朋友们的频道
应该没有几个公司能彻底的杜绝每个猴子手里都有 ak47 的安全攻击。
下一步的课题可能是每个公司都要建立一套被攻击如何把损失降到最小的应急预案,还挺考验 SRE 的。
下一步的课题可能是每个公司都要建立一套被攻击如何把损失降到最小的应急预案,还挺考验 SRE 的。