duangsuse::Echo
711 subscribers
4.24K photos
127 videos
583 files
6.44K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
😂谜题:基于微积分Int[+-Inf]的FT叫连续傅里叶,基于N分圆数组*输入 Sum[0~n]的叫DFT离散傅里叶,如果有dt步长采样 但限于1/dt (倒数.即输入buf.N)次分圆
Anonymous Poll
33%
叫连续
0%
叫离散
33%
离散但不完全
0%
连续但不完全
33%
🤪
duangsuse::Echo
😂谜题:基于微积分Int[+-Inf]的FT叫连续傅里叶,基于N分圆数组*输入 Sum[0~n]的叫DFT离散傅里叶,如果有dt步长采样 但限于1/dt (倒数.即输入buf.N)次分圆
对程序员的直觉,数学连续意味着不可做有穷计算,就像空中楼阁,但基于 t=0~1step dt 却是“连续”的,因为dt可无限取精,即便计算有穷 🤪这也叫连续?直接用编程概念定义反而更严谨,你直接税把 dt 改 Array(1/dt) 且 t 变 i/N 不就行了,这不同样的事么?

这就叫缓存fn(t=0~1)计算就变离散了,公式都不需要,甚至通过 a[n(a)*t>>0] 能一边连续一边离散,就API是数值函数还是buffer,但不像公式"非此即彼”。 我甚至不需要改博文,给这个等价关系贴上大家就知道咋重构了,何须独立代码,比分出N个公式或不同时给[正逆FT式]好。 那么多*FT 我刚以为是完全不同的呢 😓我看不懂大Sigma(Sum)。DFT就能兼容f(t=0~1)的曲线

