Redian新闻
>
只有状态自动机(state machine)是正确的编程模型
avatar
只有状态自动机(state machine)是正确的编程模型# Programming - 葵花宝典
J*n
1
可惜我没有$25000来存
avatar
T*i
2
本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
1. 确定图灵机和不确定图灵机,
根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
有无限并行能力的图灵机。
可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。
2. 冯.诺依曼(Von Neumann)计算机体系就是DTM
现在的计算机都是冯.诺依曼体系。即使多核计算机,本质上也就是有限个DTM组合。和
NTM相距甚远。注意NTM是有无限个核心的无穷并行的计算机。
3. 什么是NTM?量子计算机才是
有一种理论认为量子计算机利用平行宇宙进行超大规模并行计算,也不管那个宇宙愿意
不愿意?无论如何,现在貌似还没有真正实用的量子计算机。
4. 线程模型,单核多核,以及单线程多线程,同步
现有的冯.诺依曼体系,线程只是一个编程模型。多线程可以在单核心上实现,也可以
在多核心上实现。
因为多线程访问同一个数据的时候存在时序冲突,才有同步问题。
注意,NTM作为一个图灵机的模型,没有同步问题。NTM的内存和计算单元都是无限多,
程序的每一个分支都可以在一个新的计算单元(CPU核)上运行。
5. 为什么说状态自动机(state machine)才是正确的编程模型?
第一, 因为我们的现有的计算机体系本质就是状态自动机。而且是单核单线程的状
态自动机。多核以及多机系统只不过是简单拼凑而已。
第二, 事件回调(event callback)归根结底依赖于硬件中断(interrupt)。即
使是硬件中断最终也是依赖于高速状态轮询(polling)。
第三, 理论可以证明,在每个单核心上运行一个设计良好的单线程状态自动机,效
率一定超过任何实用更多线程的实现。
第四, 很多人认为状态自动机比多线程实现麻烦。其实多线程的同步问题也不简单
。虽然事实上,我认为任何人搞不定状态机或者多线程同步的,都不配写程序;但是现
实中这就意味着大多数程序员都不配。
6. 现有的framework,从node.js到vert.x,都是试图解决这个问题
这些framework解决思路隐藏线程和状态自动机。让用户自定义状态响应函数而已。他
们试图解决的只不过是I/O的问题,而且更具体是Network I/O的问题。这些framework
确实在一定程度上解决了一些问题。但是同时带来了一系列其他的问题。
7. 推论,只有基于message的系统设计是正确的设计
道理很简单。基于message的系统是最自然能够映射成状态自动机的。反之就是RPC之类
的就离不开blocking call和多线程了。
8. 多线程和状态自动机不矛盾
多线程必然要有,否则多核系统就不会被充分利用了。但是多核多线程系统也要尽量做
成状态自动机。因为这样线程同步就会尽量简化。而且系统效率会提高。
这就是为什么近年来所谓异步I/O和消息传递系统越来越火的原因。
一般一个多线程系统,肯定是线程数量越接近CPU核心数量的设计越合理。
现实中,基本上任何系统的线程模型都离最优化甚远。根本不是差一点点,而是设计很
糟糕。包括那些在一个几十K内存的MCU上运行的系统在内。错误都是滥用线程和call
back。
是的,在那些几十K内存的MCU上运行的也都是多线程操作系统。
9. 自觉向状态自动机的设计靠拢,是一种习惯,是一种人生观和世界观
现在大多数程序员还没意识到这一点。其实是三观不正。计算机工程的世界,任重而道
远。
avatar
d*o
3
他们家的BONUS要求一向很高.要么就是$25K的NEW MONEY,要么就是DAILY AVERAGE
BALANCE $1500.
avatar
h*c
4
WATTNTM X cartesian trasintion functions = DTM
is this robot engineering?
avatar
a*a
5
what's TYP?
avatar
w*g
6
窃以为量子计算机也没法实现NTM,物理世界肯定有某些限制导致这个
不能实现。否则在量子计算机上P和NP就没有区别了。
NP不管以任何方式变成可有效计算的话都是too good to be true。

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
p*m
7
co ask
avatar
T*i
8
有人指出了现在的量子计算机能计算一类问题BQP。但是还不能证明BQP===NP。
我个人认为量子计算机理论将来也有可能继续发展。不论如何,量子计算机是更加接近
NTM的。
微信群里面有一个搞数学的号称他的一个朋友找到了NPC的平均复杂度===P的算法。但
是他朋友精神病疯了。他仔细研究朋友手稿看不出毛病。但是又不能代替朋友发表。呵
呵呵。
不管信仰,现实是,NP是不是等于P?谁也不能证明,谁也不能证伪。
我讨论的主要是现在的硬件架构。在这种架构下,如果任何软件的设计不是基于状态机
的,那根本就是设计错误。越靠近状态机的越是好的架构。

