- 主题:把js全干掉,统一成ts,有没有搞头?
这个担心不存在
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.*
你这个说得有点远了。
python的async await是对yield的替身。
c#的async 是对task类(2007年引入)的语法糖。
在没有async await之前,各大语言都有自己的编程模型。但是C# 5.0出现的async await让代码变得更加优雅和简洁,于是其他语言才纷纷效仿这个语法糖。js甚至想更进一步,不要async的await,但没有搞通。js在引入async await的提案中说,这是一个带自动spawn的generator,一个语法糖。
所有这一切都说明async await仅仅是个语法糖,但是不能否认这个是C#引领的。
【 在 hgoldfish 的大作中提到: 】
: 如果这是抄。。这可能是 python 历史上最失败的一次抄袭。
:
: 我倒觉得是 c# 抄了 python,因为 python 用 yield 搞网络编程是 2005 左右开始的。而 c# 加入 async 搞网络编程,是从 2012 开始的。
: ...................
--来自微水木3.5.11
--
FROM 223.167.169.*
引入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.*
: python gevent在处理的时候是等一个语句执行完再执行下一个的。
他不是一直在说不喜欢async,希望编译器隐式变协程么,我理解他是希望自动乱序执行的。
我在举例和他聊,他这么做为什么不行。编译器随意改协程,光一个状态修改的时序问题,就会崩掉无数程序,何况还有很多别的问题。
这些都是基础知识啊
【 在 javaboy 的大作中提到: 】
: 老兄第一句话多余了。
: python gevent在处理的时候是等一个语句执行完再执行下一个的。所以你下面这段代码执
: 行起来不会有逻辑问题,只不过不会并行而已。所以老鱼才会说加个spawn关键字。
: ...................
--
FROM 123.116.203.*
我是不喜欢写 async 这个关键字,不是不喜欢 async.
【 在 leadu (leadu) 的大作中提到: 】
: 他不是一直在说不喜欢async,希望编译器隐式变协程么,我理解他是希望自动乱序执行的。
: 我在举例和他聊,他这么做为什么不行。编译器随意改协程,光一个状态修改的时序问题,就会崩掉无数程序,何况还有很多别的问题。
: 这些都是基础知识啊
: ...................
--
FROM 124.72.119.*
async是可选的,意思是内部可以用await简化then,return 123会被自动包装成Task<int>,你非要写麻烦的版本当然也可以
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我是不喜欢写 async 这个关键字,不是不喜欢 async.
--
FROM 27.91.71.*
这种小工具函数应该不会吧。js 社区应该还不至于那么疯狂。
不过现在 python 社区搞了 asyncio 以后,社区也已经疯了。http3 没人搞,倒是 aiohttp, httpx 什么的一大堆。django 的 API 同样功能的要分两种,一种 plain function, 另一种 async function, 以支持两种 view 函数。
python 有运算符重载,理论上是应该有个 __async_add__ 的方法哈哈。还应该有个 async + 运行符。
加入 async/await 绝对是 py3k 以来最大的灾难。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: 我最担心的是生态圈里会把加减乘除,字符纯操作,isEven isOdd isThirteen…… 全都用async再实现一遍。
--
修改:hgoldfish FROM 124.72.119.*
FROM 124.72.119.*
你给的wiki链接明确说是dotnet社区最先开始使用的async/await
我上面帖子也给了更详细的介绍,如果caml社区没有的话,2004年的C omega是async/await首次亮相
https://baike.baidu.com/item/C-omega/670256?fr=aladdin
https://www.microsoft.com/en-us/research/project/comega/
在如此明确的证据之下,仍说
: 我倒觉得是 c# 抄了 python,
这是在给python社区招黑
很明显,你分不清楚 线程池类型的协程 和 async/await类型的协程 的区别,所以以为python gevent等也是async类型的协程。
而事实上,python gevent等是线程池类型的协程。线程池类型的协程 在那个年代多的是,连windows xp都支持的功能,各个语言中之前都是一大堆。
你想想,为啥现在各个语言都支持async了,甚至包括c++这种?
改语言并不是很简单的事情,各个语言愿意支持,是因为async完美解决了一大类大家都很头疼的问题。
背后的逻辑是在开喷之前要了解清楚的
【 在 hgoldfish 的大作中提到: 】
: 如果这是抄。。这可能是 python 历史上最失败的一次抄袭。
: 我倒觉得是 c# 抄了 python,因为 python 用 yield 搞网络编程是 2005 左右开始的。而 c# 加入 async 搞网络编程,是从 2012 开始的。
: 我刚查了 wiki
: ...................
--
FROM 123.116.203.*
什么线程池,你好歹专业一点,要用术语 stackless coroutine 和 stackful coroutine. 说了半天线程池,把我给绕晕了。
我认为 c# 仿 python 社区用 generator 做网络 IO 就是一种抄袭。至于关键字是 yield/yield from/await 还不是一样,我猜是 c# 怕被说抄袭,所以故意改的。
最近巨硬 wsl 抄 cygwin/colinux,windows terminal 抄 xterm,vscode 抄 atom,可比狥腾第二。
【 在 leadu (leadu) 的大作中提到: 】
: 你给的wiki链接明确说是dotnet社区最先开始使用的async/await
: 我上面帖子也给了更详细的介绍,如果caml社区没有的话,2004年的C omega是async/await首次亮相
:
https://baike.baidu.com/item/C-omega/670256?fr=aladdin: ...................
--
FROM 124.72.119.*
对。Python加async/await完全没必要,一个库用了这个,就扩散到整个项目
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 你那个 fiber 的那句话就是错的。说跟 mssql 相关是 msdn 的原文,不过我一时半会给不出出处。win2k 还是 win98 时代就有的我忘了,内部先用的,后来移植到 win32api.
: async/await 也不是啥新奇玩意儿。python 原本支持的语法叫 yield from 完全等价于 await,当年 python 改动关键字的那个 c 补丁我都看过,没几行代码基本就是数据结构改名和增加关键字就完事了。再早的是 yield 实现的,搭配 twisted inlineCallbacks() 使用,更早的话
: 但是有一说一,确实是 c# 首先使用 async/await 这个关键字。
: ...................
--
FROM 47.56.237.*