spacestr

🔔 This profile hasn't been claimed yet. If this is your Nostr profile, you can claim it.

Edit
f6XF
Member since: 2023-02-03
f6XF
f6XF 1d

写了上一篇文章之后,我想起一件趣事。之前在美国的时候,有次参加 POPL 会议(编程语言界的顶级会议),讲座间隙的时候遇到 Leslie Lamport。看他一个人在那,我就过去跟他打了个招呼。 我问他,这次您来开会,要讲些什么吗?Lamport 一脸严肃地说:“我的演讲题目是 Programming languages are not the answer。” (编程语言不是答案) 我当然猜到他的意思了。心想居然来 POPL 会议做这样的演讲,还真是有个性啊,这不是来踢场子的嘛?我也有同感,其实我来这会议也就是看看大家是怎么吹牛,怎么解决一些并不存在的问题,或者把已经解决的问题改头换面之后重新“解决”一遍。但我想知道他想的是不是跟我一个意思,所以我又继续问:“那什么才是答案呢?” Lamport 更严肃了,还以为我在质疑他,回答说:“数学。数学是世界上最好的编程语言!” 于是天就聊死了。 从字面上,他这个说法不准确。我之前给大家分析过了,数学其实也不是很好的语言。但我理解他的意思,基本跟我前一篇文章的意思一致。太多人以为设计一种新的编程语言,就能完美地解决问题,但这可能永远是一个梦想。 所以我现在把文章起名为《Rust 不是答案》。Web 的后端,前些年火热的 Scala, Clojure,Go 语言,现在怎么样了呢?问题解决了吗?真的非用它们不可吗?现在铺天盖地用 Rust,只是历史在反复重演而已

f6XF
f6XF 1d

《Rust不是答案》 最近发现越来越多的技术公司(特别是 startup)都号称用 Rust 语言写“后端”。一窝蜂的,似乎收到了统一的秘密指令一样。 懂得计算机科学基本原理的人都明白的是,大部分的 Web 后端其实并不需要特别高效的语言来做。特别是像“数据管理系统”(不是数据库)一类的东西,基本都是“IO bound”。意思是,大部分时间都花在等待网络传输,等待数据库查询等事务上。绝大部分的计算都是数据库系统完成的,这类 Web 后端并没有很多自己的计算,除非他们自己设计错误,自己做一些不必要的复杂计算。 IO bound 的系统并不需要很多自己的计算,都是把数据传来传去而已。这种系统用任何具有 async 的语言都能很高效地实现。用“计算机科学进阶班”的话说,就是使用 continuation (而不是 OS 线程)实现的并发系统。 为什么我知道这个呢?因为我之前一个公司的系统曾经出现严重的性能问题,客户怨声载道。大家都说是因为用的是 Python 的原因,怪 Python 有 GIL(global interpreter lock)之类的,后悔没用 Java 或者 Rust。结果我仔细一分析,发现是因为以前的工程师根本不明白如何正确构建并发系统所致,所以自己写进去大量的性能瓶颈。不该加锁的地方加了锁,本该保存的数据反复从网络获取,O(n^2) 复杂度的算法,各种类似的傻错误。根本不是 Python 的问题。 结果我稍改了几个地方之后,服务器开销变得极小,吞吐能力提高了 200 倍以上。不知道客户规模要扩大到猴年马月才会需要更多的性能了。 本来就是一个很简单的服务器,事情都是交给数据库做的,居然还能搞出性能问题,我真是佩服这些程序员。我说“性能提高200倍”,不如说是“达到了它本来应有的吞吐能力”。 试想,要是造成性能问题的这些程序员跟风学会了 Rust,他们就能写出高性能的后端服务器吗?不能。他们照样会在 Rust 代码里加入各种性能瓶颈!这是人的问题,不是语言的问题。 这些公司缺少的不是某种语言,而是经过严谨计算机科学教育的人才。并发系统的设计显然不是学会一种新语言就能瞬间解决的,不然大学的计算机系都可以关门了。你至少要上过“操作系统”课程,深入理解里面的原理,才能正确设计应用级的网络并发系统。 之前在微软的时候也遇到类似的情况。入职前 VP 跟我吹嘘他们的工程师都有30年以上写大规模并发存储设备的经验。结果我进去一看,代码里一大堆并发问题。连基本的读写文件操作的加锁做法都可以是错的,不该加锁的地方加了,该加锁的地方没加(会出现离奇的竞争bug)!那代码是 C# 写的,如果换成 Rust,结果就会不一样吗?管你用什么语言,都会遇到同样的问题,只能怪这些工程师操作系统课程没学好。 另外,很多公司都夸大自己的需求,好像自己的系统有数以百万计的客户同时使用一样。其实大部分企业级的系统都没有那么多用户,几百几千个大客户而已。这种企业系统根本没有那么大的性能负担,却总是宣称自己要实现超级高的性能,所以他们也开始用 Rust…… “有困难要上。没有困难,制造困难也要上!” 这就是 IT 行业千古不变的习俗。 “编程语言不是最关键的问题,重要的是掌握思想。” 这是我 1997 年进入四川大学时,一个很普通的老师对我们说的。本以为 30 年后的今天大家认识水平会更高,结果越来越多的公司满嘴的 Rust 或者其它最热门的语言,好像这样就能做出好的系统了,这说明这整个行业已经没落到最低级的程度。

