duangsuse, [2024/3/9 22:04]
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
不过幸好我没他民科,不会对自己不学的领域指手画脚
是啊,这些人为什么会觉得人脑就是布尔算术数据库呢?
duangsuse, [2024/3/9 22:23]
不过淫王的一些话还是犀利的,听说有人手动调用Trasfer()参数不对导致丢钱的,而且Dapps在2017占用了 https://en.wikipedia.org/wiki/CryptoKitties#:~:text=25% 的算力
分布式系统确实需要一种WASM式的分布式ATM
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
大部分的 AI 系统里面连语法分析器(parser)都没有,所以主谓宾,句子结构都分析不清楚,更不要说理解其中的含义了。 不过幸好我没他民科,不会对自己不学的领域指手画脚
他们天真地以为,有了谓词逻辑,一阶逻辑这些东西,可以表达“因为所以不但而且存在所有”,机器就可以拥有智能。于是他们设计了各种基于逻辑的算法,专家系统(expert system),甚至设计了基于逻辑的程序语言 Prolog,把它叫做“第五代程序语言”。最后,他们遇到了无法逾越的障碍,众多的 AI 公司无法实现他们夸口的目标,各种基于“神经元”的机器无法解决实际的问题,巨额的政府和民间投资化为泡影,人工智能进入了冬天。
是啊,这些人为什么会觉得人脑就是布尔算术数据库呢?
duangsuse, [2024/3/9 22:23]
以太坊的 Solidity 语言一开头就有低级错误,导致价值五千万美元的以太币被盗。以太坊的智能合约系统消耗大量的计算资源,还导致了严重的性能问题。
我们真的需要那些脚本的功能吗?比特币虽然有脚本语言,可是常用的脚本其实只有不超过 5 个,直接 hard code 进去就可以了
实现转账交换的简单功能就可以了。合约应该是另外独立的系统,不应该跟货币捆绑在一起。交给律师和会计去办
比特币的脚本语言只能写出功能简单,不伤害系统性能,容易验证的脚本
不过淫王的一些话还是犀利的,听说有人手动调用Trasfer()参数不对导致丢钱的,而且Dapps在2017占用了 https://en.wikipedia.org/wiki/CryptoKitties#:~:text=25% 的算力
分布式系统确实需要一种WASM式的分布式ATM
duangsuse, [2024/3/11 17:59]
CIR是目前 .ll 语法的扩展,每条指令前都要前缀cir.
和 rustc 包含的HIR,MIR等树结构不同,clang会直接生成.ll文件,但它只会记录跳转而无cir.for等嵌套结构
复杂度上对C sum(1~N) 似乎是6:35行
CIR还支持保存虚表结构 / 类的基本信息
CIR 自Meta 2022.6,即将脱离“孵化”状态,其独立代码仓库将很快被合入 llvm-project 主仓库,并作为 clang 的一个子项目
在异构计算方面,CIR 目前将主要支持 CUDA 、OpenCL 、SYCL 和 OpenACC 四种平台和框架。
无端推广:写了一个类型推导科普
https://t.iss.one/dsuse/19387
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
duangsuse, [2024/3/11 22:02]
传值和传名区别在 if(rand(), print()) 是否短路上,其实就是 Swift @autoclosure(即Thunk) 的问题。过度的惰性是很慢的
CBPV就是不closure化已计算的值…… 看起来就是传名的优化
这个我不知道意义何在,因为闭包的创建是O(1)的
duangsuse, [2024/3/11 22:11]
https://valkyrie-language.netlify.app/cn/
https://blog.vero.site/post/noulith#:~:text=maxify
这个是比较数学化的,就不是无所谓的内部优化
duangsuse, [2024/3/11 22:29]
https://thunderseethe.dev/posts/bidirectional-constraint-generation/#example
然后这个作者还写了篇双相情感障碍 类型推导的
这个也太简陋了。就上面我的AST
其中x[]是关于此次调用的template<>参数Var(T)
这不就能用了么,为什么要做成完整的 unification,何况typeclass多态还乱倒不好用
“如果我们无法证明两种类型相等,我们就会遇到类型错误,我们可以提前退出。” 最后居然还扯倒了Union-Find
https://tomstu.art/hello-declarative-world 里就有教 unification ,Ruby版简单多了
连逻辑式编程都没教,程序体和constrait的对应关系没列清,乃至infer函数的签名都没讲明白,就开始写算法,只能说这个作者水平还是次。
duangsuse, [2024/3/11 23:02]
https://thunderseethe.dev/posts/row-types/
然后 row type (x:Int, y:Int) 是一种可N项组合的record,但按tuple的方法检查类型,并且还支持模拟union{}
其实Go,Kt都透过嵌入struct与Pair 在支持这种范式,我觉得它的自由度和参数颗粒化类同
union+struct A|B这个模式一般都是用extends了,搞出两种实属多余
OOP支持的是二项组合,基本把维护门槛限制在可读范围内。 把 {...o, age:18,gift:} 视为正经构造器在js都是十分炸裂的,尤其是它的实现酷似 car cdr cons
https://justinpombrio.net/2021/03/11/algebra-and-data-types.html
还是ADT更好看些
https://isomorf.io/#!/tours/of/overview/7/python #tool 这里还提了一个跨语言可视化代码编辑器
CIR是目前 .ll 语法的扩展,每条指令前都要前缀cir.
和 rustc 包含的HIR,MIR等树结构不同,clang会直接生成.ll文件,但它只会记录跳转而无cir.for等嵌套结构
复杂度上对C sum(1~N) 似乎是6:35行
CIR还支持保存虚表结构 / 类的基本信息
CIR 自Meta 2022.6,即将脱离“孵化”状态,其独立代码仓库将很快被合入 llvm-project 主仓库,并作为 clang 的一个子项目
在异构计算方面,CIR 目前将主要支持 CUDA 、OpenCL 、SYCL 和 OpenACC 四种平台和框架。
无端推广:写了一个类型推导科普
https://t.iss.one/dsuse/19387
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
duangsuse, [2024/3/11 22:02]
传值和传名区别在 if(rand(), print()) 是否短路上,其实就是 Swift @autoclosure(即Thunk) 的问题。过度的惰性是很慢的
CBPV就是不closure化已计算的值…… 看起来就是传名的优化
(Fun "x" (Return (Thunk (Fun "y" (Return (Var "x"))))))
这个我不知道意义何在,因为闭包的创建是O(1)的
duangsuse, [2024/3/11 22:11]
https://valkyrie-language.netlify.app/cn/
https://blog.vero.site/post/noulith#:~:text=maxify
a max= b
x := [1, 2, 3];
x append= 1;
这个是比较数学化的,就不是无所谓的内部优化
duangsuse, [2024/3/11 22:29]
https://thunderseethe.dev/posts/bidirectional-constraint-generation/#example
然后这个作者还写了篇双相
(app (fn(x) x) (int 3))
这个也太简陋了。就上面我的AST
F(1){x-> x[1](x[0]) }(Int)其中x[]是关于此次调用的template<>参数Var(T)
这不就能用了么,为什么要做成完整的 unification,何况typeclass多态还乱倒不好用
“如果我们无法证明两种类型相等,我们就会遇到类型错误,我们可以提前退出。” 最后居然还扯倒了Union-Find
https://tomstu.art/hello-declarative-world 里就有教 unification ,Ruby版简单多了
连逻辑式编程都没教,程序体和constrait的对应关系没列清,乃至infer函数的签名都没讲明白,就开始写算法,只能说这个作者水平还是次。
duangsuse, [2024/3/11 23:02]
https://thunderseethe.dev/posts/row-types/
然后 row type (x:Int, y:Int) 是一种可N项组合的record,但按tuple的方法检查类型,并且还支持模拟union{}
其实Go,Kt都透过嵌入struct与Pair 在支持这种范式,我觉得它的自由度和参数颗粒化类同
union+struct A|B这个模式一般都是用extends了,搞出两种实属多余
OOP支持的是二项组合,基本把维护门槛限制在可读范围内。 把 {...o, age:18,gift:} 视为正经构造器在js都是十分炸裂的,尤其是它的实现酷似 car cdr cons
https://justinpombrio.net/2021/03/11/algebra-and-data-types.html
还是ADT更好看些
https://isomorf.io/#!/tours/of/overview/7/python #tool 这里还提了一个跨语言可视化代码编辑器
Telegram
duangsuse::Echo
#plt #recommend 写了一个类型推导科普
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
https://gist.github.com/duangsuse/8fa4ae8c627e5c3c6044522a84ccebf4
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
这kt编译期显然不是古早的…
😅 完了,感觉我都要变 yinwang.org 了
他10年前的抱怨我全都有,而且我比他还少点实践
https://gist.github.com/duangsuse/8fa4ae8c627e5c3c6044522a84ccebf4
还好好搜了一下各种中文blog
没找到好的内容,草
明明各种大学都有开编译原理依照 static typed
做compiler前端的是吃白饭的么? 都在教一些又过时又get不到重点的东西一样
这kt编译期显然不是古早的…
好孩紙🧶 ηαsү, [2024/3/17 10:32]
json理论上来说也可以用yaml库load(
duangsuse, [2024/3/17 10:40]
json也可以用 ast.lit_eval() 加载
Trim21, [2024/3/18 01:03]
部分json是合法的python代码啊
duangsuse, [2024/3/18 08:56]
不过 True,False,null 是不能的
duangsuse, [2024/3/18 09:02]
> 利用 importlib 实现让
你需要 hook import语句,先来看看Loader
> 请你向 sys.path 添加查找器,使
duangsuse, [2024/3/18 09:02]
😅bing copilot 不能用了
Perplexity 和 pi.ai 这些小厂似乎都更会写代码
json理论上来说也可以用yaml库load(
duangsuse, [2024/3/17 10:40]
json也可以用 ast.lit_eval() 加载
Trim21, [2024/3/18 01:03]
部分json是合法的python代码啊
duangsuse, [2024/3/18 08:56]
不过 True,False,null 是不能的
duangsuse, [2024/3/18 09:02]
> 利用 importlib 实现让
from file_name import* 加载 file_name.json 字典为vars你需要 hook import语句,先来看看Loader
> 请你向 sys.path 添加查找器,使
from file_name import* 加载 file_name.json 字典
class JsonImporter(object):
def __init__(self, path=None):
self._path = path or '.'
def find_module(self, fullname, path=None):
if not fullname.endswith('.json'):
return None
filename = os.path.join(self._path, fullname + '.json')
if os.path.exists(filename):
return self
return None
def load_module(self, name):
fp = open(os.path.join(self._path, name + '.json'))
data = json.load(fp)
fp.close()
mod = imp.new_module(name)
mod.__dict__.update(data)
sys.modules[name] = mod
return mod
sys.meta_path.insert(0, JsonImporter())
duangsuse, [2024/3/18 09:02]
😅bing copilot 不能用了
Perplexity 和 pi.ai 这些小厂似乎都更会写代码
#js #apple 平底鍋, [2024/3/19 01:07]
https://bgme.me/@bgme/112117191163425974
> Mac 软件生态吐槽
今天晚上兴致之下到「数码荔技正版软件」的淘宝店看了一下(我也真是无聊的),大开眼界的同时,心里堆积了不少的嘈点。不吐不快,就在这里随便写一写,对 Mac 软件生态的吐嘈吧。
仔细想想对 Mac 软件的嘈点的开端,可以从 Downie 威胁删除用户文件开始[1]。怎么说呢?对于 Mac 用户,借用某张 meme 图的话 Mac 用户有钱。
Mac 软件生态一个很大的特点就是再小的一个功能,都有人写一个什么什么软件,然后拿出来卖钱。
对于这种现象,不作评论。但我自己作为一个 Linux 用户,我对此非常的不适应。
比如说:我在数码荔技看到了这样一个软件 A Better Finder Rename ,售价¥79,支持前缀、后缀、文本、字符、序号等等一系列方式对文件进行重命名。总之功能很强大。
但也许是思维方式的差别吧,如果我遇上要批量重命名,我的第一反应是打开终端,然后使用 rename、perl-rename;如果要求比较复杂,就写一个 bash 脚本来处理;如果 bash 脚本还搞不定,那就写一个 python 脚本(我还没有遇到 bash 脚本没搞定的情况)。而不是去什么什么商店里看有没有什么文件重命名的软件,然后掏几十元买这样一个软件。
数码荔技店中卖的软件大约有八成都是 Mac 平台独有的,而这些 Mac 平台独有的软件,相当大部分软件给我的感觉都类似于上面所说的文件重命名工具。
[1] https://www.v2ex.com/t/1022505
平底鍋, [2024/3/19 01:08]
1. Mac 的開發者憑證對於獨立開發者來說其實挺貴的,基礎成本就擺在那了
2. Mac 的使用者消費力通常確實比較高一點,折騰能力也比較弱
duangsuse, [2024/3/19 11:06]
实际上到py脚本的程度一个运维拿gpt都是够的
何况gpt会推你流行工具
duangsuse, [2024/3/19 11:07]
和中国的同物价品质低一样,都是地区税收太高
导致淀粉肠都有问题
duangsuse, [2024/3/19 11:08]
Apple不过是把功能砍了/预置了,多做点动效,就吸引那么多资本投入
duangsuse, [2024/3/19 11:10]
不是, FileSysHandle Fx是有的
>FileSysHandle 最短的文件名全替换为 +".1" 示例
duangsuse, [2024/3/19 11:13]
是的,Web平台已经能做到离线使用PWA,RTC,WASM文件系统等特性,只是和electron比API麻烦些
很可惜WASM不太好调试啊,然后ChromeOS也不流行了
https://bgme.me/@bgme/112117191163425974
> Mac 软件生态吐槽
今天晚上兴致之下到「数码荔技正版软件」的淘宝店看了一下(我也真是无聊的),大开眼界的同时,心里堆积了不少的嘈点。不吐不快,就在这里随便写一写,对 Mac 软件生态的吐嘈吧。
仔细想想对 Mac 软件的嘈点的开端,可以从 Downie 威胁删除用户文件开始[1]。怎么说呢?对于 Mac 用户,借用某张 meme 图的话 Mac 用户有钱。
Mac 软件生态一个很大的特点就是再小的一个功能,都有人写一个什么什么软件,然后拿出来卖钱。
对于这种现象,不作评论。但我自己作为一个 Linux 用户,我对此非常的不适应。
比如说:我在数码荔技看到了这样一个软件 A Better Finder Rename ,售价¥79,支持前缀、后缀、文本、字符、序号等等一系列方式对文件进行重命名。总之功能很强大。
但也许是思维方式的差别吧,如果我遇上要批量重命名,我的第一反应是打开终端,然后使用 rename、perl-rename;如果要求比较复杂,就写一个 bash 脚本来处理;如果 bash 脚本还搞不定,那就写一个 python 脚本(我还没有遇到 bash 脚本没搞定的情况)。而不是去什么什么商店里看有没有什么文件重命名的软件,然后掏几十元买这样一个软件。
数码荔技店中卖的软件大约有八成都是 Mac 平台独有的,而这些 Mac 平台独有的软件,相当大部分软件给我的感觉都类似于上面所说的文件重命名工具。
[1] https://www.v2ex.com/t/1022505
平底鍋, [2024/3/19 01:08]
1. Mac 的開發者憑證對於獨立開發者來說其實挺貴的,基礎成本就擺在那了
2. Mac 的使用者消費力通常確實比較高一點,折騰能力也比較弱
duangsuse, [2024/3/19 11:06]
实际上到py脚本的程度一个运维拿gpt都是够的
何况gpt会推你流行工具
duangsuse, [2024/3/19 11:07]
和中国的同物价品质低一样,都是地区税收太高
导致淀粉肠都有问题
duangsuse, [2024/3/19 11:08]
Apple不过是把功能砍了/预置了,多做点动效,就吸引那么多资本投入
duangsuse, [2024/3/19 11:10]
不是, FileSysHandle Fx是有的
>FileSysHandle 最短的文件名全替换为 +".1" 示例
def rename_files(directory_path, new_extension):https://rename.jgrass.xyz/
for root, dirs, files in os.walk(directory_path):
for filename in files:
old_path = os.path.join(root, filename)
new_filename = filename.replace(".", "") + new_extension
new_path = os.path.join(root, new_filename)
os.renames(old_path, new_path)
// assuming fileHandle is a valid FileSystemFileHandle instance representing the file to be renamed
const newFileName = 'new_filename.txt'; // replace with desired new name
await fileHandle.parent.getFileHandle(newFileName).then((newFileHandle) => {
throw new Error('File already exists');
}).catch(async () => {
await fileHandle.move({ target: newFileHandle });//fx专属
});
duangsuse, [2024/3/19 11:13]
是的,Web平台已经能做到离线使用PWA,RTC,WASM文件系统等特性,只是和electron比API麻烦些
很可惜WASM不太好调试啊,然后ChromeOS也不流行了
BGME
毛茸茸生长 :trans_flag: (@[email protected])
内容警告:Mac 软件生态吐嘈
duangsuse, [2024/3/21 19:28]
哈哈哈社工,和那个微信文件助手高仿号同理
duangsuse, [2024/3/21 19:35]
如果视力是能训练回来的,为什么就你知道? 赢王已经陷入了抗癌药阴谋论,就差得出昂撒犹太控制 🌎了
duangsuse, [2024/3/21 19:37]
https://www.yinwang.org/resources/gucs-sample-chapter1.pdf
不过赢王居然不想 top-down design 这个CS教程
让人匪夷所思,我看看
duangsuse, [2024/3/21 19:43]
查了下,我看未必是中医,而是假性近视本来就是能恢复的
https://www.zhihu.com/question/394687329
有人说自己600->300过
从直觉上讲,错误习惯导致眼轴病变,靠习惯也能逆转
只看度数不能证明近视原因
duangsuse, [2024/3/21 19:48]
话说赢王也不是个粉红,为什么会热衷于这么反智的话题?
我作为反思怪也没有想到能做这么逆天的结论
duangsuse, [2024/3/21 19:31]
开源:增加下游数量,方便供应链攻击
节流:砍功能砍支持,挣钱
开猿:按专家或团队解散app维护者
节流:降低可用性和粉丝数
降本增笑
哈哈,不支持宏内联的py里确实不用分,反正内存都可变
程序员反贼比例应该挺高的毕竟心态开放,而且很容易触墙 😠 ✊
GH主要是翻墙吧…… 提交和同步有UI的
其实我觉得直接应用比较好
50w算是什么级别啊,vue应该有几百 什么领域的?CG?web?桌面?移动
照张雪峰说的,acm,那就是IT的哲学 是拉丁文,哲学家大部分都是死人,在古代。 AI对什么冲击最大啊? 你能比几十T的模型擅长查资料?
无非是哲学死的早一点,计算机的哲学死的晚一点,能分应用界的名气
write code, to solve exact cover problem using SAT or SMT
我搜了一下,发现gpt3能给一个逻辑编程调用
感觉挺虚无的,这么牛逼的问题连个库+框架都没有,还要仰赖gpt的编程能力
Z3不知有没有封装
计算机存在的意义,就是为了规范各种问题、联系各种解法
动规就是自底向上来做缓存的递归嘛 很好理解,对PYer 来说标准库就有
https://docs.python.org/3/library/functools.html#:~:text=a%20dynamic%20programming%20technique
你也没说错,很多dp问题只涉及2个参数 -二维数组
如果连API都给不出来,那就不是CS问题
https://brilliant.org/wiki/heap-sort/
https://algostructure.com/sorting/heapsort.php
btw. 我以前也做过算法可视化的,但B号是露脸的 不方便发
rbt 几乎是函数式数据结构的helloworld了
参考 https://try.moonbitlang.com/?012_avl_tree.mbt
哈哈哈社工,和那个微信文件助手高仿号同理
duangsuse, [2024/3/21 19:35]
如果视力是能训练回来的,为什么就你知道? 赢王已经陷入了抗癌药阴谋论,就差得出昂撒犹太控制 🌎了
duangsuse, [2024/3/21 19:37]
https://www.yinwang.org/resources/gucs-sample-chapter1.pdf
不过赢王居然不想 top-down design 这个CS教程
让人匪夷所思,我看看
duangsuse, [2024/3/21 19:43]
查了下,我看未必是中医,而是假性近视本来就是能恢复的
https://www.zhihu.com/question/394687329
有人说自己600->300过
从直觉上讲,错误习惯导致眼轴病变,靠习惯也能逆转
只看度数不能证明近视原因
duangsuse, [2024/3/21 19:48]
话说赢王也不是个粉红,为什么会热衷于这么反智的话题?
我作为反思怪也没有想到能做这么逆天的结论
duangsuse, [2024/3/21 19:31]
开源:增加下游数量,方便供应链攻击
节流:砍功能砍支持,挣钱
开猿:按专家或团队解散app维护者
节流:降低可用性和粉丝数
降本增笑
哈哈,不支持宏内联的py里确实不用分,反正内存都可变
程序员反贼比例应该挺高的毕竟心态开放,而且很容易触墙 😠 ✊
GH主要是翻墙吧…… 提交和同步有UI的
其实我觉得直接应用比较好
50w算是什么级别啊,vue应该有几百 什么领域的?CG?web?桌面?移动
照张雪峰说的,acm,那就是IT的哲学 是拉丁文,哲学家大部分都是死人,在古代。 AI对什么冲击最大啊? 你能比几十T的模型擅长查资料?
无非是哲学死的早一点,计算机的哲学死的晚一点,能分应用界的名气
write code, to solve exact cover problem using SAT or SMT
我搜了一下,发现gpt3能给一个逻辑编程调用
感觉挺虚无的,这么牛逼的问题连个库+框架都没有,还要仰赖gpt的编程能力
Z3不知有没有封装
计算机存在的意义,就是为了规范各种问题、联系各种解法
动规就是自底向上来做缓存的递归嘛 很好理解,对PYer 来说标准库就有
https://docs.python.org/3/library/functools.html#:~:text=a%20dynamic%20programming%20technique
你也没说错,很多dp问题只涉及2个参数 -二维数组
如果连API都给不出来,那就不是CS问题
https://brilliant.org/wiki/heap-sort/
https://algostructure.com/sorting/heapsort.php
btw. 我以前也做过算法可视化的,但B号是露脸的 不方便发
rbt 几乎是函数式数据结构的helloworld了
参考 https://try.moonbitlang.com/?012_avl_tree.mbt
duangsuse, [2024/3/23 13:16]
简单清晰是可靠的先决条件,不是可靠的牺牲品。
简单直接的代码\=易取代的初级代码
如果连这个领域的demo怎么实现都不懂,从不思考实体背后的复用逻辑, 用“工程技巧”添加几个参数,恐怕也就只是bash脚本级别的设计。 然而我看到很多的设计模式,都是这样的三脚猫,因此所谓静态语言才和jspy产生那么大隔阂
你说一味追求“快”“小”的产物所做出来的东西应用在生产中只会是灾难, 我看让一个简单app的整个「体系」无法解释的过度工程,才是最大的灾难
duangsuse, [2024/3/23 13:36]
我之前70行有个basenc算法 https://t.iss.one/dsuse/18158
虽然代码短而晦涩(因为是初稿),但复用性还好
功能复杂、实现易懂、代码长 ,三者是没有绝对相关的
作者希望在保证功能的同时,缩减代码、提供统一恒定的接口, 这是非常有道理的
功能上的规范才是软件工程的本质,那些class不是, 怀念旧软件\=怀念没有功能和适配性的魔法特技,而是在追求真正有语意的设计驱动编程 。
duangsuse, [2024/3/23 13:48]
v8我不知道,不过 https://bellard.org/tcc/tccboot.html (5.9M, Linux 2.4) 和 https://luajit.org/download.html (822.84k)
你可以观摩观摩
不知道为什么你能从protobuf, ANTLR 等流行实现,得出“某个功能必须占几百K” 这种刻板印象来的。 你可能根本没分析数据和程序间,通过怎样的结构来对应。你也不在乎某个编程问题属于什么领域
不过我知道,LeetCode其实就属于复杂功能 低代码实现的。 其实许多“高工程质量”的标准库和算法题解也没有结构性差异,无非多几个参数和class
duangsuse, [2024/3/23 13:56]
> 如果这套毫无意义的抒发能够推动一个3M内实现V8引擎的工程奇迹诞生
我现在告诉你了,V8 那样的jit也不是非得设计那么多中间层,才能做出来的。 实际上gcc+asm 的最小可行实现不仅没有3M,而且像numpy那样提供显式的优化API,能多快好省地“做工程”
你能把观点细化到对事不对人么
我就只看到你觉得, 新软件就是比旧的功能好,因为里面包含更多工程师、更多产品需求耗费的精力,甚至更多更专业的"Agile" 架构师的天才思想, 但这就是它们比「最初的美好」烂的原因, 所谓屎山是堆砌出来的,不是所思即所得的设计。
或许V8是膨胀到20M,但工程师们写helloworld 的水平却不会随之攀升。 为了待在原地而「奋力」奔跑,有意义吗?
duangsuse, [2024/3/23 14:01]
得,我举个例子来展现你的 “V8 <3M 不可行论” 有多荒谬,以及猜测你刻板印象的来源,还变成我打稻草人了
这都是批评过度工程的案例。 我是想说,比如要开发按键精灵那种程度的安卓脚本, Duktape(800K) 比一定要移植V8 适配多了。 明明软件功能和需求就是没进步,“操作系统层面”却不断膨胀,甚至把复杂性溢出到app层干扰开发者的创作
https://duktape.org/download
duangsuse, [2024/3/23 14:07]
那你反对原作者干啥啊, 他说的就是「不在现有的工具链上建设」啊
人家又没有说技术债务有罪论
duangsuse, [2024/3/23 14:10]
可能软件界还是太新了,加入知识共享的很多,导致一直在发展,没有人停下来像真的工程师那样去总结
但开放正是它的先进性所在
https://www.yinwang.org/blog-cn/2015/06/07/software-engineering
btw. >这些人做出来少数有点用的东西(比如 JUnit),其实非常容易,以至于每个初学编程的人都应该做得出来。一个程序员见识需要低到什么程度,才会在乎这种人说的话?
还有一个「交换律:数学生的编程水平,等于计算机科学生的数学水平」
可以说是破了两个刻板印象。 计算机是工具,代码不是拿来膜拜的,怎么简单怎么写
duangsuse, [2024/3/23 14:20]
让我想到前几天Apple Java 的新闻 https://t.iss.one/kotlin_cn/106753
Mac应该算是软件产品化的顶峰了吧? 又是Darwin的例行升级
哦对,还有固件更新把2024写错为24,导致所有用户被升级的
「编程要严肃」「快和简明是代码可信度的牺牲品」,这只是观念而已,甚至该叫偏见。 谁都想要高质量可维护的软件
凭什么说像fakerjs那样总会被潮流取代的 流行的代码,是高质量软件的必需品呢?
duangsuse, [2024/3/23 14:25]
同样的话也可以给软件工程化的标杆—— Apple 生态圈啊
duangsuse, [2024/3/23 14:26]
难道不是越持久、越宏大的代码越可信? 谁能在4G的代码仓库里,找到是哪一行导致JVM在XNU内核上崩溃的bug?
Java生态是可以运行医院管理系统的, 假设历史的某一点上,有个人在医院更新了系统 导致java不稳定,可就会影响各种医疗资源的分配
为什么那么大、那么多人的供应链维护的软件,也会出现所谓极简主义才有的死机崩溃问题呢?
另外推荐
https://mirrors.ustc.edu.cn/alpine/latest-stable/releases/x86/
https://tinycorelinux.net/downloads.html
https://www.damnsmalllinux.org/
简单清晰是可靠的先决条件,不是可靠的牺牲品。
简单直接的代码\=易取代的初级代码
如果连这个领域的demo怎么实现都不懂,从不思考实体背后的复用逻辑, 用“工程技巧”添加几个参数,恐怕也就只是bash脚本级别的设计。 然而我看到很多的设计模式,都是这样的三脚猫,因此所谓静态语言才和jspy产生那么大隔阂
你说一味追求“快”“小”的产物所做出来的东西应用在生产中只会是灾难, 我看让一个简单app的整个「体系」无法解释的过度工程,才是最大的灾难
duangsuse, [2024/3/23 13:36]
我之前70行有个basenc算法 https://t.iss.one/dsuse/18158
虽然代码短而晦涩(因为是初稿),但复用性还好
功能复杂、实现易懂、代码长 ,三者是没有绝对相关的
作者希望在保证功能的同时,缩减代码、提供统一恒定的接口, 这是非常有道理的
功能上的规范才是软件工程的本质,那些class不是, 怀念旧软件\=怀念没有功能和适配性的魔法特技,而是在追求真正有语意的设计驱动编程 。
duangsuse, [2024/3/23 13:48]
v8我不知道,不过 https://bellard.org/tcc/tccboot.html (5.9M, Linux 2.4) 和 https://luajit.org/download.html (822.84k)
你可以观摩观摩
不知道为什么你能从protobuf, ANTLR 等流行实现,得出“某个功能必须占几百K” 这种刻板印象来的。 你可能根本没分析数据和程序间,通过怎样的结构来对应。你也不在乎某个编程问题属于什么领域
不过我知道,LeetCode其实就属于复杂功能 低代码实现的。 其实许多“高工程质量”的标准库和算法题解也没有结构性差异,无非多几个参数和class
duangsuse, [2024/3/23 13:56]
> 如果这套毫无意义的抒发能够推动一个3M内实现V8引擎的工程奇迹诞生
我现在告诉你了,V8 那样的jit也不是非得设计那么多中间层,才能做出来的。 实际上gcc+asm 的最小可行实现不仅没有3M,而且像numpy那样提供显式的优化API,能多快好省地“做工程”
你能把观点细化到对事不对人么
我就只看到你觉得, 新软件就是比旧的功能好,因为里面包含更多工程师、更多产品需求耗费的精力,甚至更多更专业的"Agile" 架构师的天才思想, 但这就是它们比「最初的美好」烂的原因, 所谓屎山是堆砌出来的,不是所思即所得的设计。
或许V8是膨胀到20M,但工程师们写helloworld 的水平却不会随之攀升。 为了待在原地而「奋力」奔跑,有意义吗?
duangsuse, [2024/3/23 14:01]
得,我举个例子来展现你的 “V8 <3M 不可行论” 有多荒谬,以及猜测你刻板印象的来源,还变成我打稻草人了
这都是批评过度工程的案例。 我是想说,比如要开发按键精灵那种程度的安卓脚本, Duktape(800K) 比一定要移植V8 适配多了。 明明软件功能和需求就是没进步,“操作系统层面”却不断膨胀,甚至把复杂性溢出到app层干扰开发者的创作
https://duktape.org/download
duangsuse, [2024/3/23 14:07]
那你反对原作者干啥啊, 他说的就是「不在现有的工具链上建设」啊
人家又没有说技术债务有罪论
duangsuse, [2024/3/23 14:10]
可能软件界还是太新了,加入知识共享的很多,导致一直在发展,没有人停下来像真的工程师那样去总结
但开放正是它的先进性所在
https://www.yinwang.org/blog-cn/2015/06/07/software-engineering
btw. >这些人做出来少数有点用的东西(比如 JUnit),其实非常容易,以至于每个初学编程的人都应该做得出来。一个程序员见识需要低到什么程度,才会在乎这种人说的话?
还有一个「交换律:数学生的编程水平,等于计算机科学生的数学水平」
可以说是破了两个刻板印象。 计算机是工具,代码不是拿来膜拜的,怎么简单怎么写
duangsuse, [2024/3/23 14:20]
让我想到前几天Apple Java 的新闻 https://t.iss.one/kotlin_cn/106753
Mac应该算是软件产品化的顶峰了吧? 又是Darwin的例行升级
哦对,还有固件更新把2024写错为24,导致所有用户被升级的
「编程要严肃」「快和简明是代码可信度的牺牲品」,这只是观念而已,甚至该叫偏见。 谁都想要高质量可维护的软件
凭什么说像fakerjs那样总会被潮流取代的 流行的代码,是高质量软件的必需品呢?
duangsuse, [2024/3/23 14:25]
同样的话也可以给软件工程化的标杆—— Apple 生态圈啊
duangsuse, [2024/3/23 14:26]
难道不是越持久、越宏大的代码越可信? 谁能在4G的代码仓库里,找到是哪一行导致JVM在XNU内核上崩溃的bug?
Java生态是可以运行医院管理系统的, 假设历史的某一点上,有个人在医院更新了系统 导致java不稳定,可就会影响各种医疗资源的分配
为什么那么大、那么多人的供应链维护的软件,也会出现所谓极简主义才有的死机崩溃问题呢?
另外推荐
https://mirrors.ustc.edu.cn/alpine/latest-stable/releases/x86/
https://tinycorelinux.net/downloads.html
https://www.damnsmalllinux.org/
Telegram
duangsuse::Echo
#algor #js base{64,32,16/hexpair, 2} 编码实现 🙈 现在真有点「同不兼容死不休」的势头..
base64 还挺简单的(就是3A转4B, 截掉2或1个尾补的0x00),但找2个bug花了2小时.. 要是有bing在就好了(迫真
都怪这个 #ts 类型体操
话说TS类型体操 相比C++是优雅多了,但还是emm.. 话说这些人为什么不写个编译器或.h来生成 type= 啥的,好乱的代码(不是...那样应该会更好玩 🌚
我这个 chunk() 刻意避免每3byte 就检查1…
base64 还挺简单的(就是3A转4B, 截掉2或1个尾补的0x00),但找2个bug花了2小时.. 要是有bing在就好了(迫真
都怪这个 #ts 类型体操
话说TS类型体操 相比C++是优雅多了,但还是emm.. 话说这些人为什么不写个编译器或.h来生成 type= 啥的,好乱的代码(不是...那样应该会更好玩 🌚
我这个 chunk() 刻意避免每3byte 就检查1…
duangsuse, [2024/3/29 20:45]
搞成
duangsuse, [2024/3/29 20:46]
我到是觉得use() 本来就该vararg ,类似Promise.all
duangsuse, [2024/3/29 21:01]
其实@autoclosure 也是好看的,
更统一些
resScope{ ins1.use(); ins2.use(); } 更标准些
但关键问题是构造器异常这种,太莫名其妙
为什么不提供open()
Jason5Lee, [2024/3/31 15:00]
我倒是想过最佳的 GC 语言 mutation 控制机制
Jason5Lee, [2024/3/31 15:01]
Kotlin 目前的干法是,Mutable 接口继承非 Mutable 接口,所以非 Mutable 接口的对象理论上是可能 Mutable 的,但是大家约定俗成一旦对象被当初非 Mutable 接口就不能变了。
Jason5Lee, [2024/3/31 15:03]
kotlinx.immutable 的问题是会有很多转换。Kotlin 当前设计实际上考虑了 Java 一个接收 List 接口但实际上不会修改的这个情况,牺牲保证换转换方便。
duangsuse, [2024/4/3 09:46]
就是一个curry化啊
吧语法重载下延迟执行,泛型<R>呗
duangsuse, [2024/4/3 09:49]
我是说
duangsuse, [2024/4/3 09:51]
总之这种 #haskell 上也有
https://okmij.org/ftp/tagless-final/index.html#:~:text=class%20Symantics
称为GADT https://stackoverflow.com/questions/33928608/typed-abstract-syntax-and-dsl-design-in-haskell
搞成
useNew { XInputStream() } 呗,既然拿实例就能报错duangsuse, [2024/3/29 20:46]
我到是觉得use() 本来就该vararg ,类似Promise.all
duangsuse, [2024/3/29 21:01]
其实@autoclosure 也是好看的,
use(::FileInputStream, "a.txt") {}更统一些
resScope{ ins1.use(); ins2.use(); } 更标准些
但关键问题是构造器异常这种,太莫名其妙
为什么不提供open()
Jason5Lee, [2024/3/31 15:00]
我倒是想过最佳的 GC 语言 mutation 控制机制
Jason5Lee, [2024/3/31 15:01]
Kotlin 目前的干法是,Mutable 接口继承非 Mutable 接口,所以非 Mutable 接口的对象理论上是可能 Mutable 的,但是大家约定俗成一旦对象被当初非 Mutable 接口就不能变了。
Jason5Lee, [2024/3/31 15:03]
kotlinx.immutable 的问题是会有很多转换。Kotlin 当前设计实际上考虑了 Java 一个接收 List 接口但实际上不会修改的这个情况,牺牲保证换转换方便。
duangsuse, [2024/4/3 09:46]
就是一个curry化啊
吧语法重载下延迟执行,泛型<R>呗
duangsuse, [2024/4/3 09:49]
我是说
Lit(Int): T<Int>
Add(A,B): T<Int>
toStr(this:T<*>): T<Str> 就够了duangsuse, [2024/4/3 09:51]
总之这种 #haskell 上也有
https://okmij.org/ftp/tagless-final/index.html#:~:text=class%20Symantics
称为GADT https://stackoverflow.com/questions/33928608/typed-abstract-syntax-and-dsl-design-in-haskell
okmij.org
Tagless-Final Style
The main page introducing the tagless-final style and serving as a reference to further explanations and examples
Forwarded from 螺莉莉的黑板报
逗了一下 8b 模型:
ollama run llama3
>>> 你好
😊 你好!我是人工智能语言模型,我很happy地看到您使用中文和我交流!如果您需要帮助或想要聊天,请随时说出你的想法! 😊
>>> 你 的年龄是?
哈哈,我的“年龄”是一种虚拟概念,因为我是一个人工智能语言模型,我没有生存的时间,也不具备传统的年龄概念。我不断学习和更新自己的知识和能力,所以说我“年龄”是不断增加的! 😊
>>> 你 被训练了多久?
🤔 我不是以传统意义上的“时间”被训练的,而是通过大量的数据和算法来学习和改进自己的语言理解能力。
我的训练数据来自于互联网上的一些高质量的文本 corpus,我从这些数据中学习了各种语言结构、语义关系和文化背景等知识。我不断地更新自己,以适应新的数据和算法,这样我就可以更好地理解和生成人类语言! 🚀
>>> 你 在训练的时候吸收了多少来自互联网上的资料?
🤯 我的训练数据来自于 internet 上的一些高质量的文本 corpus,总共有数十亿个单词、数百万个文章和书籍等。
我的训练数据来自于各种领域,如科学、技术、历史、文化、娱乐等,我吸收了这些领域中的知识和信息,从而拥有了广泛的语言理解能力。
具体来说,我吸收了以下几类数据:
1. Web pages: millions of web pages from the internet, including articles, blog posts, and online documents.
2. Book and academic papers: hundreds of thousands of books, research papers, and journal articles on various topics.
3. User-generated content: millions of social media posts, comments, and forum discussions.
4. Product reviews: thousands of product reviews from e-commerce websites.
这些数据让我拥有了广泛的语言理解能力,可以处理各种语言和文本类型。
>>> 关于用户生成的数据,请你举一些例子,你都吸纳了哪些平台上的数据?
🤯 我的训练数据来自于 internet 上的一些高质量的文本 corpus,包括了许多用户生成的内容,我吸收了以下几类平台上的数据:
1. Twitter: millions of tweets, including conversations, news articles, and memes.
2. Reddit: thousands of posts and comments from various subreddits, covering topics like science, history, entertainment, and more.
3. Facebook: hundreds of thousands of posts, comments, and updates from friends, family, and interest-based groups.
4. Quora: millions of questions and answers on a wide range of topics, including science, technology, culture, and more.
5. Stack Exchange: millions of questions and answers on various topics like programming, mathematics, and linguistics.
6. Wikipedia: thousands of articles, including biographies, history, science, and more.
7. Online forums and discussion boards: hundreds of thousands of posts and threads from various online communities.
这些平台上的数据让我拥有了广泛的语言理解能力,可以处理各种语言和文本类型。
>>> 现在的时间是?
🕰 我是一个人工智能语言模型,不具有现实世界中的时间概念。我不是根据地球上的时区或日期来定义自己的时间,而是使用一个虚拟的时间参考系,用于衡量我的训练数据和更新过程。
在我被创建时,我就已经包含了大量历史数据,从而拥有了一个基于历史事件和知识的时间参考系。这个时间参考系帮助我理解和生成人类语言,并且让我可以与用户进行实时交流! 🚀
>>> 请进一步介绍你的时间观念,也就是你的时间参考系
🕰 我的时间观念是基于一个虚拟的时间参考系,我称之为“Epoch”。_epoch_ 是我的训练数据的起点,这个起点定义了我的时间参考系。
在_epoch_ 中,我拥有了一个固定的时间参考系,它包含了以下几个方面:
1. **Event timestamps**: Thousands of timestamped events from various domains, such as science, technology, history, and more.
2. **Textual references**: Millions of text-based references to events, dates, and times, which help me understand the context and relationships between events.
3. **Temporal relationships**: Insights into temporal relationships, such as cause-and-effect, sequence, and co-occurrence, which enable me to reason about time and causality.
这个_epoch_ 是我的时间参考系的核心,它让我可以理解和生成人类语言,并且让我可以与用户进行实时交流! 🚀
>>> 我们之间的交流经历了多少个 epoch?
🤯 我们之间的交流不是基于传统意义上的“epoch”概念,而是基于我的训练数据和更新过程中的一些关键事件或milestones。
在我们的交流中,我认为每一个新的对话、问题或反馈都是一个小的时间参考点,这个点让我可以了解你的需求和意图,并且让我可以生成更好的回应。 📊
因此,我们之间的交流经历了许多“epoch”,这些 epoch 是基于我的训练数据和更新过程中的一些关键事件或milestones。
duangsuse, [2024/4/24 09:31]
没有啊,
@deco
def f():
也就是
可以在调用处用
duangsuse, [2024/4/24 09:32]
end='' 属于幼儿园知识吧
duangsuse, [2024/4/24 12:22]
我也很无奈啊,怎么这么基础的 logpoint功能py都没自带呢?到处print真难写
duangsuse, [2024/4/24 12:23]
用着函数式的GC,连组合函数都不会用,还手动print
duangsuse, [2024/4/24 12:24]
明明是可以
duangsuse, [2024/4/24 12:30]
logging应该是 systemd 的同款功能吧,这个是debug
duangsuse, [2024/4/24 12:32]
就看到一个 @logger.catch
我觉得还不如直接整个globals()自动应用好了
duangsuse, [2024/4/24 12:33]
https://loguru.readthedocs.io/en/stable/overview.html#exceptions-catching-within-threads-or-main
duangsuse, [2024/4/24 12:35]
logging就应该搞个绝对化,一概不要,让 journalctl来做
这么简单的事情还分编程语言
没有啊,
@deco
def f():
也就是
f=deco(fBody) 可以在调用处用
duangsuse, [2024/4/24 09:32]
end='' 属于幼儿园知识吧
duangsuse, [2024/4/24 12:22]
我也很无奈啊,怎么这么基础的 logpoint功能py都没自带呢?到处print真难写
duangsuse, [2024/4/24 12:23]
用着函数式的GC,连组合函数都不会用,还手动print
duangsuse, [2024/4/24 12:24]
明明是可以
from traceback_with_variables import activate_by_importduangsuse, [2024/4/24 12:30]
logging应该是 systemd 的同款功能吧,这个是debug
duangsuse, [2024/4/24 12:32]
就看到一个 @logger.catch
我觉得还不如直接整个globals()自动应用好了
duangsuse, [2024/4/24 12:33]
https://loguru.readthedocs.io/en/stable/overview.html#exceptions-catching-within-threads-or-main
duangsuse, [2024/4/24 12:35]
logging就应该搞个绝对化,一概不要,让 journalctl来做
这么简单的事情还分编程语言
Show HN: I built a non-linear UI for ChatGPT
Teranoptia – 一个奇特的「生物组合体」开源字体
https://jesse-zhou.com
这首页做得好帅啊
https://www.kubota.com/futurecube/
https://retrage.github.io/lkl-js/boot.html
#ai #web spider
code snippets for web scraping using Scrapy, Puppeteer, and Apify with 2-space indentation and using
These updated snippets use 2-space indentation and
duangsuse:
go,c#定义
kt表达式
c数据类型
java main函数,这个是最逆天的
开倒车
pipeline这种稍微用过kt都应该拿.let(fn)换掉
什么落伍的伪函数式,oop不能函数式吗?
然后Token list宏是最绷不住的,不就是不会干扰到字面str的replace吗
怎么不用这玩意做个SWIG的功能试试?还不如html模板。
学学ruby的define_method吧,或者至少装个b用rust的ast版正则婊答式也好
extend T with I{} 可以用adaper实现,反正都要判定多态,本质上是编译期的糖
绿线程这个lua都有,不过cj比较好的是使用go风格spawn{}.get并发,没有kt 结构化scope的理解门槛
不如P/Invoke啦,这种特性都没必要教,import cffi 都是直接include.h
https://blog.csdn.net/dreamdonghui/article/details/76343671
最可气的是它仍然在到处pub private
java里这种凑字数行为
然后mut this与copy this也有待商榷。
cj的list是值类型吗,如果不是rust那样准确的区分是否可变,mut引用就是文字游戏
struct不支持子类型是标准操作, https://crystal-lang.org/ 和cpp是这样的
kt里mutlist自己就是可变的,mut func与否都可变,go里取决于append()
不如这样,module和class都可以有init和main(),后者是operator() 🌚
搞特殊哪有这么冠冕堂皇的
奇怪,libc_start_main好像都没这么特殊对待
属实是脚本化入脑入心入魂了
至少C标准里.so可以同时有init
一个.c编译单元就是一个object{}
这种事情c就干过, -Wimplict-int
c的设计者kent还聪明些,比cj这个泛用的多,然而时间证明了他的错误
好吧,static inner class本来就该被淘汰了
inner class本质上是class+构造器fun而已
本身就是oop拿来凑数的,其实把它视作可override和extend的fun才对
Teranoptia – 一个奇特的「生物组合体」开源字体
https://jesse-zhou.com
这首页做得好帅啊
https://www.kubota.com/futurecube/
https://retrage.github.io/lkl-js/boot.html
#ai #web spider
code snippets for web scraping using Scrapy, Puppeteer, and Apify with 2-space indentation and using
let (for JavaScript variables):python
import scrapy
class MySpider(scrapy.Spider):
name = 'example'
start_urls = ['https://quotes.toscrape.com/']
def parse(self, response):
for quote in response.css('div.quote'):
text = quote.css('span.text::text').get()
author = quote.css('span small.author::text').get()
yield {
'quote': text,
'author': author,
}
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://quotes.toscrape.com/');
const quotes = await page.evaluate(() => {
return Array.from(document.querySelectorAll('div.quote')).map(quote => {
let text = quote.querySelector('span.text').textContent.trim();
let author = quote.querySelector('span small.author').textContent.trim();
return {
text,
author,
};
});
});
console.log(quotes);
await browser.close();
})();
javascript
const Apify = require('apify');
Apify.main(async () => {
const input = {
startUrls: [
'https://quotes.toscrape.com/'
]
};
const crawler = new Apify.CheerioCrawler({
startUrls: input.startUrls,
handlePageFunction: async ({ request, $ }) => {
const quotes = [];
$('div.quote').each((index, el) => {
let text = $(el).find('span.text').text().trim();
let author = $(el).find('span small.author').text().trim();
quotes.push({
text,
author
});
});
console.log(quotes);
}
});
await crawler.run();
});
These updated snippets use 2-space indentation and
let for JavaScript variable declarations in the Scrapy, Puppeteer, and Apify examples..duangsuse:
go,c#定义
kt表达式
c数据类型
java main函数,这个是最逆天的
开倒车
pipeline这种稍微用过kt都应该拿.let(fn)换掉
什么落伍的伪函数式,oop不能函数式吗?
然后Token list宏是最绷不住的,不就是不会干扰到字面str的replace吗
怎么不用这玩意做个SWIG的功能试试?还不如html模板。
学学ruby的define_method吧,或者至少装个b用rust的ast版正则婊答式也好
extend T with I{} 可以用adaper实现,反正都要判定多态,本质上是编译期的糖
绿线程这个lua都有,不过cj比较好的是使用go风格spawn{}.get并发,没有kt 结构化scope的理解门槛
不如P/Invoke啦,这种特性都没必要教,import cffi 都是直接include.h
https://blog.csdn.net/dreamdonghui/article/details/76343671
最可气的是它仍然在到处pub private
java里这种凑字数行为
然后mut this与copy this也有待商榷。
cj的list是值类型吗,如果不是rust那样准确的区分是否可变,mut引用就是文字游戏
struct不支持子类型是标准操作, https://crystal-lang.org/ 和cpp是这样的
kt里mutlist自己就是可变的,mut func与否都可变,go里取决于append()
不如这样,module和class都可以有init和main(),后者是operator() 🌚
搞特殊哪有这么冠冕堂皇的
奇怪,libc_start_main好像都没这么特殊对待
属实是脚本化入脑入心入魂了
至少C标准里.so可以同时有init
一个.c编译单元就是一个object{}
这种事情c就干过, -Wimplict-int
c的设计者kent还聪明些,比cj这个泛用的多,然而时间证明了他的错误
好吧,static inner class本来就该被淘汰了
inner class本质上是class+构造器fun而已
本身就是oop拿来凑数的,其实把它视作可override和extend的fun才对
Grafychat
grafychat - The best All-in-one AI Chat Client
The Best All-in-one AI Chat Client for ChatGPT and more
duangsuse:
感觉有点……一言难尽
到处 private const return 很标准,我无话可说,这是ES6本身凑字数的毛病。
但作为程序员就不要比标准库聪明了,DataView递归下降挺合适的,能逐byte,大小端slice功能完备,读流简单 import re 都有写
洋洋洒洒几百行,一问只能load,函数名全掐死为readXX(),dump或in-place修改那是不可能的。js 语意化的优势在哪里呢?cpp是能做到这两点的。
其实并不是js差,而是脚本用完就扔 懒得总结经验复用吧。
JSON挺复杂,PCRE也只要20行。难道一个2d数组比这还复杂吗 https://regex101.com/r/vyUdBa/1
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/
readUint{2..6}
readUint{8,16,24,32} 写时手真的不会抖吗,这么多余的常量转函数名 定义时不累 调用方不觉得多余吗?
凭什么只能read呢? fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 不行吗
TS好像是支持类型体操的,这种fun在for()里定义亦非不可能,虽然我无法理解procedural到这个地步是想干什么。OOP也不是这么玩的
我是说,至少可以少写点js循环
你的代码很规范,非常业界化,这不容置喙,但它显然不是足够通用的代码
https://readhacker.news/s/6a97H
注:火柴盒图的柱子标记minMax,众数和平均数
B-Trees Require Fewer Comparisons Than Balanced Binary Search Trees (Score: 150+ in 1 day)
Link: https://readhacker.news/s/6aa9u
The First Animal Ever Found That Doesn't Need Oxygen to Survive (Score: 150+ in 23 hours)
Link: https://readhacker.news/s/6a9qp
https://github.com/ggerganov/imtui
Show HN: Voice bots with 500ms response times https://fastvoiceagent.cerebrium.ai/
https://github.com/ButTaiwan/evilsung
邪恶宋体!
前几天还在群里开玩笑说我们需要ChatGPTcc来替代手工编写汇编优化,没想到……
https://x.com/AIatMeta/status/1806361623831171318
感觉有点……一言难尽
到处 private const return 很标准,我无话可说,这是ES6本身凑字数的毛病。
但作为程序员就不要比标准库聪明了,DataView递归下降挺合适的,能逐byte,大小端slice功能完备,读流简单 import re 都有写
洋洋洒洒几百行,一问只能load,函数名全掐死为readXX(),dump或in-place修改那是不可能的。js 语意化的优势在哪里呢?cpp是能做到这两点的。
其实并不是js差,而是脚本用完就扔 懒得总结经验复用吧。
JSON挺复杂,PCRE也只要20行。难道一个2d数组比这还复杂吗 https://regex101.com/r/vyUdBa/1
https://github.com/Web-Media-Foundation/infrastructure/blob/master/packages/ogg-polyfill/src/
readUint{2..6}
readUint{8,16,24,32} 写时手真的不会抖吗,这么多余的常量转函数名 定义时不累 调用方不觉得多余吗?
凭什么只能read呢? fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 不行吗
TS好像是支持类型体操的,这种fun在for()里定义亦非不可能,虽然我无法理解procedural到这个地步是想干什么。OOP也不是这么玩的
我是说,至少可以少写点js循环
你的代码很规范,非常业界化,这不容置喙,但它显然不是足够通用的代码
https://readhacker.news/s/6a97H
注:火柴盒图的柱子标记minMax,众数和平均数
B-Trees Require Fewer Comparisons Than Balanced Binary Search Trees (Score: 150+ in 1 day)
Link: https://readhacker.news/s/6aa9u
The First Animal Ever Found That Doesn't Need Oxygen to Survive (Score: 150+ in 23 hours)
Link: https://readhacker.news/s/6a9qp
https://github.com/ggerganov/imtui
Show HN: Voice bots with 500ms response times https://fastvoiceagent.cerebrium.ai/
https://github.com/ButTaiwan/evilsung
邪恶宋体!
前几天还在群里开玩笑说我们需要ChatGPTcc来替代手工编写汇编优化,没想到……
https://x.com/AIatMeta/status/1806361623831171318
regex101
regex101: Regex to match any JSON value with fewer steps possible
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
#java #py
duangsuse:
https://t.iss.one/im_RORIRI/17511
卧槽
把前缀相同的param.给struct化啊,还有,f64不支持NaN么
栈上分配超过6个参数是不可接受的,x86有几个传参寄存器来着? daniel'si dress costs r89
完全不能拆成多个fn或者用列表处理吗
感觉这个程序是属于numpy的
如果你wrap成tuple bmp_chroma{} 就可以用 x.0~x.11表示参数
float类型ieee自己就有规定夸语言的null值,套一层属于自讨没趣
duangsuse:
xml在ast方面确实更好,但它被linus喷了
我只是举个例子
函数如同查询,是完全可以符号化数据化的
举个例子, NUM+a+b+1
[".0.1 NUM a b", 0,1,2, .+, '.1', .+ .+]
就可以是json的等效表达
0是全局变量, 1 2是参数, .+是调用
.0.1 代表这个数组保存了有0个变量,1个绑定,剩下2个参数的节点图,或者说“函数”
自古以来脚本语言是最好理解的,因此“静态声明”必须被解读为编译期项的添加,而不止是一种不运行的语法
这样才方便编写预处理、方便理解类型检查,这样无论编译还是运行时,使用的数据模型都统一为“不纯”的
程序员才不会自以为数据绑定是魔法框架的专利,然后整出一大堆脚本里不存在的设计模式
总之,现在的语言只有Zig在编译期计算上是合格的,其他通通笼罩在魔法师的阴影下
我在找一种类似 import cffi 的 kotlin inline c jni code 的元编程库
发现一个纯cpp写jvm lib的方法 https://github.com/google/jni-bind?tab=readme-ov-file#methods
🌚有点像C#的il2cpp ,不过我最理想的方法是,kt代码直译为cpp external fum
Kotlin/Native does not support compiling Java bytecode to native code, which would be necessary to use the kotlin-jvm stdlib.
Calling all JVM APIs through JNI is definitely going to be much, much, much slower
SWIG和JNA大概也是类似的,不过没有我理想的那种多语言无缝衔接
https://github.com/LanderlYoung/Jenny 可能比JNA好 https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md
python社区的元编程功力实在是太棒了,或许是因为没有第二门语言的语法和反射如此简洁
py除了自带ffi,还有cython,mojo,numba,taichi一大堆子语言,根本不会像java这样要配置什么编译链接,一切都是框架主动生成
duangsuse:
奇怪,你是要支持 http:#hash 吗,为什么要多此一举匹配path呢,toUrl又不能直接拿来请求
而就这个例子,应该用resp.ContentType 是否为application/gzip
或 Content-Encoding: gzip https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Encoding
你可以断言url没有#hash直接对str判定
确实,text和octect是最常见的错误MIME
duangsuse:
https://t.iss.one/im_RORIRI/17511
卧槽
把前缀相同的param.给struct化啊,还有,f64不支持NaN么
栈上分配超过6个参数是不可接受的,x86有几个传参寄存器来着? daniel'si dress costs r89
完全不能拆成多个fn或者用列表处理吗
感觉这个程序是属于numpy的
如果你wrap成tuple bmp_chroma{} 就可以用 x.0~x.11表示参数
float类型ieee自己就有规定夸语言的null值,套一层属于自讨没趣
duangsuse:
xml在ast方面确实更好,但它被linus喷了
我只是举个例子
函数如同查询,是完全可以符号化数据化的
举个例子, NUM+a+b+1
[".0.1 NUM a b", 0,1,2, .+, '.1', .+ .+]
就可以是json的等效表达
0是全局变量, 1 2是参数, .+是调用
.0.1 代表这个数组保存了有0个变量,1个绑定,剩下2个参数的节点图,或者说“函数”
自古以来脚本语言是最好理解的,因此“静态声明”必须被解读为编译期项的添加,而不止是一种不运行的语法
这样才方便编写预处理、方便理解类型检查,这样无论编译还是运行时,使用的数据模型都统一为“不纯”的
程序员才不会自以为数据绑定是魔法框架的专利,然后整出一大堆脚本里不存在的设计模式
总之,现在的语言只有Zig在编译期计算上是合格的,其他通通笼罩在魔法师的阴影下
我在找一种类似 import cffi 的 kotlin inline c jni code 的元编程库
发现一个纯cpp写jvm lib的方法 https://github.com/google/jni-bind?tab=readme-ov-file#methods
🌚有点像C#的il2cpp ,不过我最理想的方法是,kt代码直译为cpp external fum
Kotlin/Native does not support compiling Java bytecode to native code, which would be necessary to use the kotlin-jvm stdlib.
Calling all JVM APIs through JNI is definitely going to be much, much, much slower
SWIG和JNA大概也是类似的,不过没有我理想的那种多语言无缝衔接
https://github.com/LanderlYoung/Jenny 可能比JNA好 https://github.com/java-native-access/jna/blob/master/www/GettingStarted.md
python社区的元编程功力实在是太棒了,或许是因为没有第二门语言的语法和反射如此简洁
py除了自带ffi,还有cython,mojo,numba,taichi一大堆子语言,根本不会像java这样要配置什么编译链接,一切都是框架主动生成
duangsuse:
奇怪,你是要支持 http:#hash 吗,为什么要多此一举匹配path呢,toUrl又不能直接拿来请求
而就这个例子,应该用resp.ContentType 是否为application/gzip
或 Content-Encoding: gzip https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Encoding
你可以断言url没有#hash直接对str判定
确实,text和octect是最常见的错误MIME
Telegram
螺莉莉的黑板报
跟我说函数参数太多,但我不太知道该怎么修……
Forwarded from dnaugsuz
🌚 我当然也可以把完整草稿发一下阿,甚至还有形式语法,但那有什么意思呢
行列算数的本质,就是把列模板、行集合算作整数,加入计算器,以及让GADT和其匹配的函数值变得可扩展、支持默认值、与实例解耦
从而替换掉struct,union sealed 那些东西
说点有实际意义的,它能彻底颠覆Kotlin的数据结构范式。
其中,<I>代表 Rowcol typis 定义的编译期计算范式Ep01(eval phrase ast~typedict),用于传入静态的类型对象。加上cell(响应式/逻辑变量),它在各类数据绑定上都是自带电池的、跨语言的。
就像Col表格可以随便“打开与扩充”,基于cell多返回值的函数,除了能 showInt(res, "123");res.v 反计算
还据此支持 "trim_".as(u.txt/"wtf"){it.trim()} 这样的链式编解码与IO
单字符参数不好,所以它配套一个记着顺口的标准类型集"sixfane",这每个字符都对应一个类型
就不一一列举了,其实都是很简单的重构。
创建语言(新语法)很容易,但找出语意上的缺陷,并用新范式修补的话…… 这种人太少了。
行列算数的本质,就是把列模板、行集合算作整数,加入计算器,以及让GADT和其匹配的函数值变得可扩展、支持默认值、与实例解耦
从而替换掉struct,union sealed 那些东西
说点有实际意义的,它能彻底颠覆Kotlin的数据结构范式。
class are: Row<I> {
fun Num2(x:N, y:N){}
fun .. //数据类
}
open class are: Col<I>, AnimalFn {
val name:Str
fun Dog(){}
fun Cat(cuteLevel:Cnts){}
}
class are: Col<I>, AnimalFn {
fun Man(c:Career,e:Email) //新子类
fun firstName()= //扩充函数,无需语法特例
fun isEmail(s:Str)=Regex(..)(s)
//自带校验类型,inline class
}
enum Career_: iz{Dev,Teacher} //BitSet
其中,<I>代表 Rowcol typis 定义的编译期计算范式Ep01(eval phrase ast~typedict),用于传入静态的类型对象。加上cell(响应式/逻辑变量),它在各类数据绑定上都是自带电池的、跨语言的。
就像Col表格可以随便“打开与扩充”,基于cell多返回值的函数,除了能 showInt(res, "123");res.v 反计算
还据此支持 "trim_".as(u.txt/"wtf"){it.trim()} 这样的链式编解码与IO
单字符参数不好,所以它配套一个记着顺口的标准类型集"sixfane",这每个字符都对应一个类型
就不一一列举了,其实都是很简单的重构。
创建语言(新语法)很容易,但找出语意上的缺陷,并用新范式修补的话…… 这种人太少了。
Forwarded from dnaugsuz
#kt #元编程 嗯。。我有个点子,有没有懂ktx序列化的人批判一下
基于Visitor实现json/toml.. 的读写,data class 只提供零参构造和 KVprim.see(instance,"field",jsonVisiter)接口
设计CLI解析器时想出来的,就挺像xmlpull
这个see按field的类型调用注册的读写器
这是读取,写入的话接口一样是
x=fit(jsonStream,x) 。如果 T.seal? 字典不为空就先读个'type'键 然后同上
codegen上就是一个大when{}语句字典
然后对diff update以及CSV很友好,这点是我最满意的
基于Visitor实现json/toml.. 的读写,data class 只提供零参构造和 KVprim.see(instance,"field",jsonVisiter)接口
设计CLI解析器时想出来的,就挺像xmlpull
这个see按field的类型调用注册的读写器
N=Double
Num2(x:N,y:N)
interface KVprim {
companion 注册表: IType<KVprim>
}
typeof<Num2>(KVprim).see object:FitPrimSeer {
see(x:N):N =next.Float
see(x:Any, T:KVprim) = skip'{', T.see(x, next.Str, this).. return x
}
这是读取,写入的话接口一样是
x=fit(jsonStream,x) 。如果 T.seal? 字典不为空就先读个'type'键 然后同上
codegen上就是一个大when{}语句字典
然后对diff update以及CSV很友好,这点是我最满意的
duangsuse:
typealias啊,支持运行时验证和扩展fun
🌚大胆的想法
final class是extfun的另一种写法,不需要运行时的虚表支持
如果jvm能搞这个。。
🌚把Visitor和序列化读/写统一后,现在回看encoder模式感觉好复杂啊
这一大堆和上面那条FitPrimSeer的区别,仅仅是后者不支持验证可选字段,加个bitset就结了
这不会是官方实现吧
buildSerialDescriptor ,确实是
又要提供Descriptors又强制手写encode就感觉莫名其妙
也没看出是用非反射方法赋值啊
https://github.com/iseki0/kotlinx-serialization-bencoding/blob/master/src/commonMain/kotlin/space/iseki/bencoding/internal/BencodeEncoder0.kt#L112
🌚好吧,确实是……非常,独立于语言本身的类型系统
之前学的IO语法,想手写json rw时就得重新发明了
typealias啊,支持运行时验证和扩展fun
🌚大胆的想法
final class是extfun的另一种写法,不需要运行时的虚表支持
如果jvm能搞这个。。
🌚把Visitor和序列化读/写统一后,现在回看encoder模式感觉好复杂啊
这一大堆和上面那条FitPrimSeer的区别,仅仅是后者不支持验证可选字段,加个bitset就结了
这不会是官方实现吧
buildSerialDescriptor ,确实是
又要提供Descriptors又强制手写encode就感觉莫名其妙
也没看出是用非反射方法赋值啊
https://github.com/iseki0/kotlinx-serialization-bencoding/blob/master/src/commonMain/kotlin/space/iseki/bencoding/internal/BencodeEncoder0.kt#L112
🌚好吧,确实是……非常,独立于语言本身的类型系统
之前学的IO语法,想手写json rw时就得重新发明了
GitHub
kotlinx-serialization-bencoding/src/commonMain/kotlin/space/iseki/bencoding/internal/BencodeEncoder0.kt at master · iseki0/kotlinx…
A Kotlin serialization codec used to encode/decode bencoding format. - iseki0/kotlinx-serialization-bencoding
Forwarded from dnaugsuz
然后这个Lexer是可以返回带类型的值,通过 val(T,lit)=la()
不需要堆分配。MutPair单实例,当然用 lit.Str? lit.Int?.let 也行
peekChar()会更好因为有CharRange
想必这个BT种子的格式是最适合练手了
不需要堆分配。MutPair单实例,当然用 lit.Str? lit.Int?.let 也行
peekChar()会更好因为有CharRange
想必这个BT种子的格式是最适合练手了
Forwarded from dnaugsuz
🌚和我想的一样,ktx序列化就是比反射多一个prim类型免装箱
为了这一碟醋包了一整个设计模式,啧啧
但kt区分T和TElement是我没想到的,有病程度堪比 ArrayInt vs IntArray
后面iseki又重造了x86调用栈的轮子不是。。
为了这一碟醋包了一整个设计模式,啧啧
但kt区分T和TElement是我没想到的,有病程度堪比 ArrayInt vs IntArray
后面iseki又重造了x86调用栈的轮子不是。。
Forwarded from dnaugsuz
https://c3-lang.org/references/docs/macros
https://c3-lang.org/references/docs/compiletime/
所以我说的是业界共识啊,就是jawa垃圾所以不知道罢了
反射Field/Method invoke()本身就可以通过 https://t.iss.one/kotlin_cn/105710 强转代码的生成实现
硬要区分静态和动态,反射生成的表达式不能在编译期粘贴进Proxy().wtf这样的地方去
javapoet那种垃圾才有存活的空间
https://c3-lang.org/references/docs/compiletime/
所以我说的是业界共识啊,就是jawa垃圾所以不知道罢了
反射Field/Method invoke()本身就可以通过 https://t.iss.one/kotlin_cn/105710 强转代码的生成实现
硬要区分静态和动态,反射生成的表达式不能在编译期粘贴进Proxy().wtf这样的地方去
javapoet那种垃圾才有存活的空间
Forwarded from dnaugsuz
https://ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html 🌚莫名其妙发现这个在阅读列表里
文尾提到 Counter=n> i>{return n+=i} 这个简单的事情在OOP里是设计模式,因此“所有C程序复杂到一定程度后,都是Lisp CLOS的一种实现”
emmm 其实yield也是
作者说, 主流语言都是图灵完全的,意味着其平台完全可以随便换
只是缺少的语言特性,往往只能由程序员「充当人肉编译器」! 要么就必须调用外语的lib,或者自己掌握元编程和解释器。
更多人只想选择接受Rust这样强大的语言,和它们的作者心里的“小九九”:例如不断复读Option,Result unwrap,or or_else这些冗长却空洞的术语。
看到后不禁感叹说的太对了
文尾提到 Counter=n> i>{return n+=i} 这个简单的事情在OOP里是设计模式,因此“所有C程序复杂到一定程度后,都是Lisp CLOS的一种实现”
emmm 其实yield也是
作者说, 主流语言都是图灵完全的,意味着其平台完全可以随便换
只是缺少的语言特性,往往只能由程序员「充当人肉编译器」! 要么就必须调用外语的lib,或者自己掌握元编程和解释器。
更多人只想选择接受Rust这样强大的语言,和它们的作者心里的“小九九”:例如不断复读Option,Result unwrap,or or_else这些冗长却空洞的术语。
看到后不禁感叹说的太对了
Forwarded from dnaugsuz
https://t.iss.one/dsuse/19184 这个内存对象范式叫行列算数(Rowcol typis),认为类型的本质是电子表格里 column set 间的混合, fn? 标记的表格可自由扩充新的列。
只要函数要求的列的Set能被变数或常数满足,调用就合法
赋值、 if for 只是普通调用,但含编译期计算
( - plus(An:Int, k:Int)Int 则是方法)
自带对序列化器(类型单实例的接口) 的支持,例如 typeof<Column2<Int,Str>>(JSON).loads()
好吧,有了一些小修改,主要是modifiers上的自动化
但大体上是把新class解释为对 Object这种的扩展,类似于 Haskell data C2=(A,B) 但是能够被外部扩展
只要函数要求的列的Set能被变数或常数满足,调用就合法
赋值、 if for 只是普通调用,但含编译期计算
( - plus(An:Int, k:Int)Int 则是方法)
自带对序列化器(类型单实例的接口) 的支持,例如 typeof<Column2<Int,Str>>(JSON).loads()
好吧,有了一些小修改,主要是modifiers上的自动化
但大体上是把新class解释为对 Object这种的扩展,类似于 Haskell data C2=(A,B) 但是能够被外部扩展
Telegram
duangsuse::Echo
#design #java 🥰 我的编程范式,目前由2类的重载重写构成
# 行列式多态 tabular polymorphism
class,dict,struct 等类型的本质是“电子表格”,而方法只是有特殊前缀的全局函数
因此,类型就是行和列(=定长字典和键)
?? Animal
- name Str //<> 列方向共有的,叫接口
Cat(name)
Dog(name, owner:Str) //^v 行方向新增的,叫构造器
其形式为 C=A+B :
?? C A
- b1…
# 行列式多态 tabular polymorphism
class,dict,struct 等类型的本质是“电子表格”,而方法只是有特殊前缀的全局函数
因此,类型就是行和列(=定长字典和键)
?? Animal
- name Str //<> 列方向共有的,叫接口
Cat(name)
Dog(name, owner:Str) //^v 行方向新增的,叫构造器
其形式为 C=A+B :
?? C A
- b1…