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
#tw #news 🥲 曾带母去台湾治病的 Jake 诈捐 这个“精致利己血统” “无社会主义”是模子里刻出来的,是祖国母亲亲生的。 👍 - 谎报了在北京治疗、医保低报销、房和车的情况,是把慈善当网红打赏挣钱做, 故意拉黑删除评论,烧毁记录 - 以己度人 ,背後說幫助過他的每位台灣人另有目的,说华裔时政网红蹭他热度,还乱做文章说贵人姐姐是欺诈“他的”募款 - 不遵守民国税法,用吊唁之名敛财,称钱都是他挣来的(滥用医旅签,还辜负许多行他方便的机关,在中国怕是要反过来吧?) - 滥用了台湾人的仁义礼智孝…
#tw 这个Jake还是实名(李璞)反共的狠人…… 是国民党大一统蓝营,而且反对民进党和台独,想让台湾乡民牺牲生命解放中国,
被台湾女生识破是共碟,还非常擅长卖惨,宝马男把自己包装成又穷又没医保,拿亲 🐴道德勒索 ,越吃越肥

他在台湾时说怕谈政治, 但其实他就很爱发表反共反党言论(而且反的是:为啥贪官不姓李)。 现在两边不是人,觉得自己牛逼了,就说台湾是诈骗 ,而且他还信佛……

yt时政圈一直恳求他把善款透明,不要玩中国社会文化输出,但是鸡同鸭讲
14年开始钓台湾人,17年去台湾旅游,23年就把他妈当本钱,A了台湾500万TWD善款 ,可谓「有志者事竟成」,而且还觉得是在赚“我们民国的台湾” ,真是道德沦丧的白切黑伪君子


左派反贼应该觉醒下了…… 😅 中国人不配谈左派或者啥理想, 别人牺牲奉献,换自己享受自由、贪污善款、“重新”开源 ,这些算个毛的民主?

btw. 台南的旱灾,政府赔偿“资本主义富农”每亩 6400元台幣 ,中国的泄洪,是 40塊;死个人“不低于” 2万CNY
“公摊”走了160倍的税钱 🥰。还想被人统一,富强,真的是活该当牛马的命。

有些人会觉得,政府也穷 要体谅, 但泄洪是保护谁的鬼城雄安的伟大政策?? 摆明了违宪的各种政策通知,挖坝啦,摆拍和倒卖啦。
祖国各界的弱者对强者真的,善良得很暖心呢
👍1
Forwarded from Solidot
受挫折的年轻一代

2023-08-21 14:22 by 无尽的边界

广东惠州的一家电子厂在招聘员工,开出了 4500-6000 元的薪水,除此之外没什么福利。招聘广告还要求新员工能“吃苦耐劳”,这几个字可能会让老一辈的人产生共鸣,他们很多人都曾在恶劣的环境下长时间工作,以为子女创造更光明的未来。但年轻一代不接受也不愿意忍受这种工作条件。一位染着红色头发的咖啡师说,他不能坐在装配线前。他的薪水只有 4000 元,但他享受与客户的聊天。他已经工作了七年,曾在一家工厂工作过。他看不到买房子或赚足够钱结婚的希望,去电子厂工作并不能改变这一状况。他说,努力工作当然重要,但吃苦会让你更不快乐。今天成长于经济活力和社会流动性一代的年轻人备受挫折。高等教育不再是通向稳定职业的可靠梯子。数字显示,2021 年失业青年中七成以上是大学毕业生。年轻一代并不是不努力,他们从小就面临巨大的压力。但他们意识到无论多努力的学习或工作,都改变不了现状。

https://www.economist.com/briefing/2023/08/17/chinas-defeated-youth

#长城
Forwarded from Solidot
美国大学开始教学生 ChatGPT 和 AI 相关知识

2023-08-21 18:29 by 梦书迷宫

美国大学的教授们担心如果不教学生 ChatGPT 和 AI 相关知识,他们可能会在进入职场时落在后面。根据高等教育研究组织 Intelligent.com 的调查,上一学年约有三成大学生用 ChatGPT 做作业,其中英语课最多。范德比尔特大学计算机科学副教授 Jules White 认为在开学前几天教授需要明确对 AI 的立场,需要将 AI 纳入教学大纲。他有关 AI “prompt engineering”最佳实践的论文被广泛引用。他说,提示对响应的质量有巨大影响,以不同方式询问相同的问题可能会返回截然不同的答案。他说,想要抄袭的学生仍然会寻找其它方法,教导学生如何使用 AI 则有望帮助他们取得更大成功。

https://www.intelligent.com/one-third-of-college-students-used-chatgpt-for-schoolwork-during-the-2022-23-academic-year/

