Forwarded from 羽毛的小白板
前面一条提到「
https://v2ex.com/t/795733
知乎的程序员多数是“互联网”背景的,时常跳入历史虚无主义的错误中。甚至互联网大厂希望多数人都陷入到这种历史虚无主义中而丧失对技术的批判性。」而这些垃圾「技术文章」的背后有多少都是那些互联网大厂呢?https://v2ex.com/t/795733
V2EX
我觉得技术公众号写技术文章就是个伪命题,一切都是为了割韭菜 - V2EX
程序员 - @li24361 - 看技术文章,肯定要看代码,微信这个垃圾排版,手机小屏幕,话来划去看那点小字真的困难。个人类的公众号,做大了没有不割韭菜的,弄点资源,关注回复,接着就和极客时间狼狈为奸割韭菜了。不发广告
Forwarded from 螺莉莉的黑板报
https://t.me/haneko_daily/1862 jndi log4j 旧闻。
https://www.zhihu.com/question/20451584/answer/2220757276 #recommend #csharp struct/memGC和PInvoke FFI. CLR真是好东西
#tech https://weibo.com/6347862377/KomPj0IBr 王银终于开始民科化了,不过他说不能嘲笑质疑相对论的人这一点我赞成。科学是拿证据说话,那空口无凭说人家没讲明白又怎么质疑他们呢😒
https://t.me/dsuses/5048
质疑也不是廉价的,需要拿出不小于对方的功能,才够认真(不过王某人能持这种态度,我丝毫不意外,他就是喜欢把一些 alternative way 说成the only axiom或沙藏珍宝的人。可惜的是历史错了也不代表它们就能干了……😞 都有优缺点和大环境
>……却一直拒绝与质疑他的人公开答辩,所以我感觉他可能不仅不是天才,而且是否真懂物理都值得怀疑。不要忘了,在此之前他是一个在专利局工作的小职员……(阴谋论)
爱因斯坦说“如果你不能向六岁小孩解释清楚一个理论,那你并不真的懂”,然而他自己就违反了这句话。不仅小孩完全无法理解,而且他的论文极少人能看明白。我试过,真的。此(扩大释义)
我对社会的看法就是,活好就成了;科学和教育界问题不少,但确实是有能力的,而且想革命最好是由软件操刀。嘛,反正抱怨这些人也不会想想怎么解决,反而是当个跨界的科普作者更实际
但其实这些对社会并不重要🤷♂就像 PHP,JVM,Go 比原理苦工的 CLR,Lua 流行
基本操作很易懂啊,可是没有传播价值,现在中国就是这样(我这么想就又成公知了,你看看
把科普当科学的特异点最多只能续命一会再崩塌,根本不现实,正确的方法就是把人分成两波,一波专心造玩具,一波见机圈钱圈粉,同行的关注点并不相通,很难交流去做到更好的事
https://www.zhihu.com/question/20451584/answer/2220757276 #recommend #csharp struct/memGC和PInvoke FFI. CLR真是好东西
#tech https://weibo.com/6347862377/KomPj0IBr 王银终于开始民科化了,不过他说不能嘲笑质疑相对论的人这一点我赞成。科学是拿证据说话,那空口无凭说人家没讲明白又怎么质疑他们呢😒
https://t.me/dsuses/5048
质疑也不是廉价的,需要拿出不小于对方的功能,才够认真(不过王某人能持这种态度,我丝毫不意外,他就是喜欢把一些 alternative way 说成the only axiom或沙藏珍宝的人。可惜的是历史错了也不代表它们就能干了……😞 都有优缺点和大环境
>……却一直拒绝与质疑他的人公开答辩,所以我感觉他可能不仅不是天才,而且是否真懂物理都值得怀疑。不要忘了,在此之前他是一个在专利局工作的小职员……(阴谋论)
爱因斯坦说“如果你不能向六岁小孩解释清楚一个理论,那你并不真的懂”,然而他自己就违反了这句话。不仅小孩完全无法理解,而且他的论文极少人能看明白。我试过,真的。此(扩大释义)
我对社会的看法就是,活好就成了;科学和教育界问题不少,但确实是有能力的,而且想革命最好是由软件操刀。嘛,反正抱怨这些人也不会想想怎么解决,反而是当个跨界的科普作者更实际
但其实这些对社会并不重要🤷♂就像 PHP,JVM,Go 比原理苦工的 CLR,Lua 流行
基本操作很易懂啊,可是没有传播价值,现在中国就是这样(我这么想就又成公知了,你看看
把科普当科学的特异点最多只能续命一会再崩塌,根本不现实,正确的方法就是把人分成两波,一波专心造玩具,一波见机圈钱圈粉,同行的关注点并不相通,很难交流去做到更好的事
Telegram
羽毛的小白板
https://twitter.com/stereotype32/status/1469313856229228544
羽毛的小白板
https://zhuanlan.zhihu.com/p/363380508
😔有的时候就是这样,现在的未必更好,只是一种发展潮流 #web #statement
>小孩问父母,既然手机的电池这么不经用,为什么不发明一种「可插拔、可充电」的手机电池,这样外出游玩的时候就可以多带几块增加续航时间呢?
可不是吗?最早的手机电池就是可替换的呢!\可拆卸后盖
给 div 想 className 太麻烦了,为什么不用 Tailwindcss.cn 这种把样式直接写在 HTML 标签上的写法呢
可不是吗?最早的 style 属性就是这么用的呢! \无意义.className (emmit.io 就是典型
(不过Tailwind 官网队列transition挺好的.. ,而且 .text-center(内容居中) 的按位置类名的确是烂活,CSS也确实需要@apply类继承(混合
用媒体查询@media 写响应式样式好麻烦啊,要是 HTML 和 CSS 自己本身就是响应式的多好啊?
可不是吗?你只需要给 body 加个 max-width: 1000px,然后给 img 加个 max-width: 100%,你的页面就可以适配任何屏幕呢! \竖版文档排版
webpack 打包好慢,要是 JS 不用打包直接就能运行在浏览器上多好呀。
可不是吗?JS 以前就是这么用的呢! \无minify|resource import
AJAX 加载动态内容好慢啊,要是内容一开始就嵌入页面里,这样就能节省好多请求和响应时间。
可不是吗?最开始的网页开发就是这么干的…… \如果你想把JS生成的内容saveAs html ,或者后端模板
一旦点开某个信息,再回退时,就要重新滑动滚动条才能定位到刚才的位置,好麻烦啊!就不能自动记住上次浏览的位置吗?
可不是吗?以前的静态网页是可以被浏览器记住位置的呢…… \scrollTop可调(router keep-alive
写vue的时候发现html/js/css写在同一个文件里好方便,可不是吗?最早以前的网页就是这么写的,都写在一起。
哈哈哈,React的就更好解释了,就拆分再link,script引用
写vue发现{变量}好方便,可不是嘛,最开始jsp就是怎么写的。。。
可不是吗?现在各种规范教导你”不要这么做,不可复用!“
您懂机械流程和复用吗?
>小孩问父母,既然手机的电池这么不经用,为什么不发明一种「可插拔、可充电」的手机电池,这样外出游玩的时候就可以多带几块增加续航时间呢?
可不是吗?最早的手机电池就是可替换的呢!\可拆卸后盖
给 div 想 className 太麻烦了,为什么不用 Tailwindcss.cn 这种把样式直接写在 HTML 标签上的写法呢
可不是吗?最早的 style 属性就是这么用的呢! \无意义.className (emmit.io 就是典型
(不过Tailwind 官网队列transition挺好的.. ,而且 .text-center(内容居中) 的按位置类名的确是烂活,CSS也确实需要@apply类继承(混合
用媒体查询@media 写响应式样式好麻烦啊,要是 HTML 和 CSS 自己本身就是响应式的多好啊?
可不是吗?你只需要给 body 加个 max-width: 1000px,然后给 img 加个 max-width: 100%,你的页面就可以适配任何屏幕呢! \竖版文档排版
webpack 打包好慢,要是 JS 不用打包直接就能运行在浏览器上多好呀。
可不是吗?JS 以前就是这么用的呢! \无minify|resource import
AJAX 加载动态内容好慢啊,要是内容一开始就嵌入页面里,这样就能节省好多请求和响应时间。
可不是吗?最开始的网页开发就是这么干的…… \如果你想把JS生成的内容saveAs html ,或者后端模板
一旦点开某个信息,再回退时,就要重新滑动滚动条才能定位到刚才的位置,好麻烦啊!就不能自动记住上次浏览的位置吗?
可不是吗?以前的静态网页是可以被浏览器记住位置的呢…… \scrollTop可调(router keep-alive
写vue的时候发现html/js/css写在同一个文件里好方便,可不是吗?最早以前的网页就是这么写的,都写在一起。
哈哈哈,React的就更好解释了,就拆分再link,script引用
写vue发现{变量}好方便,可不是嘛,最开始jsp就是怎么写的。。。
可不是吗?现在各种规范教导你”不要这么做,不可复用!“
您懂机械流程和复用吗?
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Advanced_animations
woc, Moz 这太厉害了,加速率弹球动画、alpha拖影合成,还包含位图处理,不愧是最知名的MDN啊,还有一个500行(上面 Java 版本)的渲染器 raycaster !太牛了吧,而且也提到了 ZIM和P5.js ,梦幻联动
为啥动苏喜欢画图呢 🤔 因为图形里有许多参数是可以抽提比率增减的。尽管看起来很傻(用矢量图软件更好 没啥意义),却非常放松。
#css ninepatch 边角吗.. https://css-tricks.com/almanac/properties/b/border-image/ 虽然很可爱但莫名有点土 😂
woc, Moz 这太厉害了,加速率弹球动画、alpha拖影合成,还包含位图处理,不愧是最知名的MDN啊,还有一个500行(上面 Java 版本)的渲染器 raycaster !太牛了吧,而且也提到了 ZIM和P5.js ,梦幻联动
为啥动苏喜欢画图呢 🤔 因为图形里有许多参数是可以抽提比率增减的。尽管看起来很傻(用矢量图软件更好 没啥意义),却非常放松。
#css ninepatch 边角吗.. https://css-tricks.com/almanac/properties/b/border-image/ 虽然很可爱但莫名有点土 😂
duangsuse::Echo
王垠是谁
处于上层的理论每被检验一次,狭相就会变得更加可靠。就写进教科书的粒子物理中电子自旋反常磁矩的测量来说,理论和实验结果的验证已经达到小数点后十几位了。准确的说,狭相本身并不是一个只有几个“反直觉预言”的奇怪理论,它是所有高能标下物理理论(不考虑引力)的基本理论框架。
修改(基本都是广相)也一直没有停过,作为理论物理工作者来说,其实大家更希望看到基本的物理理论能有大的修正。可宇宙学和天体物理实验一次次证明现况坚实成立,即便其他修改引力理论都能在一定层面解决问题
回到问题本身。我想,有一定基本科学素养的朋友自然会知道,科普书上的只是简单介绍一下相对论历史发展的皮毛,和真正的科研是有巨大差距的,外行人看个热闹了解一下也挺有趣的。
但是,没有基本科学素养又喜欢钻牛角尖的人,可能就容易发表一些民科一样的言论了。
作者:观光鸭
链接:https://www.zhihu.com/question/471840054/answer/1997707187
来源:知乎
#zhihu 二分之一2021-07-14
首先对你辛勤的劳动表示敬意。
其次,我觉得你想科普至少可以了解一下高考物理成绩的情况。放弃吧,除了物理专业的人,你觉得谁会真的感兴趣这些?谁又能懂这些?
知识对人产生了一种比生殖隔离和种族隔离还强大的东西。。。。现在社会上的矛盾就在于许多人看不清这种隔离[捂脸][捂脸][捂脸]什么东西都觉得自己可以参合一下。全然忘记了自己可能连高考物理题都看不懂。。。。。。
Yuekong2021-07-14
但是我们应该明白一点,那就是人作为大自然的产物,一种动物,是永远不会获得真理的,只能总结出一些规律,仅此而已。
在目前人类能达到的观测精度和能量利用水平方面,很牢靠。
正如牛顿力学对于几百年前的人类文明水平来说很牢靠一样。
修改(基本都是广相)也一直没有停过,作为理论物理工作者来说,其实大家更希望看到基本的物理理论能有大的修正。可宇宙学和天体物理实验一次次证明现况坚实成立,即便其他修改引力理论都能在一定层面解决问题
回到问题本身。我想,有一定基本科学素养的朋友自然会知道,科普书上的只是简单介绍一下相对论历史发展的皮毛,和真正的科研是有巨大差距的,外行人看个热闹了解一下也挺有趣的。
但是,没有基本科学素养又喜欢钻牛角尖的人,可能就容易发表一些民科一样的言论了。
作者:观光鸭
链接:https://www.zhihu.com/question/471840054/answer/1997707187
来源:知乎
#zhihu 二分之一2021-07-14
首先对你辛勤的劳动表示敬意。
其次,我觉得你想科普至少可以了解一下高考物理成绩的情况。放弃吧,除了物理专业的人,你觉得谁会真的感兴趣这些?谁又能懂这些?
知识对人产生了一种比生殖隔离和种族隔离还强大的东西。。。。现在社会上的矛盾就在于许多人看不清这种隔离[捂脸][捂脸][捂脸]什么东西都觉得自己可以参合一下。全然忘记了自己可能连高考物理题都看不懂。。。。。。
Yuekong2021-07-14
但是我们应该明白一点,那就是人作为大自然的产物,一种动物,是永远不会获得真理的,只能总结出一些规律,仅此而已。
在目前人类能达到的观测精度和能量利用水平方面,很牢靠。
正如牛顿力学对于几百年前的人类文明水平来说很牢靠一样。
duangsuse::Echo
https://t.me/haneko_daily/1862 jndi log4j 旧闻。 https://www.zhihu.com/question/20451584/answer/2220757276 #recommend #csharp struct/memGC和PInvoke FFI. CLR真是好东西 #tech https://weibo.com/6347862377/KomPj0IBr 王银终于开始民科化了,不过他说不能嘲笑质疑相对论的人这一点我赞成。科学是拿证据说话,那空口无凭说人家没讲明白又怎么质疑他们呢😒…
这个故事我主要想说,不要钻牛角尖。 质疑是可以的,但如果没有直接证据,又不应人身攻击,就只能说他太偏激了
举个例子,递归下降法-前缀提取是处理模式文本的好手段,但不排除 LL/LR,LALR 的专门状态机有学习价值(尽管我觉得不对照学是行为艺术)
yinwang 总是喜欢把一种较正确的做法说成是「大家都因为xx权威 的教唆才抛弃,转而使用流行的另一方法,从而导致问题」「众人熙熙皆为利往,其实根本不可能」「因为我做了一件没人做过的应用,说明领域有问题」,但其实被历史埋没的珍宝太多了,总是把一切归罪权威和白象崇拜是不理智的,权威也是普通人,同好也不是要啥都有的神,你不能指望他们在技术是面面俱到和完人,这个职业道德都是相对的
他就喜欢因为看起来不正经的现象武断整个领域是骗人,其实哪来那么多欺骗的意义,比如计算机吧,许多人编程/部分代码都是没用处的(重复,故意练手,或单纯是菜,.),你能说他们在骗人吗?各有目的,未必是恶意坏事
任何事情都可以从两面看,就比如动苏坚持开源,是因为他就觉得学习是分享性的,绝不是因为懦弱。
如果他摆脱这样急于批评的心态,或许能以更多写法创建更多有意思的东西,我说大点, ydiff 之所以只支持Lisp,Java,C++ 几门语言,也可以归咎于 parser 编写成本还不够低吧! ydiff 不能在框架的基础上做 match, convert 等相关操作,可以说是代码还不够简洁吧! ydiff 连token高亮都有却不能顺带编辑器,是因为... 好了这就过分了😂, 但是他最初的目的就是实验tree diff ,和现在被吹爆的DOM diff 一样,这点才是编程的目的,类似的目的很难说是错的,谁不想当英雄呢是不(软件是写给人的,不止是给最终用户
然后科普的不足就是它的不足,并不是理论复杂到连大纲都列不全的(那书可不薄啊),始终要设法去改进的。 也反映了普遍性,理科语言能力的刻板,但哪怕没有这一点,科普的地位也只会像一个特殊的桥梁,只有不害怕的人才能走得更远;职业的选择是专一的
举个例子,递归下降法-前缀提取是处理模式文本的好手段,但不排除 LL/LR,LALR 的专门状态机有学习价值(尽管我觉得不对照学是行为艺术)
yinwang 总是喜欢把一种较正确的做法说成是「大家都因为xx权威 的教唆才抛弃,转而使用流行的另一方法,从而导致问题」「众人熙熙皆为利往,其实根本不可能」「因为我做了一件没人做过的应用,说明领域有问题」,但其实被历史埋没的珍宝太多了,总是把一切归罪权威和白象崇拜是不理智的,权威也是普通人,同好也不是要啥都有的神,你不能指望他们在技术是面面俱到和完人,这个职业道德都是相对的
他就喜欢因为看起来不正经的现象武断整个领域是骗人,其实哪来那么多欺骗的意义,比如计算机吧,许多人编程/部分代码都是没用处的(重复,故意练手,或单纯是菜,.),你能说他们在骗人吗?各有目的,未必是恶意坏事
任何事情都可以从两面看,就比如动苏坚持开源,是因为他就觉得学习是分享性的,绝不是因为懦弱。
如果他摆脱这样急于批评的心态,或许能以更多写法创建更多有意思的东西,我说大点, ydiff 之所以只支持Lisp,Java,C++ 几门语言,也可以归咎于 parser 编写成本还不够低吧! ydiff 不能在框架的基础上做 match, convert 等相关操作,可以说是代码还不够简洁吧! ydiff 连token高亮都有却不能顺带编辑器,是因为... 好了这就过分了😂, 但是他最初的目的就是实验tree diff ,和现在被吹爆的DOM diff 一样,这点才是编程的目的,类似的目的很难说是错的,谁不想当英雄呢是不(软件是写给人的,不止是给最终用户
然后科普的不足就是它的不足,并不是理论复杂到连大纲都列不全的(那书可不薄啊),始终要设法去改进的。 也反映了普遍性,理科语言能力的刻板,但哪怕没有这一点,科普的地位也只会像一个特殊的桥梁,只有不害怕的人才能走得更远;职业的选择是专一的
>第一篇狭义相对论就无法看懂,广义相对论和 E=mc^2 就更加晦涩。看了《Relativity in Illustrations》你才发现相对论原来这么容易,自己都可以想出来。被爱因斯坦的论文一搅和,就不知道怎么回事了。这不是很值得怀疑吗?
质能方程很晦涩吗?它首先否决的是当年物理界永动机的一些邪风——能量不能凭空产生,只能(从物质)转化 ,如果要奇怪不该从 c^2 俩常量咋来的开始吗,就像圆公式 sqrt(xx+yy)<l 和矩形面积 为啥是平方开方
>牛顿定律已经被不计其数的日常现象检验,很多人(包括我)在小学中学都做过实验来验证它们。工业,车辆,船舶,电子,武器,航空航天系统全都依赖于牛顿定律,所以牛顿定律不大可能是错的。相对论的证据数量却掰着手指就数得出来,……
牛顿是物体层面的运动规律,就编程语言来讲,a和(a+1) 以及许许多多语法在{}里可以说是平级且相似的,但Kotlin这样定义优先的语言有 class{} 等更大的层次,性质完全不一样,当然这是人的设计;不能保证整个物理观察就只有牛顿力学
>只能叫做“假说”(hypothesis),所以并不能谈及“推翻”。
这是物理,真假都是相对的,至少目前的发现证明相对论成立,但它不像牛顿或1+1=2 那样立即可知;倒不如说 1+1=2 1+1=3 是可以反驳的,”我们午饭吃素吧“ not even wrong ,根本没啥立论性,就像牛顿力学玻璃管铅球实验和摩擦力推论,大家看到都认了,不需要有个权威说成没成立
>所以卫星和地球,哪一个是“高速物体”,其实是无法判断的,所以哪一个时钟会快一些也是无法确定的。高速物体上的时钟比低速物体慢,这个说法根本就是自相矛盾的
👀相对论的名字里就暗示了它把物理时间按空间/重力啥的相对化了, 运动确实是相对、互为高速物体的,但相对论的特性保证了观测者在哪这个修补都成立吧—并不。只需对一方成立就行,不过也确实 NTP的问题,时间靠通信统一就够了,”GPS 接收器是从多颗卫星发来的“时间戳”的差值算出自己的位置的“ 也是嵌入式常识
>我早已感觉到长久以来科学界在掩盖真正的知识,把它们弄得越来越难懂,太多滥竽充数的人写一些垃圾论文。这就是我为什么抛弃了三个博士学位。
那你抛弃也不代表你牛逼了,确实学术体系不即是厉害,但普通的高手、创意评赛也有一大把啊
>在计算机领域也有类似的问题。每天用到的技术和编程实践,几乎和图灵机没有任何关系,然而图灵却被叫做天才,被叫做”计算机的鼻祖“。计算机领域的最高奖被叫做”图灵奖“,每年发一次,却常常无法理解他们到底有什么贡献。改成十年发一次也许还有点说服力
图灵和图灵奖就跟雷锋和雷锋塔一样,时间精神上没啥交集 ;如果说有何意义,就是知名度
确实啊,图灵和编程是没有太大关系的,他在二战时期是密码学家,设计了打字卡带机模型(brainfuck是图灵完全的),可之后冯诺的那套不知和他有啥联系,JohnBackus 的就和他更没关系了;谈到最初的符号组合编程,1950s的Fortran 甚至还不如一个小程序员开发的 Plankalkül(plan calculus) 早,而 lambda 在 30's 就有了,编程语言从来不是谁的专利,现在高中数学还凑什么热闹,woc,好的不学尽学些语法不通顺的..
我觉得人反对他反得不好就是因为没认真回答他的问题,只是以「科普浅薄」猜测原因了,没有认识到反民科的必要性;这里我又想说R大真是计算机科学界的一股清流,啥都会话还不必多 😭,你看哪找来这么好的老师?一边手动反编译javabc一边教反编译器怎么写,我是没见过第二个人这么狂
”王垠最为人津津乐道的要数3次退学的彪悍故事:博士只差一年就毕业的时候,在水木社区发表《清华梦的粉碎--写给清华大学的退学申请》宣布退学;隔年考入康奈尔大学计算机系,过了2年又从康奈尔大学退学了,依旧写了一篇退学文——《Cornell 感受》;随后印第安纳大学伯明顿分校(IUB)计算机继续攻读博士学位,2012年,以一篇文章《对博士学位说永别》再次退学。
《清华梦的粉碎》和《对博士学位说永别》的内容透出一股王侯将相宁有种乎的味道。如果是一次反叛,还可以说是他意气用事,而一次又一次的反叛只能说明这是深思熟虑的结果。王垠知道反叛的后果和未来将会付出的代价,但是,他仍然选择了这条荆棘满途的道路。
清华的确不代表最高,因为大家也就那样,为什么所有知名院校都开设计算机,但你我能看到的大佬、工具也不多? 首先是因为计算机爱好者不都爱像我一样”指点江山“,我网上见过不少看似跟这行没关系的人是大佬 😂;然后清华的学生也是有专攻的,一些bot呀的专业比率低
据说他是有蹭民科李子丰教授"完胜推翻相对论、坚持马克思唯物主义..."的嫌疑? 李院士可牛逼了,唯物主义唯心主义都搬上来批斗爱老爷子了,给我笑死 😂 这就叫”学术“讨伐,跟消灭回形针一样,还好现在民科不像以前那样多,不然科学就GG了
https://zhuanlan.zhihu.com/p/392804561 这篇文章也是反相对论的,但言辞很诚恳,感兴趣的可以看看,我就没精力了 😂
质能方程很晦涩吗?它首先否决的是当年物理界永动机的一些邪风——能量不能凭空产生,只能(从物质)转化 ,如果要奇怪不该从 c^2 俩常量咋来的开始吗,就像圆公式 sqrt(xx+yy)<l 和矩形面积 为啥是平方开方
>牛顿定律已经被不计其数的日常现象检验,很多人(包括我)在小学中学都做过实验来验证它们。工业,车辆,船舶,电子,武器,航空航天系统全都依赖于牛顿定律,所以牛顿定律不大可能是错的。相对论的证据数量却掰着手指就数得出来,……
牛顿是物体层面的运动规律,就编程语言来讲,a和(a+1) 以及许许多多语法在{}里可以说是平级且相似的,但Kotlin这样定义优先的语言有 class{} 等更大的层次,性质完全不一样,当然这是人的设计;不能保证整个物理观察就只有牛顿力学
>只能叫做“假说”(hypothesis),所以并不能谈及“推翻”。
这是物理,真假都是相对的,至少目前的发现证明相对论成立,但它不像牛顿或1+1=2 那样立即可知;倒不如说 1+1=2 1+1=3 是可以反驳的,”我们午饭吃素吧“ not even wrong ,根本没啥立论性,就像牛顿力学玻璃管铅球实验和摩擦力推论,大家看到都认了,不需要有个权威说成没成立
>所以卫星和地球,哪一个是“高速物体”,其实是无法判断的,所以哪一个时钟会快一些也是无法确定的。高速物体上的时钟比低速物体慢,这个说法根本就是自相矛盾的
👀相对论的名字里就暗示了它把物理时间按空间/重力啥的相对化了, 运动确实是相对、互为高速物体的,但相对论的特性保证了观测者在哪这个修补都成立吧—并不。只需对一方成立就行,不过也确实 NTP的问题,时间靠通信统一就够了,”GPS 接收器是从多颗卫星发来的“时间戳”的差值算出自己的位置的“ 也是嵌入式常识
>我早已感觉到长久以来科学界在掩盖真正的知识,把它们弄得越来越难懂,太多滥竽充数的人写一些垃圾论文。这就是我为什么抛弃了三个博士学位。
那你抛弃也不代表你牛逼了,确实学术体系不即是厉害,但普通的高手、创意评赛也有一大把啊
>在计算机领域也有类似的问题。每天用到的技术和编程实践,几乎和图灵机没有任何关系,然而图灵却被叫做天才,被叫做”计算机的鼻祖“。计算机领域的最高奖被叫做”图灵奖“,每年发一次,却常常无法理解他们到底有什么贡献。改成十年发一次也许还有点说服力
图灵和图灵奖就跟雷锋和雷锋塔一样,时间精神上没啥交集 ;如果说有何意义,就是知名度
确实啊,图灵和编程是没有太大关系的,他在二战时期是密码学家,设计了打字卡带机模型(brainfuck是图灵完全的),可之后冯诺的那套不知和他有啥联系,JohnBackus 的就和他更没关系了;谈到最初的符号组合编程,1950s的Fortran 甚至还不如一个小程序员开发的 Plankalkül(plan calculus) 早,而 lambda 在 30's 就有了,编程语言从来不是谁的专利,现在高中数学还凑什么热闹,woc,好的不学尽学些语法不通顺的..
我觉得人反对他反得不好就是因为没认真回答他的问题,只是以「科普浅薄」猜测原因了,没有认识到反民科的必要性;这里我又想说R大真是计算机科学界的一股清流,啥都会话还不必多 😭,你看哪找来这么好的老师?一边手动反编译javabc一边教反编译器怎么写,我是没见过第二个人这么狂
”王垠最为人津津乐道的要数3次退学的彪悍故事:博士只差一年就毕业的时候,在水木社区发表《清华梦的粉碎--写给清华大学的退学申请》宣布退学;隔年考入康奈尔大学计算机系,过了2年又从康奈尔大学退学了,依旧写了一篇退学文——《Cornell 感受》;随后印第安纳大学伯明顿分校(IUB)计算机继续攻读博士学位,2012年,以一篇文章《对博士学位说永别》再次退学。
《清华梦的粉碎》和《对博士学位说永别》的内容透出一股王侯将相宁有种乎的味道。如果是一次反叛,还可以说是他意气用事,而一次又一次的反叛只能说明这是深思熟虑的结果。王垠知道反叛的后果和未来将会付出的代价,但是,他仍然选择了这条荆棘满途的道路。
清华的确不代表最高,因为大家也就那样,为什么所有知名院校都开设计算机,但你我能看到的大佬、工具也不多? 首先是因为计算机爱好者不都爱像我一样”指点江山“,我网上见过不少看似跟这行没关系的人是大佬 😂;然后清华的学生也是有专攻的,一些bot呀的专业比率低
据说他是有蹭民科李子丰教授"完胜推翻相对论、坚持马克思唯物主义..."的嫌疑? 李院士可牛逼了,唯物主义唯心主义都搬上来批斗爱老爷子了,给我笑死 😂 这就叫”学术“讨伐,跟消灭回形针一样,还好现在民科不像以前那样多,不然科学就GG了
https://zhuanlan.zhihu.com/p/392804561 这篇文章也是反相对论的,但言辞很诚恳,感兴趣的可以看看,我就没精力了 😂
知乎专栏
王垠可以质疑相对论吗?谁有资格质疑相对论? ——王垠的问题和批判他的人的问题
“大哥啊!你化这个妆就说自己是孙悟空哪? “拜托!给点专业精神好不好?” “你看,这些毛通通都开叉了!” “头上像戴了两块年糕似的!” “出来混饭吃得花点本钱嘛!” 这是《大话西游》里的桥段。凡夫俗子们…
duangsuse::Echo
>第一篇狭义相对论就无法看懂,广义相对论和 E=mc^2 就更加晦涩。看了《Relativity in Illustrations》你才发现相对论原来这么容易,自己都可以想出来。被爱因斯坦的论文一搅和,就不知道怎么回事了。这不是很值得怀疑吗? 质能方程很晦涩吗?它首先否决的是当年物理界永动机的一些邪风——能量不能凭空产生,只能(从物质)转化 ,如果要奇怪不该从 c^2 俩常量咋来的开始吗,就像圆公式 sqrt(xx+yy)<l 和矩形面积 为啥是平方开方 >牛顿定律已经被不计其数的日常现象检验,很多人…
> 科学最重要的是求真的精神。这么多人因为认为你讨论的态度比较诚恳,才会跟你讨论。但是,你的诚恳,是为了关注和流量,还是因为真的想把问题讨论清楚呢,这是你需要思考的问题。当然,求真与流量并不矛盾,当你与真相基本一致的时候。但目前你的论点,与主流科学大相径庭,你怎么解释呢?在科学的讨论过程中,如果中间环节有一个错误,就可能整个结论都是错误的,所以科学讨论需要把前提定义都说清楚。你一直让大家阅读你的长篇文章,
可是文章里,讨论光速不变,是说光速在所有介质里不变,完全不合逻辑(所谓光速不变,是说在所有参照系下,真空最大速度不变)。你这样的论述属于咬文嚼字的诡辩,耽误科学讨论者的时间。那么,这种情况下,你把文章写得再有趣,吸引再多普通人去读,他读的也是错误观点,错误的论述啊。
如果你已经认识到自己论述的错误,但是又没有勇气公开承认,我觉得你偷偷把原文改成正确的也可以,好过让一篇错误的文章在那里混淆公众。这么多人花费这么多时间,无非希望能给公众正确的科普。当然,我们讨论的只是相对论本身的对错,而不是说所有主流科学结论都不能质疑,也不是说爱因斯坦说的都对。对于质疑保持严肃认真,正是保护质疑,不让质疑变成无聊的阴谋论。
> 我觉得现在跑出来质疑狭义相对论的都有一个共同特点,就是没学过电动力学。但凡电动力学能学个七八十分,也不至于这样。物理是一门系统的科学,要一点一点学起来。譬如狭义相对论的前置条件是麦克斯韦尔方程组。
麦克斯韦尔的方程找不出问题,那么狭义相对论就是其必然结果。从麦克斯韦尔方程组,到洛伦兹变换不变性,到狭义相对论是一脉相承的。所以量子力学人们在发现薛定谔方程不满足洛伦兹变化不变的时候就会搞出狄拉克方程。
狄拉克方程的成功预言,反过头来又证实了狭义相对论的可靠。这是一套体系,有无数的实验验证其结果在相当高的精度上都是正确的。你要动狭义相对论,并不是不可以,至少你要给出一套完整的理论能够彻底代替狭义相对论及其所有衍生理论。任何人给不出这样的理论,那对于我们来说没有任何讨论的价值。
在物理学里面,可以容忍对世界的认识非常离谱的理论,但是用不了的理论就没有存在的意义,这就是为什么大部分学物理的,一看没有数学公式就走人了。因为没有公式意味着不能计算,不能计算意味着不能应用,不能应用的物理不是物理。物理是一门实验学科。你要推翻一个理论非常简单:1.做出一个与现有理论不一样的预言。2.证明自己兼容已知所有实验结果。3.做实验证明在分叉口你比现有理论精度高。
>张子立:第一,没有任何公式和实验数据的反相对论都没有任何看的价值。
第二,相对论,不论是狭义还是广义都被实验验证过。如果你想表达狭义相对论是错的,那很简单。去搜索北京正负电子对撞机的设计参数,告诉大家,相对论如果不对,为什么电子只能被加速到20亿到50亿电子伏特这么小。拿出你的计算结果,其他的小说般的话都没必要说,
>冰封:我不想评价人,不过我可以讨论一下这种行为。结合此君早年其他行为,我更愿意相信这是在测试极端粉丝的忠诚度,以及过滤掉太过于聪明的粉丝,这样未来不仅可以站着割 (已经做到,十分佩服),还要能躺着割。毕竟,即便是不熟悉编程语言的理论的人,也依然有可能是聪明人。四大魔道程序员,现在最正常的可能是伞哥(网易冰河,服管,Common Lisp)了。我在微信群里和冰河有过一面之缘,讨论了一下 HOL4。至少说话很正常,对于自己熟悉的领域愿意讨论,不熟悉的领域也不会去发表暴论。
>pansz: 这个解释就是速度的相对性问题。简要的说,速度是相对的,加速度不是相对的。
……
可是文章里,讨论光速不变,是说光速在所有介质里不变,完全不合逻辑(所谓光速不变,是说在所有参照系下,真空最大速度不变)。你这样的论述属于咬文嚼字的诡辩,耽误科学讨论者的时间。那么,这种情况下,你把文章写得再有趣,吸引再多普通人去读,他读的也是错误观点,错误的论述啊。
如果你已经认识到自己论述的错误,但是又没有勇气公开承认,我觉得你偷偷把原文改成正确的也可以,好过让一篇错误的文章在那里混淆公众。这么多人花费这么多时间,无非希望能给公众正确的科普。当然,我们讨论的只是相对论本身的对错,而不是说所有主流科学结论都不能质疑,也不是说爱因斯坦说的都对。对于质疑保持严肃认真,正是保护质疑,不让质疑变成无聊的阴谋论。
> 我觉得现在跑出来质疑狭义相对论的都有一个共同特点,就是没学过电动力学。但凡电动力学能学个七八十分,也不至于这样。物理是一门系统的科学,要一点一点学起来。譬如狭义相对论的前置条件是麦克斯韦尔方程组。
麦克斯韦尔的方程找不出问题,那么狭义相对论就是其必然结果。从麦克斯韦尔方程组,到洛伦兹变换不变性,到狭义相对论是一脉相承的。所以量子力学人们在发现薛定谔方程不满足洛伦兹变化不变的时候就会搞出狄拉克方程。
狄拉克方程的成功预言,反过头来又证实了狭义相对论的可靠。这是一套体系,有无数的实验验证其结果在相当高的精度上都是正确的。你要动狭义相对论,并不是不可以,至少你要给出一套完整的理论能够彻底代替狭义相对论及其所有衍生理论。任何人给不出这样的理论,那对于我们来说没有任何讨论的价值。
在物理学里面,可以容忍对世界的认识非常离谱的理论,但是用不了的理论就没有存在的意义,这就是为什么大部分学物理的,一看没有数学公式就走人了。因为没有公式意味着不能计算,不能计算意味着不能应用,不能应用的物理不是物理。物理是一门实验学科。你要推翻一个理论非常简单:1.做出一个与现有理论不一样的预言。2.证明自己兼容已知所有实验结果。3.做实验证明在分叉口你比现有理论精度高。
>张子立:第一,没有任何公式和实验数据的反相对论都没有任何看的价值。
第二,相对论,不论是狭义还是广义都被实验验证过。如果你想表达狭义相对论是错的,那很简单。去搜索北京正负电子对撞机的设计参数,告诉大家,相对论如果不对,为什么电子只能被加速到20亿到50亿电子伏特这么小。拿出你的计算结果,其他的小说般的话都没必要说,
>冰封:我不想评价人,不过我可以讨论一下这种行为。结合此君早年其他行为,我更愿意相信这是在测试极端粉丝的忠诚度,以及过滤掉太过于聪明的粉丝,这样未来不仅可以站着割 (已经做到,十分佩服),还要能躺着割。毕竟,即便是不熟悉编程语言的理论的人,也依然有可能是聪明人。四大魔道程序员,现在最正常的可能是伞哥(网易冰河,服管,Common Lisp)了。我在微信群里和冰河有过一面之缘,讨论了一下 HOL4。至少说话很正常,对于自己熟悉的领域愿意讨论,不熟悉的领域也不会去发表暴论。
>pansz: 这个解释就是速度的相对性问题。简要的说,速度是相对的,加速度不是相对的。
……
duangsuse::Echo
王垠是谁
不过就拿知识哥韭菜这事我附议。这个人是没啥好评价的(哀其不幸怒其不争),不过他的行为和说法是嘈点满满
他当时对 #CS/#PLT 的科普还不错,也没删过文章,很可惜冰封在科普上没有和他平起平坐的能力(冰封老博客 乃至现在的博客都是自己的日记,他也不会增量更新旧博文),只能在小圈子有(尽管我们都算小圈)R大那样的人太少了(尽管R大也不能破圈///)
>这篇博文的核心是这一段:我早已感觉到长久以来科学界在掩盖真正的知识,把它们弄得越来越难懂,太多滥竽充数的人写一些垃圾论文。这就是我为什么抛弃了三个博士学位。这就是为什么我最近都在致力于把看似深奥的知识变得简单,并且传授给其他人。只有大部分人能理解科学和其他关键学科,才能确保它们不会腐败变质。
传授给其他人要是收费的
作者:kdurant
早年我还在知乎上吐槽过他的收费和intro,反被封了几天……
他当时对 #CS/#PLT 的科普还不错,也没删过文章,很可惜冰封在科普上没有和他平起平坐的能力(冰封老博客 乃至现在的博客都是自己的日记,他也不会增量更新旧博文),只能在小圈子有(尽管我们都算小圈)R大那样的人太少了(尽管R大也不能破圈///)
>这篇博文的核心是这一段:我早已感觉到长久以来科学界在掩盖真正的知识,把它们弄得越来越难懂,太多滥竽充数的人写一些垃圾论文。这就是我为什么抛弃了三个博士学位。这就是为什么我最近都在致力于把看似深奥的知识变得简单,并且传授给其他人。只有大部分人能理解科学和其他关键学科,才能确保它们不会腐败变质。
传授给其他人要是收费的
作者:kdurant
早年我还在知乎上吐槽过他的收费和intro,反被封了几天……
duangsuse::Echo
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Advanced_animations woc, Moz 这太厉害了,加速率弹球动画、alpha拖影合成,还包含位图处理,不愧是最知名的MDN啊,还有一个500行(上面 Java 版本)的渲染器 raycaster !太牛了吧,而且也提到了 ZIM和P5.js ,梦幻联动 为啥动苏喜欢画图呢 🤔 因为图形里有许多参数是可以抽提比率增减的。尽管看起来很傻(用矢量图软件更好…
👆结束。 王银的营销确实值得我们学习,他也是一个成功人士,在我看来他是比较吃香又能帮到一些人的;如果不是讨厌他对技术的随便,以及没有清华肄业的头衔,我或许想这样😂
#dev 现在的许多傲慢消失了,感觉好像啥也没专门去学一样😌
以前觉得组合器是特殊的,现在只是利用设计DSL
以前想长就是好、快,现在长就是烂、空洞
以前想多就是系统性,现在多就是冗余、套版
以前觉得CSS盒模型是坏的,现在发现它比其它平台更适合而贴切,言词不多,贵在扩展
以前想代码生成是大的,现在FileTree+列表处理 随手就能做
以前想反射是难的,现在发现只是名词太长,
以前解析器是不会的,现在提取前缀,组装返回值,预过滤行号流、记录span词区间 ,根本不需要分词器或任何工具和严谨
以前不知道UI框架里线程做什么,被 web 的 timers,worker post/onMessage 等 0阻塞API 矫正了,原来Thread级阻塞去 event loop 就是检测手势,查找调度Task 的,而并发异常只会随机出现; 队列是数据,随便在哪 add pop 阻塞poll;懂了为啥想放几音乐不能用for、想 fetch() 要暂断执行此函数 await 或.then(op)
以前没看到nav浏览栈是什么,被 web 的 PJAX 矫正了,原来可把生成View的数据保存pushState起来,也因此理解内存对象不都可序列化
以前不会HTTP和Cookie(服务端KV之K),现在只想大的API绑定,忽略无关数据交换的细节 httpd((req,res)=>res.write
以前不懂 SQL 和ORM,现在我只当它是严谨化加速列表处理过滤,以及事务和JOIN
以前连分页都觉得好神奇,现在
#PLT ”动态语言“ ”脚本“确实不严谨,但class{}大定义也是从小程序组合起来的,只在框架内思考会失去对框架本身的认知、放弃优化框架的可能。 例如反射只是元编程的运行时形式,«Ruby元编程»是本好书;编译期和运行期差别只在有无变量、编译解释只在有无缓存,代码生成是编译期计算。 强弱类型在于兼容和转换的显式隐式,类型推导可以让用户少手写编译期信息,类型检查能让人和机器少犯傻。 语法和语言工具用于表达,写法只有缘由,没有条条框框。
JS和CSS,JSON,YAML,HTML ,都是嵌套结构构成,只是人赋予了JS执行序、计算变量,而只让JSON解释为构造1数据--prettify又怎不是1数据 ;结构相同语法不同、数据相同命名不同,等于完全相同
效果相同类型不同 —泛型和 map,filter 函数正是如此
好的优化能让人知道。而不 prof, %timeit 怎么知道性能快慢
多观察或许就可预测,可预测或许就可控制。 被带偏或试着控制,各有好处,但没有理解缘故就只能被动模仿,束手束脚害怕出错。
就好像一个未良好复用的动作,能少一行代码,却会造就整个软件、更多软件里无数多余代码、不完善功能、高学习难度
以前不知模板和 animation/queue 是什么、粒子是为什么,现在我自己做过
以前不会二进制,现在 Read/Writer 流都被我抛了,我想0copy直接mmap()绑定,不停留在”Int=4x Byte“
以前不会画画,现在 arc rect fill stroke % alpha hsv(hsl) 一把梭,视频和参动之画也绘,了解向量计算=角度无关位置=(A-B)0点角,也认识到”非主流“ GLSL 打散绘制的方便
以前不知道值类型(全复制)、位置引用和惰性计算/编译期宏,和许多函数式Type术语,现在大致分清了
以前不懂编译原理,现在从 ASM chunkspy r2 libdl.so链接器 objdump shellcode 看到了更多、从 kamet 了解了 AST->LLVM::Value 树转化、地址和类型处理
从逆波兰了解了优先序重排和栈,从S-expr嵌套列懂了局部变量=栈位置 及()=>{} 闭包是程序+变量数据的实质;从无数次重写中明白了编程的实质是表达思维,多余代码只是环境限制
从函参返memo 了解了递归缓存与伪递归(递推) ;从深先树遍历了解了 DFS/BFS 途径/可达搜索,以及有更实际的 Dijstra/A*/JPS
从前缀树Trie+failPath=AC的关系了解了状态(自动)机、KMP的Map状数组了解了OI的一些惯用法,试出了1行的JS后缀合并树,从B站的一些视频明白了算法有许多讲法,之间差异也很大
从自顶向下,伪(左)递归转循环、去除流回退(peek/backtrack)到 LL(预判=k) 机; 到自底向上yacc/Simp?LR/LALR ,我不做无意义的打断优化;不把大状态机+报错,嵌套表等小儿科当编译原理。 别只用切碎的程序状态解释实现目的,复辟冯诺时代编译-汇编序列模板
以前很讨厌设计模式,现在会区分 Visitor,Delegate(T-by-obj,"proxy"),Observer 等真正的设计模式和
Chain(责任链),Adapter,Singleton(lazy),Builder(return-this链),Factory(选择子类new),抽象Factory(选中子类构造器), 等假装的设计模式和
Iterator,Context,Prototype(链上级虚表),Filter, SvcLocer(Lazy ctx+调用cache),
State(废话,啥函数不看this val),模板(废话,OOP封装继承是为啥的),策略(废话,OOP接口多态是吃白饭的),Command(函数闭包) 等非设计模式
明白 FP与OOP 间的异同,闭包即SAM对象,对象即 send(fname,*arg) 闭包
以前只会Java 甚至AWT/swing/net 都记不住,现在 JS/TS,Python,Kt 都是常用语言,也会 Ruby,C#/Powersh, C,C++,Scala/Hs ,我会在JS和Python 间按API和UI选择写脚本处理工具
以前害怕项目build定义,现在讨厌
以前觉得真理是系统性的,现在觉得真理也可以有开头和前言
以前相信教条规范,现在明白教条和权威也有局限性(比如不会自动化重构),需要择优
以前相信web是菜鸡聚集地,现在明白有人在写的 和你不是一个JavaScript
以前相信原理是极少数人在学的,现在明白任何人做同样的事情,也有选择与目标
以前觉得C难,现在知道C难点,以及导致难点的历史目标与时代局限性
以前只能看到app"前后端/桌面" ”小工具“的一亩三分地,现在明白嵌入式、各框架游戏、专业软件 比它们更有趣
以前尽量严谨,现在废话要简写,突出顺序和重点
我学到的最终不是知识,而是简化知识的方法
我编写的最后不剩代码,只是代码后的目的
以前觉得组合器是特殊的,现在只是利用设计DSL
以前想长就是好、快,现在长就是烂、空洞
以前想多就是系统性,现在多就是冗余、套版
以前觉得CSS盒模型是坏的,现在发现它比其它平台更适合而贴切,言词不多,贵在扩展
以前想代码生成是大的,现在FileTree+列表处理 随手就能做
以前想反射是难的,现在发现只是名词太长,
class{val/*field*/;@WTF fun} 没啥不好区别,换框架看文档对个名词就成以前解析器是不会的,现在提取前缀,组装返回值,预过滤行号流、记录span词区间 ,根本不需要分词器或任何工具和严谨
以前不知道UI框架里线程做什么,被 web 的 timers,worker post/onMessage 等 0阻塞API 矫正了,原来Thread级阻塞去 event loop 就是检测手势,查找调度Task 的,而并发异常只会随机出现; 队列是数据,随便在哪 add pop 阻塞poll;懂了为啥想放几音乐不能用for、想 fetch() 要暂断执行此函数 await 或.then(op)
以前没看到nav浏览栈是什么,被 web 的 PJAX 矫正了,原来可把生成View的数据保存pushState起来,也因此理解内存对象不都可序列化
以前不会HTTP和Cookie(服务端KV之K),现在只想大的API绑定,忽略无关数据交换的细节 httpd((req,res)=>res.write
以前不懂 SQL 和ORM,现在我只当它是严谨化加速列表处理过滤,以及事务和JOIN
以前连分页都觉得好神奇,现在
a.chunk(2)=[a.slice(0,0+2), a.slice(2,2+.. 和类似的列表处理写过无数;各种控件 tab,slideshow,fab,drawer,drop-upload 也早不稀奇,反而觉得还不够可配置#PLT ”动态语言“ ”脚本“确实不严谨,但class{}大定义也是从小程序组合起来的,只在框架内思考会失去对框架本身的认知、放弃优化框架的可能。 例如反射只是元编程的运行时形式,«Ruby元编程»是本好书;编译期和运行期差别只在有无变量、编译解释只在有无缓存,代码生成是编译期计算。 强弱类型在于兼容和转换的显式隐式,类型推导可以让用户少手写编译期信息,类型检查能让人和机器少犯傻。 语法和语言工具用于表达,写法只有缘由,没有条条框框。
JS和CSS,JSON,YAML,HTML ,都是嵌套结构构成,只是人赋予了JS执行序、计算变量,而只让JSON解释为构造1数据--prettify又怎不是1数据 ;结构相同语法不同、数据相同命名不同,等于完全相同
效果相同类型不同 —泛型和 map,filter 函数正是如此
好的优化能让人知道。而不 prof, %timeit 怎么知道性能快慢
多观察或许就可预测,可预测或许就可控制。 被带偏或试着控制,各有好处,但没有理解缘故就只能被动模仿,束手束脚害怕出错。
就好像一个未良好复用的动作,能少一行代码,却会造就整个软件、更多软件里无数多余代码、不完善功能、高学习难度
以前不知模板和 animation/queue 是什么、粒子是为什么,现在我自己做过
以前不会二进制,现在 Read/Writer 流都被我抛了,我想0copy直接mmap()绑定,不停留在”Int=4x Byte“
以前不会画画,现在 arc rect fill stroke % alpha hsv(hsl) 一把梭,视频和参动之画也绘,了解向量计算=角度无关位置=(A-B)0点角,也认识到”非主流“ GLSL 打散绘制的方便
以前不知道值类型(全复制)、位置引用和惰性计算/编译期宏,和许多函数式Type术语,现在大致分清了
以前不懂编译原理,现在从 ASM chunkspy r2 libdl.so链接器 objdump shellcode 看到了更多、从 kamet 了解了 AST->LLVM::Value 树转化、地址和类型处理
从逆波兰了解了优先序重排和栈,从S-expr嵌套列懂了局部变量=栈位置 及()=>{} 闭包是程序+变量数据的实质;从无数次重写中明白了编程的实质是表达思维,多余代码只是环境限制
从函参返memo 了解了递归缓存与伪递归(递推) ;从深先树遍历了解了 DFS/BFS 途径/可达搜索,以及有更实际的 Dijstra/A*/JPS
从前缀树Trie+failPath=AC的关系了解了状态(自动)机、KMP的Map状数组了解了OI的一些惯用法,试出了1行的JS后缀合并树,从B站的一些视频明白了算法有许多讲法,之间差异也很大
从自顶向下,伪(左)递归转循环、去除流回退(peek/backtrack)到 LL(预判=k) 机; 到自底向上yacc/Simp?LR/LALR ,我不做无意义的打断优化;不把大状态机+报错,嵌套表等小儿科当编译原理。 别只用切碎的程序状态解释实现目的,复辟冯诺时代编译-汇编序列模板
以前很讨厌设计模式,现在会区分 Visitor,Delegate(T-by-obj,"proxy"),Observer 等真正的设计模式和
Chain(责任链),Adapter,Singleton(lazy),Builder(return-this链),Factory(选择子类new),抽象Factory(选中子类构造器), 等假装的设计模式和
Iterator,Context,Prototype(链上级虚表),Filter, SvcLocer(Lazy ctx+调用cache),
State(废话,啥函数不看this val),模板(废话,OOP封装继承是为啥的),策略(废话,OOP接口多态是吃白饭的),Command(函数闭包) 等非设计模式
明白 FP与OOP 间的异同,闭包即SAM对象,对象即 send(fname,*arg) 闭包
以前只会Java 甚至AWT/swing/net 都记不住,现在 JS/TS,Python,Kt 都是常用语言,也会 Ruby,C#/Powersh, C,C++,Scala/Hs ,我会在JS和Python 间按API和UI选择写脚本处理工具
以前害怕项目build定义,现在讨厌
以前觉得真理是系统性的,现在觉得真理也可以有开头和前言
以前相信教条规范,现在明白教条和权威也有局限性(比如不会自动化重构),需要择优
以前相信web是菜鸡聚集地,现在明白有人在写的 和你不是一个JavaScript
以前相信原理是极少数人在学的,现在明白任何人做同样的事情,也有选择与目标
以前觉得C难,现在知道C难点,以及导致难点的历史目标与时代局限性
以前只能看到app"前后端/桌面" ”小工具“的一亩三分地,现在明白嵌入式、各框架游戏、专业软件 比它们更有趣
以前尽量严谨,现在废话要简写,突出顺序和重点
我学到的最终不是知识,而是简化知识的方法
我编写的最后不剩代码,只是代码后的目的
Telegram
duangsuse::Echo
#cplusplus #sql join 是按AB共同键的相等性过滤。中间三角是交、并、并-交
总之 join B on A.k=B.k 左交就是A+B查询,加 where B.key=NULL(仅选B没有的部分) 就是 A-B
所以L/R/inner/fullouter join 的复杂度是 O(nn)这种 for(a)for(b)
此外SQL 还有GROUP BY HAVING(=where)
总之 join B on A.k=B.k 左交就是A+B查询,加 where B.key=NULL(仅选B没有的部分) 就是 A-B
所以L/R/inner/fullouter join 的复杂度是 O(nn)这种 for(a)for(b)
此外SQL 还有GROUP BY HAVING(=where)
duangsuse::Echo
👆结束。 王银的营销确实值得我们学习,他也是一个成功人士,在我看来他是比较吃香又能帮到一些人的;如果不是讨厌他对技术的随便,以及没有清华肄业的头衔,我或许想这样😂
LL 是什么呢,我举道『编译原理(指模式匹配机)』题 (大写代表规则=非终结符)
在分词器即”不需要stack“的N/DFA状态机走完一步action,就拿到1token,喂给解析器;所有喂完没报错,应该就组织出了语法树(没错,不能用调用栈组织AST)
abc|adc 即 S=aX X=bc|dc
每LL(k)规则是1个或几个(规则/词条 序列);当规则前全部词条匹配,看
左递归 A=Bc B=a|Bx|By 可转为 A=ac|aXc X=x|y|xX|yX ;设想下没有 PEG 文法这是怎么执行的 😂 对了,PEG 可不是 CFG(无上下文,仅状态号)文法啊
一般递归下降读 r(op|uffl)e 括号里就是先试匹配,不能合并前缀,如果遇到 r(oom|oot) 这种(谁会写啊)的语法就不高性能了,所以将其LL(正向推导,LR是反向)化
手写递归的局限性在于 strP("abc") 在绝对前置有a 时无法取到 strP("bc") ,我们必须让输入流支持”回溯“=”peek“(不向前走),让 strP 重复比对流前缀 才能完成解析,如果能则称为 predictive(预测性) parsing ,而取消调用栈,手动while执行和st=转移(st); 但这里st是栈保存的 , 就变成正经 LL 😂
LL1 能解决前缀合并,LL1+左递归 还能取代逆波兰做优先级解析呢!(其实和 split('+').map( split('*') ).aryOrSingle 这种一样原理... 除了计算栈没一正经的,行为艺术。我还见过想比较相邻算符决定深浅,碰到 +*-^ 直接让(*)把右参抢了.. 枉费 Op(+,x0,rec(x1,*)) : rec(Op(*,x0,x1),+) 的写一大堆,民科了属于是
打表:
N\T|a b c d
S|1 0 0
bc|0 1 2 3
dc|0 0 4
LL语法G(k=1) 仅当 A → α | β 俩是独立规则:
ab不转为相同前缀. 例如 a=xy b=c1 c=xz 就不行
ab最多一项是"".
若β → t, then α does not derive any string beginning with a terminal in FOLLOW(A). a不转为 a的任何后项:单项
(妈的跟看天书一般,好几个符号没定义就使用,勉强猜了些
是不是LL(1):
S=SbA|aA
B=Sb
A=Bc
内联 S=aA|SbA A=Sbc
S=aSbc|Sba
有 S=Sa|Sb 是左递归,这不是,因此有可能
不存在S=A|B; A=ab B=ac —首/随符集含交点
不存在 A=a$a —首终结符有交点, 若规则含末尾匹配
S=aASb
A=aS|$
First(S ->aAS)={a} First(S ->b)={b}
First(A ->bA)={b} First(A ->ε)={ε} S的A内规则的first集 都不相交,满足条件2
(3) 由于ε∈First(A ->ε) Follow(A)=First(S)={a,b} Follow(A) ∩ First(A->bA) ) ≠ φ
作者:Joan Tsao
https://zhuanlan.zhihu.com/p/31301086 我是放弃了,给大家一个25赞大佬
感觉我自认的标签或许都该加上那么几个字:
”不纯的函数式“ ”不分词的编译原理“ ”不靠模式匹配的元编程“ ”看看就好的图形学“ ”不写代码的编程“(但写了一定要优雅
在分词器即”不需要stack“的N/DFA状态机走完一步action,就拿到1token,喂给解析器;所有喂完没报错,应该就组织出了语法树(没错,不能用调用栈组织AST)
tok=[],i=0;比如 ab ad ,首先匹配 a,它按 b|d 决策后 push 新规则
st = [S] // S 是根语法. LL(1)匹配
while((it=st.top) !=null)
if(it !in G)//终结符
if(t==tok[i++])pop(); //匹配一项
else 回退或error;
else //重写为规则
{pop(); push(G[it](tok[i]/*looKahead=1*/) ) }
abc|adc 即 S=aX X=bc|dc
每LL(k)规则是1个或几个(规则/词条 序列);当规则前全部词条匹配,看
G[it](tok[i])试着转移到新*序列*。左递归 A=Bc B=a|Bx|By 可转为 A=ac|aXc X=x|y|xX|yX ;设想下没有 PEG 文法这是怎么执行的 😂 对了,PEG 可不是 CFG(无上下文,仅状态号)文法啊
一般递归下降读 r(op|uffl)e 括号里就是先试匹配,不能合并前缀,如果遇到 r(oom|oot) 这种(谁会写啊)的语法就不高性能了,所以将其LL(正向推导,LR是反向)化
手写递归的局限性在于 strP("abc") 在绝对前置有a 时无法取到 strP("bc") ,我们必须让输入流支持”回溯“=”peek“(不向前走),让 strP 重复比对流前缀 才能完成解析,如果能则称为 predictive(预测性) parsing ,而取消调用栈,手动while执行和st=转移(st); 但这里st是栈保存的 , 就变成正经 LL 😂
LL1 能解决前缀合并,LL1+左递归 还能取代逆波兰做优先级解析呢!(其实和 split('+').map( split('*') ).aryOrSingle 这种一样原理... 除了计算栈没一正经的,行为艺术。我还见过想比较相邻算符决定深浅,碰到 +*-^ 直接让(*)把右参抢了.. 枉费 Op(+,x0,rec(x1,*)) : rec(Op(*,x0,x1),+) 的写一大堆,民科了属于是
打表:
N\T|a b c d
S|1 0 0
bc|0 1 2 3
dc|0 0 4
LL语法G(k=1) 仅当 A → α | β 俩是独立规则:
ab不转为相同前缀. 例如 a=xy b=c1 c=xz 就不行
ab最多一项是"".
若β → t, then α does not derive any string beginning with a terminal in FOLLOW(A). a不转为 a的任何后项:单项
(妈的跟看天书一般,好几个符号没定义就使用,勉强猜了些
是不是LL(1):
S=SbA|aA
B=Sb
A=Bc
内联 S=aA|SbA A=Sbc
S=aSbc|Sba
有 S=Sa|Sb 是左递归,这不是,因此有可能
不存在S=A|B; A=ab B=ac —首/随符集含交点
不存在 A=a$a —首终结符有交点, 若规则含末尾匹配
S=aASb
A=aS|$
First(S ->aAS)={a} First(S ->b)={b}
First(A ->bA)={b} First(A ->ε)={ε} S的A内规则的first集 都不相交,满足条件2
(3) 由于ε∈First(A ->ε) Follow(A)=First(S)={a,b} Follow(A) ∩ First(A->bA) ) ≠ φ
作者:Joan Tsao
https://zhuanlan.zhihu.com/p/31301086 我是放弃了,给大家一个25赞大佬
感觉我自认的标签或许都该加上那么几个字:
”不纯的函数式“ ”不分词的编译原理“ ”不靠模式匹配的元编程“ ”看看就好的图形学“ ”不写代码的编程“(但写了一定要优雅
知乎专栏
语法分析 | LL(1) 分析算法
在前面我们已经说过,LL(1) 也是属于自顶向下分析算法中的一种。 LL(1) 分析算法从左(L)向右读入程序,最左(L)推导,采用一个(1)前看符号分析高效(线性时间)错误定位和诊断信息准确有很多开源或商业的生成工具AN…
duangsuse::Echo pinned «#dev 现在的许多傲慢消失了,感觉好像啥也没专门去学一样😌 以前觉得组合器是特殊的,现在只是利用设计DSL 以前想长就是好、快,现在长就是烂、空洞 以前想多就是系统性,现在多就是冗余、套版 以前觉得CSS盒模型是坏的,现在发现它比其它平台更适合而贴切,言词不多,贵在扩展 以前想代码生成是大的,现在FileTree+列表处理 随手就能做 以前想反射是难的,现在发现只是名词太长,class{val/*field*/;@WTF fun} 没啥不好区别,换框架看文档对个名词就成 以前解析器是不会的,现在提取…»
duangsuse::Echo
LL 是什么呢,我举道『编译原理(指模式匹配机)』题 (大写代表规则=非终结符) 在分词器即”不需要stack“的N/DFA状态机走完一步action,就拿到1token,喂给解析器;所有喂完没报错,应该就组织出了语法树(没错,不能用调用栈组织AST) tok=[],i=0; st = [S] // S 是根语法. LL(1)匹配 while((it=st.top) !=null) if(it !in G)//终结符 if(t==tok[i++])pop(); //匹配一项 else 回退或error;…
王垠对CS科班编译原理侧重点的质疑是对的(然而并没暖用,就像教育也不只是为培育人才一样;你没法让所有人相信简单是对的
倒不如说是老师举例和对照的方法不好,LL 这样入门级的程序编号化还是比较好教的,可是他们一举例就是很生硬,非常莫名其妙的常量 也不先说目标,上来就“贴代码”、贴做的图(也不简洁、记流水帐),让人很迷糊:
③ T → FT ' FIRST ( T ) = { ( id }
④ T' → *FT ' |ε FIRST ( T' ) = {* ε }
⑤ F → (E)|id FIRST ( F ) = { ( id }
……
以下的内容全都是流水帐,没有任何解释和其他等价形式,学起来非常麻烦
https://zhuanlan.zhihu.com/p/70895051 这个人教的SSA就很好,公共子表达式消除CSE、常量折叠、死代码消除 都是SSA(执行序节点图)的直接优点,他对指令选择的解释”烧水,做菜,切菜 顺序..“一点没有专业人士的架子,对基本块BB x=1; if(q){k=1; a=k+x} else a=c+d; 里前 a 相当于 x+1 和放大SSA BB范围 x=1; if(!q)goto B; k=1;a=k+1; .. 还有范围分析,就说得好实际
”最近在做一个 x86 到 x86 的 jit 编译器…… 中间表示一般有两种形式,树:[+a t1=[+b c] d] 或者展开的序列表示:t1 = b + c; a = t1 + d;
……
当追踪不了的时候只要按照最保守的范围进行优化就能保证程序正确性。同时这也可以用于程序静态分析,比如未初始化变量的分析。
数据流分析可以对各种数据进行分析,比如在变量有别名(比如指针)的时候,纯粹的数值分析就会有问题,因为你并不知道指针会指向哪儿,这个时候就可以对指针所指的目标做数据流分析,继而对对应的数值进行分析。“
他还解释了这里的SSA形状
-相同的名字不出现两遍(无重赋值
-每个节点下面(最多)只有两个节点
-父节点的值直接依赖子节点的值
的原因:具体的说每一行只能有两个输入变量和一个输出变量,也就是 z = x op y,从树表示到结果,我们只要先子节点的遍历整棵树,在每个节点上输出一行对应的操作语句就好了。
在语义阶段结束后程序就变成统一IR组:跳转基本块BB,有入出口、前后项,分析都在基本块
https://zhuanlan.zhihu.com/p/47099755 然后这个 #ce #reveng 反编译原理也非常好。 如果按执行的方式把 if(q) a; else b; 即
推荐 http://zneak.github.io/fcd/2016/11/25/revisiting-regions.html
Dom树是入口到某一BB 的必经点 -及这些的必经点在前 -构成的树 ;最简解O(nm) 是枚举+BFS ,最常是 Iterative(20行 O(nn) )
https://blog.csdn.net/Dong_HFUT/article/details/121375025 列了一大堆实现,L-T支配树构造法本身代码比Dij搜索长3倍, O(logn+M)
两点互有路称强联通,然后还有强联通子集(分量,=SCC),tarjan 法(N+节点数M) 就能求一点的集
https://security.tencent.com/index.php/blog/msg/112] CFG Flatten 是利用运行期switch派发器的方法混淆代码 🤔都是些基于 CFG(控制流图) 的东西,对正常编程而言其实优化分析都是虚的,代码写好才最重要,不过这些还挺有意思的,至少比把程序打散为编号强
高级的科班编译原理除了龙书还有虎书鲸书,但语言的设计不需要懂太多知识,王垠在前也怼过 CFG analysis ,确实这些对编程并不重要,不通用的工具做着还是容易的,但它们也是个领域啊
倒不如说是老师举例和对照的方法不好,LL 这样入门级的程序编号化还是比较好教的,可是他们一举例就是很生硬,非常莫名其妙的常量 也不先说目标,上来就“贴代码”、贴做的图(也不简洁、记流水帐),让人很迷糊:
③ T → FT ' FIRST ( T ) = { ( id }
④ T' → *FT ' |ε FIRST ( T' ) = {* ε }
⑤ F → (E)|id FIRST ( F ) = { ( id }
……
以下的内容全都是流水帐,没有任何解释和其他等价形式,学起来非常麻烦
https://zhuanlan.zhihu.com/p/70895051 这个人教的SSA就很好,公共子表达式消除CSE、常量折叠、死代码消除 都是SSA(执行序节点图)的直接优点,他对指令选择的解释”烧水,做菜,切菜 顺序..“一点没有专业人士的架子,对基本块BB x=1; if(q){k=1; a=k+x} else a=c+d; 里前 a 相当于 x+1 和放大SSA BB范围 x=1; if(!q)goto B; k=1;a=k+1; .. 还有范围分析,就说得好实际
”最近在做一个 x86 到 x86 的 jit 编译器…… 中间表示一般有两种形式,树:[+a t1=[+b c] d] 或者展开的序列表示:t1 = b + c; a = t1 + d;
……
当追踪不了的时候只要按照最保守的范围进行优化就能保证程序正确性。同时这也可以用于程序静态分析,比如未初始化变量的分析。
数据流分析可以对各种数据进行分析,比如在变量有别名(比如指针)的时候,纯粹的数值分析就会有问题,因为你并不知道指针会指向哪儿,这个时候就可以对指针所指的目标做数据流分析,继而对对应的数值进行分析。“
他还解释了这里的SSA形状
-相同的名字不出现两遍(无重赋值
-每个节点下面(最多)只有两个节点
-父节点的值直接依赖子节点的值
的原因:具体的说每一行只能有两个输入变量和一个输出变量,也就是 z = x op y,从树表示到结果,我们只要先子节点的遍历整棵树,在每个节点上输出一行对应的操作语句就好了。
在语义阶段结束后程序就变成统一IR组:跳转基本块BB,有入出口、前后项,分析都在基本块
https://zhuanlan.zhihu.com/p/47099755 然后这个 #ce #reveng 反编译原理也非常好。 如果按执行的方式把 if(q) a; else b; 即
q ?not B; a; ?jmp C; B:b C: 切BB再反编译规约,(符号执行)只能得到q为true 或false 的语法树,较好的方法就是 Node Split ,即对两个枝都继续,匹配出 if 结构再规约出表达式(纯符号执行估计不行.. 嵌套几个if就会爆炸吧(引文 Handling Irreducible Loops),此外 DJ-graph (支配前驱|可能前驱) 的BB切分也比较好推荐 http://zneak.github.io/fcd/2016/11/25/revisiting-regions.html
Dom树是入口到某一BB 的必经点 -及这些的必经点在前 -构成的树 ;最简解O(nm) 是枚举+BFS ,最常是 Iterative(20行 O(nn) )
https://blog.csdn.net/Dong_HFUT/article/details/121375025 列了一大堆实现,L-T支配树构造法本身代码比Dij搜索长3倍, O(logn+M)
两点互有路称强联通,然后还有强联通子集(分量,=SCC),tarjan 法(N+节点数M) 就能求一点的集
https://security.tencent.com/index.php/blog/msg/112] CFG Flatten 是利用运行期switch派发器的方法混淆代码 🤔都是些基于 CFG(控制流图) 的东西,对正常编程而言其实优化分析都是虚的,代码写好才最重要,不过这些还挺有意思的,至少比把程序打散为编号强
高级的科班编译原理除了龙书还有虎书鲸书,但语言的设计不需要懂太多知识,王垠在前也怼过 CFG analysis ,确实这些对编程并不重要,不通用的工具做着还是容易的,但它们也是个领域啊
知乎专栏
编译器优化了什么
[经 @污博士 提醒,我决定把题目改了…]最近在做一个 x86 到 x86 的 jit 编译器,因之前大多接触的是编译器前端知识,所以重新学习了一遍中后端原理,做个整理,也欢迎交流拍砖。 这里不打算涉及具体的工程细节,…
但是像这个就很离谱了(#zhihu by Gene,#5)。
图1在说 F=(Lit val)|'('E')'
|(E T |E+T)|(T F|T*F) —加,乘
他还特意写成 E=E1+T ?这是什么意思(分支.语法属性写很长
语法属性=综合a+b|继承{let a=1; a+1}-上下文 ;这种废话根本是因为没有良好区分 text 和 AST/IR form 才导致的,因为 AST 级就是语言内数据了,谁会用写字作画的方法描述语义?直接上代码跑起来了,还有空讨区分继承和综合eval()? Visitor后序遍历,求子项前置的步骤不叫继承?
图2 就是继承,只是这个人和 ANTLR 一样,都没好好分清文法和语义需求值的关系,逗号是不存在的,它只是种校验,煞有介事把它作为一个居中节点... 链表都用了,还嫌求值不够乱吗?
#zhihu 许阳 的LL,LR 里写:
“ 前两天有朋友评论,工业界编译器在使用什么分析器。这个问题并不想看起来那么简单,虽然我们有许多parser generator,如yacc menhir anltr,但往往它们只支持某一种分析算法(当然,这对于非编译向程序是够用的)。实际使用时,我们可能会想要结合LL与LR:得到一个有算法层次的parser。这意味着我们很可能不能借助parser generator。
至于原因:一般,运算符的复杂优先级关系会需要LR文法,但high level的语法结构往往只需要LL文法,前面提到,LL文法有一些好处,尤其对于错误信息的报告。一门语言的语法设计,会遵循类似歧义的层次,high level很难有歧义。”
ANTLR不够用?然而他在评论区仍说LL1就够了,真是舍本逐末的编译原理;靠这样的做法, 你还想做编译器?其实不做 parser 都能写 codegen 了,编译就是形式扁平化 ,非得带这种,那一 toy语言不分分种变1年开发大项目!
一些人中文都嗦不利索就开始想计算机语言, 难道不能用递归下降优化的吗?好像正常前缀提取return 或逆波兰有问题一样,就不想想别的做法。
只知状态机不知正经编程手段,又不是为学习目的,让我想到华为方舟IR 里人说那个2k行代码的手写 parser... 我类个去, 这都2022年了,编译目标都是汇编了,还在手写汇编解释器呢!有处理Linux源码的性能,也没编译它的资格啊,你手写C语法状态表写猴年马月去
图1在说 F=(Lit val)|'('E')'
|(E T |E+T)|(T F|T*F) —加,乘
他还特意写成 E=E1+T ?这是什么意思(分支.语法属性写很长
语法属性=综合a+b|继承{let a=1; a+1}-上下文 ;这种废话根本是因为没有良好区分 text 和 AST/IR form 才导致的,因为 AST 级就是语言内数据了,谁会用写字作画的方法描述语义?直接上代码跑起来了,还有空讨区分继承和综合eval()? Visitor后序遍历,求子项前置的步骤不叫继承?
图2 就是继承,只是这个人和 ANTLR 一样,都没好好分清文法和语义需求值的关系,逗号是不存在的,它只是种校验,煞有介事把它作为一个居中节点... 链表都用了,还嫌求值不够乱吗?
#zhihu 许阳 的LL,LR 里写:
“ 前两天有朋友评论,工业界编译器在使用什么分析器。这个问题并不想看起来那么简单,虽然我们有许多parser generator,如yacc menhir anltr,但往往它们只支持某一种分析算法(当然,这对于非编译向程序是够用的)。实际使用时,我们可能会想要结合LL与LR:得到一个有算法层次的parser。这意味着我们很可能不能借助parser generator。
至于原因:一般,运算符的复杂优先级关系会需要LR文法,但high level的语法结构往往只需要LL文法,前面提到,LL文法有一些好处,尤其对于错误信息的报告。一门语言的语法设计,会遵循类似歧义的层次,high level很难有歧义。”
ANTLR不够用?然而他在评论区仍说LL1就够了,真是舍本逐末的编译原理;靠这样的做法, 你还想做编译器?其实不做 parser 都能写 codegen 了,编译就是形式扁平化 ,非得带这种,那一 toy语言不分分种变1年开发大项目!
一些人中文都嗦不利索就开始想计算机语言, 难道不能用递归下降优化的吗?好像正常前缀提取return 或逆波兰有问题一样,就不想想别的做法。
只知状态机不知正经编程手段,又不是为学习目的,让我想到华为方舟IR 里人说那个2k行代码的手写 parser... 我类个去, 这都2022年了,编译目标都是汇编了,还在手写汇编解释器呢!有处理Linux源码的性能,也没编译它的资格啊,你手写C语法状态表写猴年马月去