#math 妙~虽然分辨率处理岔了,54行实现目标功能!理论优雅性有了,核心代码4+12行。过去发现区间和累积的bug都已修复
如果说还能再改进,我想正常手选以外的输入..手绘,文件,URL 啥的, 还要能输出str的,画布要能选绘制方式..
没有框架的算法是走不动的,可悲的是我就没得框架用。 JQ,Vue? 格局太小了,都得程序员手动指定吧 🙈
最痛苦的是
看着恶意行数短,但也没法再优化了,语义就是这样(反正是数学应用 app界也无人看 管他呢 🤪
此外
当然这个也不能用于手绘外的FT,WebAudio是支持快速傅里叶频谱的 😂
如果说还能再改进,我想正常手选以外的输入..手绘,文件,URL 啥的, 还要能输出str的,画布要能选绘制方式..
没有框架的算法是走不动的,可悲的是我就没得框架用。 JQ,Vue? 格局太小了,都得程序员手动指定吧 🙈
最痛苦的是
J['-'] 这种半道出家的定义,食之无用 弃之行数又多了。我是真对代码有强迫症,但可能不是对合规性—对于编译原理程序员,只要语言里合法且语义不至糊的都合规(比如 录点=(a=[])=>p=> ,eAdd=(e0=> (s,op)=> , fold=(fr,f,ac)=>(fr(x=>{ac=f(ac,x)}) ,ac) 这tm是瞎写..看着恶意行数短,但也没法再优化了,语义就是这样(反正是数学应用 app界也无人看 管他呢 🤪
此外
简画(ps)也不能积分1D输入(t-x动就可了),我是想用 echarts 支持可视化白噪声啥的,能弄个吉他合成?反正发文肯定不能只讲2D当然这个也不能用于手绘外的FT,WebAudio是支持快速傅里叶频谱的 😂
for(动量=[],i=1;i<N;i++)动量.push(v(i),v(-i))//律(-i*t,谱[i+N])
动量.sort((b,a)=> pLen(a)-pLen(b))
//^t%的全谱震幅,l降序,累积为点
a=L.map(v=>v/2),l=Math.min(...a)*4;for(i of 动量)//检讨
{a0=[...a];J(a,i,(a,b)=>(a+b*l)); 连线(a0,a);a0=a} P(a)
duangsuse::Echo
重构 https://alemangui.github.io/pizzicato/ 的代码简直是种折磨,我鸽了3,4天了(当然也是因为天气凉和频道更新。 最开始是想作为WebAudio的练手,的难度下降版,,,) 没想到在我解决人脸识别和画布几何扭曲算法后, 这个东西卡了我很长时间…… 你们不知道……🤪 我原以为声音好听=代码好看,没想到这个作者纯纯就是前端,勉强写了个player UX ,全TM是 getByID 拿{} 去传.. 真的还不比我们班同学的复制粘贴。 menu 和article的结构大量重复倒不说,…
#js #code #low 🌚 本来想到FT可视化算法里一个流程技巧,想去看看这个是不是已有了,发现人家用的是FFT — 为什么和正常人写的不一样?
非常无语的抑制住了血压升高,因为我的文还在「设计」中
真的是逗死我了,Xe 大佬的代码居然是最优雅的,因为居然有人蠢(请允许我这次用这个词)到动画状态机(st++的那种?)都 case? JSer 都没学过编程吗?!
我tm a[i/N >>0] (floor)已经很过分了,这还 >>>1 ?还x:y:x:yx... this, context(graphic) ?叠buf呢 😱
这个作者到底懂不懂编程,他是做游戏的,能做游戏居然也会写烂代码??! 这是什么鬼
非常无语的抑制住了血压升高,因为我的文还在「设计」中
真的是逗死我了,Xe 大佬的代码居然是最优雅的,因为居然有人蠢(请允许我这次用这个词)到动画状态机(st++的那种?)都 case? JSer 都没学过编程吗?!
我tm a[i/N >>0] (floor)已经很过分了,这还 >>>1 ?还x:y:x:yx... this, context(graphic) ?叠buf呢 😱
这个作者到底懂不懂编程,他是做游戏的,能做游戏居然也会写烂代码??! 这是什么鬼
duangsuse::Echo
#js #code #low 🌚 本来想到FT可视化算法里一个流程技巧,想去看看这个是不是已有了,发现人家用的是FFT — 为什么和正常人写的不一样? 非常无语的抑制住了血压升高,因为我的文还在「设计」中 真的是逗死我了,Xe 大佬的代码居然是最优雅的,因为居然有人蠢(请允许我这次用这个词)到动画状态机(st++的那种?)都 case? JSer 都没学过编程吗?! 我tm a[i/N >>0] (floor)已经很过分了,这还 >>>1 ?还x:y:x:yx... this, context(graphic)…
请各位订户千万不要被原文的趣味性带偏! 无论你在写什么领域的代码,这是绝对不可取的!
他的文章很好,但代码很烂! 我会逐图解释为何「烂」 🌚 虽然正常人都看得出
从迷糊程度开始。
2.这其实是一个展开命名(SSA单赋值...)了的Vec3计算。hpmd 是+s 的乘积(range map计算..),后面许多是 n[v],n[v+1] 和2D旋转公式 ax-by,ay+bx ,只是没有任何数据封装 只有变量名(汇编时代都有约定俗成struct的),千万不要手动内联表达式!不要以这种人为榜样!
我相信一定是作者手写的,因为没有魔怔编译器会如此优化文本代码 🤪🙏
3.到这时想起来
从性能上也没比[x,y]优雅到哪去,都是 number pair ,何苦内联手写js里🤦🏻 稍微有点常识也懂JSON.parse
有你从 MouseEvent.xy 拿这些的功夫。早找到 SVG Path 了
代码空间管理大师:
4.起名大师,和那个 Pizzicato 一样,重复前缀丝毫不会意识到 DOMTree 为何是嵌套的
5.重复.前缀大师, doc.docElement 无数遍,我的天哪 Kotlin 的
6.DOM注册转发大师,空话复制一大堆,您还是看看JQuery吧,虽然格局较小但简写也是有用的🙅♂️
用这个"可拓展",没人帮你写插件!(Kotlin 的 class by(o: interface) 真好😂
7.数据类型函数名化,from/into 这个应该是全工业界没抽提。 我现在对数据已经完全无实感了,一会整
1.您把 drawCircles 的 opacity 参数抽提啥都用 anim(1,0,v=> 补间绘制末帧来淡出不就可以了,是对动画队列没概念吗?起一大堆状态号
您把「画圈、手移开、FT出这个手、圈淡出」,这些变成带参回调function 不就可以了,您知道状态机的意义是转移表吗?🤦🏻 讲数学,函数的[]都不会用
最重要的是,状态机都写了,animCount 帧号还是手动判断区间的?! setInterval重绘里这是二选一好不好……(<)号就能判断状态和时轴%了,您还是讲数学呢!还3D螺旋呢!
我是从没写过臆症到
思想稍微善良的程序员也该明白
世界上只有两种程序员:一种习得技巧发现用不到后微笑着接受 ,一种学到后立刻与this这些画风不搭的组成缝合怪🤮,还自以为更快更黑科技
用手想都知道 ok=(i==n)
switch(st){case 0:draw(i); if(ok)st=1,n=50 } i++ ;if(ok)i=0
比重复5遍「高性能」
“聪明”到知道
不会写您可以不写,可以用社区轮子,写这么一大堆是何苦呢; 怕是得花个星期写一篇博文吧,竟然需要几万行代码,我死了
恶心的是JQ内部也没优雅到哪去,但它居然还算好的……
—
我们应该为对自己代码的自信没有魔怔到此种程度而骄傲🤦🏻 价值观稍微正常的人看到20行的算式都知道是错的离谱
不仅不应为自己能“理解”并编写此类代码而自豪,反而要将写过这种谭式mian条代码当自嘲的笑话,警示自己编程是解决而非制造问题的
优秀的代码绝对不该能区别开 >>>1 和 /2 这些的,请大家以此为镜,尽管是在写有用的代码,也千万不要用奇奇怪怪的语法,尤其是同前缀"" 或同前缀.号链,如果出现太多,就要注意设计是否变成堆砌了
他的文章很好,但代码很烂! 我会逐图解释为何「烂」 🌚 虽然正常人都看得出
从迷糊程度开始。
2.这其实是一个展开命名(SSA单赋值...)了的Vec3计算。hpmd 是+s 的乘积(range map计算..),后面许多是 n[v],n[v+1] 和2D旋转公式 ax-by,ay+bx ,只是没有任何数据封装 只有变量名(汇编时代都有约定俗成struct的),千万不要手动内联表达式!不要以这种人为榜样!
我相信一定是作者手写的,因为没有魔怔编译器会如此优化文本代码 🤪🙏
3.到这时想起来
[{key,value}] 和[{x,y}]的滥用datatype了,那刚才写那么多var是 🙅♂️从性能上也没比[x,y]优雅到哪去,都是 number pair ,何苦内联手写js里🤦🏻 稍微有点常识也懂JSON.parse
有你从 MouseEvent.xy 拿这些的功夫。早找到 SVG Path 了
代码空间管理大师:
4.起名大师,和那个 Pizzicato 一样,重复前缀丝毫不会意识到 DOMTree 为何是嵌套的
5.重复.前缀大师, doc.docElement 无数遍,我的天哪 Kotlin 的
o.let{it.aa+it.bb} 真的是太现实了6.DOM注册转发大师,空话复制一大堆,您还是看看JQuery吧,虽然格局较小但简写也是有用的🙅♂️
用这个"可拓展",没人帮你写插件!(Kotlin 的 class by(o: interface) 真好😂
7.数据类型函数名化,from/into 这个应该是全工业界没抽提。 我现在对数据已经完全无实感了,一会整
res.amplitude 一会全变量名,他到底是不是程序员,知不知道变量和 data 上的变量对复用是不同1.您把 drawCircles 的 opacity 参数抽提啥都用 anim(1,0,v=> 补间绘制末帧来淡出不就可以了,是对动画队列没概念吗?起一大堆状态号
您把「画圈、手移开、FT出这个手、圈淡出」,这些变成带参回调function 不就可以了,您知道状态机的意义是转移表吗?🤦🏻 讲数学,函数的[]都不会用
最重要的是,状态机都写了,animCount 帧号还是手动判断区间的?! setInterval重绘里这是二选一好不好……(<)号就能判断状态和时轴%了,您还是讲数学呢!还3D螺旋呢!
我是从没写过臆症到
&& 内含多个,赋值的 (注意break前的“语句”哪里来尾括号? animCount>48&&(state=) ...) 🤪思想稍微善良的程序员也该明白
&& || 取代if 要适可而止吧,能把JS写成 #bash世界上只有两种程序员:一种习得技巧发现用不到后微笑着接受 ,一种学到后立刻与this这些画风不搭的组成缝合怪🤮,还自以为更快更黑科技
用手想都知道 ok=(i==n)
switch(st){case 0:draw(i); if(ok)st=1,n=50 } i++ ;if(ok)i=0
比重复5遍「高性能」
“聪明”到知道
!0&&(a=1,b=2) 和 1==t&&2==t 是有效的,笨到不知道有 if()break; 可以外包for(;;st++) 和switch就是过时写法的事情。当代码必须重复,就要把函数当参数,存[]了,这不是编程基础吗?不会写您可以不写,可以用社区轮子,写这么一大堆是何苦呢; 怕是得花个星期写一篇博文吧,竟然需要几万行代码,我死了
恶心的是JQ内部也没优雅到哪去,但它居然还算好的……
—
我们应该为对自己代码的自信没有魔怔到此种程度而骄傲🤦🏻 价值观稍微正常的人看到20行的算式都知道是错的离谱
不仅不应为自己能“理解”并编写此类代码而自豪,反而要将写过这种谭式mian条代码当自嘲的笑话,警示自己编程是解决而非制造问题的
优秀的代码绝对不该能区别开 >>>1 和 /2 这些的,请大家以此为镜,尽管是在写有用的代码,也千万不要用奇奇怪怪的语法,尤其是同前缀"" 或同前缀.号链,如果出现太多,就要注意设计是否变成堆砌了
Telegram
duangsuse::Echo
重构 https://alemangui.github.io/pizzicato/ 的代码简直是种折磨,我鸽了3,4天了(当然也是因为天气凉和频道更新。 最开始是想作为WebAudio的练手,的难度下降版,,,) 没想到在我解决人脸识别和画布几何扭曲算法后, 这个东西卡了我很长时间……
你们不知道……🤪 我原以为声音好听=代码好看,没想到这个作者纯纯就是前端,勉强写了个player UX ,全TM是 getByID 拿{} 去传.. 真的还不比我们班同学的复制粘贴。 menu 和article的结构大量重复倒不说,…
你们不知道……🤪 我原以为声音好听=代码好看,没想到这个作者纯纯就是前端,勉强写了个player UX ,全TM是 getByID 拿{} 去传.. 真的还不比我们班同学的复制粘贴。 menu 和article的结构大量重复倒不说,…
Forwarded from Solidot
纽约时报收购 Wordle
2022-02-01 12:58
《纽约时报》宣布收购最近几个月火爆社交网络的猜词游戏 Wordle。收购金额没有披露,估计是几百万美元,纽约时报表示是“low seven figures”。收购之后 Wordle 仍然会是免费,玩法也不会变。居住在纽约布鲁克林的软件工程师 Josh Wardle 为自己的伴侣开发了一个猜词游戏,10 月公布,在几个月内风靡世界,出现了大量不同地方的语言变种。在游戏中,玩家要在六次尝试内猜中某个五字母的词,玩家每次尝试后可能获得三种反馈:绿色表示字母位置正确;黄色表示答案包含该字母,但位置错误;或灰色表示答案不含该字母。Wordle 的开发受到了《纽约时报》填字游戏的启发,Josh Wardle 表示《纽约时报》对游戏以及玩家的价值观与他一致,他乐见 Wordle 游戏将在《纽约时报》管理下前进。
2022-02-01 12:58
《纽约时报》宣布收购最近几个月火爆社交网络的猜词游戏 Wordle。收购金额没有披露,估计是几百万美元,纽约时报表示是“low seven figures”。收购之后 Wordle 仍然会是免费,玩法也不会变。居住在纽约布鲁克林的软件工程师 Josh Wardle 为自己的伴侣开发了一个猜词游戏,10 月公布,在几个月内风靡世界,出现了大量不同地方的语言变种。在游戏中,玩家要在六次尝试内猜中某个五字母的词,玩家每次尝试后可能获得三种反馈:绿色表示字母位置正确;黄色表示答案包含该字母,但位置错误;或灰色表示答案不含该字母。Wordle 的开发受到了《纽约时报》填字游戏的启发,Josh Wardle 表示《纽约时报》对游戏以及玩家的价值观与他一致,他乐见 Wordle 游戏将在《纽约时报》管理下前进。
duangsuse::Echo
#js #code #low 🌚 本来想到FT可视化算法里一个流程技巧,想去看看这个是不是已有了,发现人家用的是FFT — 为什么和正常人写的不一样? 非常无语的抑制住了血压升高,因为我的文还在「设计」中 真的是逗死我了,Xe 大佬的代码居然是最优雅的,因为居然有人蠢(请允许我这次用这个词)到动画状态机(st++的那种?)都 case? JSer 都没学过编程吗?! 我tm a[i/N >>0] (floor)已经很过分了,这还 >>>1 ?还x:y:x:yx... this, context(graphic)…
#math 实现了重绘消sort 的优化(这个Xe应该也有考虑,他对
本来我以为自己的重构已经够好了,还是发现我很蠢——
我只是了解了圆是大震幅[x,y]优先,频率i在t%路径的反FT,整个程序的数学性都消失了, 我可以完全用2D旋转和列表处理解释傅里叶变换,而且整个可视化能不到10行——因为作为核心的FT(kHz,@f)算法只有4行
即便程序的算法是相同的,其明显度也有优劣之分,表达也可以带来质变
不可能吧.. 正负索引这么简单,只是我没用 for (和newA) 也不排除0了而已,原来 i+N 和 -i*t, -i+N 异同就是代码没写好留下的
(是为合并
看来程序员编程时还真是很容易把自己搞傻呢。 #statement
CnSheet 的建模有重排..负值?)本来我以为自己的重构已经够好了,还是发现我很蠢——
newA(2*N, i=>律(-(i-N)*t,谱[i])) v.s.谱=newA(2*N,i=>律(-i+N,ps))
谱.map((p,i)=>[(i-N),p]) ,原来真的就是两边i左移就行了,然后点迭代里 xy=律(k*t,p) 就是圆心…… 完了,整个程序只要10行了 🤪我只是了解了圆是大震幅[x,y]优先,频率i在t%路径的反FT,整个程序的数学性都消失了, 我可以完全用2D旋转和列表处理解释傅里叶变换,而且整个可视化能不到10行——因为作为核心的FT(kHz,@f)算法只有4行
即便程序的算法是相同的,其明显度也有优劣之分,表达也可以带来质变
不可能吧.. 正负索引这么简单,只是我没用 for (和newA) 也不排除0了而已,原来 i+N 和 -i*t, -i+N 异同就是代码没写好留下的
(是为合并
[nthVector(+-n, t), +-n] ,语义用v(i),v(-i) 和原版一样明确的,只是内部没想到也能更统一看来程序员编程时还真是很容易把自己搞傻呢。 #statement
duangsuse::Echo
#math 实现了重绘消sort 的优化(这个Xe应该也有考虑,他对CnSheet 的建模有重排..负值?) 本来我以为自己的重构已经够好了,还是发现我很蠢—— newA(2*N, i=>律(-(i-N)*t,谱[i])) v.s. 谱=newA(2*N,i=>律(-i+N,ps)) 谱.map((p,i)=>[(i-N),p]) ,原来真的就是两边i左移就行了,然后点迭代里 xy=律(k*t,p) 就是圆心…… 完了,整个程序只要10行了 🤪 我只是了解了圆是大震幅[x,y]优先,频率i在t%路径的…
#js 同样是简洁优化,这些就很鸡肋了,尤其是这个eval DSL… 显得非常缝合,但为避免
我曾说过「好的代码是横着写的」, 总结下吧,尽管我偶尔写带配置UI的应用,现在我的编程风格已经完全和“软件工程”者不同了
至于好坏…工程界的定义,蛇线驼峰 太基础,没有考虑语序和用途,我的写法会偏函数式点,命名上倾向 Kotlin ,不完全是民科
在我看来,工程界只重视代码的功能,没有顾忌代码的语义和「份量」,所以常常把简单功能写大几百行,以此为“成熟度”,或者觉得C++就必须高级、Py就必须死板,我是决不接受的,因为我编程就只是想尊重理论,被我承认的那种。
如果有小白被迫读这种代码,一定会喷我的压行,以及 a=[_,c,k], b 命运不同的写法…… 但我真的没有更低运行时开销的做法,()=> 都用到极限了
作为程序员,问题规模是很浮动的指标。当然希望自己的func兼容更多参数,同时保持易用;当我初次写定义,就会考虑大批量调用和临时使用的情况。我一直在以API和交互流程的视角编程,尽管不写App 🤪
这样的思维方式写出代码对1次调用肯定是奇怪的,但对跑个分都要
很多时候我不爱看自己的代码,但它之外只有量大后更难读的东西,一些问题想描述都是复杂的,何谈定义“解法”,我一直在努力简化
我就相信不管多难、多牛的人写的代码,都有更通俗的表达法——唉,大佬们总让我失望
一边顾忌API的易用,一边“透明”的实现对我而言也是该改的,然而实现是 tricky 的,不可能用绝对规范的写法在两行里定义——为啥不放宽压行?因为我从不为写框架而写框架,所以框架不能占太大比例! 😂仔细想想还挺好笑的,很久以来我的html框架都没独立出具体应用过
倒不如说复制粘贴些旧代码也是编程方式..
顺便一提,这个在原版里是6行定义+3个begin~closePath 的点圆线func,我这里改为定义俩列表处理函数,然后一行定义两点间的连线画圆仨路径,它的支持代码5行,尽量少引入背景模型(Vec2我试过,最后还不如把旋转写出来好,数学虚数乘法就太糟了,为什么“虚”的东西能分析实的震动?😱)
从可读性看如果moveTo&lineTo能合并就好
ps. JS没有严格的编译/运行期,意味着你可以缓存eval拼合的代码 😌
new Path2D 不得不用我曾说过「好的代码是横着写的」, 总结下吧,尽管我偶尔写带配置UI的应用,现在我的编程风格已经完全和“软件工程”者不同了
至于好坏…工程界的定义,蛇线驼峰 太基础,没有考虑语序和用途,我的写法会偏函数式点,命名上倾向 Kotlin ,不完全是民科
在我看来,工程界只重视代码的功能,没有顾忌代码的语义和「份量」,所以常常把简单功能写大几百行,以此为“成熟度”,或者觉得C++就必须高级、Py就必须死板,我是决不接受的,因为我编程就只是想尊重理论,被我承认的那种。
如果有小白被迫读这种代码,一定会喷我的压行,以及 a=[_,c,k], b 命运不同的写法…… 但我真的没有更低运行时开销的做法,()=> 都用到极限了
作为程序员,问题规模是很浮动的指标。当然希望自己的func兼容更多参数,同时保持易用;当我初次写定义,就会考虑大批量调用和临时使用的情况。我一直在以API和交互流程的视角编程,尽管不写App 🤪
这样的思维方式写出代码对1次调用肯定是奇怪的,但对跑个分都要
@MeasureTime(iterations=5) 的 JavaEE ,我想还是平凡很多时候我不爱看自己的代码,但它之外只有量大后更难读的东西,一些问题想描述都是复杂的,何谈定义“解法”,我一直在努力简化
我就相信不管多难、多牛的人写的代码,都有更通俗的表达法——唉,大佬们总让我失望
一边顾忌API的易用,一边“透明”的实现对我而言也是该改的,然而实现是 tricky 的,不可能用绝对规范的写法在两行里定义——为啥不放宽压行?因为我从不为写框架而写框架,所以框架不能占太大比例! 😂仔细想想还挺好笑的,很久以来我的html框架都没独立出具体应用过
倒不如说复制粘贴些旧代码也是编程方式..
顺便一提,这个在原版里是6行定义+3个begin~closePath 的点圆线func,我这里改为定义俩列表处理函数,然后一行定义两点间的连线画圆仨路径,它的支持代码5行,尽量少引入背景模型(Vec2我试过,最后还不如把旋转写出来好,数学虚数乘法就太糟了,为什么“虚”的东西能分析实的震动?😱)
从可读性看如果moveTo&lineTo能合并就好
ps. JS没有严格的编译/运行期,意味着你可以缓存eval拼合的代码 😌
#dev 很希望同好们也能重视下代码语义的明确性,不要因为自己算法或应用上身经百战了就相信实现不可优化了,思想和表达同样重要—不写字不默念能让智商降低
语言是无关编译原理的,常量字面/参数局部、.[]()链、表达式、语句块{}、大定义语法;分清这些层次还是有些帮助的,
就不会怀疑改了会不能运行,而元编程(代码生成CGen等)就更重要了
或许你没受过CGen的好,但一定遭过Java界无默认值框架的罪,这种问题性垄断就是程序员视此技巧为“绝技”而无视其他指标的单独使用造成的
语言比数学更适合提升编程功底,无论你做UI、网络、数据处理、数学,编程语言就是描述问题和解法的途径,最佳途径。如果它是你的母语,能帮助解决很多问题,比只在纸面上解决有意思太多了, desmos.com 和 funcplot.com 就能图示许多数学函数,而 shadertoy.com 展示了它们的多彩用途,这些都是在辅佐代码;语言和运行时是 1:N 关系,C++和Java 都可在JS里运行 ,C 也有 cling,cint 等(FFI)解释器,编译和解释并不重要,语言就是定义模型和解法的素材。
我当年的 ParserKt 是3门语言整整重构了9个版本啊,许多做法我都用不同的语言表达过,所以能分清「X语言语法」和「语义」两个看起来如语音和文字一样完全相同的东西
如果没有这样的契机,或许我现在的代码还是似是其非、语义空泛的吧,也就不会和绘图那么合贴了—在 #GLSL 里,居中点可用 xy+wh/2 , 点居中可 xy-wh/2 ,一个正负号的问题,换个写法 width,height 啥的就不明确了,好像几百行定义就必须,其实根本不!换个语序,许多东西才能合起来,变得不奇异
学过初中物理的人还会写冗余代码吗?数学高分也会写烂代码吗?会!所以人真的要一直改正才行啊。
语言是无关编译原理的,常量字面/参数局部、.[]()链、表达式、语句块{}、大定义语法;分清这些层次还是有些帮助的,
就不会怀疑改了会不能运行,而元编程(代码生成CGen等)就更重要了
或许你没受过CGen的好,但一定遭过Java界无默认值框架的罪,这种问题性垄断就是程序员视此技巧为“绝技”而无视其他指标的单独使用造成的
语言比数学更适合提升编程功底,无论你做UI、网络、数据处理、数学,编程语言就是描述问题和解法的途径,最佳途径。如果它是你的母语,能帮助解决很多问题,比只在纸面上解决有意思太多了, desmos.com 和 funcplot.com 就能图示许多数学函数,而 shadertoy.com 展示了它们的多彩用途,这些都是在辅佐代码;语言和运行时是 1:N 关系,C++和Java 都可在JS里运行 ,C 也有 cling,cint 等(FFI)解释器,编译和解释并不重要,语言就是定义模型和解法的素材。
我当年的 ParserKt 是3门语言整整重构了9个版本啊,许多做法我都用不同的语言表达过,所以能分清「X语言语法」和「语义」两个看起来如语音和文字一样完全相同的东西
如果没有这样的契机,或许我现在的代码还是似是其非、语义空泛的吧,也就不会和绘图那么合贴了—在 #GLSL 里,居中点可用 xy+wh/2 , 点居中可 xy-wh/2 ,一个正负号的问题,换个写法 width,height 啥的就不明确了,好像几百行定义就必须,其实根本不!换个语序,许多东西才能合起来,变得不奇异
学过初中物理的人还会写冗余代码吗?数学高分也会写烂代码吗?会!所以人真的要一直改正才行啊。
Leaning Technologies Developer Hub
Cheerp - How C++ engineers build web applications
Cheerp is an enterprise-grade compiler toolchain that can compile C/C++ into efficient WebAssembly and JavaScript. It is open source, liberally licensed, and actively developed by Leaning Technologies.
duangsuse::Echo
#js 同样是简洁优化,这些就很鸡肋了,尤其是这个eval DSL… 显得非常缝合,但为避免 new Path2D 不得不用 我曾说过「好的代码是横着写的」, 总结下吧,尽管我偶尔写带配置UI的应用,现在我的编程风格已经完全和“软件工程”者不同了 至于好坏…工程界的定义,蛇线驼峰 太基础,没有考虑语序和用途,我的写法会偏函数式点,命名上倾向 Kotlin ,不完全是民科 在我看来,工程界只重视代码的功能,没有顾忌代码的语义和「份量」,所以常常把简单功能写大几百行,以此为“成熟度”,或者觉得C++就必…
#statement 很多时候我不爱看自己的代码,但它之外只有量大后更难读的东西,一些问题想描述都是复杂的,何谈定义“解法”,我一直在努力简化
我就相信不管多难、多牛的人写的代码,都有更通俗的表达法——唉,大佬们总让我失望
如果连《算法》这种英美计科教科书都是不可相信的,我能信任谁呢,所以才说 #Kotlin 是好语言吧,至少它选择相信表达而非智商。 我遇到过天才,但天才尽管悟性好也曾有做得不好的时候;如果说最后他们写出来的东西还是10行能讲明白,如果他们的实践也只是6,7种方法中的一种,而每种方法各都有优劣 ,如果说完成的应用也有无数扩展的可能,我又该崇拜谁呢。
如果天才的语言也不天才,我为什么要全部照搬呢?
几乎每次我研究一个感兴趣的技术,都迭代出3,4个版本,碎碎念全放在旧版、精彩代码粘贴到新版,仿佛细胞分裂时损失聚在一边 。从正常人的视角「重复」肯定是丢脸的事,或者是项大工程,意味着你不懂或不聪明,但谁是生而知之的呢?人的能力是有限的,所以才需要方法和工具完成更多,而有时却被工具所蒙蔽,看不到更「大」的工具。
我为什么要崇拜技术呢?因为「崇拜」它能更好解决我的需求?崇拜天才能让我聪明?
我谁也不崇拜,也谁都不鄙视,只是继续看自己爱的技术; 当我描述,零碎的计算机语言概念和人话并存,而在语言中,名字是最次要的,语义最重。最后我选择了名字即语义,是自9次重写一个框架后我做第二件最正确的事,也是我找不到同道的开始。 自底向上从缘由解读名词,自顶向下靠细分写出程序,而 OOP 或 FP 都只是这种方法论的工具;那些名词,只是它们用途的片面
我相信代码有「份量」,在API在模型之上,「恰如其分」的代码和精妙的文档是绝配,因为短行数!=低功能 。
——只有你不把技巧当特殊技巧,之上才构筑出更有趣的东西;如果你觉得自己或它够牛了,你就止到这了。 就像生物里配平的化学式,已经死了。
天才是不当自己或别人天才的,自满或自卑,与他们的领域和关注点无关。
我追求既普适又不空泛的代码。 既抽象,又易看出用途;顺序位置很重要、符号统一很重要。
人赋予一些事以语序、明确表达里的上下文指代,才能忽略无关本质的多余符号。
强大和技术都是身外之物,人—才是重要的
所以我不想自称程序员了,普通人,编程爱好者有多好
我就相信不管多难、多牛的人写的代码,都有更通俗的表达法——唉,大佬们总让我失望
如果连《算法》这种英美计科教科书都是不可相信的,我能信任谁呢,所以才说 #Kotlin 是好语言吧,至少它选择相信表达而非智商。 我遇到过天才,但天才尽管悟性好也曾有做得不好的时候;如果说最后他们写出来的东西还是10行能讲明白,如果他们的实践也只是6,7种方法中的一种,而每种方法各都有优劣 ,如果说完成的应用也有无数扩展的可能,我又该崇拜谁呢。
如果天才的语言也不天才,我为什么要全部照搬呢?
几乎每次我研究一个感兴趣的技术,都迭代出3,4个版本,碎碎念全放在旧版、精彩代码粘贴到新版,仿佛细胞分裂时损失聚在一边 。从正常人的视角「重复」肯定是丢脸的事,或者是项大工程,意味着你不懂或不聪明,但谁是生而知之的呢?人的能力是有限的,所以才需要方法和工具完成更多,而有时却被工具所蒙蔽,看不到更「大」的工具。
我为什么要崇拜技术呢?因为「崇拜」它能更好解决我的需求?崇拜天才能让我聪明?
我谁也不崇拜,也谁都不鄙视,只是继续看自己爱的技术; 当我描述,零碎的计算机语言概念和人话并存,而在语言中,名字是最次要的,语义最重。最后我选择了名字即语义,是自9次重写一个框架后我做第二件最正确的事,也是我找不到同道的开始。 自底向上从缘由解读名词,自顶向下靠细分写出程序,而 OOP 或 FP 都只是这种方法论的工具;那些名词,只是它们用途的片面
我相信代码有「份量」,在API在模型之上,「恰如其分」的代码和精妙的文档是绝配,因为短行数!=低功能 。
users.map{it.age}.sum() 后缀操作链隐含了SQL和数学的前缀表示法,不同语序适合不同场合和需求,但我始终追求描述间本质上的相同、追求代码与可见应用的相同,从而简化代码-即便很少人能做的干净。——只有你不把技巧当特殊技巧,之上才构筑出更有趣的东西;如果你觉得自己或它够牛了,你就止到这了。 就像生物里配平的化学式,已经死了。
天才是不当自己或别人天才的,自满或自卑,与他们的领域和关注点无关。
我追求既普适又不空泛的代码。 既抽象,又易看出用途;顺序位置很重要、符号统一很重要。
人赋予一些事以语序、明确表达里的上下文指代,才能忽略无关本质的多余符号。
强大和技术都是身外之物,人—才是重要的
所以我不想自称程序员了,普通人,编程爱好者有多好
Telegram
duangsuse::Echo
#algorithm UnionFind、三角分形(精简版)
如果要实现 Set 你会怎么做?每次 add(x) 时去重遍历 uniq() 吗?
现在按数组Array(N).fill(0).map((x,i)=>i) 实现 Set<Int> 。每位与一个索引关联,初始是和自己
当加一对 a-b ,把它们的位置赋上彼此,就能知道在不在同集合内——不行,如果还有a-b-c 咋赋值?
答案是 a->b 关联 b->c 再关联,因此 find() 变成链表遍历后最终同一。然后 add(a,c) 先找这个"b",把它…
如果要实现 Set 你会怎么做?每次 add(x) 时去重遍历 uniq() 吗?
现在按数组Array(N).fill(0).map((x,i)=>i) 实现 Set<Int> 。每位与一个索引关联,初始是和自己
当加一对 a-b ,把它们的位置赋上彼此,就能知道在不在同集合内——不行,如果还有a-b-c 咋赋值?
答案是 a->b 关联 b->c 再关联,因此 find() 变成链表遍历后最终同一。然后 add(a,c) 先找这个"b",把它…
duangsuse::Echo pinned «#statement 很多时候我不爱看自己的代码,但它之外只有量大后更难读的东西,一些问题想描述都是复杂的,何谈定义“解法”,我一直在努力简化 我就相信不管多难、多牛的人写的代码,都有更通俗的表达法——唉,大佬们总让我失望 如果连《算法》这种英美计科教科书都是不可相信的,我能信任谁呢,所以才说 #Kotlin 是好语言吧,至少它选择相信表达而非智商。 我遇到过天才,但天才尽管悟性好也曾有做得不好的时候;如果说最后他们写出来的东西还是10行能讲明白,如果他们的实践也只是6,7种方法中的一种,而每种方法各都有优劣…»
duangsuse::Echo
类型系统简介 - 知乎用户frBud6的文章 - 知乎 https://zhuanlan.zhihu.com/p/65626985 超市买菜 - 圆角骑士魔理沙的文章 - 知乎 https://zhuanlan.zhihu.com/p/66349646 #PLT 魔法店里一些文章还是不错的(lambda类型系统, SystemF一大堆TypeNode 集),可惜表达方式太弱了.(他们写LaTeX时仿佛不知道这些在Rust等土直里就是tuple/struct/enum-union ,所以只是贴了无语序的“…
其实数学界也不是只有一种表示法, sin^-1 = arc sin 的反函数(而非“逆向计算”,我还改过类架构器->值构造器,回调->注册函数值 😓)已经在新文章里采用了,总之问题是在改善。 语言是否优美,重点是在写作的人。许多很脏/不知名的语法,也有妙的用处。
为啥不用『 回调(callback)』:回调是外部代码的调用,对程序员不可见,会让人以为有两种“调用”。具体调多少次、何时在何线程、咋处理返回值也没讲明,最关键是它掩盖了函数能作参存[]的事实,割裂了框架和应用者对程序周期的理解,是C函数仅代码指针的余孽,“回调时做..” 也是种对编程很见外的说法,因为操作序列没有主被动。 Kt 里
再科普个 #cs #冷知识 , float,double 是4,8字节的IEEE754浮点, 1e2=100, 1e-2=.01=1/1e2 ,而且 -0 是存在的(即便理论负数是 -(1+n) n非0的形式
按曲线上升率(导数)升序, +*, 乘方-求根、求次数(log,对数),根对几何更重要,而 log2(32768)==15 ,65536=16 ,即有/无符 short 的极端值
+n的导是0,*k则是k, **k才依x而变: x*x= 2x
Math.E 是
#JS 里log不是log_i,它即ln.. loge 65536/loge 2 等效log2,log(E)=1 ,可看出这是通过增长率的比例来求次数
牛顿开方则是
#Math 数学是挺爱建模万物的领域,复数-虚数 ii=-1 能定义旋转, dx^2/x 的导数表示法是为展现 d 作为“无穷小”值为数集引入了系统性和lim ,微积分为实数无限可分上统计算式服务,一个求瞬时一个求整体。 向量(矢量)本来是物理的、算法是计科的,矩阵也是物理/计算机最正宗,数学也去分一杯羹;
我觉得数学=数域+等式变形+2,3D几何+逻辑 就够了,信号处理这些算是数理电杂交产物,但它真的啥都会,即得易见平凡,如果你会数学真的就“无所不能”了 🤪简直比
命题 p^q 和 pvq 表示成类型就是组合分支类型(p,q) p|q ,而类型"Type"只是另一种仅编译器可见值(2=int vs. "2"=Const 2=2),推导-检查只是执行前的求值,这就是语义。还是解释器最正常,至少会走过(stepper)人类的语言
—
🤑刚刚终于想到了 Fourier 篇怎么画上句号。列表处理两个 Wavesurfer 可视化的 buffer a->b 频通滤波是可以的,但不会合成吉他拨弦
要再添加一个定长波形 c, 索引i循环于a或b /音高 来生成震动,用滑动平均 a[i]=(a[i]+a[i+1])/2 和K-S算法,即i==0 时以一个高频下降曲线频域滤波,就能在调音高时合成对应音色了,如此一来从 WebAudio 开始的傅里叶篇,能处理波形能合成乐器,就完结了
为啥不用『 回调(callback)』:回调是外部代码的调用,对程序员不可见,会让人以为有两种“调用”。具体调多少次、何时在何线程、咋处理返回值也没讲明,最关键是它掩盖了函数能作参存[]的事实,割裂了框架和应用者对程序周期的理解,是C函数仅代码指针的余孽,“回调时做..” 也是种对编程很见外的说法,因为操作序列没有主被动。 Kt 里
map(transform=op).filter(predicate=test) 就非常准确再科普个 #cs #冷知识 , float,double 是4,8字节的IEEE754浮点, 1e2=100, 1e-2=.01=1/1e2 ,而且 -0 是存在的(即便理论负数是 -(1+n) n非0的形式
.1+.2!=.3 ,所以有人建议浮点计算不要用 a<v&&v<b 外的 ==(差<Number.EPS) 判断,即便同样可迭,浮点和整数的意义就不同,显卡计算浮点才重要按曲线上升率(导数)升序, +*, 乘方-求根、求次数(log,对数),根对几何更重要,而 log2(32768)==15 ,65536=16 ,即有/无符 short 的极端值
+n的导是0,*k则是k, **k才依x而变: x*x= 2x
Math.E 是
i=1000;(1+1/i)**i 升率趋近无穷得出的, log(65536)/LN2 =16,l=log_i, l M+l N=l M+N ,lg=log10,ln=logE#JS 里log不是log_i,它即ln.. loge 65536/loge 2 等效log2,log(E)=1 ,可看出这是通过增长率的比例来求次数
牛顿开方则是
rt(n,k=2, err=.01)=>{let ac=i; while(i-ac**k >err)ac=(ac+ n/ac) /k; }
历史上logEx的出现比常量E早,从 x^n 引的积分 1/x 怎么做 到 logEx 的反函数 e^x ,经过许多推导#Math 数学是挺爱建模万物的领域,复数-虚数 ii=-1 能定义旋转, dx^2/x 的导数表示法是为展现 d 作为“无穷小”值为数集引入了系统性和lim ,微积分为实数无限可分上统计算式服务,一个求瞬时一个求整体。 向量(矢量)本来是物理的、算法是计科的,矩阵也是物理/计算机最正宗,数学也去分一杯羹;
我觉得数学=数域+等式变形+2,3D几何+逻辑 就够了,信号处理这些算是数理电杂交产物,但它真的啥都会,即得易见平凡,如果你会数学真的就“无所不能”了 🤪简直比
man bash 还会。 日常逻辑真的是编程理论的最正宗,逻辑学那个话,人不能,至少不应该🤦 属于艺术性研究了。有点像C++ 为 template 而<> 的工程行为艺术命题 p^q 和 pvq 表示成类型就是组合分支类型(p,q) p|q ,而类型"Type"只是另一种仅编译器可见值(2=int vs. "2"=Const 2=2),推导-检查只是执行前的求值,这就是语义。还是解释器最正常,至少会走过(stepper)人类的语言
—
🤑刚刚终于想到了 Fourier 篇怎么画上句号。列表处理两个 Wavesurfer 可视化的 buffer a->b 频通滤波是可以的,但不会合成吉他拨弦
要再添加一个定长波形 c, 索引i循环于a或b /音高 来生成震动,用滑动平均 a[i]=(a[i]+a[i+1])/2 和K-S算法,即i==0 时以一个高频下降曲线频域滤波,就能在调音高时合成对应音色了,如此一来从 WebAudio 开始的傅里叶篇,能处理波形能合成乐器,就完结了