#人工智能
duangsuse::Echo
仔细看了下,我勉强能理解 JSX 系为什么那么执着于 (v)DOM diff 而非 复用节点、[{}]深赋值 了 1. script-template, async, 纯函数 的心智负担很重,但它们一定要跟这股风;或者说EQ最看不起(我们用 when 和Node传参) 的 template slot 注入竟然是“最优解” 2. {k:v}深拷贝 似乎很受欢迎,而EQ主张不浪费内存、不“手写GC”; 另外同时对2个对象做递归,可能他们只知能遍历VNode 3. EQ是 type UI=({dataVars})=>HTMLvar…
#statement #dev 代码都是多余的,只有创意和描述是必须的

“ 然而作为程序员,相信很多人都认为自己的代码就是资产,是自己智慧的结晶,怎么会是负债呢?

但,在软件工程领域,代码的构建是要花费时间和人力成本的,但代码并不因此就能算作资产,

真正有价值的是代码所要解决的产品问题,给用户和公司带来的价值。

当代码不能很好的服务产品的时候,要考虑何时弃用,将负债彻底清理。这反而是很多团队会忽略的东西。
好些公司都要你快点写完,不给你时间好好设计。因为他们的产品,被设计为能解决的问题,本就活不了多长时间

代码永远是程序员的负债,如果你自己还混不自知的话,最后很容易把自己搅入泥潭。
写代码确实实在,但那些”虚头巴脑“的东西反而更考验一个程序员的能力。
duangsuse::Echo pinned «#statement #dev 代码都是多余的,只有创意和描述是必须的 “ 然而作为程序员,相信很多人都认为自己的代码就是资产,是自己智慧的结晶,怎么会是负债呢? 但,在软件工程领域,代码的构建是要花费时间和人力成本的,但代码并不因此就能算作资产, 真正有价值的是代码所要解决的产品问题,给用户和公司带来的价值。 当代码不能很好的服务产品的时候,要考虑何时弃用,将负债彻底清理。这反而是很多团队会忽略的东西。 好些公司都要你快点写完,不给你时间好好设计。因为他们的产品,被设计为能解决的问题,本就活不了多长时间…»
duangsuse::Echo
作为在“计算机还未发明”时代的编程者 #history Dijkstra 的名言: 编程无关计算机,就像天文无关望远镜 简单是可靠的先决条件,不是可靠的牺牲品 编程的艺术就是藏绌的技术。 程序员很清楚自己的能力是有限的,所以他对待编程任务的态度是谦卑的,重点是要象逃避瘟疫那样逃避 “聪明的技巧”。——1972年图灵奖演讲 我们所使用的工具深刻地影响我们的思考习惯,从而也影响了我们的思考能力。 根本不可能用一把钝斧子削好铅笔,而换成十把钝斧子,会让事情变成大灾难。 -- 「使用了 GOTO 语句的程序员乞求…
#py #math 《优雅不是奢侈品》
“如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?”

― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。

简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道:

“……在软件不可靠性的情况下,最大的成本因素是复杂。
一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。”

人们将初级代码误认为是简单清晰的代码,在我看来,这是非常危险的。

我不懂中文。你认为我看着中文书页,并断言“这是不可读的!”有道理吗?我需要做的是承认我看不懂中文,而不是中文不可读。

有人抱怨“阅读他人代码会增加额外的复杂性”,Tim Peters 对此做出了回应

“当有人使用你不理解的功能时,不关心。比学习新东西更容易,毕竟不久之后,唯一活着的程序员将使用 Python 0.9.6 <wink> 的一个易于理解的小子集进行编写。”

当你学习更多的语法、更多的函数、更多的模块、更多的数据类型等时,你就会了解更多的工具来解决你的问题。