f6XF
f6XF 1d

《计算机科学视频班为边疆地区提供特价》 前段时间有新疆地区的同学申请视频班。面试时我觉得这个同学态度诚恳,但由于视频班学费相对他的收入较高,所以暂时无法参加。我觉得这很遗憾。最近在云南少数民族地区,了解到当地人的收入情况和物价,我发现视频班的定价确实对于这些地区的人们不大友好。思考了一阵之后,我决定提供一些特殊照顾。 考虑到边疆地区的人们,还有失业人士的收入偏低,短期内难以攒足视频班所需要的学费,所以视频班在 2026 年推出新的措施,对低收入地区和经济困难人士提供特价。申请时请在标题注明“申请特价”字样,并且在申请内容里描述申请特价的原因。 根据每个人的情况,视频班可以提供相应优惠的价格,尽量满足不同收入人士的学习需求。如果录取,需要学生提供一定的证据,证明自己所在的地区和经济情况。 这个特殊措施已经写入视频班的说明,请参考之后报名: https://www.yinwang.org/posts/cs-video-course

f6XF
f6XF 1d

之前在英国和日本,现在在中国国内的乒乓球馆,都经常看到一些人做这样的“对攻”或者“对拉”。同样的方向,同样的高度,同样的速度,没有任何变化,不停地来回。他们可以花几个小时甚至整天,只做这个练习,不练任何其它动作,也不打“比赛”。 而且有个有趣的现象,他们好些人的动作似乎是按照某些顶级选手的“标准动作”来的。比如这个视频里,注意他们拉球时,左手是放在哪里的?那是左手最协调的位置吗?你是否发现这和哪个中国顶级选手的姿势完全一样呢?大家可以先猜猜,之后我来揭密。 不只是中国人,之前我还在日本看到有美国人和俄罗斯人这样拉球,而且左手也是放在类似的位置不动。怎么看都不对劲,那不是左手自然存在的方式。 有人可能要问,如果我也这样拉球,我会把左手放在哪里呢?我不知道!虽然我仔细研究过右手要如何握拍,却从来没想过我的左手要放哪里。我也从没想过我的腿或者脚该放哪里。我只思考球拍应该如何击中球,其余的细节都是身体自动完成的。 虽然我不知道我的左手这时候会去哪里,但我的身体告诉我,这两个人的左手位置不对劲,那个他们模仿的中国顶尖选手的左手也不对劲。这动作看着如此的不自然,以至于我一看到这样的拉球方式,就知道这些人是在模仿他。 我觉得视频里的阿姨和大叔很可能最近在上教练的课。教练说,你们的左手要放在那个地方不要动,这就是标准动作,否则就叫“动作变形”。如果是自己打着玩没教练教的,一般不会一直就这样对拉,左手也不会一直放在那个地方。 在英国和日本,我也发现类似的现象。很多人只是 copy 当今顶级选手的动作,来回拉球,乐此不疲。等到真枪实弹的时候,就发现这一套都不灵了。因为他们没练过其它方式的来球,到时候怎么能接得起呢?[坏笑] http://t.cn/AXGDyQ6t