【在 w***g 的大作中提到】
: 窃以为量子计算机也没法实现NTM,物理世界肯定有某些限制导致这个
: 不能实现。否则在量子计算机上P和NP就没有区别了。
: NP不管以任何方式变成可有效计算的话都是too good to be true。

avatar
b*k
9
thank you point

【在 a********a 的大作中提到】
: what's TYP?
avatar
l*t
10
这个朋友手里的手稿好像那张祖传花旗银行1945年一亿美金本票啊

【在 T********i 的大作中提到】
: 有人指出了现在的量子计算机能计算一类问题BQP。但是还不能证明BQP===NP。
: 我个人认为量子计算机理论将来也有可能继续发展。不论如何,量子计算机是更加接近
: NTM的。
: 微信群里面有一个搞数学的号称他的一个朋友找到了NPC的平均复杂度===P的算法。但
: 是他朋友精神病疯了。他仔细研究朋友手稿看不出毛病。但是又不能代替朋友发表。呵
: 呵呵。
: 不管信仰,现实是,NP是不是等于P?谁也不能证明,谁也不能证伪。
: 我讨论的主要是现在的硬件架构。在这种架构下,如果任何软件的设计不是基于状态机
: 的,那根本就是设计错误。越靠近状态机的越是好的架构。

avatar
j*1
11
这个可以用来干什么?
avatar
f*2
12
老魏是有情怀的从业人员。
思考的高度在这里

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
s*m
13
redeem for gift card, such as macy's

【在 j******1 的大作中提到】
: 这个可以用来干什么?
avatar
p*p
14
分布系统全是基于state machine的。
那个通信系统的软件设计也是,但是很多人都hate。魏老师怎么看
avatar
j*1
15
40k可以换多少的梅西卡?
avatar
T*i
16
通信系统本来就有这个传统。单核单线程死循环。
分布式系统鱼龙混杂。就不好说了。
很多人hate可能也有一部分实现的原因。但是我想说一句话绝对不会错:要是一个人连
这个系统的状态机都分析不明白,都实现不了,这个人就别干了,直接吃屎去算了。
我发现很多成天把并发挂在嘴边的,反倒是对软件和硬件体系结构毫无概念的。
物理学家的世界是量子的。码工的世界不但应该是量子的,还应该是单线程的。
avatar
i*o
17
400

【在 j******1 的大作中提到】
: 40k可以换多少的梅西卡?
avatar
a*u
18
01才是终极解,谁不同意我就和谁急,然后用机关枪突突突他们。
avatar
j*1
19
楼主快回来,这个到底花不划算?
要是划算我就跳了,我倒是有差不多这么多的钱,一直放在BOA里长霉,CD太低了,没
镐头,都快一年没动了
avatar
T*i
20
你这个观点没人不同意,挖坑都没人看,句号。

【在 a****u 的大作中提到】
: 01才是终极解,谁不同意我就和谁急,然后用机关枪突突突他们。
avatar
a*n
21
不要稿这个,
过会我贴一个给40k AA miles的

【在 j******1 的大作中提到】
: 楼主快回来,这个到底花不划算?
: 要是划算我就跳了,我倒是有差不多这么多的钱,一直放在BOA里长霉,CD太低了,没
: 镐头,都快一年没动了

avatar
s*3
22
re

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
l*a
23
有人给说说,这个25000是一次存入吗?
我的钱在2个银行里,合到一起太麻烦了

【在 J*******n 的大作中提到】
: 可惜我没有$25000来存
avatar
a*u
24
有限状态机也没好到哪里去。

