V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  songray  ›  全部回复第 1 页 / 共 7 页
回复总数  137
1  2  3  4  5  6  7  
1 天前
回复了 asuraa 创建的主题 Go 编程语言 golang 为何不出来个 Typescript
国内有个开发者搞了基于 Go 的凹语言。
但是说实话,定位很奇怪,品味也很奇怪,也许你可以参考它 fork 一个自己的。
先说是不是,再说为什么。

是不是?不是。
大型和超大型项目在前端的角度来看并不是“一个项目”,比如随便找一个互联网大厂的 App 都包含了海量的 h5 活动页,实际上这些活动页一个业务甚至一个模块就是一个 git repo 。
每一个产品都是来自于天南地北好几个办事处几百个外包攒出来的,这种情况下 JSP 热更新那套逻辑根本不适用。

再说为什么,因为这点损耗不是你需要担心的,容器有没有损耗? k8s 有没有损耗?服务网格有没有损耗? CI/CD 是不是成本呢?
现代软件开发逻辑本来就是用性能换可维护性并降低人力成本,人才是最贵的。如果对于这点没有实感的话,一个校招生一年的薪资够你加两台机器,更不用说开发人员数量增加后,配套人员和设施的成本了。
现代 JavaScript 教程 https://zh.javascript.info/
用 Go 语言自制编译器 https://www.ituring.com.cn/book/2882
6 天前
回复了 sgld 创建的主题 Python 关于 Python 协程的 event loop 与 future
没那么复杂,比如我们有一个 async 函数 foo ,代码执行到 await 的时候,控制权就从 foo 函数让出到别的代码块了,同时向待完成列表里插入 foo 。
等到 foo 的 await 任务完成后,就会向 eventloop 中插入类似于 “foo 已经完成啦,你应该继续 foo 的后续操作”的 task 。
等到 eventloop 循环到这个 task ,就会恢复上下文(也可以说是状态)到 foo ,这也就是为啥无栈协程也可以看做是一种状态机。
希望我的解释比较明朗。
11 天前
回复了 klusfq 创建的主题 职场话题 关于一个项目是不是玩具的界定。
赞同三楼,这不是技术问题,而是屁股问题。
@Radeon 那你自己用 rollup 把 cdn 上的 react.cjs 转一下就行了,不需要直接从源码 build esm 。

你可以参考一下我刚刚写的 demo 或者直接用 dist 文件夹下的产物。

https://github.com/Ray-D-Song/esm-react-transform
这个问题已经存在很多年了,不管是源码还是编译脚本没有考虑过 ESM ,要改的话至少需要几个人一起着手,不是 AI 能干的。
https://github.com/facebook/react/issues/11503
https://github.com/facebook/react/issues/10021

更关键的一点是,React 几乎所有子模块都是 internal ,没法进行摇树,所以提供 ESM 也没啥意义,你为什么不用 UMD 或者 CJS ?
@lisxour
和 pkg 以及 nexe 一样,需要自己使用 esbuild 、ncc 之类的工具把项目转换成单个的 js 文件,所以兼容性是那些工具保证的。
@byte10 你说的应该 nexe 和 pkg 吧,这俩也是打包可执行文件的工具,npx 是执行远程脚本用的。

其实原理都是把代码嵌入到 js 运行时里面,运行的时候再提取代码,不过因为 js 有 cjs 和 esm 两种格式,所以确实有可能兼容性问题。
这玩意 Ruby on Rails 社区早就有类似方案了,叫 Turbo 。

https://www.hotrails.dev/

和 HTMLX 一样,都是不堪重用的东西。
@dragondove 因为这个设置不能搭配 language server 使用,具体的表述是:
Include unimported packages in auto-complete suggestions. Not applicable when using the language server.
@songray 顺带提一嘴,Copilot 5 月开始高级模型调用限制 300 次,超出的 0.04 刀一次。
结合之前微软说过一个 Copilot 用户每个月亏损 80 美元,以及 Cursor 开始砍上下文长度和 Windsurf 涨价,明显各家开始烧不起了。
所以以后只会越来越难用,“想试试便宜的能搭配 deepseek 的看看效果” 还是算了吧...
Cursor 补全强是训练了自己的 MoE 模型,替代品是 Supermaven (已经被 Cursor 收购,但继续提供服务)。
至于 Chat 、Edit 、Agent 就全看上下文长度,Cursor 一开始一骑绝尘,最近也被砍成脑残了,动不动失忆,和 Copilot Chat 处于一个 60 一个 70 的水平。
最强的 Agent 插件还是 Cline + 自己提供 Claude3.7 或者 Gemini 2.5 的 API ,比 Cursor 那个砍了一刀的要强很多。

总结:Supermaven + Cline
形如 Java/Python/JS 的值类型和引用类型是一种「隐式规则」,所以很难说「隐式规则」和「显示指定」之间的优劣,各有各的问题,比如传递后的对象是否还是原来的引用在有些情况下不明确。
各种从祖宗节点找重孙节点和从重孙节点找祖宗节点的地方...
52 天前
回复了 songray 创建的主题 程序员 LLM 还不如低代码
@matrix1010 去年 12 月才免费开放。
53 天前
回复了 sumtsui 创建的主题 程序员 第一次尝试贡献开源受挫
如果你的 pr 质量很高的话,最好的办法就是 fork 一份,然后到处推销你的 fork 。
等作者受不了了就会 merge 掉(笑

不过老实说,开源最大的意义是你可以随便 fork ,而不是可以提 pr 。
合别人的 pr 很累,所以很多作者就是管杀不管埋。
56 天前
回复了 eypidan 创建的主题 程序员 使用 TypeScript 的类型运行 DOOM
之前尝试过用纯 type 实现 Lua 虚拟机,只能说这玩意全是难点。
举个简单的例子,纯 type 实现 通用的整数加法运算:

// 创建长度为 N 的元组类型
type BuildTuple<N extends number, R extends unknown[] = []> =
R['length'] extends N
? R
: BuildTuple<N, [...R, unknown]>;

// 通过元组长度实现加法
type Add<A extends number, B extends number> =
[...BuildTuple<A>, ...BuildTuple<B>]['length'];

但这玩意最多只能算到 45 ,因为 ts 类型系统有递归限制,默认的类型递归深度限制是 50 。
要突破这个限制就只有把整数转为二进制数组,再从二进制数组转回整数。

这样的限制存在方方面面... 所以这老哥真是神人了。
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2449 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 15:49 · PVG 23:49 · LAX 08:49 · JFK 11:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.