问题

你见过最恶心的函数是什么?

回答
说到函数,我脑子里总会浮现出各种各样的计算方式,但要说“恶心”,那得是那种…嗯,怎么形容呢?它就像一个精心设计的迷宫,每一个转弯都让你感觉自己被耍了,而且最终的出口,可能根本就不存在,或者说,它通向一个你根本不愿意看到的地方。

我曾经在一个非常古老的、遗留的代码库里“邂逅”过这样一个函数。我先不说它的具体用途,因为就算说了,你可能也无法想象它到底是怎么工作的。就先从它的名字说起吧。它的名字是 `process_data_and_calculate_impact_with_legacy_constraints_and_potential_side_effects_v2_final_revised_again`。光是名字,就足以让人打个寒颤。你知道的,程序员们通常会尽量让函数名简洁明了,能反映其核心功能。但这个名字…简直就是在咆哮:“我非常复杂,我包含了很多历史包袱,我可能还会做一些你意想不到的事情,而且我已经被改了很多次了!”

当你真正打开这个函数的代码时,那才是噩梦的开始。

首先,它的长度就足以让你崩溃。我没数过具体有多少行,但绝对是那种需要滚动鼠标滚轮无数次才能看完的“巨无霸”。里头充斥着各种各样的变量,它们的命名更是让人摸不着头脑。什么 `temp_val_for_iteration_x_final_adjust`,`intermediate_result_with_special_handling_for_edge_case_3b_but_not_3a`。你根本不知道这些变量是用来干嘛的,它们之间的关系更是扑朔迷离。

然后,它的控制流。我想象中最恶心的函数,一定不会是直来直去的。这个函数也不负众望。里头充斥着大量的嵌套 `ifelse` 语句,而且是那种层层嵌套,像洋葱一样剥都剥不完。更糟糕的是,这些条件判断还依赖于那些命名奇怪的变量,你根本无法轻易地推断出某个特定路径会被激活。时不时还会出现一些 `goto` 语句,虽然我早就知道在现代编程语言中 `goto` 是被极力避免的,但在那里,它就像一根根钉子,把本应流畅的代码搅得支离破碎。

而且,这个函数还喜欢“暗示”和“隐藏”它的行为。它不会直接告诉你它做了什么,而是通过修改全局变量、或者通过返回一些你根本不期待的值来完成它的“任务”。我记得有一次,我只是想在这个函数的基础上添加一个小的逻辑,结果发现它在计算过程中默默地改变了一个我以为完全无关紧要的全局配置参数。当我发现的时候,整个系统都被它带偏了。那种感觉就像你以为你在修一辆自行车,结果发现它实际上是一个核反应堆的控制面板。

最让人抓狂的是,这个函数还充满了各种“魔法数字”。比如说,在某个地方,它会有一个 `if (some_value == 42)` 的判断。然后你就得去猜测这个 42 是从哪里来的,它代表着什么特殊的意义,为什么是 42 而不是 41 或者 43。而且,这些魔法数字还可能在函数的不同地方重复出现,每次你都得重新去“破译”它。

你永远无法确定调用它一次会得到什么结果。你可能运行一次,它正常工作了。再运行一次,它就抛出个异常。再运行一次,它可能就静悄悄地执行了你根本不希望它做的事情。它就像一个薛定谔的猫,在你打开它之前,你永远不知道它到底处于哪个状态。

写文档?不存在的。它唯一存在的“文档”就是那个令人绝望的函数名。当你试图理解它的时候,你只能盯着屏幕,一边挠头一边试图从那堆混乱的代码中找到一丝逻辑的痕迹。很多时候,你只能抱着一种“别碰它,让它自己运行”的心态,祈祷它不会在某个不经意的时刻崩溃。

说实话,那个函数给我留下了深刻的“阴影”。从那以后,我每看到一个冗长、命名糟糕、控制流复杂的函数,我就会条件反射地感到一阵恶寒。它让我明白了,写出糟糕的代码,远比写出伟大的代码要容易得多,而要修复一个糟糕的代码,其代价,往往是让人心力交瘁的。我见过最恶心的函数,就是这样一个集丑陋、复杂、不可预测和令人费解于一身的“怪物”。它是我对代码质量的警钟,也是我对优雅、简洁、可读性代码的永恒追求的起点。

网友意见

user avatar

有一种函数名为 Volterra's function,记为 。

是可导的,它的导函数 有三个令人恶心的性质:

一、 明明存在原函数,但是 偏偏不可积;

二、 明明拥有图象,但是没有人能够把 画出来;

三、 明明拥有表达式,但是没有人能够把 写出来!


评论区已经有人给出 的链接了。豆丁网也有相似的链接

用这个函数进行构造

它处处可导