【在 T********i 的大作中提到】
: 你这个观点没人不同意,挖坑都没人看,句号。
avatar
s*n
25
同问,这个很关键

【在 l*******a 的大作中提到】
: 有人给说说,这个25000是一次存入吗?
: 我的钱在2个银行里,合到一起太麻烦了

avatar
m*i
26
观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的
花费远比多用两台机器的花费大。
线程,promise大多时候比自动机直观,开发快,开发成本低。这就是为啥 node 火。一
门语言前
端后端通吃。发展的潮流是用机器解放人,简单的开发模型简化程序员的工作。
至于所谓最底层底是什么模型不相干,现在都是多层系统,你开发出来的东西只要和最
近一层match就对了。OS多数不是进程和线程的模型吗,哪个是自动机的接口。
自动机是你那 microcontroller上面没办法才用的。

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
J*n
27
难道大家都没有收到这个邀请?。。。
Here's how to get your points:
Open a checking account and get 20,000 ThankYou Points:
Just open any qualifying Citibank checking account and complete everyday
banking activities (direct deposits, for instance) to get your 20,000
ThankYou Points, redeemable for $200 in travel rewards.
Open a Citibank Savings Plus Account to get 20,000 more points:
You can double your rewards when you open a Citibank Savings Plus Account
with $25,000 or more and complete everyday banking activities. If you
already have a Citibank Savings Plus Account, deposit $25,000 in new funds
into your current account and you can get 20,000 bonus points.
That's 40,000 ThankYou Points, redeemable for $400 in travel rewards to help
make your next vacation even better.
avatar
T*i
28
线程,promise大多时候比自动机直观?
这个版面上有几个会写线程的?你说的node,promise之类的,恰恰就是状态自动机。
人家状态给你定好的,让你写下状态响应函数而已。都是单线程的。而且,这些实现都
是单线程的。

观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的

【在 m***i 的大作中提到】
: 观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的
: 花费远比多用两台机器的花费大。
: 线程,promise大多时候比自动机直观,开发快,开发成本低。这就是为啥 node 火。一
: 门语言前
: 端后端通吃。发展的潮流是用机器解放人,简单的开发模型简化程序员的工作。
: 至于所谓最底层底是什么模型不相干,现在都是多层系统,你开发出来的东西只要和最
: 近一层match就对了。OS多数不是进程和线程的模型吗,哪个是自动机的接口。
: 自动机是你那 microcontroller上面没办法才用的。

