duangsuse::Echo
可编程性就是从约定里来的
你们别看我经常写脚本,我的API思维没有被 #bash #py 带偏……🤔
给不懂开发的极客科普下「编程范式」的进化吧,比如说 C, Java, JS(Vue)和SQL
它们分别是 [面向过程POP] [面向对象OOP] [函数和关系式FP/Reactive]
#learn
三种范式,可以从语言学、指针宽度、类型广度 拆解比喻一下。
编程范式,就是看「如何把数据和代码绑在一起更好续写」? 实践上,语法和类型能够辅助思考。
Rust 是一个静态优化、支持预处理(码可揉)的OOP, 它的函数式能力不如pyJS,这是省略变量树GC的代价。
# 语言学: VSO,SVO,noVerb 🌐
以文件夹版本控制/网盘站 GitHub.com/:u/:repo 的 $ gh 工具为例
这个功能点所见即所得,那拿3种范式将其封装为函数。
坏处是无法管理多个账户,所以只能写写游戏脚本、按键精灵、爬虫。
很明显,这是因为账户和 $HOM/ 的配置文件耦合了,成为了 globalThis。把this配置参数化,我们不仅能多账号,还收获了json这种文档格式! C语言的 .o 对象,就缺乏局部键值,只有线程局部。
所以更OOP(但反直觉)的写法是:
OOP优秀的一点是调用链, Object也可以作为 context Subject 继续作联动(类似SQL JOIN)
不过,叠3层new就说明这框架不能用了,过度设计。
最后是FP,因为很多人高估了FP的语意,甚至用纯函数冗余来 “拉抬🐷价”,我要加个需求以彰显其意义:
login() 要支持OTP单次密码,而它必须在密码正确后才能输入,或者要多次重试…… 但 ()=>栏目答都能胜任:
FP对于 gh newRepo 这种业务也有加成,比如用 await Promise((ok,KO)=> callback=ok ) 自动回调化来避免嵌套的「闭包链表」,实现yield分块优化等等
假如,编程是让懒得点黑框框的人用电脑,元编程就是让看不懂花花代码的人用编程。 所以,编程范式的「组合穿搭」还是很重要的,并不是古生物学那样的冷门哲学
试想一下,如果就连框架作者、架构师用的语言和runtime你都知根知底, 你自己设计,或分析吐槽别人的作品,还困难吗? 基础领域并不是象牙塔,它与软件开发者的身心健康息息相关。
给不懂开发的极客科普下「编程范式」的进化吧,比如说 C, Java, JS(Vue)和SQL
它们分别是 [面向过程POP] [面向对象OOP] [函数和关系式FP/Reactive]
#learn
三种范式,可以从语言学、指针宽度、类型广度 拆解比喻一下。
编程范式,就是看「如何把数据和代码绑在一起更好续写」? 实践上,语法和类型能够辅助思考。
Rust 是一个静态优化、支持预处理(码可揉)的OOP, 它的函数式能力不如pyJS,这是省略变量树GC的代价。
# 语言学: VSO,SVO,noVerb 🌐
以文件夹版本控制/网盘站 GitHub.com/:u/:repo 的 $ gh 工具为例
gh login
gh new-repo $(rand).paradigm.org
这个功能点所见即所得,那拿3种范式将其封装为函数。
loginGh(id, secret): VO
newGhRepo(id): VSO
坏处是无法管理多个账户,所以只能写写游戏脚本、按键精灵、爬虫。
很明显,这是因为账户和 $HOM/ 的配置文件耦合了,成为了 globalThis。把this配置参数化,我们不仅能多账号,还收获了json这种文档格式! C语言的 .o 对象,就缺乏局部键值,只有线程局部。
gh=Gh.login(id,secret): SV
gh.newRepo: SVO
# 范式是跨语言的
(u= gh login root toor)=="gh badguy"
$u repo new (randProj)
这样才符合人类直觉: 不要光 call, 要 with 🥰
虽然他没有“优化掉”arg0(为全局 省字数),但因为全局是可以随便加的,class{} 键值是密封的,在开小号之外,我们又有了类型和补齐
所以更OOP(但反直觉)的写法是:
gh=Gh.new(id,secret): Snew
gh.Repo.new('jackass'): SnewO
Gh.static.setApiURL(): SgetsetO
这一条是不依赖登录的(静态函数)。
OOP优秀的一点是调用链, Object也可以作为 context Subject 继续作联动(类似SQL JOIN)
不过,叠3层new就说明这框架不能用了,过度设计。
最后是FP,因为很多人高估了FP的语意,甚至用纯函数冗余来 “拉抬🐷价”,我要加个需求以彰显其意义:
login() 要支持OTP单次密码,而它必须在密码正确后才能输入,或者要多次重试…… 但 ()=>栏目答都能胜任:
Gh.login(uid,secret, otp=> device._2fa.get(otp))
一般来说,FP 用户不会缺少对OOP的进阶理解,比如用 get(otp) 重载 db.otp.getKey(otp) 、用 atoi:Int=>[Int ValueError Mayfail],这种摘要性(或者说严谨)好的心智模型,而不是和JQ那样只懂起名和拼凑调用链的库一样。
Vue对单 ref() 多显示的理解也是靠起名无法实现的。
btw. 命名动词还是有意义的。 比如佐人经常区分「买」和「雇佣」,「赤字」和「借」,但事实上是一样的。 混淆视听会损失类比的空间。
FP对于 gh newRepo 这种业务也有加成,比如用 await Promise((ok,KO)=> callback=ok ) 自动回调化来避免嵌套的「闭包链表」,实现yield分块优化等等
# 指针宽度
指针就是超链接。 它的域名是你的内存,地址是一个64或32位的整数,有 rw, r, rx 三种经典鉴权段位。 对JVM和v8来说,并不是所有bit都用于标记一串byte元组(struct)的读写位置,至少x64上的void* 只有52个有效位。
C, Java, JS(Vue) 里本质上是指针(Any/interface{}类型) 的模型,信息量也不同。
C: 单个内存地址,比如x32就是2**32, 4G 随便存,x64就是天文数字 (但是没有意义,比如,连是 int, 普通struct, Umbrastr 都分不清,需要printf手写%d )
Java: this=data+funcs 双指针,把变量树和方法表存在一起,可以 override ,再比如用 args=Array[0:length] 取代 (argc,argv) 元组,也是头尾双指针
Vue: ref()= N个回调 多指针, 回调可用于赋值,可以随便组合数据与计算、业务逻辑;SQL外键同理,可以用于拆分表单,多处复用
# 类型系统
C: 基于sizeof,没有 range/str/list/kv(tuple set) 等(可变)容器, 没有 T::fun 等模块化
Java: 基于 obj.(type) ,类型存在于编译期和运行期,可以数据化(反射),可以像函数值字典的Builder一样写class{}
Vue: 因为领域不同,JS 更重视业务而不是可维护性。 类型只是IDE的工具,没有优劣,🤓 DOM 的宽广和稳固、框架的繁荣让JS无需类型即可安全高效
最后,在标志性「语言特性」上,自古以来是这样:
- biosC=x86nasm+函数和8种整数的超链接
- C=biosC+ld文件maps内存段+CPU分片 (作为"libc的JVM")
- PyJS=C+双指针和kw左值传参 [双指针fatPtr] ([len,] {type:}和{proto:{vtable}} {_树内硬链接refcount:0} 均占用16byte)
- FP=PyJS+单函数组合+正择解构再构 (谈UIUX框架,没有[轮询或卡线程pull]是evpoll&push、多监听取代不了的,只是,C的无闭包和while(1)死循环,禁止了回调链表新加异步栈)
假如,编程是让懒得点黑框框的人用电脑,元编程就是让看不懂花花代码的人用编程。 所以,编程范式的「组合穿搭」还是很重要的,并不是古生物学那样的冷门哲学
试想一下,如果就连框架作者、架构师用的语言和runtime你都知根知底, 你自己设计,或分析吐槽别人的作品,还困难吗? 基础领域并不是象牙塔,它与软件开发者的身心健康息息相关。
#dalao #py https://t.me/hyi0618/9612?comment=366
这个博客风格比较自由,没什么文字
AI对贡献者的定位不是幻觉,证据 https://docs.python.org/zh-cn/3/whatsnew/3.10.html#syntaxerrors
如果你细心的话,会发现这条News就是Pablo编辑的……😄 还有加速!
#tool 火焰图 https://www.speedscope.app/
这个博客风格比较自由,没什么文字
AI对贡献者的定位不是幻觉,证据 https://docs.python.org/zh-cn/3/whatsnew/3.10.html#syntaxerrors
如果你细心的话,会发现这条News就是Pablo编辑的……
LOAD_ATTR 指令会使用新的“单独操作码缓存”机制。对于常规属性大约会提速 36%,而对于槽位属性会加快 44%。(由 Pablo Galindo 和 Yury Selivanov 贡献于 bpo-42093 )
#tool 火焰图 https://www.speedscope.app/
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
dnaugsuz in yihong0618 和朋友们的频道 Chat
Pablo Galindo Salgado(用户名“pablogsal.com”)是开源社区中担任Python Steering Council(指导委员会)的成员,
他在Python社区的贡献包括改进CPython的错误消息系统(这在Python 3.10中得到突出体现),以及处理解析器和链接器问题等。
#py https://x.com/i/grok/share/VgS4Ige4ze75aMXB2f8KnS9y9
ps. 不要相信AI所谓Guido的话,它分不清什么是幻觉。 最后顺便问了一下三大生态的「可观测性」区别。
他在Python社区的贡献包括改进CPython的错误消息系统(这在Python 3.10中得到突出体现),以及处理解析器和链接器问题等。
#py https://x.com/i/grok/share/VgS4Ige4ze75aMXB2f8KnS9y9
ps. 不要相信AI所谓Guido的话,它分不清什么是幻觉。 最后顺便问了一下三大生态的「可观测性」区别。
duangsuse::Echo
apt不会做C语言包管理
#design #py 感觉 模块化、打包 是IT/CS里最困难的,就像那个 《计算机科学中最困难的事:居中
》😃
https://gemini.google.com/share/1f253e9b069c
https://gemini.google.com/share/9baa25b27084
#pingbk 打包地狱 https://gemini.google.com/share/ab90243ecdcb
- https://t.me/dsuse/21675, https://t.me/hyi0618/10604?comment=146991
—
https://nptr.cc/posts/2024-07/tonsky-blog-centering/
》
https://gemini.google.com/share/1f253e9b069c
https://gemini.google.com/share/9baa25b27084
#pingbk 打包地狱 https://gemini.google.com/share/ab90243ecdcb
- https://t.me/dsuse/21675, https://t.me/hyi0618/10604?comment=146991
—
https://nptr.cc/posts/2024-07/tonsky-blog-centering/
Please open Telegram to view this post
VIEW IN TELEGRAM
Gemini
Gemini - 编程语言的“形神兼具”美学
Created with Gemini
#plt #py 有时候
我只是在想,
或许Guido最厉害的优化是在脑子🤠里的JIT
这种编译优化不需要工作,只需要休息?
toml.io
#ai锐评 https://g.co/gemini/share/300a4ecb20d3
我只是在想,
或许Guido最厉害的优化是在脑子🤠里的JIT
这种编译优化不需要工作,只需要休息?
toml.io
#ai锐评 https://g.co/gemini/share/300a4ecb20d3
duangsuse::Echo
#PLT 我想吐槽 #Haskell 根生的可用性问题。f(1+1) 里int(2)的懒求值是蛤丝的“特点”,而 add=(\a \b a+b) 的强制“解耦合”是纯FP风俗,异曲同工 这是在制造“熵增”。 我们都知道 @autoclosure,即 f(1+1) 等效 f(lambda:1+1) 是Lazy<T>的必须(时间换空间,这是混淆求值阶段的代价),懒有什么好处呢? 允许自定义 if(Q,A,B) 和 and(A_or_break, B) “函数”?单子宏?这是在乱搞。 ((1)+1)==(1+1)…
在typer里,int(x)是用“类型占位符关系”,有损压缩,来把语义装在4GB以内的,这自然认不得值域,尤其是 a[i],i<len(a) 这样by-one的信息量 #py #java
求值要在离开【作用域/帧】之前。Monad IO() 的本质就是迟迟不运行,生成一个链表一样的玩意(JS里称其调用栈,Java叫它线程),这可不叫纯的世界,因为它的“延迟绑定”(Algebra Effects)早就被原型链和DSL淘汰了。
foldMap(和 >>=) 是什么?是一次性把程序用【范畴论】写对,喂给JVM去跑?瞎想。>>= 右侧的续延,是不可判定的,集合论不能预知用户内容(IO)的未来。纯函数就是一个编程届的“广义相对论”,是抽象废话,它走一步看一步,还不如AST树状图!
回到“递等式”的隐喻,其实 by value 与 by name(and dict),或Scala那个所谓的 by need(and T|null),那就像Lisp幼儿园时期的 capture avoiding 一样,根本搞错了目的。
(\x x+1) 和 (\x 1+x) 在树状图上看来是一样的吗?bash都知道这是 [:+ 1 $1],F10消耗一步找一条函数签名,(VM.atom :+) 的两边可能是str或int,
——不是"x"出现了1次,不是x在rsp-8,是x和1【会一起】GC,"x"和"x"【会一起】set,而它们算好后有“return地址”,只因为【公共子表达式是消除的】,这才是PLT。
eval/apply 的自然序没什么正确,除了“熵减”。求值秩序是个大问题,因为Monadic的一切和typeclass,都是从这种错误的哲学里边来的。
当一个Haskell程序员想做最简单的事——“先打印A,再打印B”,然后 IO () 的伪链表就【伟大】了。C'mon ,难道UNIX没告诉过你 SYS_write(1) 就是惰性消耗和call/cc的吗?而且,绝大部分libc用户都不知道。FPer知道“惰性”,所以他们不懂。
求值要在离开【作用域/帧】之前。Monad IO() 的本质就是迟迟不运行,生成一个链表一样的玩意(JS里称其调用栈,Java叫它线程),这可不叫纯的世界,因为它的“延迟绑定”(Algebra Effects)早就被原型链和DSL淘汰了。
foldMap(和 >>=) 是什么?是一次性把程序用【范畴论】写对,喂给JVM去跑?瞎想。>>= 右侧的续延,是不可判定的,集合论不能预知用户内容(IO)的未来。纯函数就是一个编程届的“广义相对论”,是抽象废话,它走一步看一步,还不如AST树状图!
蛤丝为何执着于 if(Q,A,B) 和 and 呢?因为他们根本不懂组合逻辑(DSL化)。答案就在问题里: @autoclosure,或者说 '() 和 ,() 宏,哪怕是yield和print(stdout PIPE时续延),这就是所谓的if和and:每一帧都有值,是帧可以“流动”。
回到“递等式”的隐喻,其实 by value 与 by name(and dict),或Scala那个所谓的 by need(and T|null),那就像Lisp幼儿园时期的 capture avoiding 一样,根本搞错了目的。
(\x x+1) 和 (\x 1+x) 在树状图上看来是一样的吗?bash都知道这是 [:+ 1 $1],F10消耗一步找一条函数签名,(VM.atom :+) 的两边可能是str或int,
——不是"x"出现了1次,不是x在rsp-8,是x和1【会一起】GC,"x"和"x"【会一起】set,而它们算好后有“return地址”,只因为【公共子表达式是消除的】,这才是PLT。
eval/apply 的自然序没什么正确,除了“熵减”。求值秩序是个大问题,因为Monadic的一切和typeclass,都是从这种错误的哲学里边来的。
当一个Haskell程序员想做最简单的事——“先打印A,再打印B”,然后 IO () 的伪链表就【伟大】了。C'mon ,难道UNIX没告诉过你 SYS_write(1) 就是惰性消耗和call/cc的吗?而且,绝大部分libc用户都不知道。FPer知道“惰性”,所以他们不懂。
函数其实像存读档一样简单,因为 ((1)+1)==(1+1) 本来就得证,你只是体验它。CSer,学会过这个吗? 🏫 👨💻
duangsuse::Echo
类型检查器都没见过,就开始元编程、写宏。现在计算机都开始纯数值怪了,一个AD 30行py都能写出来,永远落后一步
#py #code 微积分真是30行py就定义完了。用数学书教的那套文本替换,直接被淘汰。
怎么可能同时=0和不=0,就是有两个数同时算 😅
我的天,这还需要人教吗? 同时是和不是,波粒二象性、同时死和活,说明体系自己有毛病啊,还整出个lim和 ♾️
我没听过哪个ML或DSPer因为发明了【两个数同时算】而命名过定理的,不这么设计数制,公式就属于精分好吗。
还有集合论的 ZFC hack,真是🤡死了。哥德尔编码(元循环解释器)不去戳穿皇帝新装,还有罗素悖论,那么简单,就能把集合论的函数模型毁了,不就是说明概括公理很丑吗?
构造-解构和递归都没有算什么严谨啊? 就这,还指导计算机呢
都是赖在新手村装神弄鬼的,真的唐完了,i=√-1, C=2πr 多写几个字就看得出来没什么天才,就是物理世界「说的明白」的直觉。😅😅😅
他们的需求很容易被比喻: 看视频时,你需要dt=(1/60),占有限的权重,而下载或处理mp4时,你需要【一键看完】,所以要趋于无穷快。在离散微分里,这仅仅是单位1不同,但在数学上就悖论了
https://github.com/Kuri-su/yinwang.bak/blob/master/articles/数学和编程.md
怎么可能同时=0和不=0,就是有两个数同时算 😅
我的天,这还需要人教吗? 同时是和不是,波粒二象性、同时死和活,说明体系自己有毛病啊,还整出个lim和 ♾️
我没听过哪个ML或DSPer因为发明了【两个数同时算】而命名过定理的,不这么设计数制,公式就属于精分好吗。
还有集合论的 ZFC hack,真是🤡死了。哥德尔编码(元循环解释器)不去戳穿皇帝新装,还有罗素悖论,那么简单,就能把集合论的函数模型毁了,不就是说明概括公理很丑吗?
再多的公理堆砌,379页证明1+1=2,1行的理发师就把头给剃了,这说明世界认知的【出发点】脆弱不堪
每天 dy/dx, (a※b)(c※d) 真TM丑死我了,这ab又cd、三维ijk的有半毛钱关联性吗?留着是推理 f(x+1)-f(x) 的?自己数轴都不对(无穷微分的幻觉)。写成 D(x^2)=2x 直接发明Rust模式匹配和递归定义好吗
构造-解构和递归都没有算什么严谨啊? 就这,还指导计算机呢
都是赖在新手村装神弄鬼的,真的唐完了,i=√-1, C=2πr 多写几个字就看得出来没什么天才,就是物理世界「说的明白」的直觉。😅😅😅
他们的需求很容易被比喻: 看视频时,你需要dt=(1/60),占有限的权重,而下载或处理mp4时,你需要【一键看完】,所以要趋于无穷快。在离散微分里,这仅仅是单位1不同,但在数学上就悖论了
离散就是有全局变量d的连续,非线性的基石是二次型,不是正确的N阶导废话,π前也不该粘上2,1 turn(1τ)是整体事件
能把圆周率、距离平方和vec2砍成一半(τ/2, d2, sin cos) 还出了【悖论】的高数也真是【宇宙的母语】了。服了。
https://github.com/Kuri-su/yinwang.bak/blob/master/articles/数学和编程.md
https://themackabu.dev/blog/js-in-one-month #dalao #ce 兽圈聚聚多啊
花了10分钟看文,看完后才发现他是从parser开始写的(BDWGC+libuv+computed goto for FFI/动态链接),最初通过jszoo suite 用了一个月2MB,现在已经能完整支持npm平台要求的API 9MB
> The manual free-list GC was disabled and enabled hundreds of times, each attempt breaking another core part... everything was breaking when I added JSON support.
他甚至手写了一个Trie关键词高亮.. https://github.com/theMackabu/ant/blob/master/src/highlight/iter.c#L33
新一代真是Lua.so都能随便写出来了
😱
https://yuk1i.github.io/os-next-docs/lab/lab2/ 这个又是手搓内核的
#py https://moelove.info/2017/10/21/当执行-python-xxx-py-时-CPython-到底做了什么/
#rust
#selected 这个大哥的博客真不错,写了很多科普的文章。
https://luoyuxia.github.io/archives/
https://luoyuxia.github.io/posts/rust用链表理解所有权借用与-unsafe/
#win https://blog.batkiz.com/posts/talk-about-scoop/ winget !
https://blog.batkiz.com/posts/software-on-my-computer/
花了10分钟看文,看完后才发现他是从parser开始写的(BDWGC+libuv+computed goto for FFI/动态链接),最初通过jszoo suite 用了一个月2MB,现在已经能完整支持npm平台要求的API 9MB
> The manual free-list GC was disabled and enabled hundreds of times, each attempt breaking another core part... everything was breaking when I added JSON support.
他甚至手写了一个Trie关键词高亮.. https://github.com/theMackabu/ant/blob/master/src/highlight/iter.c#L33
新一代真是Lua.so都能随便写出来了
IT 界经久不衰的都市传说:永远不要轻易质疑头像带兽耳的开发者的代码能力。
😱
https://yuk1i.github.io/os-next-docs/lab/lab2/ 这个又是手搓内核的
#py https://moelove.info/2017/10/21/当执行-python-xxx-py-时-CPython-到底做了什么/
#rust
#selected 这个大哥的博客真不错,写了很多科普的文章。
https://luoyuxia.github.io/archives/
https://luoyuxia.github.io/posts/rust用链表理解所有权借用与-unsafe/
#win https://blog.batkiz.com/posts/talk-about-scoop/ winget !
https://blog.batkiz.com/posts/software-on-my-computer/
themackabu.dev
building a javascript runtime in one month | themackabu.dev
TLDR: I built Ant, a tiny (2MB) JavaScript runtime. You can find the full source code alongside tests and documentation on my GitHub...
#py #ai Bub is a tiny runtime for agents that live alongside people.
~200 lines of core code. Hooks reshape every turn stage. Tapes record every decision. Channels adapt to any surface — CLI, Telegram, or your own.
一个用只增Tape管理AI记忆的IM2LLM服务
bub 是我们在超级全家桶和纯 vibe 定制中间寻找的一个解决方案
——Frost Ming
~200 lines of core code. Hooks reshape every turn stage. Tapes record every decision. Channels adapt to any surface — CLI, Telegram, or your own.
一个用只增Tape管理AI记忆的IM2LLM服务
bub 是我们在超级全家桶和纯 vibe 定制中间寻找的一个解决方案
——Frost Ming
- 难道说我在既有 Tape as a Service 的情况下,只要100行代码,就能让我的 agent 接入 bub ,然后让 IM 群聊复用现有的数据吗 ?!
- 给 @bubdotbuild 加上了企业微信的 Channel,现在上班摸鱼有新搭子了😉
- 一个类似于 Cloud Code 一样的通用 Agent 框架……使用 bub 作为一个 build block 构建你自己的 agent 产品、服务你的业务,而不是学习复杂的概念然后无从下手。 https://bub.build/
duangsuse::Echo
当时我正在批判中文编程(形式语言设计)的弊病,声称《十八个文言虚词》里,“冯诺曼世界”能用的不到一半,最宝贵的 mapOf(1 to 2).into(dns.kv) 这样的高自然度都丢了。
结果这几天就光搁着批判了, 自己是什么德行呢 😅 #py
批了这个批那个,结果啥都没干成
考虑到80%的人即便有法学博士辅助也【看不懂】,以及【不在乎】这些内容……
🗓 我可能应该悦纳一个poll Agent 有没有Idle然后自动输入“请继续”的,这种项目,或者缅怀自己没有当站长的那个时代
开个玩笑。我应该学会与这种常态相处 ——但我没有资本像王垠或ice1k那样自命不凡,我甚至 “反对” 学阀,这也挺悲哀的。
当我意识到,《Lua设计与实现》里根本没有理解backpatch链表,而我的理解,【看起来称不上底层】时,就像上面的“信达雅中文”那样儿戏, 我是否该感到孤独?或者无聊? 或者我要请Fable来判断它们是否有前途??
我可懒得当《皇帝的新装》里的孩子,而且就我对手搓代码的爱好,也“没资格”
编程或技术/范式的风格,对我来说,甚至不是《朝闻道》。我否定我行业的、苦劳的价值。 CS+PLT 对我而言,是否只是另一种黑话、或无价值的习惯? 是 Just4fun 那样简单?
😟 即便make出可安装的工程又如何? cloudwindy 没有通过SS协议得到什么,甚至情绪价值,也只是得到一位贡献者朋友。 很感谢经常来这里投稿的密码学朋友~
就像bash三三两两的维护者,就连那些抱怨【只有我】的人,他们的情况大概比我好的多
就像iseki说的, #tg 只被我当作个人草稿箱。无论是不是在这里刷板,干扰许多人,锐评各种【大家都玩的很好】的软件?
如果以后,转向游戏开发和MOD,或许会更快乐?
但在此之前,请允许我以身入局改变软件工程的一些弊病。
Guido坚决拒绝多行 lambda是完全可理解的。实际上lambda以这个特别长的词的方法引入,本身也被吐槽
为什么不是 map({(u), x:=u+1, x}, [1,2]) 或 for u in map_on([1,2]): OK(u+1); for ev in div.on("click"): go() 呢? 虽然符号化但不难理解,因为有一致性。
但Guido根本不懂。Kotlin用的很好(只要在命名准确且一致的情况下,比如不能run also apply大杂烩),完爆他的认知
Python就算在仿照Excel上无可指摘,但lambda与组合子的 Killer feature(只要“愚笨”的使用),是他体会不到的。
@lambda f: map(f,..) def res(): 的结构完全不够用(最为小丑的 with lock: 证明了这点),[for if] 的生命力被高估了,即便是在pandas中,Kt的组合子在部分场景仍更加顺手
在 Guido 看来,控制流(循环、分支、异常)必须是中央集权的,他不明白程序只有语意和Flow而已,for break的寥寥无几的样板早该淘汰了
for的Non-local Return不能map_on?为什么要写return?而且kt可没被这个难倒,甚至还把break/cont一同干掉了,而且没有产生Guido害怕的魔法
with和async支持一点也不好看,尤其是那个在DSL上还输给infix fun的tuple返回支持。海象运算符 :=(PEP 572) 打那么久纯属自己没出过舒适区。
A,B=B,A 一行 A=(B.also {B=A}) 就解决了,KV迭代用forEach/assoc 就完美双向兼容,py和lua为它操碎了心,简直小丑到爆。 函数染色么?如果我祭出 yield await ,这些不支持Signal的语言该作何解答?
Kotlin也有UB的小问题( listOf(break, continue@wtf, return 1) is Any ),但牺牲这些换来扩展性,都不算事
碰到Closure的语法配套,Guido还可以用Zen搪塞掉,碰到 Events+async 他怎么跳?这回也是拿Obivous来搪塞吗? Closure和Event必须一起支持,否则就和Qt信号那样被React信号搞过时。
至今ES6的 async iter 不是基于Signal和go func,而py就更拉了,甚至有 timer(lambda i=i: 的反直觉bug)
--
你没有搞懂我的片段。 div.on(.. ev=>{}) 是典型的语句块注册,所以,这里的for已经完全被夺舍了,而原本的for可以缩进 for..in all([]): 模式
我没有要和py标准杠的意思,这是我的互联脚本运行时的ast补丁,也支持 for x[:int] 等现代特性。 提出,作为一种对比,很快你就会知道Guido并没能通过拒绝FP来跳过扩展性问题。
之前设计是 out=onNum(0, {(x), x+1}), 即 for x[:int] in onNum(0) @out: OK(x+1)
多块参数不可支持(for else 有两个但语义错)。 return和嵌套OK之类直接禁用好了。又不是不能用raise-catch,这是10%的情况,为什么对【理论上存在的东西】就如此病态呢? 我没有要全部用【栈上函数值】的方法实现
if-elif-else 转为 with-ifs-ifOK (默认多路避免elif); match x 为 with x in ways, @outVar: (换掉冗长的case、和js互文) 这些也是部分修改。跑题了。
批了这个批那个,结果啥都没干成
考虑到80%的人即便有法学博士辅助也【看不懂】,以及【不在乎】这些内容……
🗓 我可能应该悦纳一个poll Agent 有没有Idle然后自动输入“请继续”的,这种项目,或者缅怀自己没有当站长的那个时代
开个玩笑。我应该学会与这种常态相处 ——但我没有资本像王垠或ice1k那样自命不凡,我甚至 “反对” 学阀,这也挺悲哀的。
当我意识到,《Lua设计与实现》里根本没有理解backpatch链表,而我的理解,【看起来称不上底层】时,就像上面的“信达雅中文”那样儿戏, 我是否该感到孤独?或者无聊? 或者我要请Fable来判断它们是否有前途??
我可懒得当《皇帝的新装》里的孩子,而且就我对手搓代码的爱好,也“没资格”
编程或技术/范式的风格,对我来说,甚至不是《朝闻道》。我否定我行业的、苦劳的价值。 CS+PLT 对我而言,是否只是另一种黑话、或无价值的习惯? 是 Just4fun 那样简单?
😟 即便make出可安装的工程又如何? cloudwindy 没有通过SS协议得到什么,甚至情绪价值,也只是得到一位贡献者朋友。 很感谢经常来这里投稿的密码学朋友~
我不追求【像】内行,也不追求对【所有】编程者有效,别人眼里——可能就是像bash补全那样的鸡肋吧。
“蕊括深recursion” “栏目答Lambda” 一般画风的软件体系,恐怕,正如“偶醒刻async”一词,它既不名也不动,夹在中间。 它们不适合放在README,放在guide里又屈才。你要先否决掉你的身份,才能明白为什么要。
为了理论,你要放弃理论家的身份。偏偏我从没自称过懂理论。
就像bash三三两两的维护者,就连那些抱怨【只有我】的人,他们的情况大概比我好的多
我并非完全不在意…… 但我不会改变吧。
就像iseki说的, #tg 只被我当作个人草稿箱。无论是不是在这里刷板,干扰许多人,锐评各种【大家都玩的很好】的软件?
如果以后,转向游戏开发和MOD,或许会更快乐?
但在此之前,请允许我以身入局改变软件工程的一些弊病。
今日份的豆酱
请冷静地听我说: Nmap已经是29年前的端口扫描器了 Wireshark已经是28年前的抓包工具了 Burp Suite已经是23年前的渗透工具了 sqlmap已经是20年前的注入工具 Cobalt Strike已经是14年前的C2平台了 Kali Linux已经是13年前的渗透测试系 WannaCry已经是9年前的勒索软件 Log4Shell已经是5年前的漏洞
#security #bash
nmap 比你还老,甚至《黑客帝国2》里崔妮蒂用它黑电网都已经是 23 年前(2003)的镜头了。
IDA Pro 已经是 35 年前的反汇编器了(1991)
Ghidra 都已经是 7 年前开源的了(2019)
Metasploit 已经是 23 年前的框架了(2003)
Aircrack-ng 已经是 20 年前的 WiFi 破解工具了(2006)
Hashcat 已经是 17 年前的了(2009)
CVE 编号体系已经运行 27 年了(1999)
Heartbleed、Shellshock 已经是 12 年前的了(2014)
永恒之蓝 / Struts2 S2-045 和 WannaCry 同岁,9 年了(2017)
EternalBlue 已经是 9 年前泄露的 NSA 武器了
Log4Shell 已经是 5 年前(2021)的核弹了
Meltdown / Spectre 已经是 8 年前的了(2018)
熊猫烧香已经是 20 年前的病毒了(2006)
漏洞类型还是那几个——注入、反序列化、越权、弱口令
但是你仍然能用 binwalk; photorec; Recuva,当然能用 #reveng,用修改器、备份工具或 “资源盗录”,只是它们也没有以前那样强大了。 逆向工程显得不值,一部分是AI辅助原型与二开的好原因,也是因为AI短视频已经足够占用精力
MT管理器和AutoJS已经一口价几百了,没有资源社区的开源“砖头App”终究会消散。
==
在2023/2024年,破解一个1999年的512位RSA根密钥,成本 = 一台高端台式机 + 约30小时的运行时间。 https://t.me/hacker_news_zh/24624
#dalao CMake UI https://nullprogram.com/blog/2026/04/07/
#reveng https://github.com/corkami/pics
#py https://www.dabeaz.com/tutorials.html
nmap 比你还老,甚至《黑客帝国2》里崔妮蒂用它黑电网都已经是 23 年前(2003)的镜头了。
IDA Pro 已经是 35 年前的反汇编器了(1991)
Ghidra 都已经是 7 年前开源的了(2019)
Metasploit 已经是 23 年前的框架了(2003)
Aircrack-ng 已经是 20 年前的 WiFi 破解工具了(2006)
Hashcat 已经是 17 年前的了(2009)
CVE 编号体系已经运行 27 年了(1999)
Heartbleed、Shellshock 已经是 12 年前的了(2014)
永恒之蓝 / Struts2 S2-045 和 WannaCry 同岁,9 年了(2017)
EternalBlue 已经是 9 年前泄露的 NSA 武器了
Log4Shell 已经是 5 年前(2021)的核弹了
Meltdown / Spectre 已经是 8 年前的了(2018)
熊猫烧香已经是 20 年前的病毒了(2006)
漏洞类型还是那几个——注入、反序列化、越权、弱口令
但是你仍然能用 binwalk; photorec; Recuva,当然能用 #reveng,用修改器、备份工具或 “资源盗录”,只是它们也没有以前那样强大了。 逆向工程显得不值,一部分是AI辅助原型与二开的好原因,也是因为AI短视频已经足够占用精力
MT管理器和AutoJS已经一口价几百了,没有资源社区的开源“砖头App”终究会消散。
==
在2023/2024年,破解一个1999年的512位RSA根密钥,成本 = 一台高端台式机 + 约30小时的运行时间。 https://t.me/hacker_news_zh/24624
#dalao CMake UI https://nullprogram.com/blog/2026/04/07/
#reveng https://github.com/corkami/pics
#py https://www.dabeaz.com/tutorials.html
duangsuse
哈哈哈,想起来我以前也写过硬字幕OCR的workflow,还被人开email“骚扰”过 ./extract_subtitles.py -crop '0(907,940)[101,77]' -lang eng a.flv https://github.com/duangsuse-valid-projects/extract-subtitles 仔细想想,ML世界的API都比较好调用,甚至比“传统编程”的函式库/工具包好用多了 #dev 这一点接口一致性上,反而是ML和DSP/游戏开发领域的无敌了,现代前端相比来说差很远。
#ai锐评 #py #code
继续【震惊跌坐】
AI弹指间就把几年前写的【视频硬字幕高缓存OCR】【扒的底裤都不剩】
它还把仓库【打开对过】,谷歌的则和地图选点、yt视频有深度集成,IDE都不用安装的可怕
😋 虽然,从P1右下角就能看出,我的代码质量还是在理的, 但如果我故意写成 【咦咦呜呜,哇呀呀呀】的样子,grok照样瞬间剃掉所有私货,没收作案工具
也还是「两帧相减、求和、取局部极大、选语言 OCR」。控制流就一条:读帧、裁、差分、峰值、识别、按相似度折叠。
它还批判我 “真正值得叫缓存的是:OCR 结果按感知哈希(pHash/dHash)建索引,画面重复直接查表不跑模型,不是改了一个字的相邻条。”
btw. 这个 py flow 也是我重构别人的,虽然确实学会了怎么写flow
继续【震惊跌坐】
AI弹指间就把几年前写的【视频硬字幕高缓存OCR】【扒的底裤都不剩】
它还把仓库【打开对过】,谷歌的则和地图选点、yt视频有深度集成,IDE都不用安装的可怕
😋 虽然,从P1右下角就能看出,我的代码质量还是在理的, 但如果我故意写成 【咦咦呜呜,哇呀呀呀】的样子,grok照样瞬间剃掉所有私货,没收作案工具
也还是「两帧相减、求和、取局部极大、选语言 OCR」。控制流就一条:读帧、裁、差分、峰值、识别、按相似度折叠。
它还批判我 “真正值得叫缓存的是:OCR 结果按感知哈希(pHash/dHash)建索引,画面重复直接查表不跑模型,不是改了一个字的相邻条。”
btw. 这个 py flow 也是我重构别人的,虽然确实学会了怎么写flow
Forwarded from duangsuse
Daniel Lemire's blog
Parsing JSON at tens of gigabytes per second… in Python
Python used to have limited parallelism, due to its global interpreter lock (GIL). Only one thread could run Python code at a time. Python 3.14 comes in a free-threaded version (python3.14t), without the global interpreter lock. Several threads can now run…
Daniel Lemire's blog
Parsing JSON at tens of gigabytes per second… in Python
source #py #perf
我突然觉得释然了。 为了屎山codebase能“免费”提升它们从来用不到的吞吐量, 许多人真的会给母猪上唇膏并且开始f...它了
JSON,在>80%应用里,是一个连 [{},] 的excel模式和 {_5args: true} 都没有优化的格式,甚至也没有约定 {Duck:} {Cat:{arg:"wtf"}} 的type多态。
在我眼里,这就像一个逆向工程工具看不懂libc,或运维panel不会用 -k v 参数理解bash接口那样, 但是,它偏偏很快。
他们宁愿在端到端上,投入无数奇技淫巧的精力,也不愿意像CBOR(预训练字典)或flatbuf一样,提供一套新的、协议化的,是【对人类有意义】的选择,从一开始就没有这些跳空格 s.indexOf("\"") 的问题, 甚至是让JSON兼容一下csv模式,而不是 [{},] 的无效重复AoS
如果一开始就基于flatbuf+js Proxy 或tg的TL这样的心智模型(从原理上就更好优化), 这些文章里90%的概念可能根本没必要提出。 以后就连AI也会在JSON这样连Excel CSV 都不会压缩的【最佳兼容性实践】上,继续搭建吧
预训练字典和SoA/AoS变换,可以说是通用性相当好的选择。 就像对于Electron的体积,像./gradlew那样【用到时再下载】是更好的理解。 但是,他们一直在两个极端之间吊着。
这样的软件工程,真的早点毁灭吧。 端到端的优化AI也完全可以生成啊
Parsing JSON at tens of gigabytes per second… in Python
source #py #perf
我突然觉得释然了。 为了屎山codebase能“免费”提升它们从来用不到的吞吐量,
JSON,在>80%应用里,是一个连 [{},] 的excel模式和 {_5args: true} 都没有优化的格式,甚至也没有约定 {Duck:} {Cat:{arg:"wtf"}} 的type多态。
在我眼里,这就像一个逆向工程工具看不懂libc,或运维panel不会用 -k v 参数理解bash接口那样, 但是,它偏偏很快。
他们宁愿在端到端上,投入无数奇技淫巧的精力,也不愿意像CBOR(预训练字典)或flatbuf一样,提供一套新的、协议化的,是【对人类有意义】的选择,从一开始就没有这些跳空格 s.indexOf("\"") 的问题, 甚至是让JSON兼容一下csv模式,而不是 [{},] 的无效重复AoS
如果一开始就基于flatbuf+js Proxy 或tg的TL这样的心智模型(从原理上就更好优化), 这些文章里90%的概念可能根本没必要提出。 以后就连AI也会在JSON这样连Excel CSV 都不会压缩的【最佳兼容性实践】上,继续搭建吧
预训练字典和SoA/AoS变换,可以说是通用性相当好的选择。 就像对于Electron的体积,像./gradlew那样【用到时再下载】是更好的理解。 但是,他们一直在两个极端之间吊着。
这样的软件工程,真的早点毁灭吧。 端到端的优化AI也完全可以生成啊
"给母猪上唇膏"这个比喻不是针对simdjson,而是在问,为什么RPC问题里最最基本的子部分(比如csv),
想要压缩+提速,需要端到端(人类不可介入)的优化?做在与 TLS 平级的层面不行? py/js dict 和元编程的层面呢?分出【测试100%覆率期】和高效运行期? 这些都不需要很大精力,明显比榨干最后一个cycle和L1 cache,少多了,而且更加可控。
但是,他们还是愿意做这样的,无需理解任何新决策、新协议、新flow,未来连AI都可以loop的JSON.parse单函数优化。
对A\ 5.1: 你还是不明白。 我说的是指理论上的,你一直在提Proxy这些实现问题,哪怕我在编译期Proxy又怎么样呢
至于HPACK的问题,分出"测试期"和"高效运行期",我是指【C/S管道】本身要有字典训练命令。你还是不理解
duangsuse::Echo
🤔 半成品。 而且差一个Landing page,我也打算用Omarchy风格
This media is not supported in your browser
VIEW IN TELEGRAM
#js #py 现在知道产品页怎么做了
https://codepen.io/editor/duangsuz/pen/01a164e3-fb16-7a1a-b459-dce493c8e63a?orientation=left&panel=false&show=preview
zig只做事件源,90%技术栈切换为mpy+xterm.js ,让CC自己给CC做一个傻逼dummy Chat ,然后直接丝滑小连招
这才是真正的云原生啊 😋 真棒! 肯定能奏效
#vibe sonnet 砍5刀就帮我PoC了更好的。 JOJO: 只要往前走,道路就会向前沿伸!
https://codepen.io/editor/duangsuz/pen/01a164e3-fb16-7a1a-b459-dce493c8e63a?orientation=left&panel=false&show=preview
zig只做事件源,90%技术栈切换为mpy+xterm.js ,让CC自己给CC做一个傻逼dummy Chat ,然后直接丝滑小连招
npx cld-pi 这才是真正的云原生啊 😋 真棒! 肯定能奏效
#vibe sonnet 砍5刀就帮我PoC了更好的。 JOJO: 只要往前走,道路就会向前沿伸!