f6XF
f6XF 1d

《我掌握的乒乓球技术》 更新一下关于乒乓球的事情。有些人可能听说过,我之前喜欢用日式直拍。而其实我已经深入地掌握了横拍技术,现在直拍和横拍都能纯熟地运用,所以我算是相当完整地掌握了乒乓球技术。 之前经过一年多使用日直,达到了相当好的效果。打球的伙伴都觉得我打得很像柳承敏,攻击灵活迅猛,球速极快。不过跟柳承敏不同的地方是,我的反手也不弱。我掌握了类似于金泽珠的反手攻技术,经常反手打出致命的球。很多横拍选手的反手都打不过我的日直反手。我通过实际行动,否定了“直拍反手弱”的片面看法。 我的日直是单面胶的。我不喜欢双面的“中式直拍”和“直拍横打”。很多人不知道,很早的时候中式直拍也都是单面的,后来才有人在背面贴了胶。我还是喜欢传统的直拍,我觉得“直拍横打”没什么意义。要是双面贴胶的话,我为什么不直接用横拍呢?所以我不用新式的中式直拍。 本来以为我会一直用日直,但忽然有一天,我心血来潮买了一个横拍试试。之后的两个月,我钻研横拍技术,理解其中的每一个细节,并刻苦训练自己。我没有找教练,而是完全依靠自己的理解(使用物理实验和人体结构知识)。 在很短的时间内,我摸索出一套有效的训练方式,从几乎零基础开始,掌握了完整的横拍技术。包括正反手拉下旋等比较高级的技术,而且相当稳定,球速极快。现在,横拍已经成为我更常用的打法。偶尔我也拿出日直来,因为那感觉真的很酷。 当今的乒乓球比赛总是千篇一律的来回对拉,球速不快,打得太软。很多人说那是因为球变大了的原因。我用实际行动否定了这个说法,证明了使用当今的器材,一样可以打出像以前一样的精彩速度。有次一个法国人跟我打球,之后对我说:“哇,你的球,就像一只小白兔被一辆飞驰而来的大卡车撞了……” 我很少比赛,但打球总是很精彩。经常一招致命,打出一些顶级选手都很难打出来的球,让对手都高呼“好球”。这就是我最快乐的事情之一。 我大概永远也无法成为世界冠军,但在实质上,我已经在很大程度上超越了他们。实话说,近20年来的世界顶尖选手,很少有我看得上眼的。我觉得他们都很弱(包括马龙和樊振东在内),看他们的比赛还不如自己打球。 然而,我为此花费的训练时间和精力却比他们少了很多倍。为什么我可以这样呢?因为我是一个顶级的研究者,我使用科学的分析来指导自己的理解和训练。当我决定研究一个事情,我的目标往往不只是超越身边的普通人,而是达到极致,完整的掌握。

f6XF
f6XF 1d

这些年网球热起来,很多人开始学网球。 很多网球教练那气势,好像自己会打网球就多了不起,好像你非得打网球,非得跟他学一样。网球摸到点门道的人,也很容易变得严肃,觉得自己了不起,对人缺乏基本的尊重和礼貌。 之前研究乒乓球,也发现同样的问题。有些人乒乓球打得好点,或者只是学会了装模作样(拉球),就一副了不起的样子。那种脸色,跟那些自以为厉害,满嘴术语的程序员没什么两样。你只要稍微露出一点“请教”的语气,他们就真以为你什么都不懂,觉得自己是内行高手,可以指点甚至鄙视你了。 很显然,体育运动是这个世界上存在的另一种权威。在资本和媒体的操作下,体育运动成为一种意识形态,操纵着人们的思想和行为。如果你不崇拜歌星影星富商或者科学家,那你很可能开始崇拜球星。却不知道他们都是一丘之貉。 为什么我最近花这么大力气,想要破解网球技术的秘密?因为在我的头脑里不允许存在任何权威。只要我发现它的存在,我就会想办法推倒它,把它的一切秘密化解为极致简单的精华,可以让任何人从零开始练习和掌握。 之前,在我的坚持研究和练习下,乒乓球的秘密已经几乎完全破解。现在轮到网球了。