吐槽:数学公式带点左标大括你都看不懂其实我是懒得看他们的迭代记法nNmnjn和矩阵下标的比我更魔怔
大写单字我都不敢乱用,一定要有易变性区别,而nN在我这都是计数 i才是迭代,碰到这种公式我可无法代入语义,索性没看他们给计算机准备的公式……😶反正无前提的符号都是一团乱麻。
也不能怪数学,Sum[i=0~n]a[i] 虽然i是整数,但数学家眼里那么多斜体花体拉丁希腊的古文了,非要拿单1命名代表类型,碰到整数下标又成nm了,这一定是数学语言的超强多态常用+严谨性造成的(草
不过一会pq一会ab nm 又ijk的真的就无语,线是ft矩阵是xi.. Xk,单独是a,结对是pq…还真挺睿智,它知道符号语义有重叠,那么为啥n能同时是整数和小数?除了 100^-1 ,数组下标也支持n=1.1 代表 a[1]+.1*a[2] 🤪? 它懂规避重叠,但不懂如何拥抱多义性,以及数学分支的符集冲突,于是规避着规避着就一边乱眼一边妥协。但按ABCs里连续分配变量真的傻逼,英文不配有姓名吗

数学界《我知道不严谨,所以θρλ有特定区间性质,但是fxXFnNnmabAB这些经常混用,为了严谨抛弃拉丁字母好了😱🙄
《我想整成古风白月光,结果因为传达能力太差,严谨多义混着来,变成胡风了》

其实连续和离散在这里只是针对 圈C=2pi*频k*t 和f(t)采样,要么f可分,要么C可分。 连续就分f,离散就分C,而 谱k=Vec2(l=振幅,r=相位)
然而,API的f连续与否,对电脑不重要,f肯定是要先采样[]的,还不如直接把C采样了,两个数据都是[],处理窗口(时延)=1024采样点,于是算频谱的也从JS表达式变为“多项式”

在我不知道这回事时,就定义好了函数
(nK个频,1/dt次割圆)*/切分=(f, N=1/c.dt>>0)=>newA(N, i=>f(i/N))
并且标明了e^-2pi*k 可以视律(k,f)用量缓存,但只处理1个路径,没注意到有积分多k🙈

那时没建立k=钢琴键 的理解,因为Xe的版本是 Cn(i,fn) i in 1~gen ,gen是世代的意思……难道不是神经网络专有的 C应是圆圈的缩写,转速=频率,然而Xe当时没给注释🌑 只有几个C前缀和frame(t)->动量,振幅降序

不过这次在20行内融合声音和路径的FT,解释了3b1b的解释,我还是初次讲数学…以前都是冷门知识🌕
不管过程多曲折,只要最终我的文章优雅,就无所谓啦
duangsuse::Echo
对程序员的直觉,数学连续意味着不可做有穷计算,就像空中楼阁,但基于 t=0~1step dt 却是“连续”的,因为dt可无限取精,即便计算有穷 🤪这也叫连续?直接用编程概念定义反而更严谨,你直接税把 dt 改 Array(1/dt) 且 t 变 i/N 不就行了,这不同样的事么? 这就叫缓存fn(t=0~1)计算就变离散了,公式都不需要,甚至通过 a[n(a)*t>>0] 能一边连续一边离散,就API是数值函数还是buffer,但不像公式"非此即彼”。 我甚至不需要改博文,给这个等价关系贴上大家就知道咋…
找到公式的许多版本还是一个讲物理?的最准确,百科上面那是啥啊

就没有一个能完美符合我预期的数学式, Xk=Sum[n]xn e^-i2pi*t*k *(n/N) 算是较好的,其它有人ijkfF瞎混用,然而Xk-xn是什么?输入输出?

像Freq,Fn 都是提取了一部分语义,但它忽视冲突了。 F作为freq(=k)的简写和信号处理的f(t)就不能乱出现了,它已经因遮盖“死”掉了,写公式的人只看到侧面就在用,不会回看写好了的公式,不发现问题。🤷‍♂️

要我怎么写呢,我才不用希腊字母和FWX这些, Frq[k]=Sum[t=1~n](t/n)xt C^-2pi*kt
C=(cos,sin)*√-1 .. 好吧数学里e是"上标函数",不是次数🌚或Math.E或科学计数法 《e多义性》

用的少名字就多写点🌝,啥都单字,碰到“操作符”pi cos又多字,好像你会在公式里引用Frq[k]一样! 恕我直言,数学没那个资格。ipy尽管强大,不支持跑Latex,Matlab不开放web
平时手算几个采样点就够无聊,真在纸上“正推”用算法🤪,那既然不用单字干嘛? 如果要用,你想优化什么边界情况?
我只是想知道算法怎么写,凭什么听数学名词概念? 那些博文也没给比FT更优的公式(拉普拉斯这些要另看),甚至连续离散的关系也没说清,有的只给了正分析,没给反还原…… 这种数学看它真是给工作增添负担,1D输入不用虚数y ,我还以为是怎样,早想到这个🌑
一些名词意义就less,“任何数乘倒数=1” 表示成 1/n*n=n*1/n=1 ,倒数表示成 /n *n 不就方便了,还多项式,算法还多项式时间,概念模型没有 尽是小定义废话,直接说第一层(+)第二层(*)形如1a+2b^N+... N固定,非”联系“变量系数,那不就向量/矩阵点乘来算吗,线性代数。 基础不过关,一句话能引入的写几百篇文造一大堆词,抽象空泛实践贫弱,凑页数呢。数学家居然依靠Matlab独家,社会上数学出去做程序员50w的成见哪来的呢,我是受不了什么下标,list.get 就是取,方括号就不一样,不是上下标。记法语义分不清、嵌套不会抽提不善。计算机代数可不需要草稿纸和“简写法”

数学混乱就是因为他们只想「规律」,没认识规律的多模式重复和嵌套与真正的“类型-操作”多义,它只推一遍,只看一个值,当然认识不到作用域和子式的重要,认识不到冲突和多义是不可怕的;数学下标内标方括号看起来很丑,然而一些人也不懂多def几个式子,因为“定义新运算”可是伟大的数学家才能做,你只配援引的事!他们嘴上没说,但风格处处如此, 因为数学语言和变常量/算符集包容万物,上下标多义严重 左内标风格混乱,它是稍稍「不规范」就整体崩盘的脆弱仅一行式语言,而作者们既不懂中文也不懂英文,无法在式外填补其空缺。

你看工程,他们照本宣科爱乱改符号 有的只知其一。 你看理论,他们公式简洁但只有公式,别的啥都不提。
你怎么用?只能用各种既有算法库,动辄几千行,他们不懂新语法和元编程,有人甚至vec这些算式复用基础都莫得,好比数学没有正负号🌚
都不能直观看出公式和现实的联系,一个滤波器能压缩图片、分析结果传别算法,在他们的文章只有包涵万物但鬼用没有的公式,让人“移植”到JS都费劲。

我编程是基于脑中模拟边界情况的(比如y=fx, 我假设y是纵向升降来支持+-,用区间理解x缩=放),如果不能合理解释就只能做数学等式的那种重构,也背不住,就很无趣(电脑也能干,譬如删所有'\n')
人家提供的公式n/N Xx有问题吗?从数学的约定俗成当然OK,但我不接受大写X不是另一个函数输入的情况(?这就是所谓的大写不易变 或有物理性
当执行其反函数,就不懂xX是啥了(X=FrqX,x=TimeY )..在几个符号编码坐标系信息,大可不必,plot波形(tx轴)和频谱(kl)够了

那我不能灵活一点兼容这个写法? 前提:我不需要看那么多文章就能搞懂,然而我读这20多篇时概念就开始混乱了,他们没一个人确信地告诉我"公式的结果是什么,和频谱何干,能做频通滤波-咋反变换" “k,t f(t)区间是啥” "xn输入怎么对应到 sinT+sin1.2T" 这种细节,也没

https://pythonnumericalmethods.berkeley.edu/notebooks/chapter24.02-Discrete-Fourier-Transform.html 这么好的图示和符号表,这样我至少能对一下模型 不会误解频幅次序

当你需要遍历1至N遍才能搞懂符号有何区间和物理意义,通过其重复出现位置;公式就没有字面意义了
无公式用不了,那你直接贴公式,好比按钮全空白的程序,谁会啊。 #statement

看的许多文章贴的式和图完全是鸡同鸭讲,图例也莫得 代码也不plot,就一个“优美的图形”和“简洁的代码”“严谨的公式”,你是艺术还是科学?真希望我能懂,来好好纠正下他们的错误表达。
其实这也就是个AB问题-能修复知识传达的误差,理解能力强,能解决自己。能不带误差统一高效传递,整理能力强,也能解决自己,此外还有感点兴趣的人、被认为愚钝的人🤷‍♂️ 如果app收发慢,八成是怪服务端和表示层,两成是用户真不配。工程创意哪来阶层,

如果你能把易误点的"思考结果"marshal封送给人,低IQ也能写出好东西,他不会想也能load结果。很多工程师的智商根本不低,就是害怕白象。
要是这些都好懂,还害怕没有免费音频工具用?一个个文档写得挺精致,API连信号处理最开始就是函数加减乘除都忘了,整Gain,H/L/Band-PF 这些“可配置”.. 还是太理论保守
#bilibili #security #china #net #Android 跟踪链接真的太烦了,不要相信任何“客户端”
https://b23.tv/aht___R 这种短链接带有追踪参数的,访问会302转到
&share_medium=android
&share_plat=android
&share_session_id=xxx-xx..
&share_source=COPY
&share_tag=s_i
&timestamp=1643807827
&unique_k=___
b站员工应该能在后台看到你的b站账号是谁,和通过这个链接点进去的有哪些人——
包括ip、账号(如果已经登录)、设备(浏览器指纹、设备型号等)、实名信息了。

https://b23.tv/BV1HP4y1A7cp 这样的才行
除非b23.tv后面跟的是av或者BV或者cv(文章),这些链接都是会被追踪的

通过微信公众号的复制链接功能也会带一些这种东西
而且微信的还是有用的和无用的夹杂在一起,没有经验的人就特别难处理
<现在客户端真是太狡猾了,都不知道有啥插件能拦,尤其是这种302后的

EDIT: Clean Share 能帮助清理剪贴板,但不支持短链接展平,魔还是魔
Forwarded from Deleted Account
https://t.me/Ralphonograph/4415 #bytedance 火山引擎自带"Vulkan" 浏览器

https://www.zhihu.com/question/514473758/answer/2334029041 #embedded #bilibili 全站第一 #zhihu
>什么叫用树莓派GPIO控制传感器容易烧掉,间接控制arduino就不容易烧掉? 不敢相信这是北邮电信的本科毕业生说的话。
“ 我解释一下吧:不同的单片机/MCU的IO脚,有的内置了上拉电阻,有的没有内置上拉电阻,这时候你需要外置一个上拉电阻。

你没有外接上拉电阻,所以你的树莓派会是被烧掉。不是传感器的质量问题,不是树莓派的质量问题,是北邮教学的质量问题。 这也不是什么高深的知识,是数字电路/微机原理/单片机原理/嵌入式编程/FPGA/物联网…任一课程的最基础知识。 不是说你烧了几个单片机之后你才发现这个单片机能用,那个单片机不能用。而是你应该在用它之前就看他的datasheet,再去画电路,再去编程。 这个感觉就是copy几个同学的

什么?南北邮电大学不专业?! 在南邮电见过一个rust大佬 🌚 这种层次也会有问题
(补充:不能只看统计,要讲理论。
duangsuse::Echo
#ce #plt 带步骤的四则计算器。递归逆波兰。22行代码 浅先=`;=;+ -;* / %` 流=(a, _s=[...a].values())=>()=>_s.next().value 切2D=(s,sp0,sp1)=>s.split(sp0).map(s=>s.split(sp1) ) {let t={},k; 切2D(浅先,';',' ').forEach((x,i)=>{for(k of x)t[k]=i}); 符深大=t} 符链=(s,l)=>{let a=[],add=x=>a.push(x)…
#plt #typing #kotlin #java 常见类型系统
从变量/参数的赋值兼容力(即子类成员量)升序:Any<任何类型<Nothing ,类型 T 比T?兼容力强,因其不含null,error():Nothing 可容任何类型,因后续计算中断。
对函数(Any)->R 连Any都能收,当然是 (Int)->R ,也即 Fun<in T, out R>,型参值 T=Int 反接受小的 T=Any。是消费-生产 in=?super,out=?extends "通配符",但可直接在写<T> 时指定仅在 in/out 位置,及 Array<out Int>
变量R在两个函数类型里唯一,都来自<T,R>型参列表,对R的每位置归一可推导出R再检查。可以发现,(T)->RFun<T,R> 都是从类型组合出类型的语法,
而检查期 1,"str" 和 Int,String 型变量都是类型(Type.can haveSubtype),a[0]=1 时问 Array<Any>.set(Int,Int) 是否 params.all{it,i-> it.can(arg[i].type) } ,像在执行一般检查每条算式,能提早报错并加速内存分配。

类型的强弱看隐式转换,动静即语法有无分出“编译期已知项”如class结构,类型推导能让静态类型更智能。

现在你已经知道「类型标记
」只是仅编译可知,用来 chk(AST.FCall): i=0~nArg; scope["print"].arg[i].can(call.arg[i].type )Type.can(Type):Bool 实例,正如 Python 的 from typing import TypeVarMap<K,V> 也是编译期调用,只是class 里创建型参<A,B,..>写法和函数前不同,不是”特殊语法“。
类型的交集&(有 where T:A,T:B "交集上限" )并集|(兼容操作支持俩类型,如 Any? vs Any,AST vs Call If For):子类&父类=子类, A&B=Nothing 、A|B=最近共同超类

+*类型即分支组合类型,与其配对的是不兼容子类型的系统,那些系统里元组/具名数据类型也算”类型“,但有些奇技(如typeclass函数重载)来解决OOP里有或没有的问题。
A&B 成员集小,兼容力比A或B大,但在严谨的OOP子类派生里,只有 A|B 被用于多态(函数覆盖:多义, Any null?),而交集参数仅混合接口。

感觉有点好笑,我一个看编程语言的,话却越来越少了。 以前很喜欢技术,但感觉越学知识越少了。
duangsuse::Echo
#zhihu #blog #math 傅里叶变换40行 - duangsuse的文章 - 知乎 https://zhuanlan.zhihu.com/p/464203132
同时兼容2D,波形的 总结应用我想好了.. 是一个可 Ctrl+Enter 改波形或 DownArrow 换SVG的“代码input”+重绘textarea code ,利用Proxy {}get 添加支持onchange的滑条,调整 N,nK,dK, wImg 这些参数为DFT变换和区间滤波
通过ab 波形+c(采样时长,音高) 这样也支持合成拨弦声;我也想到 Hachi-bapu 扒谱工具的UI怎么写了 #web

然而人脸识别扭曲的 newA(2N, i=> i-N 圆心滤镜还是要写…… 临门一脚了 😭
好像我讲的都不如做的高性能( DFT vs. dt=.001 FT ,重绘换像素序 vs. get/put ImageData 矩阵换序

然而啊,完成后还是没几个人看。都成常态了。 而且我20号之前要做一个纯代码音乐动画,虽然大体都想好了,.. 但很重要啊
#zhihu 你怎么看回形针PaperClip《和 10 个批评者一块视频聊天》? - duangsuse的回答 - 知乎
https://www.zhihu.com/question/423360626/answer/2336787754
为中文互联网科普一切技术、公开财报、上央视时没人称赞你,等到你一被“拉下神坛” “戴上公知帽”,各种疑点分析就来了,境外金主和技术外援就出现了——大家都这样,你凭什么不一样。

你说话叫剧本的公关行为,继续发视频叫隐瞒过错,活着叫还能发帖,死了“人人叫好”,回形针曾经科普的荣誉呢,等到这时候就有一大堆理中客说它夹带私货,为什么拿中国举例;待到这时候才有一群“知识分子”嘲讽它根本不是硬科普,尽管这群人在此前后都没能做好他们看不起的科普工作。

然而回形针不需要“外网”好感度,YT选的是没广告费的中国区。回形针对知识已经竭尽所能了,被小人骂“屁股”歪,被君子骂不会说话,逼着它做 让这群根本没关注过它的人确认correct性的“科普”视频。

最后的最后它也没有做这个早已和WWF和地图无关的事情,这便是遗臭万年。 只要它做了,屁股论就无话可说了,可它没有。它不懂吗?恐怕是不相信自己真会像今天一样吧。你们很伟大!嘴多就正确,嘴多能造核弹、布管线、强中国!


然而死去的战士终究是战士,嗡嗡重复的苍蝇终究竟不过是苍蝇
如何理解傅里叶变换公式? - duangsuse的回答 - 知乎 #statement
https://www.zhihu.com/question/19714540/answer/2336624211

🤔感觉还是不要花时间在科普上了。 科了也没人看,反倒是那些大佬关注者最多,什么正交基内积啊平面啊冲 平面波为基的展开 连续离散啊 泛函分析 最后还要证明收敛性,傅里叶本人并不会证明 居然被喷是错误道路(傅里叶伟大在哪里? - 条件期望的回答 - 知乎

废了8天的文章里我甚至没引入信号处理和积分的概念,都是计算和原因没有式子推导。

每次我们有、使得、我们知道、我们约定,对不起我不知道。他们的理论对我的工程并没有帮助。 在说什么臆语,界内讲解的顺序还不统一,每个人都不一样
它居然用函数奇偶性和等式变形解释cossin的出现和+-,真是太奇妙了,然而最后的结果都不能运行,定义了这些符号,对CS没有意义

他们每个都在强调问题有多难阐明,真是非常服气爱用自己领域的知识侧面解读当然很复杂(complex),解读半天连频域模型都没导出来,叫人怎么看? 真的某位物理大佬自己博客比他们好用多了

回答问题就回答问题,你不先回答原理,先拽自己知道什么,这就是对知识的不尊重。 知识是拿来筛选变化的,不是报菜名的 ;筛选变化也有优劣,能说人话就别写鸟语

要是我27号就能看到自己今天这篇文章,就不会产生那么多问题了。 什么优雅,真是可笑,我三句能说明白,为什么要听你对符号等式变形如数家珍列万字?搁这基督教『三位一体』呢?自己想玩啥玩啥去,不要干涉其他领域模型的清晰唯一性
3b1b 的图示很优雅,但它引入的学习联想链模型我也不敢苟同,语序对了,有啥需要联想呢?

如何理解傅里叶变换公式? - 逸夫的回答 - 知乎
https://www.zhihu.com/question/19714540/answer/67747351 最后这种画了"挑出特定数字重新组合的思想,这与乘法交换律是类似" 3D图的反而2k赞,就答不对题了
Forwarded from dnaugsuz
(知乎的草稿箱真太卡了
JS的一些技巧都注释了,感谢你的建议;这个确实烂代码写久了自己认识不到难看

其实我觉得,编程是没有水平一说的,就和人讲话一样,知道原因就够了,技巧我实在是我讨厌的(尽管我在用 )。 我不把编程当技术,即便自己是编译原理爱好者
这篇文章穿插了JS和Py ,但你会发现画布都叫 g G,这是我现在的编程规范。

层次感是因为我想教的太多了…… 🤪 在这样的文章引入代码生成。 坦白说只要函数名不滑坡,现在我的代码已经没有规范可言了,感觉我成了自己之前讨厌的人(那种变量名只起1字,也没公式的),现在是因为我需要比代码更高的东西,代码的语义、算法的理由。

我的命名由一个物理命名法(链接“名字即语义”)规范,所以对大家还是奇怪的。一切都是为了语义 😭, 如此我编程时便可仅思考问题,而对问题的符号不假思索,因为我从实现子目标开始就知道一定有某类型符号,和谁1:N等相关,要怎样计算,所以能自由拆解拼合重序代码,不局限于既定形式。
Forwarded from dnaugsuz
我没有轻视理论的意思,实际上这么多有趣算法都要感谢纸面的推导,即便它们是历史
无论语言多好,缺乏思想都是不正确的

你的代码我从一两年前就想重写了,但当时不敢,我就是这种不想在不懂原理的情况下动代码的人 😓(我觉得只重构等于复制粘贴的)
代码不是越短越好,即便我自带压行,也明白压到1行那种是机器都能完成的, 有语义的压行却不可自动完成

从27号我只是想重写你(去年拿d3.js?重构了)的动画,但当我去了解FT算法 ,找了半天才知道除震幅还有相位信息,构成一个向量:模长幅角,我一直在搜文,但所有人都把公式一帖 说几句就走人,连w符号有何涵义都不懂,直到1号我才明白“不是从震幅积分频率”…… 早知道就看wiki了

在看他们每个人时,我都感觉很专业,但他们都没讲明白这么一个简单的求和, 频谱作为广为使用的工具,肯定不可能只有一大堆数学式和等号的。 在我理解模型前,算式和复平面,3D图就来了,还有人说复数=向量=点 ,那怎么解释FT用复数而非向量,和采样点又有何关系? 当然那都是我搞清公式符号指代之后了。

我也很无奈,对他们的领域我是个外行,当然不知道他们在说的符号是啥,他没做错,可作为程序员 ,编程就是把领域联系起来,变成一个大领域,不是这样吗。 信号处理本来也是和几何绘制无关的,编程使这些关系非常显眼

如此我花了9天才完成一个简单的事情,就因为没有到外网找资料.. 🤦🏻

再看到知乎回答要么只有推导,要么只有片面解读,而且很高赞,我就很无语,然后那个1w赞的文章也带了个抱怨节 ,我就跟风写了篇

理论和实践都是非常重要的,择一而从是个人选择,都很伟大。
就像 @3b1bhttps://www.bilibili.com/video/BV1o4411D7vm ,就很融合
dnaugsuz
我没有轻视理论的意思,实际上这么多有趣算法都要感谢纸面的推导,即便它们是历史 无论语言多好,缺乏思想都是不正确的 你的代码我从一两年前就想重写了,但当时不敢,我就是这种不想在不懂原理的情况下动代码的人 😓(我觉得只重构等于复制粘贴的) 代码不是越短越好,即便我自带压行,也明白压到1行那种是机器都能完成的, 有语义的压行却不可自动完成 从27号我只是想重写你(去年拿d3.js?重构了)的动画,但当我去了解FT算法 ,找了半天才知道除震幅还有相位信息,构成一个向量:模长幅角,我一直在搜文,但所有人都把公式一帖…
#math #statement 就讲个故事,太泛泛了,没别的意思

对我来说,程序和公式结构是类同的。 我见过基于(a=b)传递的逻辑式编程语言和sympy,Wolfram 符号代数;公式并不是计算机包容不了的东西,但凡有模式,计算机都能归纳分析转化;计算机在智能上能辅助人完成许多你想不到的功能,它不是App那么死板或CAD那么专业,像几何画板、GeoAlgebra 就提供了非常专业的科学工具,是基于JS乃至C这些“简单线性”的语言

数学和编程不需要分开学,但应该先学编程,至少它会告诉你“位图” “矢量画” “声音” 和数学如何相关,提醒你整数与列表,浮点数 是有区别的;这些数学不能告诉你,它只能把算式自家消化、自问自答,让你细细琢磨每个步骤哪里奇特,尽管很多时候它能优化到,对一些算法这是不值得的,只会让人糊涂,我们有更好的讲法。

重复和过多恰恰是编程最讨厌的——程序好比for(;;i++)只有边界情况,不会逐个去想;因此有了子程序,子程序采用「固定」的括号语法“调用”-()语义可以有很多,因此不需要各种记法角标,而我们眼中也不该有什么广义函数、高阶函数、连续=号, 因为程序有严谨的类型系统、统一的表达,都是自动检查的。

看起来程序是公式的成果,其实二者都来源与人类思维,思维就如几何和语言无关,“序列化”写到纸面才有不同。 思维当然有网状联系和片面名词;数学语言作为纸面比代码更利分析, 但如果不是编程界照本宣科,它不会比“不用编辑器”的字符串好。

所以如果文章的数学语言里有重复的“公共子表达式”,我也会和代码里有一样头疼;这些子表达式隐含了一些相关性和区间性质,但作者却对此闭口不谈,只是推导一些似乎无关算法本身的“库引用”,我不喜欢在不重要的地方浪费公式的文章。 对工科的我,任何语言的代码都有「重要性」,在不重要的地方就要有特别的纂写方式,不能将重点和平凡 混为一谈

这也是我有选择地『中文编程』的原因;对语法都是英文的语言,执迷于可定处全中文的代码不实际,所以我既没有保持「禁止非ASCII」的规范也没像民科全盘重复,而把中文用于强调重点逻辑; 对我来说不过是个名字而已,只要语义不滑坡,定义语法怎样都行。

当然作为高数没及格过的我还是不能做「计算定义」外的内联/外提 转化;不过给大家点tip: 许多初高中级别的数学式都是针对“内联了函数”后特殊情况的“代码优化”,所以人家说数学利于编程思维并没错,但我觉得数学更应该学习编程,至少我们和物理的语序是唯一的,数学的语序和别名却千变万化,制造许多不必要“变形”。

你完全可以按程序的标准要求公式,或者以语法树/嵌套列表的标准要求代数表达,比如能简则简或能显则显,是看语境选择的。 因为公式就是编程的子集,抽象的部分呢?有函数值、符号系统。

数学是很大的范畴,包含算式变形/方程、矩阵/函线代、函数/集合、几何、逻辑,它们的共同点就是爱闭门造车,所以会诞生很侧面的表达和不通用的记法。 教育界只人云亦云觉得优雅,会和理论界差异很大,这种差异都是语言带来的历史包袱。

数学总强调自己严谨,但它却无法对公式形式出个所以然来,也爱不声明就使用,默认你全知道它心理的“算项等效”,或者能从看似无规则的字符串里思考出规则;
就像一些数学爱好者,觉得数学是高层次的思维方法,和文本何干, 他把思想和符号切的太死了,意识不到没有语言何来思想,因此拒绝优化文章。 其实语言并没有“我描述下”那么废,数学语言也只是茫茫人类语言的一种。
数学语言既不格式,也不自然,爱靠拓展数集来兼容微积分和复数这种“专有问题”;它的易读性全靠作者来维护,就像“反常默认值”的 Java 一样,只要不把无关项写出来就叫不严谨,这是对人类智慧较“不智慧”的利用。

编程比数学的最大优点是,它承认人的智慧有限,所以一个人做了机器认可的「程序」,所有人都有被「语言」统一的用法,从而能组合出更多思想。而利用等式和算法,这也是数学的构造,尽管他们没能很好吸纳(而是制造了多项式、矩阵、线性代数 作为给工科的“好工具”…)j

简单的说就是数学太能自解释,你想理解一个概念,就得“进入他们领域”,这其实是思想的形式过于单一,语言却各种特例、逆语序,导致的。

这也反映了许多研究者的心态,他觉得自己的理论是自己的、(甚至是某章内)特有的,既要严谨,且要彰显个性,因此不能用别人(包括自然科学和英语)的符号,它不懂怎么选择大小写和逗号,角标,或者利用语境隐含,只知道斜体花体纤细就是对的,没法打碎重组。
但数学语言可以说是时代累积下来的非形式语言,作为“外语”内嵌在文本里,没有固定的顺序和规范(些许,许多,重复 .. 在数学里都被字母“多义”化了),能接受那么多体系别名而保持『严谨』,它没有如此超前的能力。

严谨太容易了,我把每个极端情况定义、事无巨细写出来,规则不自相矛盾就行,它可以靠时间和概念来堆砌,和编程里最烂的设计一样。再不济像折半穷尽那样给个死递归的证明(lim之前的理论);
难的是自然的严谨,简简单单几行字定义的体系,既符合实际又自恰,甚至能反过来解释一些哲学,就是物理 奥卡姆剃刀法则 「非必要勿增实体」。


编程里每个人都能定义「新运算」,所以他们简单地知道两种形式的算式; 唯一的缺点是大家没吸纳数学的好处,连编解码这种东西都搞出两个动词 ,所以如果A说数学=编程,他肯定是外行 ;数学界和科学理论关系大,停留在研究报告,较少真正涉及电子程控,编程界停留在“运行”,对数学推导的优点使用甚少 ;它们中间有个杂交部分,像信号处理,PID,既不数学也不物理,教学符集非常混乱

其语言帮不到其他领域的聪明,是数学的悲哀。
dnaugsuz
我没有轻视理论的意思,实际上这么多有趣算法都要感谢纸面的推导,即便它们是历史 无论语言多好,缺乏思想都是不正确的 你的代码我从一两年前就想重写了,但当时不敢,我就是这种不想在不懂原理的情况下动代码的人 😓(我觉得只重构等于复制粘贴的) 代码不是越短越好,即便我自带压行,也明白压到1行那种是机器都能完成的, 有语义的压行却不可自动完成 从27号我只是想重写你(去年拿d3.js?重构了)的动画,但当我去了解FT算法 ,找了半天才知道除震幅还有相位信息,构成一个向量:模长幅角,我一直在搜文,但所有人都把公式一帖…
3b1b 的视频热评下也没几个懂的…… 😓 https://milai.tech/products/ 这个算一个路径要36s ,真不知道它是怎么基于MIT开源算法和WebWorker 算的…… 频谱有必要调那么大
https://www.bilibili.com/video/BV1pW411J7s8