avatar
y*r
29
link pls
avatar
T*i
30
本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
1. 确定图灵机和不确定图灵机,
根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
有无限并行能力的图灵机。
可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。
2. 冯.诺依曼(Von Neumann)计算机体系就是DTM
现在的计算机都是冯.诺依曼体系。即使多核计算机,本质上也就是有限个DTM组合。和
NTM相距甚远。注意NTM是有无限个核心的无穷并行的计算机。
3. 什么是NTM?量子计算机才是
有一种理论认为量子计算机利用平行宇宙进行超大规模并行计算,也不管那个宇宙愿意
不愿意?无论如何,现在貌似还没有真正实用的量子计算机。
4. 线程模型,单核多核,以及单线程多线程,同步
现有的冯.诺依曼体系,线程只是一个编程模型。多线程可以在单核心上实现,也可以
在多核心上实现。
因为多线程访问同一个数据的时候存在时序冲突,才有同步问题。
注意,NTM作为一个图灵机的模型,没有同步问题。NTM的内存和计算单元都是无限多,
程序的每一个分支都可以在一个新的计算单元(CPU核)上运行。
5. 为什么说状态自动机(state machine)才是正确的编程模型?
第一, 因为我们的现有的计算机体系本质就是状态自动机。而且是单核单线程的状
态自动机。多核以及多机系统只不过是简单拼凑而已。
第二, 事件回调(event callback)归根结底依赖于硬件中断(interrupt)。即
使是硬件中断最终也是依赖于高速状态轮询(polling)。
第三, 理论可以证明,在每个单核心上运行一个设计良好的单线程状态自动机,效
率一定超过任何实用更多线程的实现。
第四, 很多人认为状态自动机比多线程实现麻烦。其实多线程的同步问题也不简单
。虽然事实上,我认为任何人搞不定状态机或者多线程同步的,都不配写程序;但是现
实中这就意味着大多数程序员都不配。
6. 现有的framework,从node.js到vert.x,都是试图解决这个问题
这些framework解决思路隐藏线程和状态自动机。让用户自定义状态响应函数而已。他
们试图解决的只不过是I/O的问题,而且更具体是Network I/O的问题。这些framework
确实在一定程度上解决了一些问题。但是同时带来了一系列其他的问题。
7. 推论,只有基于message的系统设计是正确的设计
道理很简单。基于message的系统是最自然能够映射成状态自动机的。反之就是RPC之类
的就离不开blocking call和多线程了。
8. 多线程和状态自动机不矛盾
多线程必然要有,否则多核系统就不会被充分利用了。但是多核多线程系统也要尽量做
成状态自动机。因为这样线程同步就会尽量简化。而且系统效率会提高。
这就是为什么近年来所谓异步I/O和消息传递系统越来越火的原因。
一般一个多线程系统,肯定是线程数量越接近CPU核心数量的设计越合理。
现实中,基本上任何系统的线程模型都离最优化甚远。根本不是差一点点,而是设计很
糟糕。包括那些在一个几十K内存的MCU上运行的系统在内。错误都是滥用线程和call
back。
是的,在那些几十K内存的MCU上运行的也都是多线程操作系统。
9. 自觉向状态自动机的设计靠拢,是一种习惯,是一种人生观和世界观
现在大多数程序员还没意识到这一点。其实是三观不正。计算机工程的世界,任重而道
远。
avatar
h*c
32
WATTNTM X cartesian trasintion functions = DTM
is this robot engineering?
avatar
w*g
33
窃以为量子计算机也没法实现NTM,物理世界肯定有某些限制导致这个
不能实现。否则在量子计算机上P和NP就没有区别了。
NP不管以任何方式变成可有效计算的话都是too good to be true。

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
T*i
34
有人指出了现在的量子计算机能计算一类问题BQP。但是还不能证明BQP===NP。
我个人认为量子计算机理论将来也有可能继续发展。不论如何,量子计算机是更加接近
NTM的。
微信群里面有一个搞数学的号称他的一个朋友找到了NPC的平均复杂度===P的算法。但
是他朋友精神病疯了。他仔细研究朋友手稿看不出毛病。但是又不能代替朋友发表。呵
呵呵。
不管信仰,现实是,NP是不是等于P?谁也不能证明,谁也不能证伪。
我讨论的主要是现在的硬件架构。在这种架构下,如果任何软件的设计不是基于状态机
的,那根本就是设计错误。越靠近状态机的越是好的架构。

【在 w***g 的大作中提到】
: 窃以为量子计算机也没法实现NTM,物理世界肯定有某些限制导致这个
: 不能实现。否则在量子计算机上P和NP就没有区别了。
: NP不管以任何方式变成可有效计算的话都是too good to be true。

avatar
l*t
35
这个朋友手里的手稿好像那张祖传花旗银行1945年一亿美金本票啊

【在 T********i 的大作中提到】
: 有人指出了现在的量子计算机能计算一类问题BQP。但是还不能证明BQP===NP。
: 我个人认为量子计算机理论将来也有可能继续发展。不论如何,量子计算机是更加接近
: NTM的。
: 微信群里面有一个搞数学的号称他的一个朋友找到了NPC的平均复杂度===P的算法。但
: 是他朋友精神病疯了。他仔细研究朋友手稿看不出毛病。但是又不能代替朋友发表。呵
: 呵呵。
: 不管信仰,现实是,NP是不是等于P?谁也不能证明,谁也不能证伪。
: 我讨论的主要是现在的硬件架构。在这种架构下,如果任何软件的设计不是基于状态机
: 的,那根本就是设计错误。越靠近状态机的越是好的架构。

avatar
f*2
36
老魏是有情怀的从业人员。
思考的高度在这里

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
p*p
37
分布系统全是基于state machine的。
那个通信系统的软件设计也是,但是很多人都hate。魏老师怎么看
avatar
T*i
38
通信系统本来就有这个传统。单核单线程死循环。
分布式系统鱼龙混杂。就不好说了。
很多人hate可能也有一部分实现的原因。但是我想说一句话绝对不会错:要是一个人连
这个系统的状态机都分析不明白,都实现不了,这个人就别干了,直接吃屎去算了。
我发现很多成天把并发挂在嘴边的,反倒是对软件和硬件体系结构毫无概念的。
物理学家的世界是量子的。码工的世界不但应该是量子的,还应该是单线程的。
avatar
a*u
39
01才是终极解,谁不同意我就和谁急,然后用机关枪突突突他们。
avatar
T*i
40
你这个观点没人不同意,挖坑都没人看,句号。