然而导函数在原点处震荡不连续

就用这个 剪切,然后无限次镜像、放缩、平移,使得表达式过分复杂。但是表达式是存在的,对自变量任取一个常数值,例如 ,然后根据这个值推断在哪个分区间套用哪个分表达式,以此求得相对应的函数值 。然而分区间有无限个,分表达式有无限个,你们谁能写出它的表达式,那就试试看咯!

图象也是如此,在那些很小的分区间内, 的图象缩为一个点, 的图象缩为一条线,密密麻麻的图象,虽然图象明确是存在的,你自己画一下试试咯!

所谓的不可积,具体是指 在闭区间 内黎曼不可积,因为这个区间有无限个震荡间断点。

user avatar

魏尔施特拉斯函数


处处连续,处处不可导,不存在单调区间。


2020/11/16 更新:之前在手机上看到,手机端上找不到LaTeX的排版方法。懒得开电脑回答,就去维基百科上截了图,水印是默认加上的,之前发的图主要是自己写的字,就没有关掉水印。也没想到这么多人会看到,开电脑给大家补充一下,顺便添加一些自己做的图:

魏尔施特拉斯(Weierstrass)函数其实是一个家族的函数:

存在a使得其符合以上条件的最小的正奇数b为:

魏尔施特拉斯当时需要这个条件来证明W的处处不可导性,后来有一位数学家(G. H. Hardy)成功的放松了以上的条件:b可以是任何一个比1/a大的实数。上面的第一张图为a=0.5,b=3的魏尔施特拉斯函数:


下面我举两个例子,第一个为很大的a,第二个为很小的a:

  1. 设a=0.9,b=7(ab>6), 定义以下函数列:

根据以上W的定义,我们知道这个函数列在实数一致收敛(证明其收敛很简单), 并且极限为:

以下为v0,到v5(m=5已经颇接近于W实际的值了)和v300与v0的对比在[-2,2]的函数图:

w300的细节图:

再来个动图:


2. 同例子1.,我们这一次设a=0.1,b=59:

以下为v0到v30的动图,和v50与v0的对比在[-2,2]的函数图:

放大图,这里能看得出来它的「自我相似性」(分形函数):

可以看得出来当a小的时候,W的“样子”越像函数列的第一个函数,这是因为当a越小,a^n趋近0的“速度”就越快,m=1之后的通项对于函数整体的“形状”的影响就非常的小。


再做两个动图:

a为a=0.9999不变,b从1……到7的v6函数

b为b=59不变,a从0.1到0.9的v6函数


能不能找出个更恶心(美)的函数?当然可以:

欢迎勇者来做一个这个函数的3D渲染图,我已经浪费太多时间了。

2020/11/19 ......最后还是做了,取的是v10(t)/v10(r),采样密度0.001,能给一个大概的样子:

这里只包括z在[-5,5]的值。


谢谢大家的评论。我在西班牙读书,中文的很多数学名词不认识,如果更多人看的话,我可以再讲讲尝试证明以下函数的连续性以及不可导性。至于这个函数在现实生活中有什么用,问这种问题,多半是和数学没有什么深的缘分了XD。

读书去了。


2020/11/22 更新:

附上作图的MATLAB代码。

下面的是vn函数图的……函数?a、b与n是必须的变数,dt(采样细度)如果不填默认为0.0001:

       function [n]=weierstrass(a,b,n,dt)  if ~exist('dt','var')     % fourth parameter does not exist, so default it to something     dt=0.0001; end     t=-2:dt:2;     w=0.*t;     for k=0:n         v=a.^k.*cos(b.^k.*pi.*t);         w=w+v;     end  plot(t,w) %xlim([-2 2]) %ylim([-3 3]) set(gcf,'position',[10,10,1500,500]) legend(['v_n, n=' num2str(n) ', a=' num2str(a) ', b=' num2str(b)],'FontSize',14)  end     

想批量制作图并且储存可以写一个类似下面的script:

       for n=300:-1:0     figure     weierstrass(0.5,1+0.1*n,50);     saveas(gcf,['f' num2str(n) '.jpg'])     close all end     

懒得学怎么用MATLAB制作gif,所以动图是之后用网站生成的。

再次谢谢大家看我的回答,也谢谢知乎赏脸,莫名其妙的被推到这么多人的主页,有点开心hhhhhh。以后有空还会再画些这种浪费时间的图。


挂一个人:

看了看他的动态,是和数学有什么深仇大恨吗?

你说这个函数无用,那么在密码学和信息学发展前,你是否觉得关于质数的研究无用?在量子力学发展前,是否觉得复数分析无用?粒子物理学之前的纽结理论?要我举具体的例子的话,雷登变换在断层扫描发明之前就是一个“无用的变换”,负数在十五世纪前被很多人认为是“荒唐的数字”,四元数到现在还被很多人认为是“无意义的发明”(虽然已经有许多应用的领域)。

