- 主题:把js全干掉,统一成ts,有没有搞头?
tsc太慢了,没戏。
呼唤v8整合esbuild。。。。
【 在 libgcc (乞讨积分,求施舍,长期有效) 的大作中提到: 】
: v8跟tsc融合,搞成原生支持ts的
: 所有浏览器全改成原生支持ts
: deno和node整合,原生支持ts
: ...................
--
FROM 123.120.180.*
哪怕io操作都要协程化,为啥所有函数都要async?我写个1加1纯计算函数也要进事件循环?
【 在 hgoldfish 的大作中提到: 】
: 不是不支持协程,,没看我怎么说的,“多用协程解决一切问题“。
: 我比较希望 js 能够隐式地支持协程。。
: c# 为什么选择 async/await 两个关键词,因为 c# 本身是支持线程的,老旧的 c# 程序都会调用 win32api 里面的阻塞 IO API,以及创建线程做并行计算. 为了在阻塞 IO 这一套语义之外并存地支持协程,c# 不得不额外支持 async 函数,显式地告诉程序员,这是个协程操作。
: ...................
--
FROM 123.120.180.*
这个,一听上去有点道理,细思极恐。你这个主意其实就要求所有的系统和用户代码都以默认await为前提,每一个操作相当于都要try catch。真要这么搞,我觉得写代码状态复杂度和时序考虑复杂度就要爆炸了,跟现在写并发程序有点像了,
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 标 题: Re: 把js全干掉,统一成ts,有没有搞头?
: 发信站: 水木社区 (Sat Jul 3 18:27:13 2021), 站内
:
: 这个不是事。对于内部无 await 的,编译器可以很自动化地编译成普通函数。
:
: 显式 async 的问题很大,你们其实都没考虑过,它无法穿透系统定义的函数。
:
: 比如 Proxy 定义的 getter/setter,如果要实现一个需求,某个 obj 的 property 由远程决定是否存在,以及设置 property 的值,会自动地修改远程的值。显然 Proxy 是做不到的。这个功能常用于 python 的 rpc, python 应用 gevent 后可以做到而 js 不行。
:
: 想要实现上面那个需求的话,js 就不得不再定义一个 Proxy 的 async 版本了。
:
: 这就是我为什么说 js 是一门垃圾语言的原因。
:
: 【 在 beep (菜M.喵星耗子) 的大作中提到: 】
: : 哪怕io操作都要协程化,为啥所有函数都要async?我写个1加1纯计算函数也要进事件循环?
:
:
: --
: 灭绝人性啊
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 124.72.119.*]
--
FROM 123.120.180.*
为啥对python也是毒药啦?
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 你那个 fiber 的那句话就是错的。说跟 mssql 相关是 msdn 的原文,不过我一时半会给不出出处。win2k 还是 win98 时代就有的我忘了,内部先用的,后来移植到 win32api.
: async/await 也不是啥新奇玩意儿。python 原本支持的语法叫 yield from 完全等价于 await,当年 python 改动关键字的那个 c 补丁我都看过,没几行代码基本就是数据结构改名和增加关键字就完事了。再早的是 yield 实现的,搭配 twisted inlineCallbacks() 使用,更早的话
: 但是有一说一,确实是 c# 首先使用 async/await 这个关键字。
: ...................
--
FROM 123.120.180.*
你理解错了,不是编译问题,是用户代码写起来爆炸。就拿你说的那个例子,能通过网络调用拿数填给proxy,那我岂不是写一个赋值有语句就得catch一下网络错误了。。。简直就没有一句操作是安全的
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 这个事情在编译器里面几个判断语句就搞定了。实际会优化成正常的函数调用。更深层的优化可以放到字节码这个地方,直接切换函数帧,不止不增加开销,甚至提升了性能。
: 话说,js 社区啥时候也关心函数调用开销了。。满世界到处飘的 lambda 和 map()...
--
修改:beep FROM 123.120.180.*
FROM 123.120.180.*
gil不是规范,也不是永恒的
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我前面说过了啊。。
: python 有 GIL,约等于不支持多线程。python 日常使用的多线程,通常是用于阻塞 IO 的。
: 现在只要把所有的线程阻塞 IO 都替换成协程阻塞 IO,把 threading 模块替换成接口完全一样的 fiber 实现,那大多数 python 源代码,就可以在完全不修改的情况下,使用协程了。
: ...................
--
FROM 123.120.180.*
好在没让你来设计语言。。。。汗
【 在 hgoldfish 的大作中提到: 】
: 这个是业务逻辑问题,只是个语法糖。愿意使用这个语法糖就要 try/catch,不愿意使用这个语法糖大可不必。
: 一般说来 rpc 也不会设计成 setter 调用。像我在 xmlrpc 里面是这样玩的:
: remote.userService.createUser(u);
: ...................
--
FROM 123.120.180.*
事件循环和异步io是bom和node的规范。
gil不仅不是python规范,而且现在就有很多也不小众的解释器里面并没有gil。cpython里面想要解决gil的呼声也一直有
【 在 hgoldfish 的大作中提到: 】
: 那你也可以说异步 IO 对 JS 也不是规范,不永恒。
: 事实上,ffmpeg 作者 Fabrice Bellard 大神写的 js 就没有异步 IO,而是直接调用 libc 函数。
: 事实就是 cpython 这么多年都有 gil,刚好可以无缝切换到协程去。把多线程留给 c 库去实现。
: ...................
--
FROM 123.120.180.*