【在 a****u 的大作中提到】
: 01才是终极解,谁不同意我就和谁急,然后用机关枪突突突他们。
avatar
s*3
41
re

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
a*u
42
有限状态机也没好到哪里去。

【在 T********i 的大作中提到】
: 你这个观点没人不同意,挖坑都没人看,句号。
avatar
m*i
43
观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的
花费远比多用两台机器的花费大。
线程,promise大多时候比自动机直观,开发快,开发成本低。这就是为啥 node 火。一
门语言前
端后端通吃。发展的潮流是用机器解放人,简单的开发模型简化程序员的工作。
至于所谓最底层底是什么模型不相干,现在都是多层系统,你开发出来的东西只要和最
近一层match就对了。OS多数不是进程和线程的模型吗,哪个是自动机的接口。
自动机是你那 microcontroller上面没办法才用的。

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
T*i
44
线程,promise大多时候比自动机直观?
这个版面上有几个会写线程的?你说的node,promise之类的,恰恰就是状态自动机。
人家状态给你定好的,让你写下状态响应函数而已。都是单线程的。而且,这些实现都
是单线程的。

观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的

【在 m***i 的大作中提到】
: 观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的
: 花费远比多用两台机器的花费大。
: 线程,promise大多时候比自动机直观,开发快,开发成本低。这就是为啥 node 火。一
: 门语言前
: 端后端通吃。发展的潮流是用机器解放人,简单的开发模型简化程序员的工作。
: 至于所谓最底层底是什么模型不相干,现在都是多层系统,你开发出来的东西只要和最
: 近一层match就对了。OS多数不是进程和线程的模型吗,哪个是自动机的接口。
: 自动机是你那 microcontroller上面没办法才用的。

avatar
d*r
45
很精辟的帖子,绝大部分都赞同.
针对这个:
"第二, 事件回调(event callback)归根结底依赖于硬件中断(interrupt)。即
使是硬件中断最终也是依赖于高速状态轮询(polling) "
跟我看过的底层代码一致,不过还是想问:
难道计算机最最底层,甚至硬件电路,就没有真正的 event notifiy 这种东西,
都是靠高速 polling 来模拟 event 的?

【在 T********i 的大作中提到】
: 本文的目的在于帮助程序员树立正确的世界观和人生观。如果感觉颠覆感太强烈,主要
: 原因也不是你学错了,而是你的老师教错了,或者你的教科书写错了。
: 1. 确定图灵机和不确定图灵机,
: 根据计算机科学理论,图灵机(Turing Machine)是计算机的抽象模型。现有的计算机
: 的计算能力(不是速度,而是理论上能够求解数学问题的能力)不会超过这个模型。
: 确定图灵机(DTM)是图灵机的一个经典描述,是一个单线程的图灵机。
: 不确定图灵机(NTM)可以看作是一台有无穷多单线程的图灵机组合的图灵机。也就是
: 有无限并行能力的图灵机。
: 可计算性理论可以证明,NTM和DTM是等价的。也就是说DTM可以完全模拟NTM。NTM能够
: 计算的题目,DTM也必然能够计算,虽然可能速度上比NTM慢很多倍。

avatar
w*g
46
event的产生本身就是polling的结果。你睁着眼睛看世界,也是在poll。
别太纠结...

【在 d*******r 的大作中提到】
: 很精辟的帖子,绝大部分都赞同.
: 针对这个:
: "第二, 事件回调(event callback)归根结底依赖于硬件中断(interrupt)。即
: 使是硬件中断最终也是依赖于高速状态轮询(polling) "
: 跟我看过的底层代码一致,不过还是想问:
: 难道计算机最最底层,甚至硬件电路,就没有真正的 event notifiy 这种东西,
: 都是靠高速 polling 来模拟 event 的?

