duangsuse::Echo
#js 和EQ的风格很像了 🤔 ee.main=({n=1}, 奇偶=wKV({class: when(n.as(x=>x%2), "odd","even") }) )=> div( h1(奇偶, html`count is ${n}`), h2(html`2x is ${n.as(x=>x*2)}`), button(wOp({tap:n(x=>x+1)}), "👍") ) 感觉这种情况下EQ没什么竞争力? (不过EqvJS 的理论是与页面段「带变量合一」,而不是 "Reactivity"..…
在这个视频
函数风格的DSL #design 不是很新的概念(尽管在js界里是.. ),Flutter,ktCompose,我的TkGUI, 甚至蛤为的 ArkTS 都用它取代过XML
☝️一个框架能意识到 CSS,HTML -in-JS 对整个易用/复用性的必要,可以说是一种革命 ,因为它的设计重点从
当然,写法的不同也是主要竞争力,像 ArkTS 这个就滥用builder和this ,非常难看
EQ一开始也像Van一样主要负责“模板”,但后来也实现了 lists,when ,组件和CSS模块化
这个视频例子上,EQ的胜负处:
👍
- 统一的风格(甚至像独立于ES6的语言了),避免 func,const,return div() 的无味之争
- 没有
- 没有
- html格式化,很ES6
-
- 我不写 3:33 的那种滥用弱类型的代码😐 简洁,显然不是指能看懂的符号少
👎
- wOSK{} 三要素 没能显示出对组件设计的益处 (需求太常规,API的体系性无法体现。像 Van 这样到处 onclick 是意识不到该做
- 同样,因为EQ涉及三界(JS的带this管道,async load,ondiff,ease-efx,wOp-SSR事件上传,.) 所以只有 界0=wOSKita 是<100行的,与Van同为极简主义的我应该很丢脸?(x
- 在不用爬虫时写
-
— 在 4:09 上 —
👍
-
-
-
- 浏览器本就会“批量修改DOM” 再reflow ,EQ不会对数组以外重新检查 “vDOM变更”,再用setTimeout去哆嗦着赋值那些玩意。
- EQ自然支持 SSR(注水,wOp上传-HTML下载, ) 尽管未提供无DOM模式
😐
- 不用写 import tags,因为 evalFun 在运行或编译时支持了 this 作用域
-
- 不能
不能靠
因此,EQ里 wKV 是不需要靠返回原元素,来避免replace的
EQ选择的是
也因此对 [1,2,3] 和 [[1],[2]] 赋值,都是既不Memo(Van做到了),也不导致<text>外ul节点替换的,只是旧值被新值“合一”了
总之,VanJS 足够小,所以这个视频分析的相当全面 #recommend
可能在程序员看来,我每天都在写 “不能运行的代码”……
但这就是设计者做事的方法 🥳
函数风格的DSL #design 不是很新的概念(尽管在js界里是.. ),Flutter,ktCompose,我的TkGUI, 甚至蛤为的 ArkTS 都用它取代过XML
☝️一个框架能意识到 CSS,HTML -in-JS 对整个易用/复用性的必要,可以说是一种革命 ,因为它的设计重点从
@click.prevent 和 "reactivity" 这些花哨的东西,转移到UIUX的数据和操作上了当然,写法的不同也是主要竞争力,像 ArkTS 这个就滥用builder和this ,非常难看
EQ一开始也像Van一样主要负责“模板”,但后来也实现了 lists,when ,组件和CSS模块化
这个视频例子上,EQ的胜负处:
👍
- 统一的风格(甚至像独立于ES6的语言了),避免 func,const,return div() 的无味之争
- 没有
n=van.state(1) , 变量随便加- 没有
.val (按_currDep 捕获val访问) 和derive的概念,而是让事件选中(Eq.sel)变量,看起来更纯,低魔法- html格式化,很ES6
-
when() 很漂亮,在纯JS,html 里都能用- 我不写 3:33 的那种滥用弱类型的代码😐 简洁,显然不是指能看懂的符号少
👎
- wOSK{} 三要素 没能显示出对组件设计的益处 (需求太常规,API的体系性无法体现。像 Van 这样到处 onclick 是意识不到该做
btn(数组,) 复用, 以及该避免 onclick 可变时"escape" )- 同样,因为EQ涉及三界(JS的带this管道,async load,ondiff,ease-efx,wOp-SSR事件上传,.) 所以只有 界0=wOSKita 是<100行的,与Van同为极简主义的我应该很丢脸?(x
- 在不用爬虫时写
html 模板,稍微有点长-
wOp({tap:n(x=>x+1)}) 选中了n变量,但放在 html`count is ${n(x=>x+1)}` 也可以— 在 4:09 上 —
👍
-
{x:0}.it.x 不负责保留旧值,也没 html _binds ,因此适合在NodeJS里用-
x0.it.to({x:1}, (A,B)=>B) 的「合一 unify」 适用于赋默认值、模式匹配等情况 🌠-
div$cls() 简写真的很CSS。EQ的风格就是DOM加糖- 浏览器本就会“批量修改DOM” 再reflow ,EQ不会对数组以外重新检查 “vDOM变更”,再用setTimeout去哆嗦着赋值那些玩意。
obj.it 就是EQ的“虚拟树-但无关HTML ”- EQ自然支持 SSR(注水,wOp上传-HTML下载, ) 尽管未提供无DOM模式
😐
- 不用写 import tags,因为 evalFun 在运行或编译时支持了 this 作用域
-
createElementNS() 的支持被复杂化为 {svg}=ee.use, 包含 svg,WebAudio 滤镜图- 不能
van.add(ul,state转节点) ,因为EQ必须支持爬虫和diff-特效,必须隔离JS,DOM,而不是靠跳帧检测全局states, 替换或删除其 _binds=[元素,函数,deps..] , 再在节点已移除时"GC"不能靠
ul( ()=>del? null : li() ) 修改子节点,只有“when,as=filter函数”能做GC因此,EQ里 wKV 是不需要靠返回原元素,来避免replace的
EQ选择的是
Node 和 Object.it “合一”,而不是 shallowRef() 的字典,所以它的 diff 不是在树内vars被拍平后,靠跳帧检测,而是在 JS对象图。也因此对 [1,2,3] 和 [[1],[2]] 赋值,都是既不Memo(Van做到了),也不导致<text>外ul节点替换的,只是旧值被新值“合一”了
总之,VanJS 足够小,所以这个视频分析的相当全面 #recommend
可能在程序员看来,我每天都在写 “不能运行的代码”……
但这就是设计者做事的方法 🥳
YouTube
How UI Frameworks Actually Work
A look at VanJS (https://vanjs.org/) and some core concepts such as state reactivity and DOM templating.
Check out Van's code base here: https://github.com/vanjs-org/van.
💬 Topics:
- How to use VanJS;
- What is reactive state;
- JSX and alternativess;
-…
Check out Van's code base here: https://github.com/vanjs-org/van.
💬 Topics:
- How to use VanJS;
- What is reactive state;
- JSX and alternativess;
-…
duangsuse::Echo
现在得出个理论,我直接跪了😨 obj.to({k:v1}).as(_=>k) 两词就能概括EQ的“响应式系统”,这两个词也适用于 x, 和 [x] 即遍历与map wOp 事件只会导致 wSty,wKV 变量的两类结果: - cnt(x=>x+1), dialog(q=>$Y) 'to赋值' - fmt.as(x=>`Hello ${x}`), html`text ${var}`, Eq.at({sliders},_=>) 返回 {ref:}.it 'as映射' 也就是所谓的 State-onhandle…
👀 比对了很久,终于搞懂了 VanJS 的写法和DOM更新
Van所用的不是
Van的全局 state diff 虽然导致了"GC" 问题,但比memo, Svelte的编译,已经很先进了(虽然Van天然不兼容数组diff, 即便是把每项装进state)
回到EQ,
所以看见 add,bind-update 这些逻辑时我很尴尬,因为 EQ 的
变量监听和变更检查 也是隔开,但却是通过
与同样是DSL的Van对比, EQ真正的竞争力 可能就是:
EQ里数据流是真的单向:和变量、和其他数据 合一unify
理论根基的不同,让EQ在几乎所有API上既能保持简洁,也有更完善的功能,而不只是XML的语法糖
因为这不是简单地“添加节点”,我不得不考虑到更多实际的需求,而需求.. 恰巧能覆盖到Vue,Solid 的那些优化,使优化能够基于 reasoning
Van所用的不是
state/signal(React,Solid), prop/ref(Vue2,3 DOM diff)Van的全局 state diff 虽然导致了"GC" 问题,但比memo, Svelte的编译,已经很先进了(虽然Van天然不兼容数组diff, 即便是把每项装进state)
回到EQ,
wKV, div(html/when替换) 皆是把变量合一到节点,app.it.to(st1) 把变更合一到变量树所以看见 add,bind-update 这些逻辑时我很尴尬,因为 EQ 的
.as(x=>+1) 派生变量和when节点是一回事变量监听和变更检查 也是隔开,但却是通过
obj.it 深遍历,不是分出 derive监听,updateDom 两期来“批量操作DOM”与同样是DSL的Van对比, EQ真正的竞争力 可能就是:
div(p(), ) 对Van是在“构造”DOM,对EQ则是在“解构,合一” EQ里数据流是真的单向:和变量、和其他数据 合一unify
理论根基的不同,让EQ在几乎所有API上既能保持简洁,也有更完善的功能,而不只是XML的语法糖
因为这不是简单地“添加节点”,我不得不考虑到更多实际的需求,而需求.. 恰巧能覆盖到Vue,Solid 的那些优化,使优化能够基于 reasoning
#statement
ee域
☺️ 道出EQ的精髓了(花了好久终于改好.. 很难意识到DOM居然要递归下降、“选中”事件变量、JS对象的深度合一)
EQ非响应式框架,无黑箱diff,而是针对变量&页面段;但处处都有 Vue,Svelte 的算法
"新建子节点"
内嵌CSS, bodys爬虫, as,to(天知道从 Kotlin let 设计到现在我考虑过多少) 改来改去,终于舒服了
断断续续半年的努力,居然就只是这一行字 ,感觉有点不甘心😱 但理论就是这么说的……
ee域
div(p(txt)),wOp,wSty,wKV 这些 挂载函数,与(完整)既存或新建子节点 带变量合一 降至文本层。选中或as派生一些按键量来做UX (靠 app.it.to 来合一新旧状态树/组)☺️ 道出EQ的精髓了(花了好久终于改好.. 很难意识到DOM居然要递归下降、“选中”事件变量、JS对象的深度合一)
EQ非响应式框架,无黑箱diff,而是针对变量&页面段;但处处都有 Vue,Svelte 的算法
"新建子节点"
as(数组ondiff, x=>), for
"降至文本层" when替换,html匹配, component
"新旧状态树/组" VDOM 或 Vaper,Svelte “编译期响应式”内嵌CSS, bodys爬虫, as,to(天知道从 Kotlin let 设计到现在我考虑过多少) 改来改去,终于舒服了
断断续续半年的努力,居然就只是这一行字 ,感觉有点不甘心😱 但理论就是这么说的……
duangsuse::Echo
#statement ee域 div(p(txt)),wOp,wSty,wKV 这些 挂载函数,与(完整)既存或新建子节点 带变量合一 降至文本层。选中或as派生一些按键量来做UX (靠 app.it.to 来合一新旧状态树/组) ☺️ 道出EQ的精髓了(花了好久终于改好.. 很难意识到DOM居然要递归下降、“选中”事件变量、JS对象的深度合一) EQ非响应式框架,无黑箱diff,而是针对变量&页面段;但处处都有 Vue,Svelte 的算法 "新建子节点" as(数组ondiff, x=>), for…
复制别人的技巧并不难。但没有魔法,就是最终极的魔法呀。 前端界只关心HTML 的人太多了,我的框架可不会只在UI上有用。
前端界被XML也框得太深了,而且明知道React难看还去抄hooks 真的聪明到 一点都不懂设计
React hydrate 无非就是对节点的那一侧做Memo,但包含“协调”在内,它引入了太多步骤,而 Svelte 又太魔法;它们也不过是对DOM和[{}] 做着“合一”,只是它们对JS侧太轻视了,很多技巧放JS里是独立的术语也不会有的。
他们一开始就没想好DOM模板各种用途下的本质是啥,只盯着React的响应式和自己会的前端技巧(甚至是有意采取“酷但脏”的数据结构),直接开始设计算法,结果到最后? 还不是又去开发 Vue3 VaperMode 这种“高性能编译”
我可能比他们多知道个 Prolog 和Eq双向关系,但稍微面向 ref() 设计下,或许就悟出要「带变量合一」了, 这个对API价值观,除了是有意忽视ref的重要性我想不到他们没走向细粒度,diff(refs) 的理由
猜测:Van 可能是不了解关系式编程 下的极限了,而它对数组diff 有明显缺陷
前端界被XML也框得太深了,而且明知道React难看还去抄hooks 真的聪明到 一点都不懂设计
React hydrate 无非就是对节点的那一侧做Memo,但包含“协调”在内,它引入了太多步骤,而 Svelte 又太魔法;它们也不过是对DOM和[{}] 做着“合一”,只是它们对JS侧太轻视了,很多技巧放JS里是独立的术语也不会有的。
他们一开始就没想好DOM模板各种用途下的本质是啥,只盯着React的响应式和自己会的前端技巧(甚至是有意采取“酷但脏”的数据结构),直接开始设计算法,结果到最后? 还不是又去开发 Vue3 VaperMode 这种“高性能编译”
我可能比他们多知道个 Prolog 和Eq双向关系,但稍微面向 ref() 设计下,或许就悟出要「带变量合一」了, 这个对API价值观,除了是有意忽视ref的重要性
GitHub
mini-react/docs/hydrate/hydrate源码剖析.md at master · lizuncong/mini-react
手写react、react-dom、react reconciler主流程源码,加深对react源码的理解。包括fiber,合成事件,hooks实现原理,dom diff,reconciliation,scheduler等 - lizuncong/mini-react
duangsuse::Echo
#statement ee域 div(p(txt)),wOp,wSty,wKV 这些 挂载函数,与(完整)既存或新建子节点 带变量合一 降至文本层。选中或as派生一些按键量来做UX (靠 app.it.to 来合一新旧状态树/组) ☺️ 道出EQ的精髓了(花了好久终于改好.. 很难意识到DOM居然要递归下降、“选中”事件变量、JS对象的深度合一) EQ非响应式框架,无黑箱diff,而是针对变量&页面段;但处处都有 Vue,Svelte 的算法 "新建子节点" as(数组ondiff, x=>), for…
我一直在思考为何EQ会这么“少数”,以图帮EQ查缺补漏。最像它的三个 Vue,Van,Svelte 被迫支持SSR,diff复用, 那为啥没有走向挂载渲染的「合一」
(和 baidu/san 对比很明显了。ps. san的作者的代码审美就是废的
EQ的理论完善虽然也花一个月,但它一开始就是朝“天然SSR” 的方向发展(是一个因素?)
我想最大的因素是 XML,SFC的风格 ,EQ的设计从头到尾都没正眼看过XML,JSX或文本模板,也从不关心
EQ用
Van 没有XML,但它太新了,连diff复用都还不够完善。光加个 state() 不能改变「编程范式」
他们没看过 Prolog 和 ohmjs.org 解析器,不知道可变量作为值的重要性,无法去思考事情的相通点,最终把 SSR,diff,memo 的一致性给打碎了
我讨厌Van 对「写法一致」的重视不够, ()=> 随处乱丢(和React.无JSX 学的),{onclick:} 这些感觉写法太多,而 derive(()=>) 似乎又和这类“渲染函数”无关
这种差异的背后,是“state都和node绑定,不能只和其他state” 之类的窄化,以及“常用函数名最长” 的条理无序
(和 baidu/san 对比很明显了。ps. san的作者的代码审美就是废的
EQ的理论完善虽然也花一个月,但它一开始就是朝“天然SSR” 的方向发展(是一个因素?)
我想最大的因素是 XML,SFC的风格 ,EQ的设计从头到尾都没正眼看过XML,JSX或文本模板,也从不关心
setTimeout 这些对DOM的优化幻觉(我相当敌视XML,喜欢ES6)EQ用
wOSK,elemVar 清晰穷举了DOM的本质, 而绝大部分框架是靠 @click,on-,. 这些弱类型的XML属性在做绑定。这启发EQ使用 按键变量(x=>选中) 如 CSS.rateLim(tap)(x=>), $bigBox(N2.xy(P)) 的调用风格,重构了一切Van 没有XML,但它太新了,连diff复用都还不够完善。光加个 state() 不能改变「编程范式」
他们没看过 Prolog 和 ohmjs.org 解析器,不知道可变量作为值的重要性,无法去思考事情的相通点,最终把 SSR,diff,memo 的一致性给打碎了
我讨厌Van 对「写法一致」的重视不够, ()=> 随处乱丢(和React.无JSX 学的),{onclick:} 这些感觉写法太多,而 derive(()=>) 似乎又和这类“渲染函数”无关
这种差异的背后,是“state都和node绑定,不能只和其他state” 之类的窄化,以及“常用函数名最长” 的条理无序
San
服务端渲染
从 3.8.0 开始,san 的服务器端渲染由 san-ssr 实现。如果你在使用 3.8.0 之前的 san,请参考 服务器端渲染(3.8.0 之前)。 San 的服务端渲染支持是基于 组件反解 的: 服务端输出的 HTML 中带有对视图无影响,能帮助组件了解数据与视图结构的标记片段 浏览器端,组件初始化时从标记片段理解组件结构,在后续用户操作时组件能正确响应,发挥作用 提示:由于组件运
#china #news 蛤为芯片分析:
A. 中国真的有能力锁国生产28nm的“超频”光刻机,所以敢说库存充足
B. 美国或荷兰开了口子(>7nm 商用都是意料之内),让华为遥遥领先赢麻了
方脸最后关于 LK-99 舆论火爆有个有趣的看法: 这就像苏联人,觉得第一个踏上月球成功了 就能提高生活品质,觉得自己能被新科技带飞
但其实呢, 还是要放下锅铲情节。尊重国家命运
A. 中国真的有能力锁国生产28nm的“超频”光刻机,所以敢说库存充足
B. 美国或荷兰开了口子(>7nm 商用都是意料之内),让华为遥遥领先赢麻了
方脸最后关于 LK-99 舆论火爆有个有趣的看法: 这就像苏联人,觉得第一个踏上月球成功了 就能提高生活品质,觉得自己能被新科技带飞
但其实呢, 还是要放下锅铲情节。尊重国家命运
YouTube
方脸说:麒麟9000S,真的是国货之光吗?这个中国芯到底是个什么水平?是轻舟已过万重山,突破美国封锁了吗?
00:00 开始
00:35 中国芯片四种可能的结果
01:40 四种结果的可能性
14:14 麒麟芯片的影响
00:35 中国芯片四种可能的结果
01:40 四种结果的可能性
14:14 麒麟芯片的影响
duangsuse::Echo
复制别人的技巧并不难。但没有魔法,就是最终极的魔法呀。 前端界只关心HTML 的人太多了,我的框架可不会只在UI上有用。 前端界被XML也框得太深了,而且明知道React难看还去抄hooks 真的聪明到 一点都不懂设计 React hydrate 无非就是对节点的那一侧做Memo,但包含“协调”在内,它引入了太多步骤,而 Svelte 又太魔法;它们也不过是对DOM和[{}] 做着“合一”,只是它们对JS侧太轻视了,很多技巧放JS里是独立的术语也不会有的。 他们一开始就没想好DOM模板各种用途下的本…
一些有意思的 #web 跑分
当然,这些只是用来反思对“黑科技”的过度迷信,因为JS根本不属于瓶颈—哪怕慢100倍都是 <1ms
[].join 对正常的示例都比+=更快,偏偏许多JSer把
V8 甚至为此修复了 React number preventExtensions 时的性能断层
Firefox 不能实现跨页 transfer(Blob )
强类型
Scroll listener 比 IntersectionObserver 慢一倍
当然,这些只是用来反思对“黑科技”的过度迷信,因为JS根本不属于瓶颈—哪怕慢100倍都是 <1ms
[].join 对正常的示例都比+=更快,偏偏许多JSer把
str`` 的情况拿来跑分Object.create(原型=null) 比{} 还慢, Set Map 更慢const,let 一样 ,箭头和function一样, Object.freeze() 慢百倍-但只seal() 时就一样。不要低估编译器V8 甚至为此修复了 React number preventExtensions 时的性能断层
Proxy 比 defineProperty 慢十倍createDocumentFragment() 更慢 - “减少 repaint” 正是VDOM的一个“特性”node.remove() 等于[hidden]。仍然可以重新appendFirefox 不能实现跨页 transfer(Blob )
强类型
CSS.px 更慢 ,似乎内核更接受字符串样式content="width=device-width" 或者说 touch-action: manipulation 的来历 Scroll listener 比 IntersectionObserver 慢一倍
Stack Overflow
Why is string concatenation faster than array join?
Today, I read this thread about the speed of string concatenation.
Surprisingly, string concatenation was the winner:
http://jsben.ch/#/OJ3vo
The result was opposite of what I thought. Besides, t...
Surprisingly, string concatenation was the winner:
http://jsben.ch/#/OJ3vo
The result was opposite of what I thought. Besides, t...
duangsuse::Echo
配图:方脸 官媒本想说民间团体「不用给国家添乱」,反而暴露了暖心主旋律都是能被摆拍的。 老胡本来想给市委「涿州护城河」言论洗,结果反而暴露了北京不需要河北人牺牲,也不需要纳税给河北人赔款,只是怪雄安建在了洪涝多发区。 团团只想辟谣卢沟桥冲毁,反被发现花纳税钱建的现代桥梁,竟不如历史遗迹抗洪? 牺牲13万人去捧一个雄安鬼城, ”泄洪提前2小时通知“,拒绝无证救援队,又说只遇难11人 ,这剧情和武汉爆发肺炎时、一夜清零变随阳时一样反智 涿州市民,那些车贷房贷没还完的,干了一辈子只有一间泡水楼的,现在联系不…
#china #life #news ☺️又到了五千年一直遇的暖心时刻: 王朝末年,天灾跟着人祸,无论你多“安稳奋斗”, 也会灵活拥有 泄洪区这种身份~
灾难也见民间真情!看那些有党支部的媒体🥰、水库,在泄洪前2小时还在拿着纳税钱 太平盛世 攘外安内,在台风来的前几天还“冷静”定于一尊。
它们拍手允许所有人活在现代化的热带丛林!这恩情该怎么报啊?
(正面报道)
艰难的决定,伟大的牺牲🙉
各种清零和泄洪突破了地理和历史的“桎梏”,无论你的政治倾向是否是朝鲜大清式的「没没没通过」,甚至是否在处级以上
洪水和红卫兵随时都能让你吃上绿化带❤️,成为“多数人”“人上人”的护城河
但其实呢,淹死你咳死你也不需要“割地赔款”, 它们凭啥要防灾或减灾呢? 你,就是铜墙铁壁。
https://m.youtube.com/watch?v=ZvN0rNHUtVo
灾难也见民间真情!看那些有党支部的媒体🥰、水库,在泄洪前2小时还在拿着纳税钱 太平盛世 攘外安内,在台风来的前几天还“冷静”定于一尊。
它们拍手允许所有人活在现代化的热带丛林!这恩情该怎么报啊?
(正面报道)
艰难的决定,伟大的牺牲🙉
各种清零和泄洪突破了地理和历史的“桎梏”,无论你的政治倾向是否是朝鲜大清式的「没没没通过」,甚至是否在处级以上
洪水和红卫兵随时都能让你吃上绿化带❤️,成为“多数人”“人上人”的护城河
但其实呢,淹死你咳死你也不需要“割地赔款”, 它们凭啥要防灾或减灾呢? 你,就是铜墙铁壁。
https://m.youtube.com/watch?v=ZvN0rNHUtVo
YouTube
深圳洩洪!中國地鐵滅頂⋯香港災民痛罵:又凌晨通知,怎麼逃?河北教訓沒學乖⋯一刀切懶政
中國在9/7號傍晚六點多發布,將在9/8號凌晨16分洩洪至深圳下游至香港地區,結果香港政府以及中國多家媒體,直到洩洪前的半小時至3分鐘前才發新聞通知市民⋯
讓許多人手足無措,深圳、香港多地捷運地鐵被淹,商場也是,各大主要道路甚至也被滅頂⋯為何中共明明在9/7號傍晚六點多發布,但新聞媒體出動報導時間在洩洪的前半小時呢?帶大家來分析一下⋯
📺️頻道會員:https://www.youtube.com/channel/UCvTe3Z7TZsjGzUERx4Ce6zA/join
👍不略過廣告支持我們,感謝留言按讚+分享…
讓許多人手足無措,深圳、香港多地捷運地鐵被淹,商場也是,各大主要道路甚至也被滅頂⋯為何中共明明在9/7號傍晚六點多發布,但新聞媒體出動報導時間在洩洪的前半小時呢?帶大家來分析一下⋯
📺️頻道會員:https://www.youtube.com/channel/UCvTe3Z7TZsjGzUERx4Ce6zA/join
👍不略過廣告支持我們,感謝留言按讚+分享…
duangsuse::Echo
我一直在思考为何EQ会这么“少数”,以图帮EQ查缺补漏。最像它的三个 Vue,Van,Svelte 被迫支持SSR,diff复用, 那为啥没有走向挂载渲染的「合一」 (和 baidu/san 对比很明显了。ps. san的作者的代码审美就是废的 EQ的理论完善虽然也花一个月,但它一开始就是朝“天然SSR” 的方向发展(是一个因素?) 我想最大的因素是 XML,SFC的风格 ,EQ的设计从头到尾都没正眼看过XML,JSX或文本模板,也从不关心 setTimeout 这些对DOM的优化幻觉(我相当敌视XML…
🥳 EQ的第一界API集构思好了,它构造DOM的方法,是直接把模板成分和JS值对应:
- it关键变量:
可变量等于
当然对 👨🦳👦👶 的例子,文本和age变量不对应,age就=Error 了 ;虽然不知有啥用但 Prolog 会检查满足条件
👆这些现在看起来没几行,可总的来说想了两个星期…… 一直在反转 ,无论是术语还是算法都改了三次
简单的关键字传参和emit靠
这些要素被“挂载”后
那么,想要做“防抖”就只用
……我只能说EQ的思想虽只是选中时赋值+递归合一, 但在实现时的每个细节, 都能看到那些“熟悉的面孔”:EQ真的是框架的联邦,一个有机整体,而不是由孤岛拼凑而成勉强能用的算法
- it关键变量:
html`文本${x}`, when(age.as(x=>[x>=100, x>=18]), ["👨🦳","👦"], "👼")
- 挂载函数: div(wOSK三要素, ...继续向下), as([abc], x=>bold(x), a=>ul('没有')), ee.组件({数据}.it)(挂载点)
- 递归下降$: html(..)(s) 按照s的类型挂载,与 div()(s) 唯一的不同是它不把挂载点=新建div s.nodeType, childNodes[.i], s.call(爬虫qs) 分别基于 append, 向右挂载-比如对缓存节点们 , 查询&挂载-或向结果的左右插入 ee.$(=> div$(wKV{wtf}, $选择下级(wOp监听) ) ) 可以爬取出 x.wtf ,$$监听新增可变量等于
html((e,s)=>s.既有节点? 将e.textContent或match赋值给v; 添加v并绑定replace)
as(a,when)就是基于以上赋值,列表a按
when(MultiType,{组:件}).most(a[0]) 创建缓存,add时只基于cloneNode。若匹配出的type不合适 v可以替换当然对 👨🦳👦👶 的例子,文本和age变量不对应,age就=Error 了 ;虽然不知有啥用但 Prolog 会检查满足条件
👆这些现在看起来没几行,可总的来说想了两个星期…… 一直在反转 ,无论是术语还是算法都改了三次
简单的关键字传参和emit靠
wOp(our={error:0, lang:'wtf'}),wKV{our} 这些要素被“挂载”后
our.error() 就是DOM事件了,lang也绑定某父节点。也可以 `await our.error`,这就是关系式编程的“变量”。ee.Count=({n=0})=>
button(
wOp({tap:n (x=>x+1)}),
n,'++ 是', n.as(x=>x+1)
)
你“选中赋值”了按键变量n,n被触发时,也会追加改变:如更新as复制的变量那么,想要做“防抖”就只用
1..s.rateLim(n键量)(自增)`,想要use鼠标位置就 `div(N2.xy(P)) .. 函数在左的“选中”会赋值按键量ee.Timer=({t=0, on})=>
div(
1..s.rate(t, on),
html`${t}secs`, btn(['启动'],on.as(true), //X.as() Y 是双向的
['重置'],Eq.$(_=>0, [t,on]))
) ……我只能说EQ的思想虽只是选中时赋值+递归合一, 但在实现时的每个细节, 都能看到那些“熟悉的面孔”:EQ真的是框架的联邦,一个有机整体,而不是由孤岛拼凑而成勉强能用的算法
duangsuse::Echo
🥳 EQ的第一界API集构思好了,它构造DOM的方法,是直接把模板成分和JS值对应: - it关键变量: html`文本${x}`, when(age.as(x=>[x>=100, x>=18]), ["👨🦳","👦"], "👼") - 挂载函数: div(wOSK三要素, ...继续向下), as([abc], x=>bold(x), a=>ul('没有')), ee.组件({数据}.it)(挂载点) - 递归下降$: html(..)(s) 按照s的类型挂载,与 div()(s) 唯一的不同是它不把挂载点=新建div…
- ee框架也会选中n,t-类似
- EQ会区分 123abc, [], {}.it 三类(it.按键变量) ,但它们都能被“选中”-以返回
[{组件},].diff 的本质是按key缓存
EQ的
对EQ而言,HTML就只是{k:v} 的一种形式。所以没有vDOM或响应式编译
三要素会有可选参数:
-
-
-
总的来说…… 😨 虽然原理变简单直白,完整的列出恐怕还需要验证 ;希望它真的能漂亮地实现一切
tap:n(自增) (更新button.text) ,这就是所谓“响应性”。- EQ会区分 123abc, [], {}.it 三类(it.按键变量) ,但它们都能被“选中”-以返回
.to(新值, (A,B)=>冲突合一)[{组件},].diff 的本质是按key缓存
(a=[1,]).map(x=>toStr) 这类“映射”在 a被add,filter,sort,. 后的结果,因此 [].it.v 是可变量=[当前, 欲到当前的移动增删]EQ的
a.onlys(搜索文本/函数) 就会利用数组diff过滤,而后ee利用 asBind(x=>组件(数据x), off缓存)(挂载点) 求差并 replaceChilds - 具体是 (x,e)=>(组件(数据x)(e), e)对EQ而言,HTML就只是{k:v} 的一种形式。所以没有vDOM或响应式编译
三要素会有可选参数:
-
wOp({tap:click}, 'only once') 就是 @click.prevent 了 (当然我没抄过Vue,这些都是后来去确认的)-
div(wSty({fg:color}, it)) 是基于自定义元素,如果要同时支持SSR就会转而靠<style scoped>了-
wSty({bg, $类名,$$div: {} }, '') 是js2css总的来说…… 😨 虽然原理变简单直白,完整的列出恐怕还需要验证 ;希望它真的能漂亮地实现一切
duangsuse::Echo pinned «🥳 EQ的第一界API集构思好了,它构造DOM的方法,是直接把模板成分和JS值对应: - it关键变量: html`文本${x}`, when(age.as(x=>[x>=100, x>=18]), ["👨🦳","👦"], "👼") - 挂载函数: div(wOSK三要素, ...继续向下), as([abc], x=>bold(x), a=>ul('没有')), ee.组件({数据}.it)(挂载点) - 递归下降$: html(..)(s) 按照s的类型挂载,与 div()(s) 唯一的不同是它不把挂载点=新建div…»
duangsuse::Echo
🥳 EQ的第一界API集构思好了,它构造DOM的方法,是直接把模板成分和JS值对应: - it关键变量: html`文本${x}`, when(age.as(x=>[x>=100, x>=18]), ["👨🦳","👦"], "👼") - 挂载函数: div(wOSK三要素, ...继续向下), as([abc], x=>bold(x), a=>ul('没有')), ee.组件({数据}.it)(挂载点) - 递归下降$: html(..)(s) 按照s的类型挂载,与 div()(s) 唯一的不同是它不把挂载点=新建div…
效仿 #Kotlin 果然是错的决定。kt爱“术语洗稿”的风格,原来从2017标准库就开始定下了……
幸好,现在的绝句能基于做/到函数
但看起来
总之,开明的语法配上一致的规范,味道真挺不错的
唯独可惜的是, 它们越来越不能“独当一面”了…… EQ的模板与“选中按键变量” 构思好后,整个框架似乎都萎缩了(虽然仔细对比会发现功能是一样多)。当然,越易学就越好
有些新功能一旦成为体系,看起来就稀松平常了,少到让人觉得是否会“不够用”…… 但它们曾显得非常helpful
幸好,现在的绝句能基于做/到函数
1:[x] x+1, (0~9)|: say(+ 1), kv:[k|v]字典 ,不加歪七扭八的术语🙉但看起来
|: 这些就很晦涩啊? 不过,绝句是用这俩的重载,取代了所有 for if filter map await Closable.use .."89"==((0~9) {!< 8}: "$this").Str
(0..9).filter{it>=8}.map{"$it"}.joinToString("")
resp.isOk or good: A
(x==0) { A }: B “多个参函”
if(resp.isOk()||good) A
if(x==0){A}else{B}
“对单项的filter”"ab"{!has "a"}? {this}or "bad"
at v = [|key v] ["k"] or: return
"ab".takeIf{"a" !in it}?.run {this} ?: "bad"
val v = mapOf("key" to "v")["k"] ?: return
at now:
x Way<Int Str>.A(0)
y x {+1} {error}
var x=Either<Int,String>.Left(0) //同Result
var y=x.fold({it+1}, ::error)
现在我轮转设计的四个项目, 都逐渐迁移到了与as/to 相关的体系🥰像 when(age.as(x=>[x>=100, x>=18]), HTML分支) 这样的变量总之,开明的语法配上一致的规范,味道真挺不错的
唯独可惜的是, 它们越来越不能“独当一面”了…… EQ的模板与“选中按键变量” 构思好后,整个框架似乎都萎缩了(虽然仔细对比会发现功能是一样多)。当然,越易学就越好
有些新功能一旦成为体系,看起来就稀松平常了,少到让人觉得是否会“不够用”…… 但它们曾显得非常helpful
duangsuse::Echo
#china #life #news ☺️又到了五千年一直遇的暖心时刻: 王朝末年,天灾跟着人祸,无论你多“安稳奋斗”, 也会灵活拥有 泄洪区这种身份~ 灾难也见民间真情!看那些有党支部的媒体🥰、水库,在泄洪前2小时还在拿着纳税钱 太平盛世 攘外安内,在台风来的前几天还“冷静”定于一尊。 它们拍手允许所有人活在现代化的热带丛林!这恩情该怎么报啊? (正面报道) 艰难的决定,伟大的牺牲🙉 各种清零和泄洪突破了地理和历史的“桎梏”,无论你的政治倾向是否是朝鲜大清式的「没没没通过」,甚至是否在处级以上 洪…
#history 方脸:中国离计划经济还有多远?
生育和恋爱都能计划,水稻上山下山也“随机应变”, 医保和寿命也指标分配一下?
是否想创建一家由 🐻的看法作为KPI,而统一的「中国公司」,把你变成执行🐻项目的流水线—或代价呢?
1. 基本是公司运行:定额工作和共享、「先锋队」当工头、用宏大理想打压工会,把人的社会变成粒子的1+1+1...
2. 宏观调控“举国体制”,不是左政府(公权大<->私权大) 特有的。纳粹德国、政治正确也为统一地球,或者种族融合做过
3. 理想计划,由精英制定:「人类的发展,是可以用专业知识预判的,只有听头羊的效率才会高」(微软和Nokia哭晕
ps. "公权" 的公一般指公平,不是王公贵族的公。 自由<->集权 是纵轴的
缺点 (1)毫无变通性,决定只由少数人讨论,一错就到底
外行指导内行or中间商赚差价,你选一个。
KPI和层层加码忽视了个体和局部的差异, 就像土地不都一般肥沃-而要合理种植,消费者不是买米面, 孕妇和透析患者来不及12小时核酸…… 各种的至上是纯开销
中国各级🐻对“娱乐价值”的打压,被 游戏->显卡-> AI 回力标打脸证明,这种人定胜天的傲慢,会应验在国家的命运上
平凡的民主政府: 没有人永远正确,但永远有人正确
(2)赢得因小失大 顾此失彼,从性价比上就是骗局。
在大跃进、文革那13年,似乎放飞几颗卫星,一切问题就迎刃而解了,饿莩遍野,就自然消失了
对蛤为芯片的褒贬都存在一个误区: 它是造出来卖钱的,不是拿来赢的。 它的良率和制造成本、研发花的钱值吗??这下输的更不留情面
🐻们总是把自己计划的成功,想当然地转变成全国的胜利:幻想靠芯片和电动车超过美国,就能让日子变好..?
不论是纳粹德国的战争胜利,还是苏联的科技成功,都不会让你的压力降低:
苏联率先实现登月:挽救不了生活经济崩溃的结局
老板赞美你在工会的诱惑下仍「吃苦耐劳」: 你们两个真厉害,而你,工资涨了一丁点
中国在清零上取得「关键」胜利:大败于美国的经济争斗
德国赢麻的1942:民众购买一块面包的平均工作时长,是战前的3倍(那鹅爹呢)
美国人开销一顿下午茶,就换到苏联人举国的一口气 。 他们连屋子都是租国的,这辈子过得只有那一口气可争 😤
某些慈禧刚刚宣战时,她就已经赢了,看似丧权辱国时,她又双赢了
听美国的,生产市场加入国际化,放权别打内战,台积电自然会有中国版,中美经济自然会趋向“平起平坐”,“精美”的台湾为何不会亲一个美式的中? 所以🐰它们在狂热什么??
这种误导就像:日本的废水喝不得,但中国的废水、马桶水呢?
赢了“白莲花”比赛,输了科学和国运
现代的民主政府: 有公务员反对你润日举旗的政治立场,而他们无权决定你的言论自由
(3)搞反了主仆关系
列宁:人民群众是愚昧无知的,需要左派领导
希特勒:我要净化全人类
正常的民主政府:我是人民选出的管家物业,可不能到处指挥人民今天该对谁牺牲奉献
独裁国民往往把政府定义为“管理学”,必须大拿税钱实现丰功伟绩。
优点:
(1)满足了封建孝子们—争当人上人的「阿Q美梦」,和让人家做主的包衣思想
(2)如果人真的是没有欲望的虫群,就连又老又笨的“母虫” 们也甘愿自我牺牲的话😅,那共产会很先进:但恐怕是像建深圳建郑州时不加下水道、为了求快被撞飞的温州动车、楼市崩盘市政破产一样快,中国速度!
一个国家的命运,不是看它最高的楼、最深的城府有多“大”的塑料壳,
而是看它最“小”的国民有多大的尊严。 因为任何“科学家” “男足球员” “新行业精英”都可能早在面临弱势光景时一蹶不振,政府所要吃的亏,就是产业升级的必要条件
但,人性就是人性
是否想创建一家由 🐻的看法作为KPI,而统一的「中国公司」,把你变成执行🐻项目的流水线—或代价呢?
1. 基本是公司运行:定额工作和共享、「先锋队」当工头、用宏大理想打压工会,把人的社会变成粒子的1+1+1...
2. 宏观调控“举国体制”,不是左政府(公权大<->私权大) 特有的。纳粹德国、政治正确也为统一地球,或者种族融合做过
3. 理想计划,由精英制定:「人类的发展,是可以用专业知识预判的,只有听头羊的效率才会高」
缺点 (1)毫无变通性,决定只由少数人讨论,一错就到底
外行指导内行or中间商赚差价,你选一个。
KPI和层层加码忽视了个体和局部的差异, 就像土地不都一般肥沃-而要合理种植,消费者不是买米面, 孕妇和透析患者来不及12小时核酸…… 各种的至上是纯开销
中国各级🐻对“娱乐价值”的打压,被 游戏->显卡-> AI 回力标打脸证明,这种人定胜天的傲慢,会应验在国家的命运上
平凡的民主政府: 没有人永远正确,但永远有人正确
(2)赢得因小失大 顾此失彼,从性价比上就是骗局。
在大跃进、文革那13年,似乎放飞几颗卫星,一切问题就迎刃而解了,饿莩遍野,就自然消失了
对蛤为芯片的褒贬都存在一个误区: 它是造出来卖钱的,不是拿来赢的。 它的良率和制造成本、研发花的钱值吗??
不论是纳粹德国的战争胜利,还是苏联的科技成功,都不会让你的压力降低:
苏联率先实现登月:挽救不了生活经济崩溃的结局
老板赞美你在工会的诱惑下仍「吃苦耐劳」: 你们两个真厉害,而你,工资涨了一丁点
中国在清零上取得「关键」胜利:大败于美国的经济争斗
德国赢麻的1942:民众购买一块面包的平均工作时长,是战前的3倍(那鹅爹呢)
美国人开销一顿下午茶,就换到苏联人举国的一口气 。 他们连屋子都是租国的,这辈子过得只有那一口气可争 😤
某些慈禧刚刚宣战时,她就已经赢了,看似丧权辱国时,她又双赢了
听美国的,生产市场加入国际化,放权别打内战,台积电自然会有中国版,中美经济自然会趋向“平起平坐”,“精美”的台湾为何不会亲一个美式的中? 所以🐰它们在狂热什么??
这种误导就像:日本的废水喝不得,但中国的废水、马桶水呢?
赢了“白莲花”比赛,输了科学和国运
现代的民主政府: 有公务员反对你润日举旗的政治立场,而他们无权决定你的言论自由
(3)搞反了主仆关系
列宁:人民群众是愚昧无知的,需要左派领导
希特勒:我要净化全人类
正常的民主政府:我是人民选出的管家物业,可不能到处指挥人民今天该对谁牺牲奉献
独裁国民往往把政府定义为“管理学”,必须大拿税钱实现丰功伟绩。
优点:
(1)满足了封建孝子们—争当人上人的「阿Q美梦」,和让人家做主的包衣思想
(2)如果人真的是没有欲望的虫群,就连又老又笨的“母虫” 们也甘愿自我牺牲的话😅,那共产会很先进:但恐怕是像建深圳建郑州时不加下水道、为了求快被撞飞的温州动车、楼市崩盘市政破产一样快,中国速度!
一个国家的命运,不是看它最高的楼、最深的城府有多“大”的塑料壳,
而是看它最“小”的国民有多大的尊严。 因为任何“科学家” “男足球员” “新行业精英”都可能早在面临弱势光景时一蹶不振,政府所要吃的亏,就是产业升级的必要条件
但,人性就是人性
Forwarded from 瑞秋今天学什么
非常清晰易懂带动画图解的算法书,准备好好啃啃
https://github.com/krahets/hello-algo
https://github.com/krahets/hello-algo
GitHub
GitHub - krahets/hello-algo: 《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust…
《Hello 算法》:动画图解、一键运行的数据结构与算法教程。支持简中、繁中、English、日本語,提供 Python, Java, C++, C, C#, JS, Go, Swift, Rust, Ruby, Kotlin, TS, Dart 等代码实现 - krahets/hello-algo
duangsuse::Echo
#py 周刊 - Excel 支持 import pandas, statsmodels, matplotlib / seaborn 了, Guido 亲自推广(可能是云计算,要订阅) - PowerToys添加“可交互”的截图 - Google 等各种大公司的技术blog #list - #apple #design 设计师法则 - #learn 看美军的脏话官话(F-words)学英语 。 - 单靠 #sql 如何保存数据 - APL 里有的 py 基本列表处理式 - FastAPI 最佳实践 list…
#py 周刊
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计
Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
(ps. 这人怎么 parser 都不会写啊, (1+ 换行 1) 时解析失败,等待下一行不就行了吗? 他只是写了个众所周知的hint
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了
🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp
#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图
📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快
🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能
HackerNews 等新闻聚合
本该辅助思维的工具,如何异化我们
pysentation: 在终端展示你的py代码
js anti-debug: 尝试阻止全编程界最优秀的 DevTools,
https://github.com/theajack/disable-devtool/blob/master/src/detector/sub-detector/func-to-string.ts
v0.dev: 生成预览和迭代HTML设计
Mojo 🔥 Linux版本可用, 自带 Tensor(nd),DType 支持
这个 let var 是干嘛啊(还有Java式的 class Benchmark..),Python 简洁的优势都丢了
🤖 Falcon 作为当前最大的开源大模型,有 180B 参数,在 3.5 万亿词的 TII RefinedWeb 上训练
jieba的替换: pkuseg-python , hanlp
#wasm #plt 500行迷你C编译器
🥧 半手工绘制 plt.极座标直方图
📈 #algorithm min/maxHeap 有序列实现
#bin Bloom filter 集合 位运算实现 —性质类似WeakSet, 非常快
🐳 用Podman部署py包 [维护pip包]
📝 使用 Protobuf message{} 储存和传输
protoc --python_out=. .\music.proto
from music_pb2 import Library
Library().add(music).K=V
lib.SerializeToString()
lib.ParseFromString(f.read()) compress:基于个人语料库的快捷输入工具
gpt_academic #zh gui : 为 ChatGPT/GLM 提供实用化交互界面
GPT 学术优化,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件,支持 Python 和 C++ 等项目剖析&自译解功能,PDF/LaTex 论文翻译&总结功能
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#19:Mojo 终于提供下载了!
🦄文章&教程
1、Mojo🔥 终于提供下载了!
2、我们能从 PEP-703 中学到什么?
3、用 500 行 Python 代码写一个 C 语言编译器
4、简单介绍如何用 Python 作协议缓冲区编程
5、用 Python 和 matplotlib 创建漂亮的极坐标直方图
6、布隆过滤器图解与 Python 实现
7、Python 中的堆数据结构:最小和最大堆实现
8、Python 容器化部署教程…
Python 潮流周刊#19:Mojo 终于提供下载了!
🦄文章&教程
1、Mojo🔥 终于提供下载了!
2、我们能从 PEP-703 中学到什么?
3、用 500 行 Python 代码写一个 C 语言编译器
4、简单介绍如何用 Python 作协议缓冲区编程
5、用 Python 和 matplotlib 创建漂亮的极坐标直方图
6、布隆过滤器图解与 Python 实现
7、Python 中的堆数据结构:最小和最大堆实现
8、Python 容器化部署教程…
duangsuse::Echo
感觉虽然有些收获,也都是没啥意思的问题…… 面试呢,或许对我这种数学渣就都做不到的吧? #statement 我讨厌这种AI都能写的问题,这些”深刻思考“有什么价值呢? 总是一些算法,让编程变成一种不快乐的任务、变成帮出题人自问自答的”寻宝“ 这些出题人又有多聪明呢? 大众都在润色70年前,世上还没电脑时就有的问题, 而小众又能成什么气候,又如何让他们的沧海遗珠给时兴编程带来价值呢? 如果用《算法图解》那种小说口吻去讲,做一些有弹性的科普视频,倒是有娱乐价值;如果写代码只是为了复制粘贴「能用的东西…
#PLT #recommend parser bin(两个月前 的补充
ink流是保存 i+leN,kind,kUp 的高亮区间表,配合 if-for-tup("P+."模式)
也就是二进制里的 union-struct-sizeArray 的读取解释下:
只有 [tup] 会向前走,它按i0+偏移做读写器绑定
不能只靠 json("123") 返回值,而要
这样实现递归靠
当然ELF,JVM里还需a.push,chk位旗,[+,偏移量池] 的情况
之前想的版本一直有很复杂的函数接口,因为要基于“组合子”。 现在可以大概说编译器是哪类算法:
1. 浅先遍历
左递归 A=ab|A ba 实质是带验证的abba+。 a=>(b=>外层的a不算是局部)
变量->$0位置参数/全局[k] 闭包->new Fn(捕获,){}/fn.bind(可变量cell)
2. 深先遍历
class{} 等签名信息的“赋值”和重载查找是编译期的,也叫静态检查。可变量的类型是“常量字面”,字典键的类型却每次检查--如函数值的接口相同,类却多态
函数级线程: 能在调用后继续旧函数。不是线程的附属品
把return变成函数(CPS)就不会栈溢,或者说只能有(+a b c返回函数)-比如 time.sleep ,这需要切碎for,if和调用链 所以不叫回调 (就像[1 x]=[2 y] 太“无序”所以不叫解构,流读写,双绑,.. 难看的不是现实,而是写法)
现代 a+b 想变成这样,async()=>.then就是“返回函数”了 (DOM就是调度器^);而如果在指定线程回调,就叫 coroutine
只做1. 会导致 var x=1, f(1) 等上文节点离不开浅层步骤(不能靠自己的 call stack), 因此有种
只做2. 就是ANTLR,Lex-YaCC 这些“高端食材”用LL,LALR..自动机的理由了(准确的说是在C+x86里搞了一层虚拟机)
ink流只是靠浅先遍历,类似Prolog它是基于绑定(而非赋值)。虽极适合数据类与过滤,也不是所有变量都能用关系来编程(e.g. rust->llvm 想双向很难, x86->bytes 会稍微合适了)
编程范式是一种开发手段,增加手段对优化很有用,但小心聪明自误。(e.g. 彻底的分析和非平凡的变换-> 浅先解析+深先查表算常量,样板码生成/解释执行.. 怎样?对得上吧)
ink流是保存 i+leN,kind,kUp 的高亮区间表,配合 if-for-tup("P+."模式)
也就是二进制里的 union-struct-sizeArray 的读取解释下:
mayNum=[P,['intLongs-proto',a=[4], [8]], 0]
may,a.to(深赋值) 只让P,[+n] (创建的区间)被整体替换, s.to(sEdit,iIns) 若失败则向上重试--到整个文件只有 [tup] 会向前走,它按i0+偏移做读写器绑定
不能只靠 json("123") 返回值,而要
P(['语法123'], s=["ink区间链"], ast={})
就像 split('',"abc", out=[])-很适合弱类型这样实现递归靠
['', [P,ab,'']] 就能无限ababa了,比fnref() 晚赋值更方便当然ELF,JVM里还需a.push,chk位旗,[+,偏移量池] 的情况
之前想的版本一直有很复杂的函数接口,因为要基于“组合子”。 现在可以大概说编译器是哪类算法:
1. 浅先遍历
/a b? c+/ 这样的形式文法-处理好数据报错,过程中用逆波兰算 1+2=3, 或保留 (+ 1 2) 以便多次检查,rustfmt左递归 A=ab|A ba 实质是带验证的abba+。 a=>(b=>外层的a不算是局部)
变量->$0位置参数/全局[k] 闭包->new Fn(捕获,){}/fn.bind(可变量cell)
2. 深先遍历
(+1(*2 3)) (+1 6) 这样的树(多个赋值就成了图IR)class{} 等签名信息的“赋值”和重载查找是编译期的,也叫静态检查。可变量的类型是“常量字面”,字典键的类型却每次检查--如函数值的接口相同,类却多态
函数级线程: 能在调用后继续旧函数。不是线程的附属品
把return变成函数(CPS)就不会栈溢,或者说只能有(+a b c返回函数)-比如 time.sleep ,这需要切碎for,if和调用链 所以不叫回调 (就像[1 x]=[2 y] 太“无序”所以不叫解构,流读写,双绑,.. 难看的不是现实,而是写法)
现代 a+b 想变成这样,async()=>.then就是“返回函数”了 (DOM就是调度器^);而如果在指定线程回调,就叫 coroutine
只做1. 会导致 var x=1, f(1) 等上文节点离不开浅层步骤(不能靠自己的 call stack), 因此有种
eval(e箭头函数 ,env)(arg)=eval(e.body,assign(argkv,env0)) 会把env(栈+全局)拷一份只做2. 就是ANTLR,Lex-YaCC 这些“高端食材”用LL,LALR..自动机的理由了(准确的说是在C+x86里搞了一层虚拟机)
ink流只是靠浅先遍历,类似Prolog它是基于绑定(而非赋值)。虽极适合数据类与过滤,也不是所有变量都能用关系来编程(e.g. rust->llvm 想双向很难, x86->bytes 会稍微合适了)
编程范式是一种开发手段,增加手段对优化很有用,但小心聪明自误。(e.g. 彻底的分析和非平凡的变换-> 浅先解析+深先查表算常量,样板码生成/解释执行.. 怎样?对得上吧)
Telegram
duangsuse::Echo
#statement #PLT
编程造成问题 vs 解答造成编程
现况带来问题 vs 审美带来现况
软件的价值很有限,思想的复杂很空虚;不以自己的价值观拉黑人,是最大的尊重
我们有时难相理解🧐
“那你的 IDE 做的怎么样了,带类型的补全有么,还是笔记本没高亮?”
(“IDE支持? parser写完了当然会自带高亮和变量寻址/空缺提示啊? 什么叫能解析,但没高亮?”)
这是因为我草稿的PRR 里,输入流就是用高亮-区间嵌套来实现增量解析;没有高亮你连 unparse(ast) 都做不到
—诶,…
编程造成问题 vs 解答造成编程
现况带来问题 vs 审美带来现况
软件的价值很有限,思想的复杂很空虚;不以自己的价值观拉黑人,是最大的尊重
我们有时难相理解🧐
“那你的 IDE 做的怎么样了,带类型的补全有么,还是笔记本没高亮?”
(“IDE支持? parser写完了当然会自带高亮和变量寻址/空缺提示啊? 什么叫能解析,但没高亮?”)
这是因为我草稿的PRR 里,输入流就是用高亮-区间嵌套来实现增量解析;没有高亮你连 unparse(ast) 都做不到
—诶,…
duangsuse::Echo
#PLT #recommend parser bin(两个月前 的补充 ink流是保存 i+leN,kind,kUp 的高亮区间表,配合 if-for-tup("P+."模式) 也就是二进制里的 union-struct-sizeArray 的读取解释下: mayNum=[P,['intLongs-proto',a=[4], [8]], 0] may,a.to(深赋值) 只让P,[+n] (创建的区间)被整体替换, s.to(sEdit,iIns) 若失败则向上重试--到整个文件 只有 [tup] 会…
#statement 好的习惯
这一个“深-浅”的用词一致,就能帮你理顺枝节、甚至发现/创造更多联系,所以设计是超值的,是计科最好的习惯。
我们管的就是语言符号,而文字是符号里最被低估的一种。 就像“谁都学得会文科”,但成功的人依旧是少数— 那不是在流水线上学来的。技术可以敷衍照般,但每个产品的设计和口号,都是随时代随人的
PLT,CS人年年有,但里面最看得起应用编程的.. 不就是JS,Py 这些“垃圾语言”的作者们吗。 这些人太少了,因为Java厨都偷渡到Py来了。 Java21和Observe Adapt Filter,.. 老旧的模式都支撑不住他们优化架构的野心了
我对代码一般是不浪漫的,生活的感性诉求和创作分享是两回事
我会不会因为想明白上一条(或者在未来因为有人star),而觉得自己很独特“很精英”?真的……只有机器才会攀比吧,挺无聊的。 1种算法有100种讲法,讲了70年,差异比人vs猴还大。
FFT就是被复数向量简化后,又被计科发扬光大的,为何Fourier自己没把公式合一,再让计算量减半呢? 因为语言符号是重构的瓶颈,因为你做了,才是你做的。 无论怎么歌颂公式的优美,心智负担就是负担。 怪异的一切未必有理由。
Linux,GCC,nodejs 在没人star时是怎么写出来的?只是因为他们想:他们不必自为认是精英,才能做自己想做的,即便乘法都不会算。 这边的世界反而没有“点赞”
人的独特,不是因为能选中含红绿灯的图片,而是天赋的,是因为那些非恒定、非广义的知识; 工具和人都会竞争“稀缺”“强”,这种时候失败才是社会的进步,才是普通人赢麻了
机器("纯技术")侧设计并不能让人们活得更好、更有尊严, 那些不在谈论代码就贬低别人的大佬,也是群在赶鸭子上架的被PUA工具人,他们比现实问题,更关心“大而无用”的抽象。这才像他们讨厌的文科生吧?
他们看不清自己只是复制了若干年前诞生,便迅速无同行问津的体系。除了一堆新术语,连错误都不是原创。 以为自己是在淘金,但拿出手的更多是有色的沙子,因为这就是他们的价值观:高低观。
为了别人的捧场,连无法复制的审美都能放下,这样怎能称为是「软件工艺」呢
我想Backus(Fortran式的矩阵,LAPACK,Matlab今天还用), Dijkstra(无goto和递归风格启发了未来), Steve Jobs 也正是曾努力逃离程序员的标签,而从未领悟“只有我懂汇编”的“核心技术”!
所以他们强,强得不平庸也不偶然,而不是中式高材生的范进太强
作为强者,不懂得反思,就会像《三体》里的火箭科学家一样,阻碍科学进步。要是抱着躺平一半的心态,做小事,常常嘲笑自己的设计,反有奇效
大众了的真理确实是废话,但科学却要不断前进,表里如一地求索真理的频率。
这一个“深-浅”的用词一致,就能帮你理顺枝节、甚至发现/创造更多联系,所以设计是超值的,是计科最好的习惯。
我们管的就是语言符号,而文字是符号里最被低估的一种。 就像“谁都学得会文科”,但成功的人依旧是少数— 那不是在流水线上学来的。技术可以敷衍照般,但每个产品的设计和口号,都是随时代随人的
PLT,CS人年年有,但里面最看得起应用编程的.. 不就是JS,Py 这些“垃圾语言”的作者们吗。 这些人太少了,因为Java厨都偷渡到Py来了。 Java21和Observe Adapt Filter,.. 老旧的模式都支撑不住他们优化架构的野心了
我对代码一般是不浪漫的,生活的感性诉求和创作分享是两回事
我会不会因为想明白上一条(或者在未来因为有人star),而觉得自己很独特“很精英”?真的……只有机器才会攀比吧,挺无聊的。 1种算法有100种讲法,讲了70年,差异比人vs猴还大。
FFT就是被复数向量简化后,又被计科发扬光大的,为何Fourier自己没把公式合一,再让计算量减半呢? 因为语言符号是重构的瓶颈,因为你做了,才是你做的。 无论怎么歌颂公式的优美,心智负担就是负担。 怪异的一切未必有理由。
Linux,GCC,nodejs 在没人star时是怎么写出来的?只是因为他们想:他们不必自为认是精英,才能做自己想做的,即便乘法都不会算。 这边的世界反而没有“点赞”
人的独特,不是因为能选中含红绿灯的图片,而是天赋的,是因为那些非恒定、非广义的知识; 工具和人都会竞争“稀缺”“强”,这种时候失败才是社会的进步,才是普通人赢麻了
机器("纯技术")侧设计并不能让人们活得更好、更有尊严, 那些不在谈论代码就贬低别人的大佬,也是群在赶鸭子上架的被PUA工具人,他们比现实问题,更关心“大而无用”的抽象。这才像他们讨厌的文科生吧?
他们看不清自己只是复制了若干年前诞生,便迅速无同行问津的体系。除了一堆新术语,连错误都不是原创。 以为自己是在淘金,但拿出手的更多是有色的沙子,因为这就是他们的价值观:高低观。
为了别人的捧场,连无法复制的审美都能放下,这样怎能称为是「软件工艺」呢
我想Backus(Fortran式的矩阵,LAPACK,Matlab今天还用), Dijkstra(无goto和递归风格启发了未来), Steve Jobs 也正是曾努力逃离程序员的标签,而从未领悟“只有我懂汇编”的“核心技术”!
所以他们强,强得不平庸也不偶然,而不是中式高材生的范进太强
作为强者,不懂得反思,就会像《三体》里的火箭科学家一样,阻碍科学进步。要是抱着躺平一半的心态,做小事,常常嘲笑自己的设计,反有奇效
大众了的真理确实是废话,但科学却要不断前进,表里如一地求索真理的频率。
duangsuse::Echo
#py 周刊 #recommend #tool 带有 "Android 子系统", taskmgr,... 的网页版Win12 demo 🎨 #algorithm Hello Algo 多语言实例 #tool EasySpider +可视化编程 #android 高级包管理器 js: await using fp = openFile() Flask 深入探索: 请求上文、会话、CORS fastapi-users:开箱即用的 FastAPI 用户管理库 Django 发送带有验证链接的电子邮件…
#web 前端真的是需要新血液了…… 连个绝对定位和drag,resize 都那么稀罕
https://zhuanlan.zhihu.com/p/654984542
htmx 也是魔怔了,React(SSR组件)确实烂,但把烂代码放在node侧,那也是一样的,而是是反直觉的。 Vue都算最良心的了
htmx 在Django, Streamlit 之类爆火可能取决于前后端谁主场的问题, 反正我会站JS,py和直连DOM比谁更成熟不用说的
Van 支持 hydrate 了,好吧…… 好像只+1行代码 ,看起来就是纯replace
本来我想去建议Tao加个
后来觉得算了,只支持“选中”也怪割裂的,何况它的列表模板还在用map 甚至不支持真正的hydrate,可以遇见到它以后也很难支持:低抽象度这时是缺点。Van和Eqv差得太多了
https://zhuanlan.zhihu.com/p/654984542
htmx 也是魔怔了,React(SSR组件)确实烂,但把烂代码放在node侧,那也是一样的,而是是反直觉的。 Vue都算最良心的了
htmx 在Django, Streamlit 之类爆火可能取决于前后端谁主场的问题, 反正我会站JS,py和直连DOM比谁更成熟不用说的
Van 支持 hydrate 了,好吧…… 好像只+1行代码 ,看起来就是纯replace
init: Number(dom.getAttribute("data-counter")),
再看到 interface Props { 和 const{} = van.tags 我有点失望,不过 link({rel: "icon", href: "logo.svg"})
确实比 link(wKV({})) 好看,也更一致…… 很多接口要定型了。😐本来我想去建议Tao加个
state(0)(x=>x+1) 的用法,因为只有非JSX非模板的框架,能用好这种写法后来觉得算了,只支持“选中”也怪割裂的,何况它的列表模板还在用map 甚至不支持真正的hydrate,可以遇见到它以后也很难支持:低抽象度这时是缺点。Van和Eqv差得太多了
知乎专栏
看完这位小哥的GitHub,我沉默了
就在昨天,一个名为win12的开源项目一度冲上了GitHub的Trending热榜。 而且最近项目的Star量也在飙升,目前已经获得了2.2k+的Star标星。 出于好奇,点进去看了看。好家伙,项目README里写道这是一个14岁的初中生所…
duangsuse::Echo
#PLT #zhihu #wasm Moonbit 月兔编程语言alpha(reScript 作者的续作), 提供了许多算法(HAMT tire map, AVL tree) 的 code playground 语法有点像Go+Rust,支持List/Array,模式匹配和推导,但非常轻量,而且和Go一样易用,编译到WASM❤️。 本来想答一下的…… 但最近还有框架在设计,因为没发现比绝句更多的功能或更清晰的模型就不想再分析了 自己在设计的框架和业界差别太大…… 看着这满屏的 let,self,func…
提到 #wasm , moonbit , wa-lang 是几门国内维护的语言设计
🤔“ 凹语言对贡献者之外的人有什么意义?不知道——正如刚才提到的:作品对受众的意义,从来不是作者可以定义的
——硬要给出一个猜测的话,大概率是:“对大多数开发者来说,没有任何意义”。但那又如何呢,
程序员在总人口中只占相当小的比例,这意味任何一门编程语言,哪怕它已经被广泛使用,大多数地球人顶多听它的名字而已,完全没法体会它对自己有什么意义;
我重写了WA的几条示例。现在绝句的无关键字流控感觉…… 总之有与整个编程界分道扬镳的倾向
比较糟心的一个,是我误解了React,Nextjs 的流式SSR。 我以为是要把客户端状态变量上传,但其实主流SSR依然是添加事件监听的 (它们说是基于“同构”blabla, 其实EQ就是同构 所以不能止步于此),相当于在httpd上开个浏览器去路由并加载。
不过现在靠服务端S(x=>匿名函数) 就避免下发html了,好像比事件上传更灵活
🤔“ 凹语言对贡献者之外的人有什么意义?不知道——正如刚才提到的:作品对受众的意义,从来不是作者可以定义的
——硬要给出一个猜测的话,大概率是:“对大多数开发者来说,没有任何意义”。但那又如何呢,
程序员在总人口中只占相当小的比例,这意味任何一门编程语言,哪怕它已经被广泛使用,大多数地球人顶多听它的名字而已,完全没法体会它对自己有什么意义;
我重写了WA的几条示例。现在绝句的无关键字流控感觉…… 总之有与整个编程界分道扬镳的倾向
- main(n=30)
say("$n 以内质数")
(2~n):[x]
(2~log2(x)) { x%this!=0 }:
say(this, end= (!=n-1){", "}{""})
- main
N2(.07,.15).delta: plot(0+~1.5 dx, 0+~1.5 dy):[x y]
at a=x*x+y*y -1
a**3<x**2+y**3
^now
- plot(X:Rn,Y:Rn, fn:Fn2<N N Bool>)
Y:[y]say(); X:[x]say(end=fn(x,y) {"@"}{""})
不过,我把太多精力耗在基建和标准库上了,都不打算做WA那种真正的编译器…… 而且我这几周都在收尾EQ的接口体系,删了又改真的很让人头痛啊比较糟心的一个,是我误解了React,Nextjs 的流式SSR。 我以为是要把客户端状态变量上传,但其实主流SSR依然是添加事件监听的 (它们说是基于“同构”blabla, 其实EQ就是同构 所以不能止步于此),相当于在httpd上开个浏览器去路由并加载。
不过现在靠服务端S(x=>匿名函数) 就避免下发html了,好像比事件上传更灵活
wa-lang.org
灵魂拷问 | 凹语言
针对 WASM 平台设计的通用编程语言
Forwarded from 科技圈🎗在花频道📮
Stability AI 推出音乐/声音生成人工智能 Stable Audio
Stable Audio 是一个扩散模型,用户只需描述关键词即可创建自己想要的音乐,每个账户每个月可以免费生成20首音频。
Stable Audio 由音乐商 AudioSparx 提供的超80万音频文件训练而来 (包含音乐、音效、单乐器主干和对应文本)。该模型在英伟达 A100 显卡上可以以 44.1 kHz 采样率在不到一秒的时间内渲染95秒的音频。
stableaudio.com
投稿:@ZaiHuaBot
频道:@TestFlightCN
Stable Audio 是一个扩散模型,用户只需描述关键词即可创建自己想要的音乐,每个账户每个月可以免费生成20首音频。
Stable Audio 由音乐商 AudioSparx 提供的超80万音频文件训练而来 (包含音乐、音效、单乐器主干和对应文本)。该模型在英伟达 A100 显卡上可以以 44.1 kHz 采样率在不到一秒的时间内渲染95秒的音频。
stableaudio.com
投稿:@ZaiHuaBot
频道:@TestFlightCN