duangsuse::Echo
713 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
>“快到了,快到了。。共产主义已经出现在斯大林同志指明的地平线上了” 没读过书的穷人问:“地平线是啥” “一条你永远看得到但走不到的线” https://m.youtube.com/watch?v=eYddqmJE6wg&t=58s https://m.youtube.com/watch?v=S-RQlpAwYz4&t=4m https://m.youtube.com/watch?v=hdELJFLK8ec&t=5m 历史“辩证法”-预言人类大同的哲学依据。 断言历史不是多元化的,而是无休止的扩张和统一…
#谈政事 资本主义
除了“只有无产阶级的免税世界”,共产主义还有一个重要承诺常被共党们无视:消灭统治阶级,【一切政策】必须在田地与机床间由【在职】的工农产生-这样资产阶级才能叫被工农专政消灭了。
这并不先进。且不论其全局可行性,自春秋就有“皇帝与农民同耕”的说法。实际上,这仍是一种政治挂帅生产的“伪廉洁”:政策要么无权干扰内行的工作,要么利益相关的从业者(例如油罐司机)应该避嫌,因为消费者往往和劳资站在对立面上,混淆生产消费管理、三结合的企图是在做梦。

自称无产者的穷人,常把利食阶级的富人称为吸血鬼和社会寄生虫,因为利食者总是不劳而获。【不劳而获】的特权,才是共产嘴里的【有了产】,因此不雇人、没遗产你就是纯洁的无产者-惊喜吗?
尽管……大部分小将搞完斗资批修,便会无限上纲上线到连文豪们的家-和里面传承了数千年的中华瑰宝-他们所谓生活资料也要砸烂烧掉。

赚的钱越多,能吃利息、吃利润生活,便是盗窃了劳动者的血汗吗? 其实不是。多读点历史。
资产阶级是从手工人和学生创业走过来的,工人阶级是自资本主义革命从奴隶和小农走过来的。从血统上,工人和小商并不比资本家纯洁
大家都是通过不同的打拼有了今天的产。 这并不是有无的差异,仅仅是多产或少产。那搞平均,工农总赚了吧? 也不行,因为无主之地,要靠抢! 抢不过,就连本钱也要失去,这不是雪上加霜??

那资本家凭什么拥有永动机?就凭你货比三家还是选了他,而不自己研发。从原教旨和AI来说,人力只是生产机器的零件,薪水只是车间的另一种水电费,也就是劳动无价值-不能强买强卖,这点必须承认。
资本除了作为生产力先锋队,为创业和投资者做了榜样,让他们肯找银行取钱,还能把社会资源分配到最稳的生产者们手里。只有把钱全借给别人-留下极少的生活资料,他们的利益才能最大化。这便是自由主义【分布式计划经济】,它的税收明码标价,由精英选拔,被全社会监督。无产者“最英明”的计划经济呢?
一句话,今天能最大化生产力、产品质量、消费,帮助阶级流通的,是资本自由主义和媒体监督,而不是搞血统论搞拜金,用财产断言一个人好坏的马克思!

当然了,永动机也是会坏的。每当工人觉得钱不够消费,他们就能组织工会要求分到更多利润。共产主义由于憎恨私人财产和带薪休假,统治者反而能搞出社会蛀虫法对付工人。这就是请君入瓮,不服从者不得食

在2022,美国70%的GDP已经能均分到个人可支配,体力劳动者的小费受尊重,吉吉国却只有44%,农工和保洁的尊严无法被保障。
是因为对人人平等的慷慨践行,工农才获得了在美国的地位。法制社会,不会让自称先锋队的小皇帝,比带来好产品的资本家更平等。 社会是一面镜子。那些“剥削者”面对的,何尝不是一伙剥削完他人,又抄了家里的剩余价值,而为利润内讧的强盗呢?

https://m.youtube.com/watch?v=gkmlA975PO8
“这种情况 在澳洲 从开发商到保险公司,大概要赔一千多万吧。 而且安全员全部免职,严重的就抓起来了。承包公司老板肯定是要被抓起来了。”
Forwarded from tsuThoughts
GPT-4o mini 极致性价比,同档无敌

https://x.com/ArtificialAnlys/status/1813975855468560621

#AI #LLM
👍1
Forwarded from Solidot
中国基本未受到 Crowdstrike 事件的影响

2024-07-22 15:06 by 暗影徘徊

上周五,全世界大部分地区都在应对至今 IT 史上最严重的安全事故,但有一个国家基本未受到影响:中国。原因十分简单,Crowdstrike 的安全软件在中国基本无人用。很少有中国机构会购买美国的安全软件,中国对微软的依赖程度也没有其它地区高,阿里巴巴、腾讯和华为是主要的云服务商。因此遭遇 Crowdstrike 蓝屏死机事件的主要是在华外企或组织,根据社交媒体上的信息,中国用户报告无法入住喜来登、万豪和凯悦等国际连锁酒店。网络安全专家 Josh Kennedy White 称,微软通过其本地合作伙伴世纪互联在中国开展业务,世纪互联的基础设施独立于微软在全球的基础设施。这种设置使得中国的基本服务如银行和航空免受全球干扰。

https://www.bbc.com/news/articles/c3g01y047pdo


#安全
https://github.com/rui314/chibicc
安利个东西,这个库用核心 6k 行左右的 C 语言实现了一个完整可以自举的 C 编译器(编译 git/sqlite 也能过测试), Commit Message 写的非常牛逼,每个 commit 都是一个完整的 bug free 的功能叠加。有兴趣的可以看一下
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

#微软
Forwarded from Gawr Guraᅠ⁧~喵⁧
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'
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,拿些辞藻和皮毛当本质,哎
无聊
好像早点拿到电脑,多写代码
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
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人也这么普信?
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 一次,就不再给人惹麻烦的东西
「强大」是领域带来的,例如界面和算法。 语言的任务,应该是把问题变简单、变好记。
👍1
Forwarded from dnaugsuz
#statement 以前我喜欢搞编译器,玩元编程
但那只是沉溺在算数、跳转、字节之间,是大同小异的文字游戏
而且还会和丝毫不重视书写体验的函数式、类型体操人混淆不清

魔法对生涯是没有帮助的。 或许利于求职,但那魔法起源于八股。

现在我深刻认识到,程序员和其他人的唯一差别,就是爱用「心智模型」来对比和解决问题。「模型」能跨越语言,只和范式有关,而最高效的范式就是基于表格的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作为类加载器动态翻译
螺莉莉的黑板报
【本报讯】首个超越 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::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体积不断膨胀,功能却越来越卡。

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
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()的效果,两个不耽误
太过重视调度线程是在模糊要点