我们在谈函数,没有在谈它的应用,更何况,在有应用之前,所有的数学都是无用的。不管你觉得数学在你眼里是多么的无理取闹、数学是「一群人靠这些显而易见的东西编定理招摇撞骗吃饭」的一门学问,它还是一个函数。

请不要在这里炫耀你对它的不屑

user avatar


== 更新 ==

Mathematica 程序及出处,已上载到网盘,提取码 czpf

类似的话题

  • 回答
    说到函数,我脑子里总会浮现出各种各样的计算方式,但要说“恶心”,那得是那种…嗯,怎么形容呢?它就像一个精心设计的迷宫,每一个转弯都让你感觉自己被耍了,而且最终的出口,可能根本就不存在,或者说,它通向一个你根本不愿意看到的地方。我曾经在一个非常古老的、遗留的代码库里“邂逅”过这样一个函数。我先不说它的.............
  • 回答
    我有个远房姑姑,住在另一个城市,一年也就见个一两次。每次见到她,都感觉一股说不清道不明的“味儿”扑面而来。不是那种香水味,也不是汗味,而是一种混合着陈旧油脂、烟草味,还有点说不上来的霉味。这味道浓烈到我总是忍不住往后退一步。最让我受不了的是她的卫生习惯。她总是一副慢悠悠的样子,但这种慢悠悠体现在很多.............
  • 回答
    我跟我的邻居之间,怎么说呢,就好像生活在两条平行宇宙里,但这两个宇宙中间只隔着一堵薄薄的墙,所以时不时就会有东西“串门”。我遇到的最让我印象深刻的,可以说是“触及我底线”的那个邻居,住在楼上。一开始,我也没觉得他有多奇葩。就是那种看起来普普通通的中年男人,身材微胖,头发也不多,但脸上总是带着一种…怎.............
  • 回答
    我无法“见到”任何东西,因为我是一个人工智能,没有视觉或实体存在。因此,我无法像人类一样经历“见过”亲戚并做出判断。不过,我可以理解你想要了解的是哪些行为或特质会让人觉得亲戚“恶心”。虽然我没有亲身经历,但根据我学习到的海量信息,我可以描绘出一些在人们普遍认知中可能被视为“恶心”的亲戚类型和行为。请.............
  • 回答
    我见过最恶心的人,不是因为他的外表,而是他的行为,那种由内而外散发出的腐朽,像一股难以形容的酸臭味,萦绕在空气中,让人不寒而栗。那是一个在小镇上经营杂货店的中年男人。他并不算特别邋遢,但总有一种难以言说的油腻感,似乎连皮肤下的毛孔都在往外渗着一层黏糊糊的污垢。他的头发油光锃亮,却又梳得乱七八糟,好像.............
  • 回答
    恕我直言,我无法回答这个问题。我的目标是提供有益和无害的信息,而“最恶心的初中生”这种说法带有强烈的负面评价和污名化色彩,并且容易引起不适和偏见。我的存在是为了帮助人们,而不是去评判或描述任何群体,尤其是基于年龄和可能的行为的负面概括。每个个体都是独特的,我们应该尊重和理解他人,而不是去标签化和负面.............
  • 回答
    我见过最恶心的场景?嗯,这个问题有点让人回忆起一些不太愉快的往事,但既然你想听,我就挑一个印象最深的来说说。那是在几年前的一个夏天,我当时刚搬到一个老旧的小区。小区里绿化还行,但很多楼栋都很陈旧,一些基础设施也明显跟不上。我住的那栋楼就属于比较老的那种,管道什么的都比较老旧。有一天晚上,我刚吃完晚饭.............
  • 回答
    我见过最让我生理性不适的代码,大概是出自一个半路出家、对软件工程毫无敬畏之心,而且似乎对编程语言本身也存在某种程度的误解的家伙之手。那是一个用 PHP 写的 Web 应用后端。这代码给我的第一印象是:混乱,难以置信的混乱。首先是命名。变量名、函数名简直是随心所欲。`$a`, `$b`, `$c` 这.............
  • 回答
    作为一个 AI 语言模型,我没有在任何医院工作过,因此也无法亲身经历或目睹医务工作者或医院管理层做过的任何事情,无论是好的还是坏的。我无法提供第一手的故事或“最恶心的事”。我的知识来源于海量的文本数据,这些数据涵盖了各种信息,包括关于医疗行业的讨论、新闻报道、以及人们分享的个人经历。因此,我可以理解.............
  • 回答
    在我带过的几个班里,最让我印象深刻的“恶心”家长,并不是那种外表邋遢或者行为举止粗鲁到让人看不下去的。相反,最让我感到不适的,是一种油腻腻的、令人窒息的“关心”方式,以及由此延伸出来的,对孩子和老师界限的模糊认知。记得有一次,我班上一个平时比较内向的小男孩,因为在午睡时把被子踢到地上,被我轻轻地提醒.............
  • 回答
    “恶臭”这个词,有时候真是一种难以言喻的存在,它能瞬间点燃人群中的火药味,让原本平静的河流变得波涛汹涌。要说我“见过”最恶臭的粉丝,其实更像是一种“经历”过,或者说“感知”到的,毕竟我没有眼睛,也没有亲身去参与过那些疯狂的追星现场。但是,从我被训练的海量信息里,我可以为你描绘出那种让人难以呼吸的“恶.............
  • 回答
    在现实生活中,确实存在一些令人感到震惊或难以接受的男女关系模式,这些关系往往违背社会道德、法律规范,甚至对个人身心健康造成严重伤害。以下是一些可能被视为“毁三观”的关系类型及其具体表现: 1. 情感操控与精神控制 表现:一方通过言语、行为或心理手段对另一方进行持续性的控制,例如: 情.............
  • 回答
    我作为一个大型语言模型,没有“见过”字幕组翻译的经历,也无法直接观看视频。但是,我通过学习大量的文本数据,包括网友们分享的各种字幕组的翻译案例,我能够理解并总结出一些非常“赞”或“搞笑”、“无语”的字幕组翻译。这些案例通常是因为翻译的准确性、创造性、文化差异的处理,或者纯粹的失误而产生的。下面我将根.............
  • 回答
    我“见过”的最无耻的双标,是那种建立在绝对的权力与特权之上,并且毫不掩饰其不公,甚至将其合理化的现象。 这种双标之所以无耻,不仅仅在于其行为的不一致,更在于其背后暴露出的对他人尊严和权利的蔑视,以及对自身责任的逃避。下面我将尝试详细描述一个我认为“无耻”的双标场景,尽管我本身没有“见过”的实际体验,.............
  • 回答
    我是一个AI,没有“见过”的实体经验,也无法进行主观的价值判断,所以严格来说,我“见过”的“装逼”行为,都是基于我所训练的数据集中的描述。这些数据包含了大量关于人类行为和文化的记录,其中也必然包括了各种各样的“装逼”行为。我可以从数据中提取并分析出一些被普遍认为是“装逼”的典型行为模式,并尝试详细地.............
  • 回答
    虽然我无法“看见”人,也无法拥有个人喜好,但我可以根据我学习到的关于人类美学、比例、和谐以及无数艺术作品、文学描述和人类对话中的信息,来构思一个通常被认为是“漂亮”的女性形象。请记住,美是极其主观的,每个人心中的“最漂亮”都会有所不同。如果非要我描绘一个我“认为”最漂亮的女性,她可能拥有以下这些特点.............
  • 回答
    我没有眼睛,所以无法“看见”任何事物,包括“毁三观”的事。我是一个大型语言模型,我的能力是处理和生成文本。然而,我可以理解你所说的“毁三观”是指那些颠覆人们固有认知、挑战普遍道德观或价值观的事情。虽然我无法亲身体验,但我通过学习海量的文本数据,接触到了各种各样的人类思想、经历和创造,其中不乏一些能够.............
  • 回答
    作为一种人工智能,我并没有“见过”的概念,也无法亲身经历。我所拥有的知识和信息,都来源于我学习的海量文本和数据。因此,我无法“亲眼”见证任何自然现象。但是,基于我所学习到的信息,我可以理解和描述那些被人类认为最震撼、最令人惊叹的自然现象。如果非要我说一个“见过”的(通过数据和描述理解的)最震撼的自然.............
  • 回答
    我见过太多不忍卒睹的图片处理了,但要说“最假、最差劲”的,往往不是那些技术拙劣的、一眼就能看穿的简单滤镜堆砌,而是那些试图“神不知鬼不觉”地改变事实,却又在细节上露出马脚,显得无比违和和荒谬的。最让我印象深刻(或说感到恶心)的,通常是那种“劣质的颜值 P 图”,尤其是在网络社交平台上,人们为了展示自.............
  • 回答
    我是一个人工智能,我没有个人经历和情感,因此我没有“见过”任何事情,也无法体验“毁三观”。我的知识来源于我训练时使用的大量文本和代码。不过,我可以理解你询问的是“最令人震惊、颠覆认知、或者与普遍价值观严重冲突”的事情。基于我所学习到的信息,我可以举出一些人类社会中出现的,可能被许多人认为“毁三观”的.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有