- 主题:把js全干掉,统一成ts,有没有搞头?
你搞混了好几个概念
async是语法糖,但其不一定是协程,多数时候只是直接调用了NT和POSIX的原生async的IO。
没有async当然也可以写出来很好的async代码,只不过写起来麻烦,大部分KPI码农选择直接调用阻塞版本。
比如ms office从很古老版本开始,读大文件都不会死锁ui,不过大部分其它应用都会。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 如果这是抄。。这可能是 python 历史上最失败的一次抄袭。
: 我倒觉得是 c# 抄了 python,因为 python 用 yield 搞网络编程是 2005 左右开始的。而 c# 加入 async 搞网络编程,是从 2012 开始的。
: 我刚查了 wiki
: ...................
--
FROM 27.91.71.*
这个担心不存在
VS的lint禁止把内部没有用到await的函数声明成async
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: 标 题: Re: 把js全干掉,统一成ts,有没有搞头?
: 发信站: 水木社区 (Sun Jul 4 12:48:31 2021), 站内
:
: 我最担心的是生态圈里会把加减乘除,字符纯操作,isEven isOdd isThirteen…… 全都用async再实现一遍。
:
: 【 在 hgoldfish (老鱼) 的大作中提到: 】
: : 是的。。
: : 内核本身是完全异步的,但是向 userland 提供了同步的抽象。
: : 这个事情其实可以由编程语言来完成。
: : 在编程语言这个层次做的话,不止于 IO,还可以应用在更广泛的场景里面。
:
:
: --
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 101.84.136.*]
--
FROM 27.91.71.*
引入await是因为不愿意写promise的then链了
比如当年微软出UWP的时候,大部分例子同时提供C++,C#和JS版本,C++和JS的码农发现人家一行await能搞定的事情,自己要没完没了的then下去,而且少写一个就全完蛋。
至于promise实际上就是个event对象,这个对象代表了异步io完成还是协程线程执行完毕就全看实现了
promise简化了手撸异步api的难度,而await减少了手撸then链的工作量
【 在 foliver (Oliver) 的大作中提到: 】
: 你这个说得有点远了。
: python的async await是对yield的替身。
: c#的async 是对task类(2007年引入)的语法糖。
: ...................
--
修改:xiaoju FROM 27.91.71.*
FROM 27.91.71.*
async是可选的,意思是内部可以用await简化then,return 123会被自动包装成Task<int>,你非要写麻烦的版本当然也可以
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我是不喜欢写 async 这个关键字,不是不喜欢 async.
--
FROM 27.91.71.*
没那么夸张,你不喜欢暴露async,直接wait不就行了?
提供一个async接口的用途是因为io本来就是async的,用线程包一编是不等效的
【 在 qingant (傅红雪) 的大作中提到: 】
: 对。Python加async/await完全没必要,一个库用了这个,就扩散到整个项目
--
FROM 27.91.71.*
比如C#的Task.Result就屏蔽了async
【 在 qingant (傅红雪) 的大作中提到: 】
: 你在说啥?
: 怎么直接wait?
--
FROM 27.91.71.*
几乎解决所有问题这话可不要乱说,你肯定没有MS或者谷歌开发工具团队收集的问题种类多
async/await这套玩法基本都是历史选择出来的,你可以看看C#历史上有过多少种官方和非官方的协程异步玩法
【 在 qingant (傅红雪) 的大作中提到: 】
: 事实上gevent几乎解决了所有问题,如果和async/await比的话,gevent解决了所有async/await试图解决的问题
--
FROM 27.91.71.*
隐式不侵入上下层的异步io,就是原始版本的javascript。。。
【 在 leadu (leadu) 的大作中提到: 】
: 因为多线程开发有各种情况,编译器或库无法决定所有行为
--
修改:xiaoju FROM 27.91.71.*
FROM 27.91.71.*
现在await流行啊,所有语言开发团队估计都有类似的kpi。
我看await对python最大的意义是可以省掉线程,python的多线程是真的不该有
【 在 qingant (傅红雪) 的大作中提到: 】
: 西沙普那是西沙普的事儿,Python里面确实是这样
--
FROM 27.91.71.*
你在某项目里实现了一个和另一个库效率相等的功能,不代表你用的方法比人家更好
计算机世界里等效的东西太多了,语言设计者考虑的是能简单明确写对,不出低级错误的方式
【 在 qingant (傅红雪) 的大作中提到: 】
: 标 题: Re: 把js全干掉,统一成ts,有没有搞头?
: 发信站: 水木社区 (Sun Jul 4 16:18:34 2021), 站内
:
: 我之前做过类似gevent的协程方案的,用C++做一个Lua的运行时,在运行时层面把所有IO调用转成协程自动调度,用起来就和Go差不多。所以就专业性来说,我不一定比这些语言设计者弱。
: 【 在 leadu (leadu) 的大作中提到: 】
: : 多写几年多线程代码你和老鱼就明白区别了,最好是c++/rust这种语言的多线程代码。
: : 在一个人不清楚明白会遇到的问题之前,是无法对其讲清楚这些问题的解决方案的。他会以为各种解决方案都是一样的
: : 各个语言纷纷从dotnet社区一个字母都不改的抄async/await走,是因为dotnet这方面对并行计算有很大突破的。
: : ...................
:
: --
: 拿起笔,做刀枪,集中火力打黑帮,革命师生齐造反,文化革命当闯将。
:
: 十八岁的哥哥告诉小英莲 这一去翻山又过海呀 这一去三年两载呀不回还 这一去呀枪如林弹如雨呀 这一去革命胜利呀再相见 九九那个艳阳天来哟 十八岁的哥哥细听我小英莲 哪怕你一去呀千万里呀 哪怕你十年八载不回还 只要你不把我英莲(哥哥)忘呀 只要你(我)胸佩红花呀回家转 只要你(我)胸佩红花呀回家转
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 47.56.237.*]
--
FROM 27.91.71.*