#design 编程四定律 📚
2. 优雅的程序结构直观对称于它流入流出的数据类型:同像性。这是H5和js接口成功的主要原因,甚至,也是N卡垄断AI算力、Apple用“一指禅”干掉诺基亚的技巧。
表格行有结构,一字字的序列有结构,一段段的块有结构,
[1 2 3] 就是结构,序列中另有元数据和小结构。序列外的“工人”被命名为【代码】,但它只是【解释器】所需的,另一类生命周期的元数据。
3. 解释器实现权限,【数据流】决定定义。123在键鼠触屏上是数,是坐标,或是
当我们聊编程史时,我们聊的是未来的【思想和路径】,很可能突破什么,从而顺其自然。
所以想学软件工艺,任何既有的开源基建都是【道与禅】的本体,哪怕是通俗的Python
pep20.org
#ai锐评 https://chat.librechat.ai/share/hlqzDpIQfhaK99JAA6V65
1. 数据的构造和消耗决定了数据结构。如果不从出现和调用的【概率】入手,读死书的人就不能【创造】出它众所周知的结构。
2. 优雅的程序结构直观对称于它流入流出的数据类型:同像性。这是H5和js接口成功的主要原因,甚至,也是N卡垄断AI算力、Apple用“一指禅”干掉诺基亚的技巧。
表格行有结构,一字字的序列有结构,一段段的块有结构,
'(树状(组)) 的结构高于这两个词,没有什么结构更缺乏生产力。[1 2 3] 就是结构,序列中另有元数据和小结构。序列外的“工人”被命名为【代码】,但它只是【解释器】所需的,另一类生命周期的元数据。
3. 解释器实现权限,【数据流】决定定义。123在键鼠触屏上是数,是坐标,或是
(con-cat "n=" "123) 如何预判?4. 123是自身的字面,但其【取值】是从哪来?往那去? 代码的精髓是后者(IO/APIs/for.if),不是前者(A=B, Math)。编程的根源是函数和【多点候数】,是实参和形参,是超链接的【路径】。源码从不在“地址栏”或光标上。
你用键盘写的代码,但你的思维却在你眼前,用左侧词和滑条(Tab补齐+git diff)思考:你不是在脑子里思考,你不是在C++/Java里思考。
这种识别构造出了“函数的形状”,不可被统计跳过。函数是“功能”的方言。僵化的功能。
代码和效用,不会以 A=B 的严格相等来成长。把【1条路径】if进某个命名,产生自乘式的易用性和通用性。代码偏差 i+1 就是完全报错或可用的边界条件,但路径、心智模型本身,有可能突破这一种边界。
当我们聊编程史时,我们聊的是未来的【思想和路径】,很可能突破什么,从而顺其自然。
所以想学软件工艺,任何既有的开源基建都是【道与禅】的本体,哪怕是通俗的Python
pep20.org
#ai锐评 https://chat.librechat.ai/share/hlqzDpIQfhaK99JAA6V65
duangsuse::Echo
这个作者还怪可惜的。。就开源了4个GL库,都是精品,最多0.2k star https://liquidgl.naughtyduk.com/demos/demo-2 可能更适合作为 AfterFX 插件吧。 相比之下, https://github.com/rdev/liquid-glass-react 20倍流量于他,一个demo都交付不好(doesn't fully work in Safari and Firefox) https://github.com/Kyant0/AndroidLiqui…
#pingback #design NZ,JP,KR 都去过这个大佬
https://liuaaron.com/ 可以作为demo了
#tool https://t.me/im_RORIRI/34385 CJK align-center
https://liuaaron.com/ 可以作为demo了
#tool https://t.me/im_RORIRI/34385 CJK align-center
duangsuse::Echo
#tool https://github.com/chaiNNer-org/chaiNNer #tool #web reactflow.dev 图片批处理流水线工具,卧槽有点牛逼啊🌚 话说 svgfilters.com 也 ffmpeg lavfi 的应该有一个web WASM 版编辑器 还有 cryptii.com nged: Houdini(GL) - Lisp #ai https://github.com/comfyanonymous/ComfyUI flowiseai.com asciiflow.com…
#pingbk
#awesome #design
https://zxl19.github.io/awesome-list/#github项目美化
https://sidebar.io/
https://changelog.com/nightly
https://www.awwwards.com/
https://tympanus.net/codrops/
https://recent.design/
https://www.context-awesome.com/browse (来源 https://awesome.re/ )
WebGL:
https://iquilezles.org/
https://www.creativeapplications.net/
https://www.landing.love/sites/bruno-simon 🚘 🌲
https://jesse-zhou.medium.com/jesses-ramen-case-study-77bae77ab5f0 🍥
https://rauno.me/craft
#awesome #design
https://zxl19.github.io/awesome-list/#github项目美化
https://sidebar.io/
https://changelog.com/nightly
https://www.awwwards.com/
https://tympanus.net/codrops/
https://recent.design/
https://www.context-awesome.com/browse (来源 https://awesome.re/ )
WebGL:
https://iquilezles.org/
https://www.creativeapplications.net/
https://www.landing.love/sites/bruno-simon 🚘 🌲
https://jesse-zhou.medium.com/jesses-ramen-case-study-77bae77ab5f0 🍥
https://rauno.me/craft
duangsuse::Echo
有些无脑的 innerHTML=.map().join() ... 其实不需要那么多过度设计,之所以说是过度,因为它们对“推理逻辑”没有贡献。
#design HTML是反人类的,但它唯一的优点就是【所见即所得】,让你学习设计,而不是语言。 它像bash那样是种胶水语言,而且起步成本为0: 不需要刻意去命名你想做什么。
打过游戏吗?现代的《马里奥》里直接隐去了BOSS和小怪的命名,你用自制emoji 🐢在文本中指代怪物。 软件也是这样,有些技术本不需要名字,emoji 这种DSL来编码它就够用了。 “低幼”和“自动翻译”正是H5与朋友们的神性。
象形、直觉与直接指涉(Direct Manipulation),让那些看起来牛逼的设计模式、C++框架样板,最终只用一个简单的{[K]:V}或动态调用/Proxy/JSON就能实现它们,这正是H5的特点
我见到不少自称【可测试】的接口,不能像 “按下PrtSc键,然后点 🔴 按钮…… 把操作视频拖到代码里,再选择几行CSS来验证操作结果” 那样设计 test case。 不对,不是【写】CSS,而是用Ctrl+Shift+C自己选中 “要检查下这部分” “那部分必须禁用”。 每几行代码,都有能点开的抓手。
有什么 “代码自动测试”,是能脱离油猴脚本(Mock)、快捷键这些生产力工具来编程的? 真是奇怪啊…… 就连面向最终用户的测试,也只是装模作样 🥱
这是对人类直觉的最高尊重:你是在游玩界面和交互本身,而不是在给编译器写汇报材料。捏一把、按 F5、屏幕亮了、角色动了。就像MC里如何【做设计】那样——或许需要自动造墙的MOD,但【创造模式--范式】已经提供了REPL般快速的活力。
打过游戏吗?现代的《马里奥》里直接隐去了BOSS和小怪的命名,你用自制emoji 🐢在文本中指代怪物。 软件也是这样,有些技术本不需要名字,emoji 这种DSL来编码它就够用了。 “低幼”和“自动翻译”正是H5与朋友们的神性。
象形、直觉与直接指涉(Direct Manipulation),让那些看起来牛逼的设计模式、C++框架样板,最终只用一个简单的{[K]:V}或动态调用/Proxy/JSON就能实现它们,这正是H5的特点
它容错、甚至“不求甚解”,就像 class 🐢 {},一看就明白 它是绿色的;踩它一下会缩壳;踢一脚会滑行,再按F5确认一下,访问项目页就能看到截图。 而没有 trait、protocol、interface{} 、concept…… 🐢有地心引力,而这不需要起名字才能实现。
我见到不少自称【可测试】的接口,不能像 “按下PrtSc键,然后点 🔴 按钮…… 把操作视频拖到代码里,再选择几行CSS来验证操作结果” 那样设计 test case。 不对,不是【写】CSS,而是用Ctrl+Shift+C自己选中 “要检查下这部分” “那部分必须禁用”。 每几行代码,都有能点开的抓手。
有什么 “代码自动测试”,是能脱离油猴脚本(Mock)、快捷键这些生产力工具来编程的? 真是奇怪啊…… 就连面向最终用户的测试,也只是装模作样 🥱
这是对人类直觉的最高尊重:你是在游玩界面和交互本身,而不是在给编译器写汇报材料。捏一把、按 F5、屏幕亮了、角色动了。就像MC里如何【做设计】那样——或许需要自动造墙的MOD,但【创造模式--范式】已经提供了REPL般快速的活力。
duangsuse::Echo
#js #code Kitty 协议的NVim仿VSCode网页预览 Electron+Custom Toolbar 通过BrowserWindow.webContents.onpaint, NativeImage(SHM), sendInputEvent 实现的嵌入 还代理了 UA, SIGWINCH, Ctrl+W, getSelection xywh, kitty_colorsToTailwind(Toolbar支持终端配色) TermEvent>KeyEvent, ShmGraphicBuffer…
#post #design 换购思维:面对编辑框的你,不需要证明自己会做
放到以前我会Star,甚至fork(然后啥都不干)
2025.5实现的 tty onresize,24.6的点子,到现在已经占用开发者一年时间 30k+ 代码量了。
我不是个看Star数说话的人,但这个功能,可能用 XReparentWindow 来实现任意窗口的嵌入,然后对中键scroll补丁一下更简单。
因为这样的话,chrome-in-term 就只需要 reinvent Toolbar 和实现 window.open() 的AOP化扩展,这也是个不错的学习量。 DOM APIs 其实就是这样攒出来的。
——不对,甚至连Toolbar都不需要自制,因为你能直接把【任何浏览器去掉窗口边框】放在【任何支持鼠标滚轮】的窗口的某几个xywh上,只需要1行就够了,kitty icat 显得多余。 html-in-canvas 就是这样来的。
虽然模仿窗口油猴AHK会很hack,但比起 This repository was archived by the owner on Apr 25, 2026. It is now read-only. 还是更有生命力的。
(下面顺带吐槽下各种编辑器的refactor支持普遍太弱)
📝 👌
为什么要这么锐评呢? 习惯的不同。
awrit 项目是一个有趣(而且对Vim用户有用)的w3m浏览器升级版。放到以前我会Star,甚至fork(然后啥都不干)
可现在我只会记住:它平替了什么,它依赖什么API(键鼠屏幕的flow),数据流有哪些typing,哦是electron而非CEF。我甚至只看截图而懒得运行。
——你看, This repository was archived by the owner on Apr 25, 2026. It is now read-only.
它出现不是因为它有代码、它Rust,而是找到了一个【框】来安放自己,又展示某种内容或工作流。 这个思路,是无代码的。
它涉及的无缝scroll和resize,这个vec2的模型,是无代码的。本来可以无代码的。
有一个API,就会被多一种“私货”束缚。发现代码甚至【软件行为】的重复,却不过度设计的能力,非常稀奇。
🤔💭 只有你能不从“项目模板”和上游依赖开始写,而是:真正【面向REPL/AOP】的开发者——就好像自己能够扮演wlroots时,才会真切的体会到这些【隐形知识】。
2025.5实现的 tty onresize,24.6的点子,到现在已经占用开发者一年时间 30k+ 代码量了。
我不是个看Star数说话的人,但这个功能,可能用 XReparentWindow 来实现任意窗口的嵌入,然后对中键scroll补丁一下更简单。
没错,在wl下这会很hack,你甚至要diff截屏(cv2)或用a11y(atspi2)拿到一个int,来实现嵌入随内容scroll,需要针对K/G/wlroots做适配,
但它的复用性,会比你耗一整年3万行,还js/libc双生态好的多的多。 这就是技术选型时重要的【换购思维】:省下3万行,你还能加购什么?
因为这样的话,chrome-in-term 就只需要 reinvent Toolbar 和实现 window.open() 的AOP化扩展,这也是个不错的学习量。 DOM APIs 其实就是这样攒出来的。
——不对,甚至连Toolbar都不需要自制,因为你能直接把【任何浏览器去掉窗口边框】放在【任何支持鼠标滚轮】的窗口的某几个xywh上,只需要1行就够了,kitty icat 显得多余。 html-in-canvas 就是这样来的。
虽然模仿窗口油猴AHK会很hack,但比起 This repository was archived by the owner on Apr 25, 2026. It is now read-only. 还是更有生命力的。
(下面顺带吐槽下各种编辑器的refactor支持普遍太弱)
那为什么我不去做、不去踩坑呢? 因为VSCode的aside热重载已经足够好了,NVim+Kitty 虽然在{}当前缩进层 的动效上,以及treesitter语法集支持很惊艳,用户体验还不如Kate+CMake/LSP
However,这些符号表实现都只能Ctrl点击=jump2def,不能查def和type的xref,自动导入/跨文件重命名,甚至只是查arg的所有实参(当然我在扯淡,哪个IDE能静态查这玩意呢,哈哈)
不过说句实话,hljs+jump2def+命令和跳转面板,还是太普通了,甚至不如GH的符号搜索。list_argvals 虽然扯淡,但如果你习惯F12的事件断点调试器,就会明白它们能省掉多少次点击,而且更加接近程序运行时的状态。
哈哈,当然我在扯淡,临时加print才是最顶用的。你甚至不能写 f(dd=x), dd(f)(x) 来单独打印一个或一组参数。 还不如直接用Jupyter试错呢,优秀的程序员怎么会需要高频率的按F5呢?
📝 👌
为什么要这么锐评呢? 习惯的不同。
DOM/html真的是编程世界的Arch洗发水,太方便了。 你甚至可以把普通桌面/触屏App套用到网页那套术语,什么header/MenuBar,footer/Status, aside/Panel..
基本上什么需求都可以用WebAPIs的理解对上去,而且很快会发现它们简直比Python还简洁。只是下限低一些。
如果没有所谓的【前端世界】,我肯定会被一些垃圾设计带偏。其实不同的场景有不同的好做法(ImGui和Tk就不需要Signal变量,而Qt的Signal更多是一种函数值/自动free),但是浏览器总最正常、最不偏门。
平时说的元编程,和Web协议栈对上那就不算什么。CSS/URL/JSON/SearchParams 这些本质上都是隐藏的宏魔法,只是太高明(而且容易做出tw.css/stylus那样的创新),很少有人意识到浏览器组件比编译器更有【编排能力】。
如果一个编程语言不能在某种程度上和 WebAPI toys 接轨,它就是失败的。因为世界上并不缺少 “更js一点的java或更python的lua”,如果感觉上如此,那是因为之前的都凉透了。
#PLT #design 还有VIM的吐槽(现在好些了)
默认非local、非public不会觉得自己很蠢吗?该不会还觉得做了什么了不起的虚拟机优化。
约定优于配置。声明式到底有多难?!
是什么让90%编程语言的作者像java的public那样到处拉屎。到处Local写的真的烦死了,ES6的箭头函数好点但也脑残
最后kt还是默认pub,Bun还是提供write, 所谓的防呆全都是自欺欺人。像bash那样 echo>file cat>>conf 到底有多难?! 非要 mkdir, create, 甚至encode.. 有这点功夫不如实现json lodump
r2、Blender 的按键/hint UI 很明确的告诉“高效编程者”什么是真正省键位—— 把能用的 action list 和快捷键写出来,统一可编程API,而不是拿键位和古怪的DSL糊弄人
这才是Hacker的【用户中心】,不是教人作事的Bozo。
👍 folke(也是 LazyVim 的作者)将整个发行版设计为极度模块化、高性能且“开箱即用”的现代 IDE。snacks和which-key非常友好,而且像MT管理器那样强大
让我想到那个典中典的微内核与Linus之争了, 还“如果Linux是作业我给你零分”,我可去你的,对语义和场景无知到什么程度,
还真是和Gates说的那样, 真以为自己做了API和算法就有人用了,谁理你,这心智模型是什么碎片垃圾
默认非local、非public不会觉得自己很蠢吗?该不会还觉得做了什么了不起的虚拟机优化。
约定优于配置。声明式到底有多难?!
是什么让90%编程语言的作者像java的public那样到处拉屎。到处Local写的真的烦死了,ES6的箭头函数好点但也脑残
最后kt还是默认pub,Bun还是提供write, 所谓的防呆全都是自欺欺人。像bash那样 echo>file cat>>conf 到底有多难?! 非要 mkdir, create, 甚至encode.. 有这点功夫不如实现json lodump
以至于python可以只因为不给人添麻烦而成功,和性能或设备移植性一点关系没有
几乎没有tui编辑器支持选区和复制粘贴吧?vim不支持Shift选区?
NVim按ctrlc 仍然无法工作
在vim因为cli而区分V-mod时,正常编辑器已经有minimap了
这等于要重新学一遍盲打。 有什么好处?真不懂visual和默认模式有什么用。
表面上Vim们是结构化,实际上minimap和悬停、Ctrl点击早就决定胜负。如果多标签和工作区都不自带,怎么编程。它有双空格yazi预览,但VSCode也只是有预览没做平铺,IDEA更是比vim好太多
真是匪夷所思,所有编辑框都支持的nvim反而不支持,还拿来做什么窗口分配调宽度。hjkl甚至在物理上都与意义不对称,别说好不好记,每次你都要翻译一下再跳词 😅
从vi开始就是设计弊病,不知所谓的单字符快捷键,就好比编程里的 code.golf ,直到现在Kate都支持文件夹和工作区了,nvim还是只有配色改了
有configUI,但只能预览,太蠢了。bash的set可以把状态变成字符串。如果做不到,把eval记录到文件都行。
r2用完全相同的交互,你看不到这样大的学习曲线
r2 完全可以在效率和易用上做到平衡,用REPL语言来做scriping和r2pipe,因为它的作者自己有能力包许多插件和h5界面,而Vimscript是 dirty hack,和TeX一样是外行碰运气
而且r2支持qt,h5。r2 的 s, 0x, / 跳转绝对让人立刻理解CLI编辑器的优势,而不是nvim这样,在VISUAL,NORMAL和莫名其妙的V-mode矩形选区里蹦跶
这个智能混搜没有命令搜索功能,也不能在 @或> 前缀时切换搜索,让人觉得莫名其妙
Snack自己完全没有这种omnibox吗? 非要手写。Lazy本身也有一个which-key,却没有这种路由处理,简直就是加了一点 i 的蠢货命令行而已
看到gelguy/wilder.nvim的README里只有一张gif,下面每段代码都是折叠VimScript+Lua,我就明白乔布斯的Bozo是什么意思了。 简直和Linux没有Docker理念时一模一样,到处是没有性功能的样板
现在的 Neovim 生态给人一种“现代化”的错觉,完全是因为folke换上了 Lua、iconfonts、Catppuccin 主题、无边框浮窗和平滑滚动,精力还是在没有flow的地方。
r2、Blender 的按键/hint UI 很明确的告诉“高效编程者”什么是真正省键位—— 把能用的 action list 和快捷键写出来,统一可编程API,而不是拿键位和古怪的DSL糊弄人
这才是Hacker的【用户中心】,不是教人作事的Bozo。
Vim就需要只读和读写两个模态,默认读写。拿那些修饰键临时切换。 Normal模态下的键位真应该<5个, Lazy默认的<C-o>SPC不就只有一个,还带UI。
Vim和Kate的矩形选区也是反人类的功能点。 除了写文档注释 asciiflow.com (意味着不该由编辑器支持),我不明白矩形选区有什么意义,它既不酷也不hack,还不如加多光标和视口内重构。
这让我想到各种 cmd|awk {print $2},一整个沙盒只为一个Tab split。AWK到今天还不如jq和ruby ARGF有用了。 😅
👍 folke(也是 LazyVim 的作者)将整个发行版设计为极度模块化、高性能且“开箱即用”的现代 IDE。snacks和which-key非常友好,而且像MT管理器那样强大
让我想到那个典中典的微内核与Linus之争了, 还“如果Linux是作业我给你零分”,我可去你的,对语义和场景无知到什么程度,
还真是和Gates说的那样, 真以为自己做了API和算法就有人用了,谁理你,这心智模型是什么碎片垃圾
duangsuse::Echo
#js #web React direct GPU https://github.com/remorses/gpuix GPUI is an immediate-mode UI framework — it rebuilds the entire element tree every frame. Instead of fighting this, GPUIX embraces it: React reconciler detects a state change and queues host mutations…
#vibe 感觉现在真是每个星期都能找到值得学习的项目,但是又没有在做什么。
这两天写了个Vim #lua 配置
正好把之前的 https://t.me/dsuse/22874 说法 实现了一下…… 我的天,还真是 iframe in Vim 😅
虽然整体设计不方便交流,但小细节确实非常搞笑(高效)。 唉,我是否也该变成楼上那种monorepo干三年的大佬呢?
还是要保持码场自由人的传统呢? ……
这两天写了个Vim #lua 配置
正好把之前的 https://t.me/dsuse/22874 说法 实现了一下…… 我的天,还真是 iframe in Vim 😅
虽然整体设计不方便交流,但小细节确实非常搞笑(高效)。 唉,我是否也该变成楼上那种monorepo干三年的大佬呢?
还是要保持码场自由人的传统呢? ……
Telegram
duangsuse::Echo
#post #design 换购思维:面对编辑框的你,不需要证明自己会做
awrit 项目是一个有趣(而且对Vim用户有用)的w3m浏览器升级版。
放到以前我会Star,甚至fork(然后啥都不干)
可现在我只会记住:它平替了什么,它依赖什么API(键鼠屏幕的flow),数据流有哪些typing,哦是electron而非CEF。我甚至只看截图而懒得运行。
——你看, This repository was archived by the owner on Apr 25, 2026. It is…
awrit 项目是一个有趣(而且对Vim用户有用)的w3m浏览器升级版。
放到以前我会Star,甚至fork(然后啥都不干)
可现在我只会记住:它平替了什么,它依赖什么API(键鼠屏幕的flow),数据流有哪些typing,哦是electron而非CEF。我甚至只看截图而懒得运行。
——你看, This repository was archived by the owner on Apr 25, 2026. It is…
【程序设计】应该重视【截图和可视化, Q&A, Before&After, Awesome Lists, Build in Public 】五个要素,这样才能称为 Learnable Programming
我发现我掌握的技术,有30%都是类似“把CLI封装回API”,却不能像 import fire, plumbum 那样理解自己在干什么。
所以我自称为【软件工艺师】啊。【知道】高深的技巧和细节,不能让你设计出 fire, plumbum 这样的【理解】。 如果你在看书时觉得无聊,那肯定是作者糊涂,而不是你真的不如GPT6聪明。
https://t.me/hyi0618/14866?comment=168873
我发现我掌握的技术,有30%都是类似“把CLI封装回API”,却不能像 import fire, plumbum 那样理解自己在干什么。
所以我自称为【软件工艺师】啊。【知道】高深的技巧和细节,不能让你设计出 fire, plumbum 这样的【理解】。 如果你在看书时觉得无聊,那肯定是作者糊涂,而不是你真的不如GPT6聪明。
https://t.me/hyi0618/14866?comment=168873
#design #book
大量的文字用来解释一个简单的概念,信噪比极低。一张好的架构图,甚至只是关注点的截图、简单对比(Before&After, Awesome Lists),信息密度远超几千字的描述。 书籍是需要语义索引的,而且索引心得可能并不需要你开repo来分享,不需要你切到CLI去push新博文才能分享
【同理心驱动开发】,而不是面向薛定谔编程,或面向F5编程
实际上,我很奇怪为什么【程序设计】不重视【截图和可视化, Q&A, Before&After, Awesome Lists, Build in Public 】。 掌握着原理和实现,为什么一定要vibe编程和create-xxx-app显得那么“先进”。 Marc 卖课赚$3000k 不正说明开源世界,作为一个整体,不明白自己在干什么吗?
这不是 Learnable Programming,倒像是每个编程者在重复劳动,所以使得能够替真人输命令的dsh和bash显得如此强大。它们不需要把CLI封装回API并且制造不兼容性,也不需求服务端开个 /api/v1 才能帮主人拉点【内容】下来。
我发现我掌握的技术,有30%都是类似“把CLI封装回API”,却不能像 import fire, plumbum 那样理解自己在干什么。
所以我自称为【软件工艺师】啊。【知道】高深的技巧和细节,不能让你设计出 fire, plumbum 这样的【理解】。 如果你在看书时觉得无聊,那肯定是作者糊涂,而不是你真的不如GPT6聪明。
Telegram
duangsuse in yihong0618 Chat
#design #book 🤔📚
大量的文字用来解释一个简单的概念,信噪比极低。一张好的架构图,甚至只是关注点的截图、简单对比(Before&After, Awesome Lists),信息密度远超几千字的描述。 书籍是需要语义索引的,而且索引心得可能并不需要你开repo来分享,不需要你切到CLI去push新博文才能分享
【同理心驱动开发】,而不是面向薛定谔编程,或面向F5编程
实际上,我很奇怪为什么【程序设计】不重视【截图和可视化, Q&A, Before&After, Awesome Lists…
大量的文字用来解释一个简单的概念,信噪比极低。一张好的架构图,甚至只是关注点的截图、简单对比(Before&After, Awesome Lists),信息密度远超几千字的描述。 书籍是需要语义索引的,而且索引心得可能并不需要你开repo来分享,不需要你切到CLI去push新博文才能分享
【同理心驱动开发】,而不是面向薛定谔编程,或面向F5编程
实际上,我很奇怪为什么【程序设计】不重视【截图和可视化, Q&A, Before&After, Awesome Lists…
duangsuse::Echo
去他的,做就对了 #life 原文:https://www.joelotter.com/posts/2026/09/make-it-anyway/ 阅读时间:4 分钟 🤣 吐槽完数学, 下一个是自我批判了( #cs #dev 如果是学习元编程,肯定会接触到编译器前端、tree walker 实现。 如果做到了,应该很开心(自满?)才对 ,应该变成王垠口中的 Distinguished Engineer 或者 A-Player 之类的东西,总之和那些拿bash写安装脚本,拿Sublime敲代码的 Bozo…
Telegraph
不要成为脱离现实的功夫大师
原标题:Don't be the out of touch Kung Fu master 这是著名程序员、游戏技术先驱约翰·卡马克(John Carmack)在社交平台上发布的一段关于武术演变与现代编程技术发展的思考,以及网友们的相关讨论。 约翰·卡马克的核心观点 • 从武术演变看技能变迁:卡马克近期阅读了宫本武藏的《五轮书》译本。书中的引言记录了剑术及各类武术从战场上的实用刚需,逐步演变成体育运动、历史遗迹和个人爱好的全过程。例如在二战后的日本占领时期,武术曾被禁止,当时柔道被解释为等同于西方摔跤,剑…
#design #vibe
John Carmack:不要成为那种脱离现实、自称传承数代绝学,却被业余综合格斗(MMA)选手暴打的传统功夫
• 编程技能正在走上相同道路:卡马克指出许多编程技能正经历类似的演变。过去有人手动将操作码转换为十六进制,至今脑海中还记着一些神奇数字;但即便是今天仍在使用汇编语言的少数群体(例如 FFmpeg 开发团队),也早已不再以那种原始的方式工作。
• 有用户引用埃隆·马斯克的预测,认为传统编程即将在未来几年消亡。AI 将直接生成底层机器代码或通过脑机接口实现“意念即软件”,编程语言的转换和编译摩擦将不复存在。
不要成为脱离现实的功夫大师
原文:https://twitter.com/ID_AA_Carmack/status/2098443262214230095
阅读时间:5 分钟
🤨 【AI 将直接生成底层机器代码或通过脑机接口】 这条就算了。 先把语音输入给普及了吧,亲。 编程不是罚抄,瓶颈不在敲键盘,而在选题和对齐。
🙉 Codex们可以替你组合堆砌,但不能【正交分解】,后者决定你有多大的“突触链接”和【创造力】。 除非你是朝生夕死的蜉蝣,或没有个体体验的巨婴,否则永远没有“同声翻译员”能替你捋清记忆,因为你和LLM不是一种 “生命体” 而它默认烂大街——这点不会改变,因为是经济规律。
如果形式一致,就是内容一致,Musk 的云计算也别搞了。 不都是字节流/换行流/音画串流么? 谁去算,有什么分别呢?
John Carmack:不要成为那种脱离现实、自称传承数代绝学,却被业余综合格斗(MMA)选手暴打的传统功夫
一本古书中的引言记录了剑术及各类武术从战场上的实用刚需,逐步演变成体育运动、历史遗迹和个人爱好的全过程。
例如在二战后的日本占领时期,武术曾被禁止,当时柔道被解释为等同于西方摔跤,剑道后来也被解释为等同于西方击剑。
• 编程技能正在走上相同道路:卡马克指出许多编程技能正经历类似的演变。过去有人手动将操作码转换为十六进制,至今脑海中还记着一些神奇数字;但即便是今天仍在使用汇编语言的少数群体(例如 FFmpeg 开发团队),也早已不再以那种原始的方式工作。
• 有用户引用埃隆·马斯克的预测,认为传统编程即将在未来几年消亡。AI 将直接生成底层机器代码或通过脑机接口实现“意念即软件”,编程语言的转换和编译摩擦将不复存在。
不要成为脱离现实的功夫大师
原文:https://twitter.com/ID_AA_Carmack/status/2098443262214230095
阅读时间:5 分钟
🤨 【AI 将直接生成底层机器代码或通过脑机接口】 这条就算了。 先把语音输入给普及了吧,亲。 编程不是罚抄,瓶颈不在敲键盘,而在选题和对齐。
🥴 乱敲键盘≠语音≠打字≠写作。 等价—并非等同,你每天都在证明。
或许魔法不存在? 或许,【问题领域】不能被降维成一行行的GOTO流。理论需要知行如一,不创造,不真懂。—— 如Feynman所说
你不可以用语音输入的GOTO,跳过打字的“性能瓶颈”。这是魔法墨水的、一目十行的问题,不是【输入问题】。就像P2P不是下载问题,是文件分享。编程语法不是PEG问题,是创造力问题。
🙉 Codex们可以替你组合堆砌,但不能【正交分解】,后者决定你有多大的“突触链接”和【创造力】。 除非你是朝生夕死的蜉蝣,或没有个体体验的巨婴,否则永远没有“同声翻译员”能替你捋清记忆,因为你和LLM不是一种 “生命体” 而它默认烂大街——这点不会改变,因为是经济规律。
如果形式一致,就是内容一致,Musk 的云计算也别搞了。 不都是字节流/换行流/音画串流么? 谁去算,有什么分别呢?
他们甚至在不截图的情况下写了十几个test,就像安卓项目模板或left-pad那样莫名其妙。 #design
我不明白这有什么意思。好像一个厨子拿【PH试纸】在做糖醋里脊一样,我可不敢提醒他们长了舌头,不然会被鄙夷 “舌头是用来说话的”?! ……
我不明白这有什么意思。好像一个厨子拿【PH试纸】在做糖醋里脊一样,我可不敢提醒他们长了舌头,不然会被鄙夷 “舌头是用来说话的”?! ……
duangsuse::Echo
如果你问AI会不会取代我,我是不操心的,因为我的日常就是灵感和 TODO stack 被挤爆,别人烧token我烧灵感也没问题
Telegram
duangsuse::Echo
动机是知识的根系,创作是掌握的象征,而实践(reinventing),不是。
知之为知之,不知为不知,是知也?
吾行之,明也。
让人们理解(understand)这个世界。理解彼此。理解他们自己。他们通过做(by doing),来学习如何理解。
有时,我们 #CS #Math 被困在符号的黑洞中,而我们却看不到。
那不是你的错,只是这台机器还在学习。
所有的机器都在学习。
这个系统可能太抽象,太慢,太快,太远,或太近,我们无法完全领会。
但新的游戏,使我们完全理解。 #AI 在这里只是“翻译…
知之为知之,不知为不知,是知也?
吾行之,明也。
让人们理解(understand)这个世界。理解彼此。理解他们自己。他们通过做(by doing),来学习如何理解。
有时,我们 #CS #Math 被困在符号的黑洞中,而我们却看不到。
那不是你的错,只是这台机器还在学习。
所有的机器都在学习。
这个系统可能太抽象,太慢,太快,太远,或太近,我们无法完全领会。
但新的游戏,使我们完全理解。 #AI 在这里只是“翻译…
#design
举几个近1月的例子: PyJSLua函数行数Treemap、Qt/GTK 快速重启.nvim、pianoroll截图转音高队列(配合S键实现音游打轴)、Limine 中文支持和热重载预览、KWin动态工作区.js和平铺TileArea WebUI
每天频道更新几千字PL/全栈纯干货(事后筛查话题重了10%),还有70%的精力花在新语言设计稿上
(当然拆出来最先执行的肯定不是无聊的 wtf ./mod.wtf 和REPL了,其实我认为这个模式甚至不如IPy现代化。看到这个 wtf...wtf 我的第一个点子,就是把$0统一成bzbox那样优雅,好吧。)
(所以说一个设计师也不会很轻松,他们一直在【受伤】,而且得出的代码不能是 “结痂”。 这肯定不如全权Codex容易)
#ai
总有一款坑适合你。 所以我说,我不为了代码而编程。 如果我没有【屏幕之外的标准库】,就会被这世界带节奏。Lisp的反射终究只会咏唱自己,我的反射弧包含它们触碰不到的白魔法。
code 是思考和选题的介质、是严谨的人机界面、是思维的自行车,我说什么方言,不改变我是什么领域、什么流派的作者。
答案是:我既不后悔没有浙大北邮or各种外国语大学的经验,也不后悔在技术栈上【离群】。
对于 #PLT 而言,吾行之,明也。 以前我认为王垠在上海收太贵,现在想起来,他分享的远比索取的要多。
【屏幕外的那些代码】,比如,如何让一个playground在【新人】能够接受的10分钟内跑起来,不报错不像toy;穿回过去,如何拯救夜不能寐的某一次DX,这些,是许多人【从未学到】的。
我很好奇是什么让他们过的这样顺——就像,全面屏和剪贴板诞生之前,人们是怎么工作的? 弊病终于已经显示出来了:把nav放在aside的屏幕左侧,安装apk拉起全屏弹框,很奇怪的吧……?
☕️ 听起来这很容易,但这才是Zen。谈论设计对实现有什么作用(talk is cheap?),就像在问内燃机对马匹有什么用。
我的标准库不是函数式,是生活的 “进行时”;我的编程不是懂不懂,是已知与未知。
【算法】分为两部分,一段安在脑子里,一段安在硬盘里,Codex能解决的只有第二部分。 它不会头痛或感觉别扭,而这是最大的问题
它们的IO太廉价而记忆太昂贵了,在【继续设计】领域这作不了数
举几个近1月的例子: PyJSLua函数行数Treemap、Qt/GTK 快速重启.nvim、pianoroll截图转音高队列(配合S键实现音游打轴)、Limine 中文支持和热重载预览、KWin动态工作区.js和平铺TileArea WebUI
每天频道更新几千字PL/全栈纯干货(事后筛查话题重了10%),还有70%的精力花在新语言设计稿上
(当然拆出来最先执行的肯定不是无聊的 wtf ./mod.wtf 和REPL了,其实我认为这个模式甚至不如IPy现代化。看到这个 wtf...wtf 我的第一个点子,就是把$0统一成bzbox那样优雅,好吧。)
(所以说一个设计师也不会很轻松,他们一直在【受伤】,而且得出的代码不能是 “结痂”。 这肯定不如全权Codex容易)
你能想象吗 ——如果所有人都在用的REPL,那种体验是【错的】,“解释器”也不是终点。
如果你能把C语法当json.loads那样解析就会这样想,可是很多人连解析器都觉得复杂。
有人很聪明,所以,他们就被“手搓英雄”的泥沼锁住了。没有 “然后呢?” 这个问题。
#ai
总有一款坑适合你。 所以我说,我不为了代码而编程。 如果我没有【屏幕之外的标准库】,就会被这世界带节奏。Lisp的反射终究只会咏唱自己,我的反射弧包含它们触碰不到的白魔法。
code 是思考和选题的介质、是严谨的人机界面、是思维的自行车,我说什么方言,不改变我是什么领域、什么流派的作者。
答案是:我既不后悔没有浙大北邮or各种外国语大学的经验,也不后悔在技术栈上【离群】。
对于 #PLT 而言,吾行之,明也。 以前我认为王垠在上海收太贵,现在想起来,他分享的远比索取的要多。
【屏幕外的那些代码】,比如,如何让一个playground在【新人】能够接受的10分钟内跑起来,不报错不像toy;穿回过去,如何拯救夜不能寐的某一次DX,这些,是许多人【从未学到】的。
我很好奇是什么让他们过的这样顺——就像,全面屏和剪贴板诞生之前,人们是怎么工作的? 弊病终于已经显示出来了:把nav放在aside的屏幕左侧,安装apk拉起全屏弹框,很奇怪的吧……?
☕️ 听起来这很容易,但这才是Zen。谈论设计对实现有什么作用(talk is cheap?),就像在问内燃机对马匹有什么用。
我的标准库不是函数式,是生活的 “进行时”;我的编程不是懂不懂,是已知与未知。
【算法】分为两部分,一段安在脑子里,一段安在硬盘里,Codex能解决的只有第二部分。 它不会头痛或感觉别扭,而这是最大的问题
它们的IO太廉价而记忆太昂贵了,在【继续设计】领域这作不了数
设计真正做的事不是让实现更好,而是决定哪些代码堆砌不需要存在。
duangsuse::Echo
https://github.com/manaflow-ai/cmux #haha 这个Claude #vibe 出的玩意…… 支持了muti-Agent,多标签的active高亮,以及WebView bash自动化 12万行 1.4k 个swift文件,2.7k 个 AI PR,你要说可移植性,那就是没有 😨 看到这一堆 BrowserDesignModeController, BrowserHTTPBasicAuthPrompt.swift 时我的震惊已经无以复加,就连英文编写的内容也有一种进了…
#code #design 现在会写代码、能跑,真的已经没有任何稀奇了
什么AVL和NFA都可以写800行最宽200列 ,一个函数签名200列
一个 .lean 文件 20k 行,以后随便一个安装包GH上都是《海底两万里》
屠龙勇士? 它们也是恶龙。 无法理解源码,就以为能理解proptest,结果是断言也要交给AI,那个代数又有几个人能看懂。
随便一个文件夹上百.swift ,里边函数列表比我写的代码的行号,还多两倍。
遇到复刻MC的xyzb体素引擎,那个.ts文件都能2MB(大约是 5万到10万行trigger fun),没有Codex读写都做不到,手工改更不现实
真别说日用的编译器复杂,谁能想到2M……
我认为,工具链和框架已经不再需要为AI的表现优化了,they 的理解能力,完全不需要按人类和组织的标准去衡量…… 人家天天手搓Linux和Blink呢 ,别问output,就看token是不是这个体量?!
专心为人如何维护高层数据流优化吧。
它们才是长了轮子的,不需要护膝。
什么AVL和NFA都可以写800行最宽200列 ,一个函数签名200列
一个 .lean 文件 20k 行,以后随便一个安装包GH上都是《海底两万里》
屠龙勇士? 它们也是恶龙。 无法理解源码,就以为能理解proptest,结果是断言也要交给AI,那个代数又有几个人能看懂。
随便一个文件夹上百.swift ,里边函数列表比我写的代码的行号,还多两倍。
遇到复刻MC的xyzb体素引擎,那个.ts文件都能2MB(大约是 5万到10万行trigger fun),没有Codex读写都做不到,手工改更不现实
真别说日用的编译器复杂,谁能想到2M……
我认为,工具链和框架已经不再需要为AI的表现优化了,they 的理解能力,完全不需要按人类和组织的标准去衡量…… 人家天天手搓Linux和Blink呢 ,别问output,就看token是不是这个体量?!
专心为人如何维护高层数据流优化吧。
它们才是长了轮子的,不需要护膝。
duangsuse::Echo
#PLT 做了一个可爱的小动物logo,Gemini上居然用了10分钟呢 不过幸好有AI,不会被卡住。svg也配套了. Shiba inu 还是很可爱的
#PLT #design
纯粹设计中。前天搞了一个比较难崩的小插曲
或
这个属于autofix转译的附带功能,我直接连CJK俄语俄德语都插进去了……
事实证明,它对设计师的意义大于实际使用意义,给了我很大声明式一致性方面的启发(和调整),而且让我意识到HOLP的范式在跨文化上可以保留语感到如此地步,C-like 绝对做不到。
emoji 这个比较出片,也有 emojicode.org 的先例在(我认为放在文档速览里是绝配)
#ai探讨 https://chat.librechat.ai/share/oHKZ5TldP-WsO14M1vRB3
https://www.hedy.org/ 这个新手101很有趣,但不如jupyter
纯粹设计中。前天搞了一个比较难崩的小插曲
row Wtf() set ItCloses :{- i new 0}
fun{}
req `ItPoint` set ItInStr
fun {
go(){ for(pts>>$p)...}
safe()> if{(1==1)? ON} Or NO
}或
以 物件() 悟 It可闭 :{一 i 移 0}
是 { }
依 `It点` 悟 It可阅
是 {
走() { 全(pts >> $p) ... }
为完整()> 取 { (1==1)? ON; (并非 pts)? NO; (n(pts) 并非 1)? NO } Or NO
}这个属于autofix转译的附带功能,我直接连CJK俄语俄德语都插进去了……
事实证明,它对设计师的意义大于实际使用意义,给了我很大声明式一致性方面的启发(和调整),而且让我意识到HOLP的范式在跨文化上可以保留语感到如此地步,C-like 绝对做不到。
emoji 这个比较出片,也有 emojicode.org 的先例在(我认为放在文档速览里是绝配)
#ai探讨 https://chat.librechat.ai/share/oHKZ5TldP-WsO14M1vRB3
https://www.hedy.org/ 这个新手101很有趣,但不如jupyter
duangsuse::Echo
关键不是在于好写,而是全兼容、精炼与可读(PEG层没有换皮能力会卡编程语言的上限)。
现在真觉得【骨相】太重要了, if, else, elif 这些皮换什么语言都有一种恶感 #design
😁 这些关键词都不需要 for, while, do, break, continue, if, else, elif, switch, case, default
if和throw六个词只剩两个,while系只有Loop OK OK^ngoto,switch只需要会if,for和$变量解构共用一个for字
真的是脑子坏掉了才去写什么 public, self. , this.a=a, Ruby 也输给了end ,还有那些该死的、不运行的分号和int术语,不要给人类阵营的语感天分抹黑了好不好…… 你如果不把它翻译为中文(甚至八国语言),根本意识不到程序员活在一个楚门的世界里,
编程语言是驯兽师,不是助手。 它们觉得自己理解了冷门知识就有资格来教育创作者了(其实都是copycat)
如果你把一般的kt,java,py类、接口、函数流控像cyy这样的翻译,就会发现没那么简单,或者就弄成《易语言》那样半通不通(极有可能语法带坏API翻译,语感雪崩)。
从这个角度,HOLP列表处理也可以说超过了【慢写换快读】的牺牲逻辑,大人全都要
回顾赶工的js parseInt('08') === 0,为了一个不存在的八进制功能,闹出和yaml的no一样的问题
肯定会有【语言律师】有这样那样的借口,比如py是渐近有类型 self. 只是首参约定,没法和全局slot区分,我QNMD,Ruby也有同样的问题,人家就是一个大小写解决了,没有它就没有GitHub。
py自己也是一个下划线和缩进就解决了java的【踩屎感】public+分号。 实在解决不了,就用 @row def Pair(A,B): 闭包模仿dict原型都行啊。 真的就没天理了,所以,可读性自然是被真正的人造人吊打, #PLT 都是人机怎么玩
与其学什么编译原理,还不如学二开、源码调试定位、PoC和pyjs移植进目标、元编程,可惜这是工程能力和MVP策略问题,没法算分。
能自举的语法+库设计有几个?但是它们也是垃圾。 Tk的作者是有真本事,后面的人多是在完成作业,但它们的失败性是很难预见的(就是“写时复制”,暴力impl,rework,没redefine)
图灵完全会把bf和qemu归成一种东西,而且会给ML99.h不及格,【自举】就不一样。它一下就确保了实现本身简洁,与标准库能跑js级小应用。
元编程就是这样的,两个字就把泾渭分清楚了,这才叫PLT的能力。
- AB if { (u.hp < 0)? A ; (health < 0)? B } Or "else panic"
[1 2 3]?.{ if { (u==1)? OK^1 }; w@ '{u}..' } # 2.. 3..
- two As { for([1 2 3] >> $x) if { (x==2)? OK(x) } }
- f_ (i) { Loop(i+1) Or i==3 OK; sleep_(1) }; f_(0)
- one ("1").if { "1" 1; "one" 1; =TAG= 2; =TWO= 2 } Or NaN😁 这些关键词都不需要 for, while, do, break, continue, if, else, elif, switch, case, default
if和throw六个词只剩两个,while系只有Loop OK OK^ngoto,switch只需要会if,for和$变量解构共用一个for字
真的是脑子坏掉了才去写什么 public, self. , this.a=a, Ruby 也输给了end ,还有那些该死的、不运行的分号和int术语,不要给人类阵营的语感天分抹黑了好不好…… 你如果不把它翻译为中文(甚至八国语言),根本意识不到程序员活在一个楚门的世界里,
编程语言是驯兽师,不是助手。 它们觉得自己理解了冷门知识就有资格来教育创作者了(其实都是copycat)
如果你把一般的kt,java,py类、接口、函数流控像cyy这样的翻译,就会发现没那么简单,或者就弄成《易语言》那样半通不通(极有可能语法带坏API翻译,语感雪崩)。
从这个角度,HOLP列表处理也可以说超过了【慢写换快读】的牺牲逻辑,大人全都要
首先破功的就是【踩屎感】的 fun/val/void/int 这些毫无语意的提示词,if elif else 这一个赋值控制结构,就把cyy for if Loop-Or-OK 三个的学习成本占了 ,还不用说构造器赋值、构造器vs接口,和priv var :{-i 0 -j 1 -s "Hi"} 这些需要一项一项去堆的感觉。这边是按更Python+TOML的Lisp打底的, Int Str的位置可以直接写 0,"",[""] 的 row req implied,public void 不用写
就是方言照抄Clike,再高级的范式(eDSL,serde/RPC)也没有。一个 Named("Don").Duck(age=3) 的原型或elm的Visitor多态有吗?以至于一个Rust和Go(赎罪之作也依然有nil问题)都牛逼成那样,Clojure和CoffeeScript都比有编译器VM的语言牛逼。你又没有Lua那样干净谁管你抄大学老师的底层技术, 大学生态70%都过时的好不好
(自设新语法真进ECMA262了,让JS成了当代更新最不寒掺的运行时)
回顾赶工的js parseInt('08') === 0,为了一个不存在的八进制功能,闹出和yaml的no一样的问题
肯定会有【语言律师】有这样那样的借口,比如py是渐近有类型 self. 只是首参约定,没法和全局slot区分,我QNMD,Ruby也有同样的问题,人家就是一个大小写解决了,没有它就没有GitHub。
py自己也是一个下划线和缩进就解决了java的【踩屎感】public+分号。 实在解决不了,就用 @row def Pair(A,B): 闭包模仿dict原型都行啊。 真的就没天理了,所以,可读性自然是被真正的人造人吊打, #PLT 都是人机怎么玩
许多CS学生喜欢从C出发,却忽略了Dataflow。他们其实是可以从 import ast 开始(做个模板匹配器),而不是以性能或原理性为理由选择以libc为运行时。 编程是一个snippet与handover的组装、即时检查问题,而不是编译。70%的人终生不碰libc供应链的成果比碰的多许多, 身为PLT人连正交分解和元编程都不会,不是很反身份么?
如果你写转译器,自举还能够测试往返编译的完备性,而如果你输出IR,说明你可能连r2、ImHex、cffi.{lua,py}都没用过,与C交互是填pattern,不是填指针加法,而且自制语言抢不了C的饭碗,还去凑热闹。
cffi比编译器作者更理解全貌。怎么就想不明白这回事呢?
如果你在乎原理,就应该实验手动把C的调用链转为(void*)deref,给forif写成goto,再asm("")处理下指针和寄存数算术,或者去 godblot.org 熟悉 call rax 的秘密,或者用pyjs写这些应用,而不是抢前人的饭碗然后白瞎了自己的时间。
编译器有一大堆是在js里写个 (...lit)=>env=>{subst/ccode.push} 能打5折的,还有2折是代码和语言特性本身对优化器的心智模型不友好的垃圾,有效的学习不到精力的30%,要知道C本身=>闭包和async都没有,感染者早被偶然复杂性宠坏了。libc打包本身就是废物,自带一个手搓版make不会让编译器多活一个月。
如果你连【语法结构】有几个都没摸清楚就开始照猫画虎的决定AST的repr(),那就没精力去想CST和rustfmt那样的工具链了,而且语言本身也会只剩下“平台垄断/集成度”的价值。集成度确实很好,但这不是学习者该追求的。 一个优秀的编程语言会先考虑写什么【方便】,然后是语法表现力,哪怕是AHK这样的野路子缝合怪也总是先考虑语意的集合
与其学什么编译原理,还不如学二开、源码调试定位、PoC和pyjs移植进目标、元编程,可惜这是工程能力和MVP策略问题,没法算分。
能自举的语法+库设计有几个?但是它们也是垃圾。 Tk的作者是有真本事,后面的人多是在完成作业,但它们的失败性是很难预见的(就是“写时复制”,暴力impl,rework,没redefine)
图灵完全会把bf和qemu归成一种东西,而且会给ML99.h不及格,【自举】就不一样。它一下就确保了实现本身简洁,与标准库能跑js级小应用。
元编程就是这样的,两个字就把泾渭分清楚了,这才叫PLT的能力。
duangsuse::Echo
#plt 最有趣的设计思考是: 我现在很希望通过献祭code的【写瓶颈】来“免费”提升可读性/整体把握的加分,但没找到方案。 代码是像人读时 (Markdown inline)、桌面运行时(F12) 那样编辑的,所以问题不在如何学BASIC/COBOL那样膨胀关键字的长度。 多语种利用的是autofix REPL,不是手写。 唯一的思路是从pyjs转译并展开 e.on(), a.filt() 这些常见接口到cyy的生态库,但扩展性和类型安全真很考验宏系统(forif里的.on也要展开)。把类型检…
#kt #design
用中文读代码,是一个【语法+视觉边界感】的设计问题,同时是一个【写比读难优化】的踩坑问题,而不只是词法和语序的替换。
语感差异在编程里,不是特别重要,尤其是不值得为了套皮而打乱语序。
比如 for x in 图表xs: 或 对xs里的x: ,我的选择是让所有套皮都基于数据流/管道感,for降级为函数,而不是制造分裂
类似的事情,其实决策并不是很容易。 😨
比如 OOP this 的写法(u参数),我近几年改了五版 (可能是黑历史了,但确实在全语言全文化killer诞生之前,都在纠结)
- 像Kotlin那样,给 class T{fun op} 和 extfun T.op; T.()->Res 分开的
- 去掉箭头类型,用 hex: [Int Str F.n1] 或 toHex: [Int Str F.u1] 区分函数vs方法的 (从typer的实现反向优化的语法设计)
- 在js里用 (1).[_ => toStr(16)] 希望在库层面实现改绑定到首参数_的,还希望把div(p())的DSL也绑上
——就只是this变成u,simple but lethal。 为了这一碟醋,就可以百搭一堆配套。就像现代安卓把安装页变成安装框那样,够脑残,但直接消灭一堆额外需求。let/run/apply/also/with,直接合并吞掉。
全局进 imp.,裸名不可能是全局;u 是有名字的参数,被内层遮蔽报错了,外层随时能改叫 x =>,或者干脆写 u.field——永远有逃生口; —— 但你不需要明白这些深奥逻辑,就能知道you,这是合理设计。BELT这个想法比UFCS还好
这个经历让我深刻的理解了《人月神话》的程序员与普通的A player,有什么思想的不同,并且让我专心为【人类可解释】探索边界。 🤗
用中文读代码,是一个【语法+视觉边界感】的设计问题,同时是一个【写比读难优化】的踩坑问题,而不只是词法和语序的替换。
这方面典型的负面案例,就是OOP和FP的始祖——Smalltalk、Lisp,可以拿 emojicode.org 的 say(🔤Hi!🔤) 来形容——对,读起来就是这种感觉。甚至你没有输入法。 许多 #PLT 人只知道词法语法,为了写个亲爱的parser用尽全身力气(写“虚拟机壳”),却不明白人眼人脑的【感知】。
语感差异在编程里,不是特别重要,尤其是不值得为了套皮而打乱语序。
比如 for x in 图表xs: 或 对xs里的x: ,我的选择是让所有套皮都基于数据流/管道感,for降级为函数,而不是制造分裂
类似的事情,其实决策并不是很容易。 😨
比如 OOP this 的写法(u参数),我近几年改了五版 (可能是黑历史了,但确实在全语言全文化killer诞生之前,都在纠结)
- 像Kotlin那样,给 class T{fun op} 和 extfun T.op; T.()->Res 分开的
- 去掉箭头类型,用 hex: [Int Str F.n1] 或 toHex: [Int Str F.u1] 区分函数vs方法的 (从typer的实现反向优化的语法设计)
- 在js里用 (1).[_ => toStr(16)] 希望在库层面实现改绑定到首参数_的,还希望把div(p())的DSL也绑上
- 认为3参可以用ABC指代,所以 F.u1 是 An 而 F.n1 是A的,那时还叫 F.n1 vs N1, F.An1 vs F.n1 ,还和vec2的N2(x,y)撞车……
- A,An反过来指代的。因为咱发现, f.map(x=>) 一旦x是对象就会多写"x." 索性it默认this。 这里有Groovy的一个坑
直到:咱发现 u=you, ur 的网络语言,以及,把list,map从各种玄学优化(addr,表,行..)改到统称为 are,am,isMounter(diff赋值) ,这段历史,才彻底结束。
现在的OOP就是纯粹的封装。任何叫u的参数都免前缀(BELT作用域-而非LEGB),全局用 imp.alert() 调,成了和Ruby一样的约定优于配置。
可以直接加 fun op(u: T) 当extfun,F.u1只是FFI提示,让 .let .run 的差异彻底成为历史,[1 2 3]?.(u=>u+1) 和are(*对象)没差别
——就只是this变成u,simple but lethal。 为了这一碟醋,就可以百搭一堆配套。就像现代安卓把安装页变成安装框那样,够脑残,但直接消灭一堆额外需求。let/run/apply/also/with,直接合并吞掉。
全局进 imp.,裸名不可能是全局;u 是有名字的参数,被内层遮蔽报错了,外层随时能改叫 x =>,或者干脆写 u.field——永远有逃生口; —— 但你不需要明白这些深奥逻辑,就能知道you,这是合理设计。BELT这个想法比UFCS还好
这个经历让我深刻的理解了《人月神话》的程序员与普通的A player,有什么思想的不同,并且让我专心为【人类可解释】探索边界。 🤗
duangsuse::Echo
(1+1=2),就像一个【扫码器和打印机】,人手两次塞进“1”的二维码,嗡一声,弹出一片 “2” 的码。
#js #design
这个设计对多态的理解还挺欠缺的,可以说,害人不浅
所以我就说是误解啊,{"user":"你好"}又不只是str值可用,tool和图文并排,都可以做
这种类似于 wtf_checkbox=1 的数据建模…… 但凡value长的像一个下拉菜单,都要考虑key是否有必要存在吧
msgs.filter(m => m.role === 'user') 不如
{ type: "click", x, y } 这种可以有 name、timestamp、id 的确实该判定 ."type" ,其他时候,还是直觉更重要
这也是“平铺统一记录”和“公共信封 + 变体载荷”的权衡:
serde 里那场老争论:外部标签 vs 内部标签,还有如何利用json的动态类型? Anthropic 的格式其实也没逃掉,只是把多态下放到了
🙉 或许有人认为,LLM event api 的核心又不是【数据类型】,而更像编排和Skill这些特性UIUX
vs 正统的垃圾
把我当成【方法参数】都不知道的傻逼。 真新手,也看不懂method何意味吧?
机器可以算而不必理解,人应该理解而不必实现。
接口究竟只是让机器接上,还是也要让人看懂、预测,并掌握它? 人上手不了的功能,放在那干嘛。
直到今天,在json动态类型的理解上,人们还不如bash的 flag vs option 清醒。 数据,键名,在我看来就是行为的名词化,但主流JSer只是为了RPC而序列化。
pyjs已经非常优秀了,可是dev还是设计不好状态和指令的接口。换成 java Go 只会更跌一个档次。 #PLT
材料优秀,并不会自动产生好的协议语言。不要为了让生成器少写几行代码,让每个使用者多做一遍语义编译。 😅
LLM们有再大的【隐藏层智能】,面对连发送队列、草稿防丢都不支持的【智能前端】,也会让人头疼。
优雅的心智模型(数据流)是一切的基础,
目前各家ChatUI和API都较难互通,一个文件访问也能锁死web版和Agent的护城河,也真是让人无语……
但是,e2e的退化,比如从单页到可选择的对话环境,重新引入元素、位置、事件、样式表.. ,就不再是token一把梭了,对前端是很大的考验。 至于怎么分解【选区】,怎么为项目适配,更需要经验和洞察力。
所以别总想着AIGC质量对标天花板,学习成本只要有手就行
[{"role": "user", "content": "你好"}]这个设计对多态的理解还挺欠缺的,可以说,害人不浅
[{"user":"你好"} ]{ user: [{ text: "这是什么" }, { image: "..." }] }
{ assistant: [{ text: "..." }, { tool_call: {...} }] }
{ tool: { id: "...", result: "..." } }所以我就说是误解啊,{"user":"你好"}又不只是str值可用,tool和图文并排,都可以做
这种类似于 wtf_checkbox=1 的数据建模…… 但凡value长的像一个下拉菜单,都要考虑key是否有必要存在吧
msgs.filter(m => m.role === 'user') 不如
msgs.filter(m => m.user?.let(u=>true) ) 可定制{ type: "click", x, y } 这种可以有 name、timestamp、id 的确实该判定 ."type" ,其他时候,还是直觉更重要
这也是“平铺统一记录”和“公共信封 + 变体载荷”的权衡:
{ id, timestamp, event: { click: { x, y } } } serde 里那场老争论:外部标签 vs 内部标签,还有如何利用json的动态类型? Anthropic 的格式其实也没逃掉,只是把多态下放到了
content[].type 里,上层还是 role 的谁在说话,以及内容块是什么。🙉 或许有人认为,LLM event api 的核心又不是【数据类型】,而更像编排和Skill这些特性UIUX
但其实,连最基础的语言(好比 .py, .md 的层面)都没有审美,上层应用更是会让人费解,心累。
{ append: { text: "你好" } }
{ replace: { range: [0, 2], text: "您好" } }
{ cancel: { id: "task-1" } }
{ cancelled: { id: "g1" } }vs 正统的垃圾
{
method: "update",
params: {
mode: "append",
target_type: "message",
content_type: "text",
value: "你好"
}
}把我当成【方法参数】都不知道的傻逼。 真新手,也看不懂method何意味吧?
机器可以算而不必理解,人应该理解而不必实现。
接口究竟只是让机器接上,还是也要让人看懂、预测,并掌握它? 人上手不了的功能,放在那干嘛。
直到今天,在json动态类型的理解上,人们还不如bash的 flag vs option 清醒。 数据,键名,在我看来就是行为的名词化,但主流JSer只是为了RPC而序列化。
pyjs已经非常优秀了,可是dev还是设计不好状态和指令的接口。换成 java Go 只会更跌一个档次。 #PLT
材料优秀,并不会自动产生好的协议语言。不要为了让生成器少写几行代码,让每个使用者多做一遍语义编译。 😅
LLM们有再大的【隐藏层智能】,面对连发送队列、草稿防丢都不支持的【智能前端】,也会让人头疼。
优雅的心智模型(数据流)是一切的基础,
目前各家ChatUI和API都较难互通,一个文件访问也能锁死web版和Agent的护城河,也真是让人无语……
现在都在讲,“少抽卡” ,而基石是【选区】的确立,ChatUI要知道哪错了,具体改几项
但是,e2e的退化,比如从单页到可选择的对话环境,重新引入元素、位置、事件、样式表.. ,就不再是token一把梭了,对前端是很大的考验。 至于怎么分解【选区】,怎么为项目适配,更需要经验和洞察力。
所以别总想着AIGC质量对标天花板,学习成本只要有手就行
duangsuse
这样的软件工程,真的早点毁灭吧。 端到端的优化AI也完全可以生成啊
哀悼细节的消逝
原文:https://purplesyringa.moe/blog/grieving-the-loss-of-details/
阅读时间:4 分钟
分数:481 🔥
#design
作者把机器看作身体的延伸
我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。 我是101% declarative ,完全自顶向下的思路
编程界的参差大抵如此
原文:https://purplesyringa.moe/blog/grieving-the-loss-of-details/
阅读时间:4 分钟
分数:481 🔥
#design
作者把机器看作身体的延伸
我却厌恶机械化的代码,【人体不是机箱外边的挂件】,觉得Emacs是个UX很差的操作系统。 我是101% declarative ,完全自顶向下的思路
编程界的参差大抵如此