Forwarded from Solidot
中国基本未受到 Crowdstrike 事件的影响
2024-07-22 15:06 by 暗影徘徊
上周五,全世界大部分地区都在应对至今 IT 史上最严重的安全事故,但有一个国家基本未受到影响:中国。原因十分简单,Crowdstrike 的安全软件在中国基本无人用。很少有中国机构会购买美国的安全软件,中国对微软的依赖程度也没有其它地区高,阿里巴巴、腾讯和华为是主要的云服务商。因此遭遇 Crowdstrike 蓝屏死机事件的主要是在华外企或组织,根据社交媒体上的信息,中国用户报告无法入住喜来登、万豪和凯悦等国际连锁酒店。网络安全专家 Josh Kennedy White 称,微软通过其本地合作伙伴世纪互联在中国开展业务,世纪互联的基础设施独立于微软在全球的基础设施。这种设置使得中国的基本服务如银行和航空免受全球干扰。
https://www.bbc.com/news/articles/c3g01y047pdo
#安全
2024-07-22 15:06 by 暗影徘徊
上周五,全世界大部分地区都在应对至今 IT 史上最严重的安全事故,但有一个国家基本未受到影响:中国。原因十分简单,Crowdstrike 的安全软件在中国基本无人用。很少有中国机构会购买美国的安全软件,中国对微软的依赖程度也没有其它地区高,阿里巴巴、腾讯和华为是主要的云服务商。因此遭遇 Crowdstrike 蓝屏死机事件的主要是在华外企或组织,根据社交媒体上的信息,中国用户报告无法入住喜来登、万豪和凯悦等国际连锁酒店。网络安全专家 Josh Kennedy White 称,微软通过其本地合作伙伴世纪互联在中国开展业务,世纪互联的基础设施独立于微软在全球的基础设施。这种设置使得中国的基本服务如银行和航空免受全球干扰。
https://www.bbc.com/news/articles/c3g01y047pdo
#安全
Forwarded from Manjusaka 的碎碎念(以及摇曳露营 S4 制作确定!)
https://github.com/rui314/chibicc
安利个东西,这个库用核心 6k 行左右的 C 语言实现了一个完整可以自举的 C 编译器(编译 git/sqlite 也能过测试), Commit Message 写的非常牛逼,每个 commit 都是一个完整的 bug free 的功能叠加。有兴趣的可以看一下
安利个东西,这个库用核心 6k 行左右的 C 语言实现了一个完整可以自举的 C 编译器(编译 git/sqlite 也能过测试), Commit Message 写的非常牛逼,每个 commit 都是一个完整的 bug free 的功能叠加。有兴趣的可以看一下
GitHub
GitHub - rui314/chibicc: A small C compiler
A small C compiler. Contribute to rui314/chibicc development by creating an account on GitHub.
Forwarded from Solidot
谁写了臭名昭著的蓝屏死机代码?
2024-07-22 19:58 by 洛基启示录
谁写了臭名昭著的蓝屏死机代码?微软资深软件工程师、《The Old New Thing》作者 Raymond Chen 在 2014 年表示,前 CEO 鲍尔默(Steve Ballmer)为 Windows 3.1 的 Ctrl+Alt+Del 对话框撰写了文本。这一说法随后被传成了鲍尔默是蓝屏死机的发明者。Raymond Chen 后来澄清鲍尔默没有撰写蓝屏死机的文本,他表示自己对蓝屏死机负有部分责任,蓝屏死机相关代码一度被移除,而 Chen 在 Windows 95 中又重新添加了进去,他说自己是最后修改的人。那么谁是最早写蓝屏死机代码的?2021 年前微软开发者 Dave Plumme 称,蓝屏死机之父是微软开发者 John Vert,他在 Windows 3.1 中编写了相关代码,之所以选择蓝屏是因为他常用的编辑器 SlickEdit 就是以蓝色背景展示白色文本。
https://tech.slashdot.org/story/24/07/21/0135205/who-wrote-the-code-for-windows-blue-screen-of-death
#微软
2024-07-22 19:58 by 洛基启示录
谁写了臭名昭著的蓝屏死机代码?微软资深软件工程师、《The Old New Thing》作者 Raymond Chen 在 2014 年表示,前 CEO 鲍尔默(Steve Ballmer)为 Windows 3.1 的 Ctrl+Alt+Del 对话框撰写了文本。这一说法随后被传成了鲍尔默是蓝屏死机的发明者。Raymond Chen 后来澄清鲍尔默没有撰写蓝屏死机的文本,他表示自己对蓝屏死机负有部分责任,蓝屏死机相关代码一度被移除,而 Chen 在 Windows 95 中又重新添加了进去,他说自己是最后修改的人。那么谁是最早写蓝屏死机代码的?2021 年前微软开发者 Dave Plumme 称,蓝屏死机之父是微软开发者 John Vert,他在 Windows 3.1 中编写了相关代码,之所以选择蓝屏是因为他常用的编辑器 SlickEdit 就是以蓝色背景展示白色文本。
https://tech.slashdot.org/story/24/07/21/0135205/who-wrote-the-code-for-windows-blue-screen-of-death
#微软
score To.b8(100) #bytes8 i64
name "仓颉"
- task -index(0L) as: dd=index #debug disp
wg CoPU.waitN #lock1, atom(0)..
(0~4):(index)
wg+CPU.add: task(index)
wg()
(0~40).forks(4, Sum.ln, CPU.fadd:(x) dd=x.0/10, 666)==[666]^4
cnt: count 0
w1 CoPU.lock1
(0~1k): CPU add:
w1: count{+1} #synchronized
?? Row
Rectangle -width-height(0L 0L)
- area as: width height
?? Flyable
- fly
?? Flyable #去掉这行变sealed
Bird()
- fly say:'Bird flying'
?? Row
Article()
-titleValue Cnt("")
-title Cnt{titleValue}: titleValue=An
?? RMem #类似函数值,只允许 a.Str, RMem.eq(a,b)
Rect --w-h(. 0L) #可选参数、类型按参数名
- area() 1w 1h
?? To.s
- printSize say:'The size is {N}'
?? IPay
- pay “?” #- pay To.s
?? Row IPay
USD -n(cnt 0.) #可变的列
- pay "${n}"
Order -payment(IPay) #对代理的重写
- pay "In-order {An^1.pay}"
?? HasArea
- area To.n
?? IDraw
- draw -g(Geo2D)
?? Shape IDraw HasArea fn?? #强行插入为接口+构造器
Square()
- area 100
- draw -g as: g.text("wtf") N2(50 50),
#plt #design 把 仓颉 的示例拿最新河图重写下 http://www.bilibili.com/video/BV1YE421A7np
现在单字符已经成为政治正确了😅
幸好,设计了 To.s 这样避免画风突变,以及策划了.pyl 洛书采用原有类型名
单字类型的好处是,非常统一,在js里能用只有一俩字不同的表达式
这样,无论在什么语言里,我的范式都是不必重新学的
我还挺需要“正常化”这些为电脑做牛马的人类编程语言了,只需约法三章:
允许块调用(){}{}: 即匿名def:(x-y str int)的装饰器,并让:_x=arg0.x,允许省略[]{}的:,
启用bash调用赋值链,即 x_1 [1x 2].0; git help() init(); vars: n 0。 a x 2; 应被自动sed为 a=[x, 2]
为小写类型支持typefns.range.as等、让f'{x}'等于f(['', ''],x),这样就能通过库跨语言粘贴简单的逻辑
inc(0,9):(i)
i%2==0: say: f'{i} even'
Bilibili
编程简史:仓颉-最爱Shift键的语言_哔哩哔哩_bilibili
2024年6月21日,华为开发者大会上,华为首次公开发布仓颉编程语言。主打全场景、高性能、强安全以及原生智能化。这是第一个真正意义上的国产编程语言..., 视频播放量 65333、弹幕量 395、点赞数 1690、投硬币枚数 173、收藏人数 619、转发人数 195, 视频作者 织点代码, 作者简介 织个点,然后撬动星球,相关视频:【尚学堂】仓颉编程语言,仓颉零基础视频教学,从入门到精通,学习仓颉编程语言,一套就够了!,⚡️零基础入门学习「仓颉」编程语言⚡️,有了华为“仓颉”语言,就是中文编程的天下了…
duangsuse: #kt #book 元编程
http://www.bilibili.com/video/BV1XH4y1w7mT
https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf
https://weread.qq.com/web/reader/f7632a00813ab82d6g017b14ke4d32d5015e4da3b7fbb1fa
可以一起读
虽然我不觉得这点值65😊
如果numpy那种API/DSL都设计不出来
修改class的结构也只是给开发者们徒增烦恼罢了
举个例子,此章节的 gh/user/_name
如果只是把它当成URL路径,需要绑定,显然造成代码重复,与元编程的本意违背
而如果像 import fire 那样,知道URL的本质是class路径与def GET,POST等,也就是另一种CLI调用
就不需要写什么注解和函数名
甚至模块化都省了,一个文件足矣
不过是修理servlet.xml繁琐和不支持argbind和的“弱类型”问题
但何必要制造那么多问题呢?sql,http,那么简单的工具还用学
#parser #learn
说起来,AST也就是多方法的 ()->Any 而已
你甚至可以把方法名enum化,从而完全避免使用class
例如 sum(L(1), L(2)) ()==3 只需要两个fun
Object Algebra.. 嘛,用虚表override取代if,稍微快点,只是要parse两次
至于在js里,我一般用 [[JSON ',' +] '()' /] 这样的模式写ast
描述 (1, 2, 3) 这种正则
甚至连函数式都没用到。 数据结构本身就蕴含了for if流控,运算符重载本身就是编程语言
不需要任何范式来实现他们,“数据结构与程序语意直观对应”,这就是CS。
这……应该是一件很难听懂的东西吗? 为什么DSL都设计得那么刻意和拉垮?
甚至,构造函数也应该取代class{} 或tuple才对,为什么把参数传递到堆而不是栈里,就需要写所谓的struct? 它们都是把args打包复用而已
为什么把yield 外提为语句,变成
let then=回调=()=>switch{} 里的编号,就需要学什么func*和async,堆和栈,难道不是天生一体的么? 分页数组、“缓冲区”,难道不应该是跨语言的?
然而支持kwarg的python 却需要Namespace来实现这种等量代换😒 反而是Haskell可以这么写
然而它是真正的笨蛋美女😅
#oop
元编程,首先就要明白obj的本质是通过enum分派逻辑的(vararg Any)->Any ,也就是一个when(x)in constMap+super..
这样才方便添加和绑定方法签名
这样在语法上也就能理解为什么是{}包裹,以及filter{}为什么优于lambda和匿名override
py可以通过vars(o)实现静转动态
typing.Namespace(kw)反向
除了小写类型不能扩充,哪怕是Ruby元编程在直观上也无法和它相比了
duangsuse:
oop和rust go就是pp的扩充
不算重新学习过过程试
编程语言只不过就一张加减乘除节点图,问题是领域和API
看这本书的“层次结构”,就想到拿identifier叫name,拿classifier叫tag,拿些辞藻和皮毛当本质,哎
无聊
好像早点拿到电脑,多写代码
http://www.bilibili.com/video/BV1XH4y1w7mT
https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf
https://weread.qq.com/web/reader/f7632a00813ab82d6g017b14ke4d32d5015e4da3b7fbb1fa
可以一起读
虽然我不觉得这点值65😊
如果numpy那种API/DSL都设计不出来
修改class的结构也只是给开发者们徒增烦恼罢了
举个例子,此章节的 gh/user/_name
如果只是把它当成URL路径,需要绑定,显然造成代码重复,与元编程的本意违背
而如果像 import fire 那样,知道URL的本质是class路径与def GET,POST等,也就是另一种CLI调用
就不需要写什么注解和函数名
甚至模块化都省了,一个文件足矣
不过是修理servlet.xml繁琐和不支持argbind和的“弱类型”问题
但何必要制造那么多问题呢?sql,http,那么简单的工具还用学
#parser #learn
说起来,AST也就是多方法的 ()->Any 而已
你甚至可以把方法名enum化,从而完全避免使用class
例如 sum(L(1), L(2)) ()==3 只需要两个fun
Object Algebra.. 嘛,用虚表override取代if,稍微快点,只是要parse两次
至于在js里,我一般用 [[JSON ',' +] '()' /] 这样的模式写ast
描述 (1, 2, 3) 这种正则
甚至连函数式都没用到。 数据结构本身就蕴含了for if流控,运算符重载本身就是编程语言
不需要任何范式来实现他们,“数据结构与程序语意直观对应”,这就是CS。
这……应该是一件很难听懂的东西吗? 为什么DSL都设计得那么刻意和拉垮?
甚至,构造函数也应该取代class{} 或tuple才对,为什么把参数传递到堆而不是栈里,就需要写所谓的struct? 它们都是把args打包复用而已
为什么把yield 外提为语句,变成
let then=回调=()=>switch{} 里的编号,就需要学什么func*和async,堆和栈,难道不是天生一体的么? 分页数组、“缓冲区”,难道不应该是跨语言的?
然而支持kwarg的python 却需要Namespace来实现这种等量代换😒 反而是Haskell可以这么写
然而它是真正的笨蛋美女😅
#oop
元编程,首先就要明白obj的本质是通过enum分派逻辑的(vararg Any)->Any ,也就是一个when(x)in constMap+super..
这样才方便添加和绑定方法签名
这样在语法上也就能理解为什么是{}包裹,以及filter{}为什么优于lambda和匿名override
py可以通过vars(o)实现静转动态
typing.Namespace(kw)反向
除了小写类型不能扩充,哪怕是Ruby元编程在直观上也无法和它相比了
duangsuse:
oop和rust go就是pp的扩充
不算重新学习过过程试
编程语言只不过就一张加减乘除节点图,问题是领域和API
看这本书的“层次结构”,就想到拿identifier叫name,拿classifier叫tag,拿些辞藻和皮毛当本质,哎
无聊
好像早点拿到电脑,多写代码
Bilibili
1. 元编程概述_哔哩哔哩_bilibili
本章主要介绍元编程的需求背景、基本概念和学习方法,这是本书后续内容的重要基础。同时,由于元编程与 Java 和 Kotlin 的编译器、IntelliJ 平台的关系非常紧密,因此本章也会介绍相关项目的环境配置,这将对读者深入理解并掌握元编程的方法和技巧有着非常大的帮助。, 视频播放量 4121、弹幕量 0、点赞数 99、投硬币枚数 32、收藏人数 121、转发人数 4, 视频作者 霍丙乾bennyhuo, 作者简介 恢复更新了,相关视频:拜登:"一切非Rust项目均为非法" ???????,混写Rust…
Forwarded from 螺莉莉的黑板报
【本报讯】首个超越 GPT-4o 的开源模型!Llama 3.1 泄露:4050 亿参数即将登场!
近日,Meta 的新一代大模型 Llama 3.1 在 Reddit 上被泄露,引发广泛关注。Llama 3.1 包含 8B、70B 和 405B 参数版本,基准测试显示其性能在多个领域超过了 OpenAI 的 GPT-4o 和 Claude Sonnet 3.5 等闭源模型。模型卡泄露的信息显示,Llama 3.1 使用了 15T+ tokens 进行训练,支持多语言,并进行了指令微调和合成数据训练。尽管泄露的下载链接已失效,但官方发布预计在即。
Source
近日,Meta 的新一代大模型 Llama 3.1 在 Reddit 上被泄露,引发广泛关注。Llama 3.1 包含 8B、70B 和 405B 参数版本,基准测试显示其性能在多个领域超过了 OpenAI 的 GPT-4o 和 Claude Sonnet 3.5 等闭源模型。模型卡泄露的信息显示,Llama 3.1 使用了 15T+ tokens 进行训练,支持多语言,并进行了指令微调和合成数据训练。尽管泄露的下载链接已失效,但官方发布预计在即。
Source
机器之心
首个超越GPT4o级开源模型!Llama 3.1泄密:4050亿参数,下载链接、模型卡都有了
快准备好你的 GPU!
duangsuse::Echo
duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…
duangsuse:
草,虽然技术不怎么但例子还是值得一看
正好在外地就买来读
很久没读过纸质书,视力下降很大
https://www.bennyhuo.com/book/kotlin-coroutines/ 协程那本我就懒得买了,再说一个把yield 外提为语句,变成
let then=回调=()=>switch{} 里的编号这样简单的堆栈互换特性
也不值得学习
问题都是应用层们乱搞api,唉
在一些比较负责的sdk里,例如Lua和Duktape js,Thread是完全不需要await async的,就是把线程转为回调,也没有yield强制你只把then给调用方
和linux的cat|read() 等待另一端write一样
他们是怎么把“允许从触摸或IO事件回调线程” 封装成异步、Looper、Continuation那么复杂的.. 唉,资深技术nerd们🤓
其实,哪有什么协程呢?状态机?含续体回调? 好像C语言里read没有被内核挂起和回调一样,是不是不能while(1) 就比系统线程低一级了呢? vscode只用1个js线程,难道安卓架构比它还大?呵呵。。 Dispatcher就是个 (Runnable)->Unit 也能被封装成💩,Job.then搞成ctx链表就更逆天
丝毫不会怀疑这群万年魔法师的杰作
>简单来说就是,协程是一种非抢占式或者说协作式的计算机程序并发调度的实现,程序可以主动挂起或者恢复执行。这里还是需要有点儿操作系统的知识的,我们在 Java 虚拟机上所认识到的线程大多数的实现是映射到内核的线程的,也就是说线程当中的代码逻辑在线程抢到 CPU 的时间片的时候才可以执行,否则就得歇着,当然这对于我们开发者来说是透明的;而经常听到所谓的协程更轻量的意思是,协程并不会映射成内核线程或者其他这么重的资源,它的调度在用户态就可以搞定,任务之间的调度并非抢占式,而是协作式的。
tldr
看不清异步为何物可以理解,Web的Promise都不会对标可就搞笑了🌚
再想想编译原理状态机大switch都会,递归下降不懂,非要pushpop,哎😊
据我目前的认知, React甚至Vue3 使用自以为比 Webkit.org 聪明的“DOM diff” evpoll定时任务,今天终于全部转向"Hook" "Signal" 的push是js人不懂C++,不知道DOM是懒更新的
jvm人也这么普信?
草,虽然技术不怎么但例子还是值得一看
正好在外地就买来读
很久没读过纸质书,视力下降很大
https://www.bennyhuo.com/book/kotlin-coroutines/ 协程那本我就懒得买了,再说一个把yield 外提为语句,变成
let then=回调=()=>switch{} 里的编号这样简单的堆栈互换特性
也不值得学习
问题都是应用层们乱搞api,唉
在一些比较负责的sdk里,例如Lua和Duktape js,Thread是完全不需要await async的,就是把线程转为回调,也没有yield强制你只把then给调用方
和linux的cat|read() 等待另一端write一样
他们是怎么把“允许从触摸或IO事件回调线程” 封装成异步、Looper、Continuation那么复杂的.. 唉,资深技术nerd们🤓
其实,哪有什么协程呢?状态机?含续体回调? 好像C语言里read没有被内核挂起和回调一样,是不是不能while(1) 就比系统线程低一级了呢? vscode只用1个js线程,难道安卓架构比它还大?呵呵。。 Dispatcher就是个 (Runnable)->Unit 也能被封装成💩,Job.then搞成ctx链表就更逆天
丝毫不会怀疑这群万年魔法师的杰作
>简单来说就是,协程是一种非抢占式或者说协作式的计算机程序并发调度的实现,程序可以主动挂起或者恢复执行。这里还是需要有点儿操作系统的知识的,我们在 Java 虚拟机上所认识到的线程大多数的实现是映射到内核的线程的,也就是说线程当中的代码逻辑在线程抢到 CPU 的时间片的时候才可以执行,否则就得歇着,当然这对于我们开发者来说是透明的;而经常听到所谓的协程更轻量的意思是,协程并不会映射成内核线程或者其他这么重的资源,它的调度在用户态就可以搞定,任务之间的调度并非抢占式,而是协作式的。
tldr
看不清异步为何物可以理解,Web的Promise都不会对标可就搞笑了🌚
再想想编译原理状态机大switch都会,递归下降不懂,非要pushpop,哎😊
据我目前的认知, React甚至Vue3 使用自以为比 Webkit.org 聪明的“DOM diff” evpoll定时任务,今天终于全部转向"Hook" "Signal" 的push是js人不懂C++,不知道DOM是懒更新的
jvm人也这么普信?
duangsuse::Echo
duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…
“你用过 RxJava 类似的框架吗?”
学协程,需要知道rx扭曲的函数集吧?
😅艹,还好这是作者的初稿,不然我怕60块钱买亏了呢
魔法师一般是不会自称魔法的, 现在我听到魔法就想逃
好好的CS,AI整成Math那样。 那个几百年固步自封的希腊语学科?
并行是指while(1)们同时跑,对共享内存会产生数据竞争,即读/写了一半被对方访问。AtomicInt和锁不会产生竞争、SIMD和GPU不会有竞争
一些 #py 人不知道为啥有GIL(这个锁会让py以为你的CPU是单核,只是分时复用 就不会有竞争),这就是因为C里没有“回调”,py的IO实现v1.0就被单线绑死了,多核跑容易报错。
并发就是异步了,也就是IO快点。因为read()会卡死1个C线程,并发通过只接受回调,能允许同时等待多路IO(evpoll死循环)。因此理论上,Web的单线异步&伪服务Worker&GPU不会比其他sdk慢
import select,inotify 是一些较老的多路IO
numpy和 taichi-lang.cn 是真正的平行计算:从计算图API就是向量化。谁需要for while编译优化?🤓
总而言之,“并发”就是无需操心lock join(改为在函数'之间'await)的并行,说简单点就是Kotlin自己实现了Linux进程调度器,并且比后者更大聪明,完全不提Thread就能多线程IO
要是最终版也是这个“并发magic”的表述,我。。。🌝退钱
Cat:
我是挺赞成你的。我觉得并发真不 magic 只是大家曾经或者现在都对它抱有幻觉(
duangsuse:
就像曾经对xml(笑
然后compose来了
人们真的不需要一个“强大的框架”
只需要 import 一次,就不再给人惹麻烦的东西
「强大」是领域带来的,例如界面和算法。 语言的任务,应该是把问题变简单、变好记。
学协程,需要知道rx扭曲的函数集吧?
😅艹,还好这是作者的初稿,不然我怕60块钱买亏了呢
魔法师一般是不会自称魔法的, 现在我听到魔法就想逃
好好的CS,AI整成Math那样。 那个几百年固步自封的希腊语学科?
并行是指while(1)们同时跑,对共享内存会产生数据竞争,即读/写了一半被对方访问。AtomicInt和锁不会产生竞争、SIMD和GPU不会有竞争
一些 #py 人不知道为啥有GIL(这个锁会让py以为你的CPU是单核,只是分时复用 就不会有竞争),这就是因为C里没有“回调”,py的IO实现v1.0就被单线绑死了,多核跑容易报错。
并发就是异步了,也就是IO快点。因为read()会卡死1个C线程,并发通过只接受回调,能允许同时等待多路IO(evpoll死循环)。因此理论上,Web的单线异步&伪服务Worker&GPU不会比其他sdk慢
import select,inotify 是一些较老的多路IO
numpy和 taichi-lang.cn 是真正的平行计算:从计算图API就是向量化。谁需要for while编译优化?🤓
总而言之,“并发”就是无需操心lock join(改为在函数'之间'await)的并行,说简单点就是Kotlin自己实现了Linux进程调度器,并且比后者更大聪明,完全不提Thread就能多线程IO
要是最终版也是这个“并发magic”的表述,我。。。🌝退钱
Cat:
我是挺赞成你的。我觉得并发真不 magic 只是大家曾经或者现在都对它抱有幻觉(
duangsuse:
就像曾经对xml(笑
然后compose来了
人们真的不需要一个“强大的框架”
只需要 import 一次,就不再给人惹麻烦的东西
「强大」是领域带来的,例如界面和算法。 语言的任务,应该是把问题变简单、变好记。
👍1
Forwarded from dnaugsuz
#statement 以前我喜欢搞编译器,玩元编程
但那只是沉溺在算数、跳转、字节之间,是大同小异的文字游戏
而且还会和丝毫不重视书写体验的函数式、类型体操人混淆不清
魔法对生涯是没有帮助的。 或许利于求职,但那魔法起源于八股。
现在我深刻认识到,程序员和其他人的唯一差别,就是爱用「心智模型」来对比和解决问题。「模型」能跨越语言,只和范式有关,而最高效的范式就是基于表格的OOP
编程语言的唯一价值,就是提供语意明确、博采众长的模型和API,作为软件设计生态里的导游和期刊
其他任何与问题无关的术语、故意搞特殊的框架,我们不封装不科普也会被AI替代
相信未来的编程语言与kotlin相比,能和java与C相比差异那样大。 比如说,面向逻辑关系编程
但那只是沉溺在算数、跳转、字节之间,是大同小异的文字游戏
而且还会和丝毫不重视书写体验的函数式、类型体操人混淆不清
魔法对生涯是没有帮助的。 或许利于求职,但那魔法起源于八股。
现在我深刻认识到,程序员和其他人的唯一差别,就是爱用「心智模型」来对比和解决问题。「模型」能跨越语言,只和范式有关,而最高效的范式就是基于表格的OOP
编程语言的唯一价值,就是提供语意明确、博采众长的模型和API,作为软件设计生态里的导游和期刊
其他任何与问题无关的术语、故意搞特殊的框架,我们不封装不科普也会被AI替代
相信未来的编程语言与kotlin相比,能和java与C相比差异那样大。 比如说,面向逻辑关系编程
duangsuse::Echo
duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…
#java #plt Science Yuan:
静态和动态的元编程是完全不同的
duangsuse:
并不是,只是类型信息在不在javac -cp 里而已。 如果在,例如for(const getMethods..) 生成/加载元组是可行的
你说的「完全不一样」,无非是jdk区分了 lang.reflect vs APT lang.model,后者能访问的信息更少,至少不能对某个参数getset() ,更不能获取返回值,因为 @Marker()很难写在语句级,更不能作为表达式
但编译和eval()并不存在所谓的鸿沟,就连未知变量,例如 int[] a 吧,从里面生成静态slice(用于vararg强转&传参?),或者解构赋值,也只是loop unroll(见Zig)而已
无非是编译器弱智到只能检查类型解析个方法签名, a[i] 就只能生成 aload ,不能把i的值粘贴进去(二段求值), {x,y}就只能是anew,不能作为编译期的list生成 x=a[0]; y=..
--基本这只需要往str内联常量,也就是说 (unquote x[i] {i:1})
甚至x不知道,i:1编译期也算不出,unquote=eval 就能完美容错!
apt和XXpoet的弱智显然是不可理喻的,因为解释器、解析器更好实现 https://t.me/kotlin_cn/105813
py不像js,它还是强检查的,js里甚至没有dataclass一说 一切皆字典
但这也有些坏处,就是元编程有些开销不完全与手写相等,这点我的 https://github.com/duangsuse-valid-projects/tkgui 通过缓存化eval很好解决了
这进一步说明,过程宏绝对不是rust! 那样的魔法,整个安卓所需的一切仅仅是 for(const x: T.vars) 的apt而已
lang.reflect 和Proxy都会在运行时生成字节码,更别说lang.invoke了,它会被查找并替换为具体的invoke字节码(例如被动态编译的 LambdaMetafactory(this,"methSig").invoke 方法)
这也是为什么Android重新实现了它们,要不然就要携带一个dx.jar作为类加载器动态翻译
静态和动态的元编程是完全不同的
duangsuse:
并不是,只是类型信息在不在javac -cp 里而已。 如果在,例如for(const getMethods..) 生成/加载元组是可行的
你说的「完全不一样」,无非是jdk区分了 lang.reflect vs APT lang.model,后者能访问的信息更少,至少不能对某个参数getset() ,更不能获取返回值,因为 @Marker()很难写在语句级,更不能作为表达式
但编译和eval()并不存在所谓的鸿沟,就连未知变量,例如 int[] a 吧,从里面生成静态slice(用于vararg强转&传参?),或者解构赋值,也只是loop unroll(见Zig)而已
无非是编译器弱智到只能检查类型解析个方法签名, a[i] 就只能生成 aload ,不能把i的值粘贴进去(二段求值), {x,y}就只能是anew,不能作为编译期的list生成 x=a[0]; y=..
--基本这只需要往str内联常量,也就是说 (unquote x[i] {i:1})
甚至x不知道,i:1编译期也算不出,unquote=eval 就能完美容错!
apt和XXpoet的弱智显然是不可理喻的,因为解释器、解析器更好实现 https://t.me/kotlin_cn/105813
py不像js,它还是强检查的,js里甚至没有dataclass一说 一切皆字典
但这也有些坏处,就是元编程有些开销不完全与手写相等,这点我的 https://github.com/duangsuse-valid-projects/tkgui 通过缓存化eval很好解决了
这进一步说明,过程宏绝对不是rust! 那样的魔法,整个安卓所需的一切仅仅是 for(const x: T.vars) 的apt而已
lang.reflect 和Proxy都会在运行时生成字节码,更别说lang.invoke了,它会被查找并替换为具体的invoke字节码(例如被动态编译的 LambdaMetafactory(this,"methSig").invoke 方法)
这也是为什么Android重新实现了它们,要不然就要携带一个dx.jar作为类加载器动态翻译
Telegram
duangsuse in Kotlin CN
你是说data class.copy() 方法签名不兼容的问题
还是想AOT化 callWithDefaults
想起来了,是 undefined=默认参数, ksp的问题上面是这样 https://t.me/kotlin_cn/104488
目前没人看
jspy可以用kwarg解构实现
还是想AOT化 callWithDefaults
想起来了,是 undefined=默认参数, ksp的问题上面是这样 https://t.me/kotlin_cn/104488
目前没人看
jspy可以用kwarg解构实现
螺莉莉的黑板报
【本报讯】首个超越 GPT-4o 的开源模型!Llama 3.1 泄露:4050 亿参数即将登场! 近日,Meta 的新一代大模型 Llama 3.1 在 Reddit 上被泄露,引发广泛关注。Llama 3.1 包含 8B、70B 和 405B 参数版本,基准测试显示其性能在多个领域超过了 OpenAI 的 GPT-4o 和 Claude Sonnet 3.5 等闭源模型。模型卡泄露的信息显示,Llama 3.1 使用了 15T+ tokens 进行训练,支持多语言,并进行了指令微调和合成数据训练。尽…
https://t.me/danteslimbo/3368
duangsuse: #谈政事 UBI红利
这个普法现金是资本主义版的,收支透明,加上有新的AI奴隶, 结果会不一样
大跃进主要的问题不是大锅饭,而是完全禁止多劳多得,zz挂帅瞎指挥、浮夸风、高税收
UBI不是的,只是一种提升消费的福利,中国目前基本上还是负福利
某党普遍有一种错觉,饥荒都是福利陷阱导致的
那完全是错误归因,因为他们发的福利,是伴随政治经济翻天覆地变化来的。波波没有给人发福利,为什么也代来灾难? 美团讲师每天蹭吃蹭喝捡鸡腿,为啥没影响其他润人奋斗?
其实只要留一点点小产权,不要打鸡血瞎指挥,哪怕继续吃大锅饭、继续充胖子还鹅爹的粮,灾害情况都会好一半
那三年末,某些人要求「宁要核子不要裤子」,又说抗美援朝之流是「大仁政」,对农B救亡图存只是小的,它就是为了核子剥光衣服的🤡
多少地方农民吃观音土第二天就要撑死了,这核弹,保护的是他们的生命么? 幸好它抗美援朝,不然中国就是西朝鲜
duangsuse: #谈政事 UBI红利
这个普法现金是资本主义版的,收支透明,加上有新的AI奴隶, 结果会不一样
大跃进主要的问题不是大锅饭,而是完全禁止多劳多得,zz挂帅瞎指挥、浮夸风、高税收
UBI不是的,只是一种提升消费的福利,中国目前基本上还是负福利
某党普遍有一种错觉,饥荒都是福利陷阱导致的
那完全是错误归因,因为他们发的福利,是伴随政治经济翻天覆地变化来的。波波没有给人发福利,为什么也代来灾难? 美团讲师每天蹭吃蹭喝捡鸡腿,为啥没影响其他润人奋斗?
其实只要留一点点小产权,不要打鸡血瞎指挥,哪怕继续吃大锅饭、继续充胖子还鹅爹的粮,灾害情况都会好一半
那三年末,某些人要求「宁要核子不要裤子」,又说抗美援朝之流是「大仁政」,对农B救亡图存只是小的,它就是为了核子剥光衣服的🤡
多少地方农民吃观音土第二天就要撑死了,这核弹,保护的是他们的生命么? 幸好它抗美援朝,不然中国就是西朝鲜
Telegram
Dante's Limbo
#吐槽 #暴论
当然,更大规模更深入的 UBI 其实是有做过实验的,这个实验的结果,惨不忍睹。所有中国人都知道——大跃进。
之所以吐这个槽,是因为我在读萧冬连的 #筚路维艰
https://weibo.com/1560906700/OoUkbgQRs
当然,更大规模更深入的 UBI 其实是有做过实验的,这个实验的结果,惨不忍睹。所有中国人都知道——大跃进。
之所以吐这个槽,是因为我在读萧冬连的 #筚路维艰
https://weibo.com/1560906700/OoUkbgQRs
duangsuse::Echo pinned «duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…»
#kt #code 😊之前,v8 blog说Promise就是Continuation(含续体的回调),我还觉得多此一举
和Kotlin“强大”的API一比,我却要变成ES6吹了。Web的先驱者们简直是先知啊! 代码越复杂,成品功能越简陋。这就是为什么安卓app体积不断膨胀,功能却越来越卡。
😊顺带把阿K没有统一的err/null错处也搞了,还要什么 o?.x?.y ?: 1
https://www.bennyhuo.com/book/kotlin-coroutines/12-why-so-called-lightweight-thread.html
上面说协程=Thread.asCallback() 只是一种go/lua的罕见情况,好理解嘛。
kt里协程是通过retAddr()作为参数,实现的链表化调用栈,其第0项一般是 runBlocking{}或thisCPU.nextJob
这样可以在主循环注册任意个delay()或flow{}的回调,优化 Promise.all。这是虚拟线程所不擅长的
https://www.bennyhuo.com/book/kotlin-coroutines/13-implementations.html
和Kotlin“强大”的API一比,我却要变成ES6吹了。Web的先驱者们简直是先知啊! 代码越复杂,成品功能越简陋。这就是为什么安卓app体积不断膨胀,功能却越来越卡。
interface Promise_<R,T> {
fun then(ret:OrErr<R>) //delay() 后应该这么做,那之前只需调用它并return。它通过cpu{}排队,另一种排法是yield Promise
//launch(ctx=Main+CoroName("val")) Map状链表DSL。Job等元素
var cpu:(Runnable)->Unit; name=""
fun go(:T?):R
fun stop(:ErrStop)
stdState=0,1完成,2取消
//不要使用截获器和Key环境变量。组合优于继承,go 的WaitGroup比不伦鸡肋的scope明确多了,Android的curl比js的fetch流更复杂吗?
}
type OrErr<R>=Or<R,Err>, Err=Exception
val OrErr<R>.!!: R
sealed Or<out A,B> {
data A(:A) data B(:B)
fun as(A->R?, B->R?={null}): R?
val A:A? val B:B?
}
fun T?.as(R, T->R):R
fun T?.as(T->R):R?
😊顺带把阿K没有统一的err/null错处也搞了,还要什么 o?.x?.y ?: 1
https://www.bennyhuo.com/book/kotlin-coroutines/12-why-so-called-lightweight-thread.html
上面说协程=Thread.asCallback() 只是一种go/lua的罕见情况,好理解嘛。
kt里协程是通过retAddr()作为参数,实现的链表化调用栈,其第0项一般是 runBlocking{}或thisCPU.nextJob
这样可以在主循环注册任意个delay()或flow{}的回调,优化 Promise.all。这是虚拟线程所不擅长的
https://www.bennyhuo.com/book/kotlin-coroutines/13-implementations.html
Benny Huo 的专栏
12. 协程为什么被称为『轻量级线程』?
接触新概念,最好的办法就是先整体看个大概,再回过头来细细品味。 文中如果没有特别说明,协程指编程语言级别的协程,线程则特指操作系统内核线程。 1. 协程到底是啥? Kotlin 的协程从 v1.1 开始公测(Experimental) 到现在,已经算是非常成熟了,但大家对它的看法却一直存在各种疑问,为什么呢?因为即便我们把 Kotlin 丢掉,单纯协程...
duangsuse::Echo
duangsuse: #kt #book 元编程 http://www.bilibili.com/video/BV1XH4y1w7mT https://drive.bennyhuo.com/zh-CN/talks/2018.11.17-%E4%BC%98%E9%9B%85%E5%9C%B0%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B_final.pdf https://weread.qq.com/web/reader/f7632a00…
duangsuse:
此callback非彼回调
这个cb是编译器自动生成的class
web apis从一开始就线程无关
有什么平台和语言敢说自己的异步API比Promise经受更多用户考验?
那个是动态语言所必须的,kt有编译期,完全可以不染色
然而只有suspend fun是和正常函数完全相同的,业务上完全没有比js优秀
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
algebra effect https://t.me/dsuse/19174
coroutine这个词不需要存在,即便是在脚本里,最多需要await和numpy的真正并发并行计算
而且即便存在,霍老也不应该说什么magic
不过就是把return()变成值,通过callLater{delay.then(me)}构成链表,要么就简单到 Thread.asCallback
可以知道,Coroutine(而非Closure), Dispatcher/awaiter 都只是为确保函数return后能正常复活的东西,和调用栈完全一致
强调它们不同的,不是蠢就是坏
堆栈互转的玩意,说的跟迷因似的术语一大堆,严重被高估了。OOP构造函数同理
还有元编程、xml ,完全是语法太复杂导致的无效学习。你看 compose DSL需不需要拖拽设计器
coroutine是在搞特殊,因为linux的read() write()就是自己的await和yield,linux没有说协程
多线程是为了IO多路(evpull)和分块计算之类的,linux没法掩藏这些细节,但语言不掩藏就是语言愚蠢了
反倒是lua以后那么多年没有语言跟进,都在回调地狱,这是问题。
lisper 在把 @Adder(x=2) 生成为 (unquote '(+ 1 x)) 时可不会觉得是魔法
他们写 (let '([x y] ary)) 时也很清楚,这不过是一种list(str) 的循环处理
kt写inline也不会觉得很难理解
也罢,毕竟字符串模板目前还是ES6的专利,php都还在sql注入呢
所以java语法比嵌套的括号还低端吗
我是说无缝RPC其他语言脚本的这回事
sql``select ${1} 是不会注入,那为啥sql里有个 ?参数的概念呢?
PHP通过ORM和prepare语句确实不会注入,那么php跨语言调用js脚本呢?
只能用reflect.invoke那种API吧?
ES6可以随便调用任何py js rb JSON接口而无惧注入
不仅如此,js还可以靠eval('var ..') 自己注入自己,顺带实现codegen
想不想注入,都是开发者说了算😊🤓
#statement 我一开始就说了啊,讨厌magic
作者在后面的章节明明有更大体的理解,却不懂知识重构
反而把这些含语言设计者私心的API拿来讲课
两句话说明白的东西,何必浪费读者时间。后面讲Channel,sequence,flow 时读者懵是不是还要复习一遍?
最讨厌与语言、与CS术语耦合的私货了。 谈算法不离编程语言的,两句话不离语意模糊的术语的,可能是称职的程序员,但绝对没有准备好设计优秀的框架
这让我怀念 coolshell.cn 的耗子,虽然他过劳死了,但不到50不写书的工匠精神确实值得钦佩,因为知识布道者确实要这样谨慎。
要是编译原理/元编程界的多数人都这么有格局,lua zig的这些优点也不会雪藏那么多年, http连双端绑定都做不到的框架也不会活那么久
duangsuse:
#kt coroutine 和现在js async func* 的情况一样,一开始没有flow,后来加进去就是。。一言难尽
我不觉得把分页数组和Reactive混为一谈是好的
就像现在flow也需要buffered()或只留最后一项
这不太能统一化缓冲区
🌚flow模仿数组好像也说得过去,但总觉得有点像C数组或指针,是在搞混淆
flow如果和sequence{}统一就更好了,使用可调的默认bufsize而不是yield一次一个值。
这样和linux的iostream就合体了,而且也能实现vue ref()的效果,两个不耽误
太过重视调度线程是在模糊要点
此callback非彼回调
这个cb是编译器自动生成的class
web apis从一开始就线程无关
有什么平台和语言敢说自己的异步API比Promise经受更多用户考验?
那个是动态语言所必须的,kt有编译期,完全可以不染色
然而只有suspend fun是和正常函数完全相同的,业务上完全没有比js优秀
https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/
algebra effect https://t.me/dsuse/19174
coroutine这个词不需要存在,即便是在脚本里,最多需要await和numpy的真正并发并行计算
而且即便存在,霍老也不应该说什么magic
不过就是把return()变成值,通过callLater{delay.then(me)}构成链表,要么就简单到 Thread.asCallback
可以知道,Coroutine(而非Closure), Dispatcher/awaiter 都只是为确保函数return后能正常复活的东西,和调用栈完全一致
强调它们不同的,不是蠢就是坏
堆栈互转的玩意,说的跟迷因似的术语一大堆,严重被高估了。OOP构造函数同理
还有元编程、xml ,完全是语法太复杂导致的无效学习。你看 compose DSL需不需要拖拽设计器
coroutine是在搞特殊,因为linux的read() write()就是自己的await和yield,linux没有说协程
多线程是为了IO多路(evpull)和分块计算之类的,linux没法掩藏这些细节,但语言不掩藏就是语言愚蠢了
反倒是lua以后那么多年没有语言跟进,都在回调地狱,这是问题。
lisper 在把 @Adder(x=2) 生成为 (unquote '(+ 1 x)) 时可不会觉得是魔法
他们写 (let '([x y] ary)) 时也很清楚,这不过是一种list(str) 的循环处理
kt写inline也不会觉得很难理解
也罢,毕竟字符串模板目前还是ES6的专利,php都还在sql注入呢
所以java语法比嵌套的括号还低端吗
我是说无缝RPC其他语言脚本的这回事
sql``select ${1} 是不会注入,那为啥sql里有个 ?参数的概念呢?
PHP通过ORM和prepare语句确实不会注入,那么php跨语言调用js脚本呢?
只能用reflect.invoke那种API吧?
ES6可以随便调用任何py js rb JSON接口而无惧注入
不仅如此,js还可以靠eval('var ..') 自己注入自己,顺带实现codegen
想不想注入,都是开发者说了算😊🤓
#statement 我一开始就说了啊,讨厌magic
作者在后面的章节明明有更大体的理解,却不懂知识重构
反而把这些含语言设计者私心的API拿来讲课
两句话说明白的东西,何必浪费读者时间。后面讲Channel,sequence,flow 时读者懵是不是还要复习一遍?
最讨厌与语言、与CS术语耦合的私货了。 谈算法不离编程语言的,两句话不离语意模糊的术语的,可能是称职的程序员,但绝对没有准备好设计优秀的框架
这让我怀念 coolshell.cn 的耗子,虽然他过劳死了,但不到50不写书的工匠精神确实值得钦佩,因为知识布道者确实要这样谨慎。
要是编译原理/元编程界的多数人都这么有格局,lua zig的这些优点也不会雪藏那么多年, http连双端绑定都做不到的框架也不会活那么久
duangsuse:
#kt coroutine 和现在js async func* 的情况一样,一开始没有flow,后来加进去就是。。一言难尽
我不觉得把分页数组和Reactive混为一谈是好的
就像现在flow也需要buffered()或只留最后一项
这不太能统一化缓冲区
🌚flow模仿数组好像也说得过去,但总觉得有点像C数组或指针,是在搞混淆
flow如果和sequence{}统一就更好了,使用可调的默认bufsize而不是yield一次一个值。
这样和linux的iostream就合体了,而且也能实现vue ref()的效果,两个不耽误
太过重视调度线程是在模糊要点
https://coolshell.cn/articles/22320.html #linux #learn 内核/libc AOP 技术介绍
#ai 生成结果不错,晚点 #todo
分别举例用 strace;stap 监控文件打开
分别举例用 strace;stap 监控htop进程的文件打开
分别举例用 frida;ebpf 监控htop进程的文件打开
使用 criu 休眠和恢复 htop进程,进程状态存储为 a.zip
重新把 /proc/$pid 的标准流对接到一个虚拟终端,就像fg job
编写脚本,使用overlayfs和chroot模拟fakeroot,在退出时将更改保存到 a.tar.xz 且允许再次打开
用Luanitik 编写文件系统驱动 nullfs.lua,返回空目录
#ai 生成结果不错,晚点 #todo
分别举例用 strace;stap 监控文件打开
分别举例用 strace;stap 监控htop进程的文件打开
分别举例用 frida;ebpf 监控htop进程的文件打开
使用 criu 休眠和恢复 htop进程,进程状态存储为 a.zip
重新把 /proc/$pid 的标准流对接到一个虚拟终端,就像fg job
编写脚本,使用overlayfs和chroot模拟fakeroot,在退出时将更改保存到 a.tar.xz 且允许再次打开
用Luanitik 编写文件系统驱动 nullfs.lua,返回空目录
酷 壳 - CoolShell
eBPF 介绍 | 酷 壳 - CoolShell