duangsuse::Echo
#WIP 作者正在学习傅里叶变换 😓 感谢xecades大佬的博客。 实在不好在tg打太长的草稿。 语言有问题请大家积极报告 今天本来说还得写篇文评知乎民科的,以及提纲2月的动画礼物(草 话说xecades大佬居然真的是用 offset-path 来获取SVG折线点……天哪,我还以为不能呢,offsetLeft 好像确实变了,当时我以为不能(忘记为啥了)就找到了 SVGPath 的 TotalLen/PointAtLen (这里Xe顺带 -W/2 居中了一下,style里0点也加上了。transferSVG…
感觉自己没资格教Xe做事🤪。 其实理论正确了,程序曲折一点也OK,只要能工作就好,Xe用d3的JQ功能和CSS 做好像也OK,只是形式有点冗,数学式是没问题的,而且他还写过canvas 版本,性能比我高10倍.. 什么鬼,他只是写了正常的代码,甚至用了[]负索引,我稍微换了点私货-虚数变向量,居然会变慢?
而且把原版换成向量,没变慢多少?
Xe还是高三呢,理论对就不打扰他了,看起来我的代码也该修改😱
我这个版本用了太多元编程和eval,画个画都搞出(我不想重复xy传参..)
怎么转一圈就耗这么长时间?我直接给xy平铺在[]好了!
我不用向量改 J(i=>a[i]+b[i])好了,也不用 svgPoint()=t=> 这种鸡肋的方式混淆计算和DOM测量了 😭 看来浏览器开发不考虑计算分块不行啊
而且把原版换成向量,没变慢多少?
Xe还是高三呢,理论对就不打扰他了,看起来我的代码也该修改😱
我这个版本用了太多元编程和eval,画个画都搞出(我不想重复xy传参..)
连线=(a,b)=>画(a,2,0,DEG,'Farc', b,'Sline', a.dup.m(b).l,0,DEG,'Sarc') 这种“DSL”… 很明显,运行时较大开销,那[Vec2,] 和无法内联的复制就更不用说了。在 #GLSL 里你可以随便上vec2[] 矩阵,JS 里可不敢说0开销抽象。 😭怎么转一圈就耗这么长时间?我直接给xy平铺在[]好了!
我不用向量改 J(i=>a[i]+b[i])好了,也不用 svgPoint()=t=> 这种鸡肋的方式混淆计算和DOM测量了 😭 看来浏览器开发不考虑计算分块不行啊
duangsuse::Echo
感觉自己没资格教Xe做事🤪。 其实理论正确了,程序曲折一点也OK,只要能工作就好,Xe用d3的JQ功能和CSS 做好像也OK,只是形式有点冗,数学式是没问题的,而且他还写过canvas 版本,性能比我高10倍.. 什么鬼,他只是写了正常的代码,甚至用了[]负索引,我稍微换了点私货-虚数变向量,居然会变慢? 而且把原版换成向量,没变慢多少? Xe还是高三呢,理论对就不打扰他了,看起来我的代码也该修改😱 我这个版本用了太多元编程和eval,画个画都搞出(我不想重复xy传参..) 连线=(a,b)=>画(a…
你用什么方法解决冗余参数
Anonymous Poll
25%
参数模板 f(...a0, ...a)
25%
颗粒化 a=>b=>a+b
13%
列表处理的参数模板
0%
Function('a b','code')
38%
手写
duangsuse::Echo
原创写出来力,但是性能上严重不如Xe(以及我半重写他的版本),以至于我必须去Vec2 化重写 🤪 差异有多大呢? Xe dt=.001 nK=400 只要半秒,我同参数要5秒…… 这个星星还是 dt=.005 nK=5 ,才能做到Xe的速度。我猜是因为V8无法很好优化eval 的代码,还以为教严格0复制会比嵌套[] 好.. 应该是正逆傅里叶完频谱咋可视化没设计好,我简单 a=Vec2(W,H).pk(.5); 和=Vec2(0) for(i=n(动量)-1;i!=1;i--){b=和.p(动量[i]) …
This media is not supported in your browser
VIEW IN TELEGRAM
#js 好!有精神。 40行代码,不带Vec2 ,优雅性正在继续分析
比率问题和Path的表示我好好想了,现在的版本很正常,没有稀奇古怪的技巧了(确信)
比率问题和Path的表示我好好想了,现在的版本很正常,没有稀奇古怪的技巧了(确信)
#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拼合的代码 😌