avatar
g*t
47
电压高于一个二极管的阀值,亮个灯泡,不就是event notify了,
要啥polling....
魏老师瞎吹吹,值得鼓励。但他的观点需要polish。

【在 d*******r 的大作中提到】
: 很精辟的帖子,绝大部分都赞同.
: 针对这个:
: "第二, 事件回调(event callback)归根结底依赖于硬件中断(interrupt)。即
: 使是硬件中断最终也是依赖于高速状态轮询(polling) "
: 跟我看过的底层代码一致,不过还是想问:
: 难道计算机最最底层,甚至硬件电路,就没有真正的 event notifiy 这种东西,
: 都是靠高速 polling 来模拟 event 的?

avatar
g*t
48
魏老师没干过电工的活儿,貌似弄懂一些EE的东西后,觉得amazing...
模型多的是。关键是约束,就是成本和市场前景,以及你有的resource什么的。
其实说白了,什么计算不都是查无限大的表嘛。
程序本身是可列的,你弄两列,左边一列是程序,右边一列是结果。
that is it!

观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的

【在 m***i 的大作中提到】
: 观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的
: 花费远比多用两台机器的花费大。
: 线程,promise大多时候比自动机直观,开发快,开发成本低。这就是为啥 node 火。一
: 门语言前
: 端后端通吃。发展的潮流是用机器解放人,简单的开发模型简化程序员的工作。
: 至于所谓最底层底是什么模型不相干,现在都是多层系统,你开发出来的东西只要和最
: 近一层match就对了。OS多数不是进程和线程的模型吗,哪个是自动机的接口。
: 自动机是你那 microcontroller上面没办法才用的。

avatar
w*g
49
你得表里还差input,如果input是程序的话会出现一些怪异的情况,
不一定有结果。
CPU硬中断是polling没错。但硬件polling的开销跟软件不一样的。

【在 g****t 的大作中提到】
: 魏老师没干过电工的活儿,貌似弄懂一些EE的东西后,觉得amazing...
: 模型多的是。关键是约束,就是成本和市场前景,以及你有的resource什么的。
: 其实说白了,什么计算不都是查无限大的表嘛。
: 程序本身是可列的,你弄两列,左边一列是程序,右边一列是结果。
: that is it!
:
: 观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的

avatar
g*t
50
我的意思是:
1.
你on-off几个button,然后就有对应的红绿灯反应什么的,
这都是可以纯模拟电路实现。所以从模型的角度来讲,
event notify显然和polling没多大关系。
2.
状态机的input/output字典也是可列的,加在同一列就行了。
我假设你说的不是有限状态机。如果是有限状态机,那它的计算能力不是
完备的。和Turing机不等价。
所以我的浅见,程序就是无限查表。
这个表哪一块重要,哪一块值钱,其实是人类的实践活动走出来的。
能forcast哪种模型在未来更重要,那是最牛的。
所以你提了模型还不够,还得解决未来为什么这个模型能dominate市场这
个问题。这不能光是技术原因。

【在 w***g 的大作中提到】
: 你得表里还差input,如果input是程序的话会出现一些怪异的情况,
: 不一定有结果。
: CPU硬中断是polling没错。但硬件polling的开销跟软件不一样的。

avatar
g*t
51
他说的不是有限状态机吧。有限状态机能计算的东西只是Turing Machine
的子集,很多需求无法满足。话说我以前曾参与过一个有限状态机的芯片项目。

【在 a****u 的大作中提到】
: 有限状态机也没好到哪里去。
avatar
f*y
52
然而干活的猴子写代码的时候脑子里是线程啊
本来开发效率高和运行效率高在大多数情况下就是互斥的。。。你要运行效率无限高,
你的选择应该是自己去流芯片;你要开发效率高就用轮子,用抽象出来的模型和结构去
写。。。

【在 T********i 的大作中提到】
: 线程,promise大多时候比自动机直观?
: 这个版面上有几个会写线程的?你说的node,promise之类的,恰恰就是状态自动机。
: 人家状态给你定好的,让你写下状态响应函数而已。都是单线程的。而且,这些实现都
: 是单线程的。
:
: 观点比较奇怪。开发效率在大多数时候是最重要的,因为人力的成本最高。雇一个人的

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。