工具带上的工具越多,当您需要做新的事情时,您就越有可能知道 适合工作的完美工具。简单、清晰、优雅;所有这些都会自然而然地发生。
(: 考虑到AI可以帮你了解工具,不必害怕搜不到写法而搞出「又慢又长的代码」了

复习你的一段旧代码,且知道有更好的方法来做到功能点,可以修改旧代码以包含新的改进的解决方案。只会让你的代码更加清晰和优雅,永不止步

假如你惯用的代码是语义易于理解的代码,所输出可重构代码是可以随着时间的推移,而改进的代码。


👀这个作者的观念很好,但审美真的…… 和他所说的可读至上有冲突

list(itertools.chain(*list_of_lists))
这是不能替代 [[1], [2]].flat(depth=1) 的,
chian 这个词对flat的反映很隐晦,iterators.flat 的功能会更多(文件树..),自己造词,是很蠢的做法。

(a b c) ← 1 ¯4 3
(2×a)÷⍨-b(+,-)0.5*⍨(b*2)-4×a×c

等于
import numpy as np
a,b,c = 1, -4, 3
(2*a) / np.sqrt(-b + np.array([1, -1]) * 0.5*np.sqrt(b**2 - 4*a*c))

⍨=sqrt
b(+,-)= (+x,-x) (b)
np.roots([a, b, c]) #ax^2 + bx + c = 0

奇怪的是,翻译过来居然错的,少算个sqrt又对了……
鬼才会觉得”数学语言“ 比py3好, 即便你去拿堆 \TeX 去写,也只是徒费事,对思考毫无益处。甚至不如去掉乘除符号的多项式”强类型“

无法重构的符号,就等于是白纸,谁都只能复制,只那几个用途而不能创作。 毫无价值 😅


我今天在设计 EQ 的 Reload(Suspense), Tab, list 增删动画, evalFun 的常量计算时,就一直在践行这些原则。

比如, Vue 的 TransitionGroup 看起来十分复杂,但只要记住每项xy的位移,以在css渐变的同时 做EQ所支持的元素进退场 就OK了; 这些需求也强化了 ondiff=(mov,add)=> 的合理性,做到 1+1>2
(EQ efx {fly:{} } 支持横纵四向,所以没 .list-enter-active{} 手动实现的那么直接 ,但单靠translateY 就能忽略上部的增删。
👍3
duangsuse::Echo
#py #math 《优雅不是奢侈品》 “如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?” ― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。 简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道: “……在软件不可靠性的情况下,最大的成本因素是复杂。 一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。” 人们…
#py 周刊
- 《优雅不是奢侈品》
- nogil 最新情报
- #web Django ORM 最佳实践
- Django 自带的JWT 路径验证和登录页
- #ts 阮一峰 入门, 纯JS入门

- #linux #rust Nush: 不是 Powershell
- #js npm依赖图
- #ai #tool realsizer4x 超分辨
- #rust pixi add cowpy 强化pip
- #ui Toga: 跨平台的 TkGUI

- #ml Viberary: 开源书籍检索引擎
- Khan 为何从Py2移植到 kt,go
- #parallel 用asyncio分享查询,防止缓存失效时并发卡爆
- #plt Rust vs Idris,Zig: 渐强类型的解药 #1

单进程 cron
from apscheduler.schedulers.background import BackgroundScheduler

cron = BackgroundScheduler(jobstores=sqlite)
.add_job(print, 'interval', seconds=5)
.start()

并行 multiprocessing: #2
with mpire.WorkerPool(n_jobs=5) as pool:
results = pool.map(getFiles, range(10), progress_bar=True)


- 修改语法ASDL,实现 map( (x)=>x*x, [1]) [Parser/Python.asdl] [30行实现]
- 奇怪的for赋值, 魔术方法
from xx import*明确化:设置好 xx.__all__ = [exports]

实现 lazy load:
importlib.import_module

⭐️import pyforest 自动导入np,pd 等变量
#code 修改语法 __import__('cv2') -
from lazy import cv2

import types,sys

class lazy(types.ModuleType):
def __getattr__(self, mod):
import importlib.util as _
if None==(r:=sys.modules.get(mod)):
id = _.find_spec(mod)
# get it inserted into sys.modules.
_.LazyLoader(id.loader).exec_module(r:=_.module_from_spec(id))
return r

sys.modules['lazy']=lazy('-L imports')
— 仅供学习,import 语句本可以是局部。 (GPT怎么变蠢了
#ts
#1为什么静态类型的C,Go,C++ 不是弱检查 就是太复杂

代码练习: 不需要 type WTF<> = 就可以检查 htmlTag, funcPipe, nthArg, printf("\d") 等调用的类型

int[10] 的实质、 #Kt 类型推导的原理
duangsuse::Echo
#statement #dev 代码都是多余的,只有创意和描述是必须的 “ 然而作为程序员,相信很多人都认为自己的代码就是资产,是自己智慧的结晶,怎么会是负债呢? 但,在软件工程领域,代码的构建是要花费时间和人力成本的,但代码并不因此就能算作资产, 真正有价值的是代码所要解决的产品问题,给用户和公司带来的价值。 当代码不能很好的服务产品的时候,要考虑何时弃用,将负债彻底清理。这反而是很多团队会忽略的东西。 好些公司都要你快点写完,不给你时间好好设计。因为他们的产品,被设计为能解决的问题,本就活不了多长时间…
#2 用上条 corn,mpire 的示例,补充下《代码是负债,而不是资产》《优雅不是奢侈品》 的观点

add_job(print, 'interval', 5s)
workerPool.map(getFiles, range(10), progress_bar=True)


这些是所谓的“必须的描述”, 因为不知道这些框架或混搭玩法, 设计软件功能点时,不仅没默认”开箱即用“的进度条,也很难有所创意

那么,为了实现这些功能的“配置性代码”, 就是AI生成的, 所谓“多余的代码”
from apscheduler.schedulers.background import BackgroundScheduler .. start #多余的
with mpire.WorkerPool(n_jobs=5) as pool:

生活中,也有这些”在流水线上加几个人“的算法经验, 但编程问题往往更复杂,需要完整且可调的API作为 ”指导周刊“;而 Python 生态比任何语言更好地完成了这点

“多余的代码” 不是用语法糖就能解决掉的,比如 JSX 就没能从根源(JS 里”可变量“不能是参数)解决问题,C# Parallel.ForEach 无法像cupy在GPU对像素图作反色, Py 的 if A<=x <=B ,for else 等奇特写法也完输 Kotlin 的规范 A..B Range

Groovy,Ruby 最失败的一点就是隐晦或用词奇葩的 obj { this.xx=val } ,它没有提出与现有体系(比如 operator fun invoke, List.map ) 相扶持的订正,
单纯想就1种情况 少打几个字,导致初试大道至简,实用就大道智减

H5, DOM/CSS 之所以成功,就是因为它把一切”框架层“都藏起来了,而且是用无可挑剔的<tag>和CSS选择器来规范化 (尽管最后被XML带偏)
描述是由开发者自己关心的问题集决定的,除了考验机械的技术, 最重要的是对问题和领域的认知 是否清晰,是否进步

真正有价值的是代码所要解决的产品问题,给用户和公司带来的高效和愉快, 而不是花工资去买一些「又臭又长的面条代码」。
比如,曾经流行 java forEach(list.add) 时, workerPool.map 就该被做成 parallel for x in files.. 这类不可配置的”print语句“,虽妨碍框架的进步、新功能的表达,😁但 Java Oracle 的股价或许会涨 ,因为跟对风了 猪也能上天
duangsuse::Echo
#2 用上条 corn,mpire 的示例,补充下《代码是负债,而不是资产》《优雅不是奢侈品》 的观点 add_job(print, 'interval', 5s) workerPool.map(getFiles, range(10), progress_bar=True) 这些是所谓的“必须的描述”, 因为不知道这些框架或混搭玩法, 设计软件功能点时,不仅没默认”开箱即用“的进度条,也很难有所创意 那么,为了实现这些功能的“配置性代码”, 就是AI生成的, 所谓“多余的代码” from apsc…
#net #history Tim Berners-Lee:我不要專利!
info.CERN.ch 的某棟大樓有放伯納斯李的紀念獎牌
但那層樓都貼滿海報,跟國小生的獎狀一樣,要找還不好找

Tim 真的有遠見,看到資訊傳遞的重要性。
如果上網每次點擊都是花費,現在資訊落差肯定會更大。 不然是無處不是的廣告,代替任何付費服務。

沒有了普及化的網路,或許,人類會往另一個我們無法想像的方向發展

#china 方脸
“中国的支付宝、滴滴、TikTok,就是甲午战争时海面上的船, 它们在贸易战下的命运,如同慈禧时期的北洋水师

如果昭和日本的战斗力为10,慈禧需要北洋水师的战力就全等于11 。打不赢可以割地赔款,但赢得民声、把中体西用变为全面现代化,受损的就是慈禧家的皇宫了”
duangsuse::Echo
#py #math 《优雅不是奢侈品》 “如何才能让编程者们相信,简单性和清晰性——简而言之:数学家所说的“优雅”——不是可有可无的奢侈品,而是决定成功与失败的关键因素?” ― Edsger W. Dijkstra,“计算机著作精选:个人观点”,第 347 页。 简单明了的代码就是优雅的代码。这些都是代码中非常理想的属性。Dijkstra 又补充道: “……在软件不可靠性的情况下,最大的成本因素是复杂。 一个可靠的(因此简单的)程序的开发和使用成本,比一个(复杂的因此)不可靠的程序要廉价。” 人们…
#kt #design 刚才审核绝句 句级跳转&主语域时,意识到 break continue 这些必须和 if 搭配使用 ☺️,以及
- 因为使用 (0~9):[i] break i==5 的语法函数化, break n 必须=return^n*2+1^ ,就像 this=you^0
- tailrec 是 at xxx=let: return^0^ any 里的(ret赋值&break) 的平替

fun IntRan.forEach(fn:(Int)->Unit) {
var i=first
do { fn(i);i+=1 } while(i<=last)
}

- Rn<Int>.`|`(:Fn1<Int>)
at now: i A
let:
fn(i)
loop(i+1): i!>B //i<=B

// AI的编程效率高于补齐,阅读速度上还在用 map-forEach, let-apply 这些的话是不够的
((0~9) : +1) == (1~10)
(1~10)|: [x]
say(x-1)

👀 过滤操作时 (0~9){>5}: say(this) 是绝句里单项和列表通用的搞法
"a arm bar ada".Sep.firsts{it[0]=='a': if !this{say("End")} } 则关于break,因此本应抛弃单层循环的break
我勉为其难地支持了,但写法必须比较丑

- Str find(sub:Str) Idx
at N=sub.Cnt
(0~Cnt-N):[i] //N=1,则 i=0~iLast
(0~~N):[iS]
breaks^1^ this[i+iS]!=sub[iS] //也可以每次iS=i 然后blabla.. OIer 日常的面条代码?
return i
return -1

- 文 找(:文) 针
在N=文的计
(0~计-N),[i]
首否(文、位=i) 去路,回i。
回-1


- 字串.找位置(sub:字串): 数 “降质版: 易😋语言”
变量 N=sub.长度 ‘’它可变吗
(0~长度-N)去对所有:[i]
(0~<N)去对所有:[j]
跳过^1^ 我[i+j]!=sub[j] ‘’它真的ijkPlayer,我哭死

“如果 本对象[i+j]!=sub[j] { 到循环尾^1^ }”
回i
回-1

易语言化还不够给力,这个翻译得一点也不爆笑 (虽然但是,吴涛对Winform和计绘是比大部分人都资深 😁

- if else 是函数,里面不能写 break ,只有 loop: when: 是真正的流控
但语法函数化的好处多多, 通过提高语言一致性,能方便AST匹配和宏、节点图形化编程 ,允许顺语序的去路() 等块函数

虽然,代价是丑陋的写法显得丑陋 ;但语言变漂亮就够了 🥰
duangsuse::Echo
#kt #design 刚才审核绝句 句级跳转&主语域时,意识到 break continue 这些必须和 if 搭配使用 ☺️,以及 - 因为使用 (0~9):[i] break i==5 的语法函数化, break n 必须=return^n*2+1^ ,就像 this=you^0 - tailrec 是 at xxx=let: return^0^ any 里的(ret赋值&break) 的平替 fun IntRan.forEach(fn:(Int)->Unit) { var i=first …
#blog #meme 看到易语言还在VB++ 的范式旁徘徊 😅,并且觉得编程语言 是种必须特色和备案的「核心技术」… 我想复刻下这2007年文章的口吻:

“绝句.ju”十分钟入门教程
作者:转载必须注明出处

亲爱的朋友,您愿意花十分钟的时间,来了解一门全新的编程语言“绝句.未公开”吗?(搞笑向

btw. 很难想象标准库与ES7接轨,拥有函续、不/可变数据集、流/叠加、双主语的绝句,还能用“合规”的记法支持VB7时代的“正统中文编程”👀
- 起点
将123写到屏幕
100.123:[x]
(将x)写到屏幕


绝句使用物类对象(datatype OOP) 的调用模型, 所以
物 启动类
同名例
- main
类 游戏
- 猜数(听用户:函0<数>)

data BaseModel
|- main = TODO "explain why 'Base' is a good class name"
|- main'abc' Int
FIXME "改个代码还能找到语法灵感"
return a+b
|- someJob(x=NO)
x? {say(1)} or: return

- badBoy(:KV<Str PairOf<N>>)
- guessNum(ask: Fn0<Int>) = Try:
throw Error("$aNum 后置")
^now
at aNum = 0
^named
- goodBoy(:Ln<N2>)


有点分不清“类和接口(class interface companion... OOP)”了 😂

看到吴涛把 0<x<10 叫做“三联判断”, 想到我前几年也是把这些纯语法糖,拿来当特性
若你x 且>0 且<10 ,看起来品味更差劲

现在重视空则链
说( x{ >0 & <10 }?,x。或 x+1)
x{in 0~10}? “去被”(say)
chkBox,
若 有 开源,扩容
若(有 节流),删文件
#tech #recommend #js
🧐从『函数』的定义就能知道,#编程范式 的发展史
👉 地址symbol、子程序void()、对象 SAM object、算式 x=>y 或文档树、 模式查询select [a b], a=1|a=2

x86无结构:是弱检查指针、面条流控、256项字符集,定长数组,栈分配,加载到内核mmap(rwx..不能为READ 段错误)
是dll内地址

C过程式:是向调用栈赋值后跳过去等返回,是子程序
C#OOP:捕获了局部变量(cellvar,可变)、原型虚表到this,是有Invoke(T)R 运算的对象

Py定义式:是依赖一些数据=>的算式
(HTML,CSS,RPC, py-ast) 是与调用参数对应的嵌套数据 (👍用调用解读内部项目,不关心返回)

TS关系式:是对x+y=2内变量容器 DFS出解集的嵌套(|,=)条件,先深解构到新变量,再构造

第五代:AIGC 不是形式语言,不便于列明框架和接口,但在描述常见需求时,能减少需协调的细节
NodeGraph(Scratch触控) 不是文本,不利于大工程紧凑度,但适合图表,AI

—语言特性是什么
向量:分量同算的2元组,或角度和力度;或按Nd(shape)推广四则的行列向量,👍ML CG DSP 大数据推荐 GraphQL4AI, MATLAB 之源
同构:把 "1" 的加法映射到Int上解决, 把"字节码"视为汇编而编辑,有 cat(X)Y, cut(Y)X 一组转换函数
微分:神经网络是有未知参数的算式(比如用 10=1,11=0 “点集”训练 XOR 函数), 使用"网络隐藏层"向前计算,靠损失(如MSE逼近原输出)做SGD,可以优化出"模型参数"

编译: 缓存流控和(结构)变量 等语法开销的解释期
解析:"abc 123" 吃前缀,吐出 常量,[],情况?, [1*2+3, 4]: [[ 'tuple' 1 2 * 3 + 4]] 树,方便多次深先遍历的 cat(同构)
分词:因为解析器不懂记录区间高亮、只重读最近一级'{}[]"" ',😇 想靠二次遍历 提供高亮、优化editor的性能
编码:C++ 可使用UTF16 L"你好" 迭代(解码)字符,输出时需压缩到UTF8。Windows 的坑多 exe可能是非Unicode.. TCP黏包:收发bytes时忘记填消息长度!

类型推导:让调用树构造出类型,可以含函数级未知变量: P<KV>就真的是编译期到处传的Pair存储。P<get T> 可为P<T1> ,Fn<set> 反之
模式匹配出调用(List,Fn)的成员交集,List<R> 就在匹配里统一,查找重载。


异常:可能为Err的返回值。需级联返回 伪递归:改参重来
事件驱动: 主循环if一些(用户输入,异步赋值) 变量的改变,触发相应的更新重绘函数。像CPU信号
Rx:函数间提供流(Channel)通信,来分配并发, 而不是 Promise.all 或Worker池的模式

调用链: T.f()={runJob; this as T}, 即 T.prototype["f"]=(*arg)=>(f.call(this,*arg) ,this.copy(K=V?) )
T自身的proto=基类, 直到Object不用再查"虚表". T限(ctor)函数, v8创查{}更快, 但可以用Map(需 get key()=equalsAsStr)

#FP 纯函数: 数据皆静止,调用皆惰性. if let 解构=值构造器可以含可变<T>
反射:即让(参数)类型 实现 Type 接口。在弱类型里元编程才算直观,可实现 toJSON, 0参创建,依赖注入(=按类型.ini) 等样板

协程:调用方自动传回调(即yield job 后的流.next)
因此,其“返回” 变为由(不卡调用栈的)子级们催促,终于(在某个调度器)计算
即函数级线程,回调,Promise 即 函续Continuation


需要注意的是, 向量矩阵是快70年前 Fortran 里就有的概念,协程30年前Lua就支持,Lisp 链表函数也是60年前的老体系

技术没有变好,只是用户的审美越来越刁了! 😇反观一些学院派, 竟然和”脚本小子“ 一样,每天把文档写成代码、 代码写成汇编 ……

程序员和卷王常以为,拥有知识,是天才的骄傲的事,是智商的”碾压“,行数越多人越值钱。 🧐但回看历史,一整代人都”会数学“,却只有numpy让物理公式,真正造福于生活。

人类走向现代文明,不是靠吃”聪明片“,而是”教学半“的合作与积累 ;获取信息是一项人权。没有开明的思想,技术不可能改进与繁荣。
能够触摸开源社区研究的繁荣,却害怕”核心技能“被人偷走,是无法融入正常社会价值观的体现
2
duangsuse::Echo
#blog #meme 看到易语言还在VB++ 的范式旁徘徊 😅,并且觉得编程语言 是种必须特色和备案的「核心技术」… 我想复刻下这2007年文章的口吻: “绝句.ju”十分钟入门教程 作者:转载必须注明出处 亲爱的朋友,您愿意花十分钟的时间,来了解一门全新的编程语言“绝句.未公开”吗?(搞笑向 btw. 很难想象标准库与ES7接轨,拥有函续、不/可变数据集、流/叠加、双主语的绝句,还能用“合规”的记法支持VB7时代的“正统中文编程”👀 - 起点 将123写到屏幕 100.123:[x] …
#java 看到一篇维基挺有趣

'T'物 泛型类
造于 此刻,
值 可变<T>
- 读=值
- 写(:T)
值=它

- 方法1
泛型类<数>,
写(5);说(我去读)
- 方法1
泛型类<N>,
写(5.5);读() (说)

绝句不使用“元类”。 T同名例、T 的变量域是隔开的(T上没有“静态”),类型保存在TYPE里

物 值() .地址 “函数,管道 等对象不能是key”
- 特征码 数
-
=(:值?) $YN

类 地址
- 文 文
同名例 TYPE
在 词: 名动词表
在 物名="值"到"ju.Any"

也支持trait (代理基类,扩充接口)
'T'(T 两序) 物 盒(:T)
'T'物- 盒 作 两序
-| 较(:盒)=它 去较(盒的它)


如果 #kt 支持的话应该是
data class Box<T:Comparable<T>> (val it:T)
fun<T> Box<T>.as() = object: Comparable<Box<T>> {
override fun compareTo(box:Self)= it.compareTo(box.it)
}

对我而言,编译器是“做语言”的手段, 可是一些人觉得,编译是“语言”存在的目的... 他们设计语言和框架,是为了让自己新学新想的奇技淫巧跑起来, 因为那些破事如果不能“攀附上”某些实际问题,就会暴露其设计性的廉价(

相当务实!他们大概和最新款的 Cortex-A9 SoC 很聊得来吧。走GPT的路,让计科无路可走… 😄
duangsuse::Echo
#java 看到一篇维基挺有趣 'T'物 泛型类 造于 此刻, 值 可变<T> - 读=值 - 写(:T) 值=它 - 方法1 泛型类<数>, 写(5);说(我去读) - 方法1 泛型类<N>, 写(5.5);读() (说) 绝句不使用“元类”。 T同名例、T 的变量域是隔开的(T上没有“静态”),类型保存在TYPE里 物 值() .地址 “函数,管道 等对象不能是key” - 特征码 数 - =(:值?) $YN 类 地址 …
#js #design
昨晚刚发现wOp({信号变量})能匹配出来时,我挺排斥的,还失眠好久:
因为会导致 obj.it.v++ 这种“特色用法”消失(原来还有 app.v++ 的“蹊径”),而且夺走了 wOp({tap(事件){}})的地位,大概我觉得EQ已经超过 Vue,React,Solid 甚至 Svelte,不需要比自己更自然了。

我比喻一下:这就像 JQuery 的作者发现 delegate() 本该用 on,off() 的“大改进”后,接连又发现某些情况下,可以直接用 div:hover{_mix:className} 而无需JS ,结果 on,off 和链式这些“巧妙的设计” 被扔进垃圾堆的感觉

不过, SSR,频率触发,ondiff, 包括 await 页面事件(“用户向导,.”所需),非常依赖信号。 我一直在想这么“不合规”的概念 需要啥配套措施(写完:我发现 n(Eq(x=>)) 转化不如信号常用,该叫 n. as(Eq) )

ee.Count=({n=0})=>
(setInterval(n, 1000)
div(html`Count: ${n.to(x=>x+1)}`))

和 Solid 的信号量(=EQ 原来的 n.v++ )相反, n. to() 采用和 var fork n(x=>) 相同的风格:“变化”有返回值
const CountingComponent = () => {
const [count, setCount] = createSignal(0);
setInterval(cntAdd1)
return <div>Count value is {count()}</div>
}

HTML 文本节点和 n() 变量,都是被“变化”带动的变量,没区别。
把 EQ 和 Vue 一比,居然像当年 Vue 比 Yox 一样,好像 Vue 才是用“json key path” 做响应式的那个不入流的框架一样 :\
duangsuse::Echo
#js #design 昨晚刚发现wOp({信号变量})能匹配出来时,我挺排斥的,还失眠好久: 因为会导致 obj.it.v++ 这种“特色用法”消失(原来还有 app.v++ 的“蹊径”),而且夺走了 wOp({tap(事件){}})的地位,大概我觉得EQ已经超过 Vue,React,Solid 甚至 Svelte,不需要比自己更自然了。 我比喻一下:这就像 JQuery 的作者发现 delegate() 本该用 on,off() 的“大改进”后,接连又发现某些情况下,可以直接用 div:hover…
信号可以说是“取材于 Redux,Vuex” ,只是比它们更体系化 (is.ST{vars} 才是全局的会话变量 ) ,因为 EQ 是找了关系式编程做理论的,而非纯函数

store(所有的状态,保存在一个对象里面) = is. ST 不负责持有,只能深监听来load和dump
reducer, mutation = 箭头函数
action = 信号变量
getter,computed() 用于根据 state 派生数据 = var. as(fork) 或 obj.it({ x:Eq.num(+1) })

有趣的是 as() 只能监听,不能被绑定到其他变量,就像 N2.ptr(P)(body) 修改变量P
这个约定和 vue useMouse,. 一致,但是从 Prolog 里学来的(我还很讨厌它无返回值) ,客观上提升了变量+树绑定 的一致性

body((R)=>  $app(is(`.list:has(.user)`, R) ) )
就完成了在 .app 内查询 “Live 选择器”(Mutation监听)

(之前的 body((ab, vars/*子树变更监听*/)=> if vars($app(wKV({ab}) )) {} ) 也被发现是对“变量”的理解不彻底 🤪 if vars, 单作为DSL是好看的

之前我写了句标语,真正实现后,我却觉得它掩盖了EQ的特色、抢了前端的工作…… 😒
EqvJS 是克制的框架联邦,基于页内关系 (Modest web framework federation for page vars & relations)

但不论如何,优美直观的代码都会消灭旧设计。很高兴EQ的组件抛弃({},my)=>的黑魔法,用 Str.it({}) 和 ee.fork 扩展实现模块化

ES6本身的扩展至关重要 (这也是我改之前手稿的方向),ee 本该是往“消失化”进步的,功能多多就是错的。
duangsuse::Echo
#js #design 昨晚刚发现wOp({信号变量})能匹配出来时,我挺排斥的,还失眠好久: 因为会导致 obj.it.v++ 这种“特色用法”消失(原来还有 app.v++ 的“蹊径”),而且夺走了 wOp({tap(事件){}})的地位,大概我觉得EQ已经超过 Vue,React,Solid 甚至 Svelte,不需要比自己更自然了。 我比喻一下:这就像 JQuery 的作者发现 delegate() 本该用 on,off() 的“大改进”后,接连又发现某些情况下,可以直接用 div:hover…
现在得出个理论,我直接跪了😨

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, v-model.number, 订阅Effect 的功能,因为wKV({value}) 本就是变量,“双向” “绑定”也就消失了,监听一词也无意义了
useMemo: 只要变量没更新,就复用视图
EQ: 更新? 你是说 x=>x+1 单关系吗?

wOp{tap:li=> , tapup :active} 可以分发或保留事件, 比如 mousedown act.ev0 的时差、UI软键盘
wOp{acty:$N, chk:'once'} 可开关以注册属性

wKV{if,show} 基于hide/opacity:0, when(x(>2), {$Y$N}) 做节点替换, as([1,2], x=>li(x)) 基于 ondiff(movd,add) 来支持位移、增删动画

React 创建了优于ng*的 vDOM;Vue,Preact 正在抛弃vDOM; Svelte,Solid 已经开始比较DOM里的文本和键值
但是EQ选择让HTML成为JS{对象变量}的等价形式,“改变”只在圆括号内发生,而非尖括号。
这些框架都需要 npm 来编译,但 evalFun(()=>) 可以在浏览器或 JSDOM 生成优化的代码

无DOM的点子在2010就被 Solid 的前辈S.js 开发,但到今天我才认识到它们是什么。
EQ的变量+树关系 从灵感到规范化,真的简化了太多。以前的 el.get和qsAll 变成 ee.bodys(items=>) 这样与ES6模式匹配一致的“JQ调用链+动态选择器”,我很乐见

我大概明白了 Vue 的 Compsition API 为什么走 defProp({}) 和 ref() 的“代码碎片”的模式
因为连 Svelte 都是拿 template 甚至 slot 传参的,而Solid这些“React的好友”,就更不用说是背靠 JSX 的

EQ背书的是定义式编程、变量关系式、组合函树 🖇🌿, Vue则来自控件对象、XML和JS纯函数 ↔️🧩 ,对它们而言 let 一堆ref() 的优雅性已经超过XML注入许多倍了,理念的差异让代码风格根本不同

得来全不费功夫…… 只差evalFun,svgg,paint(DSL) 这些硬骨头 👌

(明明是之前我所有前端toy都比不过的体系,100%定义式+复用,但看起来朴实无华呢…… 好像只是JS加了个属性监听语法,没有啥框架产生)