f6XF
f6XF 1d

练了一个多月的网球,已经有了很好的效果。其实绝大部分还是靠自己研究和实践。 教练起了一点点作用,但非常小。实话说,绝大部分是误导。遇到宽容点的教练还好,遇到“严格”的,那就糟糕了,基本上像是被当成木偶在摆弄。所以我已经基本停止了向网球教练学习,完全靠自己研究,训练自己。 回头看看比我还早上课的同学,发现已经差距非常大了(如图)。上了20多节课之后,连基本都正手和反手都还不会的人,大有人在。 我很同情他们,因为我上课感觉也一样。我上了三节课就已经感觉被教傻了。有些本来就会了的基本动作,让教练一纠正,按照他的“练习法”,突然就发现不会了。就像当年在清华时,上过第一节网球课之后的感觉。就像我几年前在《大提琴为什么这么难学》网页链接 一文中讲的那样(见截图)。 所以这次,我下定决心自己探索。 我很理解球友们的处境,但发现有些事情是不能跟他们说的。对的,muggle虽然可怜,你却不可以告诉他们事实,因为他们是不会感谢你的。 https://postimg.cc/gallery/HCXHBc4

f6XF
f6XF 1d

《网球教学的秘密》 可能有人注意到,我之前的微博提到我找的网球教练提供了一些好的指导。但过了一段时间,找了多个教练之后,我发现教练提供的正确指导其实是非常有限的,根本不足以提供我所需要的进步。 在最初的“惊喜”之后,我发现只靠教练的指导很难提高,甚至可能倒退。有些本来早已做对的动作,甚至可能被“纠正”错。最初的那点“惊喜”,也许只是用来换取学员的信任。几乎每个教练都有自己的一些“小练习”,显得很独特,但其实对打球没什么实际用处。 大部分的教练只是按部就班地,使用“多球训练”,重复地指导最基本的动作(正手,反手的上旋拉球)。不讲原理,只要求你把每个关节放在哪,像对待机器人一样。每节课都这样重复…… 以至于有些球友上了20多节课,居然还没练过最基本的凌空截击(volley)动作,更不要说削球了。 好些教练的教学方式,就像我20年前在清华打网球时的感觉:上了一节清华的网球课,感觉被教傻了。清华大学拿固定工资的体育老师都是如此,收费教学的商业教练当然更加严重。大部分教练其实就是希望你学得慢,学很久也不得要领,这样你就会一直跟他们买课。 我在英国的时候找过几个教练,也都差不多,甚至还受伤了。虽然比起完全不找教练自己瞎练要好,但我终于发现,跟着教练上课的效果是非常有限的。大部分教练的教学方法,还是跟当年我在清华时上过的唯一一节网球课差不多,非常的机械化,就像我几年前在《大提琴为什么这么难学》网页链接 一文中讲的那样(见截图)。 除了动作训练的机械化,我发现很多网球教练的教学还有一些其它问题,以至于很多人的动作看起来非常的“业余”和不协调。 说到网球教练的误导,真是举不胜举。一个简单的例子,就是要求你的动作完全按某种呆板的“标准”来。比如,要求你“正手拉球后,要把手肘抬高到肩膀以上”。这其实是在“理想击球点”打出上旋球之后的“力学副作用”,并不是必须的,但他们不告诉你为什么你要把手肘抬高。偶然因为教练把球抛得太高(或太低),跑位偏了一些,手的动作必须做相应的调整才能打到球,他们就会揪住你这次的动作,说你错了,说你“肘关节没举高”,“缩着手打球”之类的,然后再次纠正你…… 其实你可能根本就没错。如果你仔细观察世界顶级选手的动作,就会发现他们有时候也是“肘关节没举高”,“缩着手打球”之类的。因为比赛时不可能每次跑位都能到“理想击球点”,所以他们的手臂必须做出相应的调整(比如缩着手),才能把球打出需要的轨迹。根据球的角度,速度,落点不同,挥拍打出上旋球之后,球拍可能并没有那么多的“向上速度”,所以“随挥”时手肘可能不会抬过肩,而是水平出去的。你能说这些顶级选手的动作错了吗? 另一个误导的例子:几乎每个教练都说我“拉拍太晚”,要求我“看到对方击球的瞬间,甚至还没击球时,就拉拍。”这样的结果是太早拉开拍子,需要一只手举着拍子,傻傻地等好一会,才能打到球。如果你看看国内的网球初学者,就会发现他们都是那样打球的。很早就拉开拍子,一只手举着拍子,等着球过来,但球可能飞得很高,很慢…… 如果你仔细观察视频里的职业选手比赛,就会发现他们拉拍虽然及时,却不是对方一击球就拉拍的。如果你慢放这些比赛视频,就会发现他们基本都是等球飞过半场的时候才开始拉拍,之后很快就击球了。一般不会举着拍子在那等球过来。 所以并不是对方击球时就必须立刻拉拍。很显然,你也不应该在对方击球前拉拍。因为对方还没击球,你都不知道球会往哪里飞,是正手还是反手都不知道,拉什么拍呢?教练给你的球为什么可以提前那么多拉拍,甚至还没击球就可以拉拍呢?因为教练给你的每个球都是一样的,你已经事先知道了他要打到哪里,所以你才能提前那么多拉拍。这跟真正打球时的情况非常不同。 所以,我最初可能确实拉拍晚了点,但却没有晚那么多。只要在球速很快时稍早一点就行,但不至于对方一击球就立即拉开。 当我根据这个发现调整自己的动作时,有个教练却对我说:“你看的那是职业选手的动作。业余打网球的不能像职业的那样要求自己。” 结果一定要我按他说的,提前很多拉拍,举着拍子在那等球过来。甚至先叫我“拉拍!”,然后才把球丢过来…… 被教傻了的感觉。这说法不是很奇怪吗?网球动作还分职业和业余?业余打网球的,难道永远就按这么傻的动作打?真是笑话。我按照职业选手的标准,发现完全没问题。不但动作流畅,而且击球不会太晚。 后来,教练们打球时我偷看了一下。他们自己都不是那么早拉拍的,也都是球飞到了半场时才开始拉拍。自己都不是那样做的,却那样要求学员,不是很奇怪吗?而且每个教练都是如此,好像这是什么“统一教材”里写的,非常奇怪。 这还只是冰山一角,我发现网球的教学里一大堆误导误传。现场的教练如此,网上的视频教学也是如此。不但中国的如此,国外的也没好到哪里去。不仅网球如此,乒乓球等运动的教学也是如此。这个世界充满着无穷无尽的误导。 这就是为什么我决定停止接受教练的指导,开始自学成才的探索之路。就像我当年在计算机科学领域的做法一样。 https://postimg.cc/gallery/SQf0gz9

f6XF
f6XF 1d

最近真的很忙,两个月没用电脑,996地练习网球,掉进很多的坑又爬出来。终于,我发现自己开始独立撰写网球界的「The Little Tennis」,哦不,应该叫「Ground-Up Tennis」。它将像计算机科学基础班一样,改变人们认为网球是“童子功”,需要很多年才能纯熟的误区。 ​​​

f6XF
f6XF 17d

勤快小晃晃:[哈哈]英法怎么管? 26-1-14 14:21 来自广东 按热度 按时间 用户6230051044:回复@梁斌penny:英法军事实力很菜的 26-1-14 14:25 来自美国 梁斌penny :派兵登岛也好啊。。 26-1-14 14:22 来自江苏 外星来牛:英法还想跟着喝汤呢,八国联军不是一回了 26-1-14 14:22 来自山东 梁斌penny :格林兰都丢了,喝锤子汤啊 26-1-14 14:23 来自江苏 外星来牛:回复@梁斌penny:英国不是也要驻军格陵兰吗,这不会是为了抵抗美国吧[流汗] 26-1-14 14:26 来自山东 风险偏好12:英法算哪根葱? 26-1-14 14:20 来自上海 梁斌penny :英法要是不吱声,那格林兰岛肯定要丢啊 26-1-14 14:25 来自江苏

Welcome to f6XF spacestr profile!

About Me

f6XF

Interests

  • No interests listed.

Videos

Music

My store is coming soon!

Friends