王八拳编程及其它
什么是王八拳
王八拳是四肢生物,包括人类天生会的一种本能打斗方式,男女都会,老少皆宜。 – 百度百科
显然从定义上来看,这是一套在人类存在以前早已有之的古拳法,当然做为人类我们还是希望找到人类创始的起源,给人类找一点体面。
据(百度百科)说,有三种可疑的起源说法:
- 起源一:王朔的《看上去很美》中学会的一种中国古拳法。这种拳一般流行于幼儿园中,打这种拳,讲究的是打拳的小朋友眼睛紧闭,双拳握紧,两条胳膊以肩为圆心,向前乱轮圆圈,远里看就象乌龟爬坡爬不上去乱蹬的那个样子。这种拳一般不以击中目标为目的,主要是以一种盲目的抡拳动作在气势上威吓对你有攻击企图的小朋友。而如果打拳者在使出这种拳法的时候拌以大声的哭叫,更可以极大的增加威吓对方的力量。
- 起源二:一夫多妻制的中国农村妇女发明的一种古拳法,起源于于公元前5世纪,具有广泛的妇女基础,王八拳吸取了猴、狗、猪诸拳种之长,把形意拳的手法、手型、步型、步法、腿法、平衡、跳跃等动作规格化。它的特点是姿势绝不优美,动作绝不快捷,出手阴,跳得低,蹦得不远。它的内容包括挠、掐、咬三种动作,还有一定数量的击打敌人下三路的跳跃、跌仆、滚翻动作。长拳在技术上有八点要求:①姿势。头正,颈直,沉肩,挺胸,直腰,敛臀,上肢舒展、挺拔,下肢稳定、匀称。②动作。在做踢、打、摔、拿等技击动作时,起止点、路线、力点都要清晰。
- 起源三:巴塞罗那奥运会前,朱时茂和陈佩斯的表演的著名小品中,“陈小二”以一轮凶残猛烈的正反王八拳与当时的“拳王”朱时茂战成平手,并相约巴塞罗那再战。也正是因为这经典的一战,王八拳才被百姓所熟知。
什么是王八拳式的编程
之前看过一个笑话,某程序员在逼乎上问自己上班第一天就被炒了,是因为代码没写注释吗?并贴了一段他写的代码,大概是有个函数叫next_day要求返回下一天,然后他的代码是:
sleep(24*60*60)
你调用一个函数,要求返回下一天的日期,他给你的代码是「我明天告诉你」!
这必须是程序员自黑的段子,但也给我们看到了代码的下限,不是码代码的就牛逼,有些代码我们惊为天人,但也有些代码,简直脑子进水。特别是现在不见得是科班出身的人在写代码,什么人都有,也就什么样的代码都有。代码如人,有颜值高的,也有颜值低的,这是再自然不过。
于是自然有一种编程是出自于本能,有一种代码,没招没式,能出结果就好,我称之为「王八拳」,做这样的类比,我不知道有没有出处,我自己在做出独立思考之后,采取这样的词汇在我的文章中,当然说自己没有问题,说别人的时候,尽管我说的是事实,「王八拳」是一种拳法、是一种套路,它只是一个名字、一个标签,没有骂人「王八」的意思,但听者有意,还是给自己惹来不必要的麻烦,所以写此文,以解释这个「王八拳」的意思。
王八拳首次出现于我的文章《同一数据多变量分组的boxplot?》,这篇文章我认为是我写过最好的解答用户文章之一,我对问题进行拆解,然后用不同的思路进行回答。比如A是为了解决B而设计的,我来用解决C问题,这是充分掌握后灵活应用,老夫子曰:「随心所欲,不逾矩」,就是这个套路,所以带着枷锁在跳舞;我还给出了王八拳的解法,旨在告诉大家,放开那些条条框框,让我来。
这是第一次我提到王八拳,这其实是学术界的人用得最多的,因为学术界很多代码是写给自己用的,写给自己用的代码容易,能出结果就行;写给别人用的代码不容易,你要考虑更多的细节,你需要封装,尽量抽象。
所以我这里不防给王八拳式编程来个定义:缺少抽象的代码。比如没有封装函数,比如各种可怕的常量还直接用数字出现。
容易受伤的人
有个专注于可视化的团队,他们有个公众号,我之前也关注,后来取关,因为全是王八拳式的代码。
他们(A和B,可以理解为A是老大,B是小弟)和我也互相加了微信,某天B的文章发在「R语言中文社区」,B发朋友圈说自己在最大的R语言中文社区发表了推文,我评论说,「难道R语言最大的中文社区不是统计之都吗」,好了,A出来喷我了,还兼说我做为前辈,应该多照顾年轻的,还再标榜他们做为自学的文科生,已经非常不容易,非常长的一段话。吓得我赶紧把这两人删了。
后来A又来加我,在我公众号后台留言等,表示自己多有得罪,要转发我的文章,导个流什么的,既然人家多次表示,还以导流示好,也就算了,同意了加好友请求。
然后就在张罗转载了,一共转了5篇文章,只有第一篇文章发给我预览,前面加了个介绍,说我写了多少R包,有个公众号。
我让他在文后加个二维码,阅读原文加个链接。他说好,然后没有再给我预览了。他的文章发出来后,我吓了一跳,赶紧写了「关于《关于转载》」一文,特别申明,要按照规范来。然后我又把这人给删了。
BTW: B还是逼乎大V,在逼乎上说R有4套画图系统,除了ggplot2之外,全是垃圾。虽然我也是ggplot2党,但对这样的话,我只能说没见过世面,瞎jb扯。我在推文里说过。
前面是前言,如果有所谓恩怨的话,就这些了。
在小丫画图群里,小丫说想众筹某个图,我见过那图,知道是一套王八拳的代码,我就评论一句,能否解决王八拳的问题,如果换个数据调参数就跟用AI搞一遍一样,那要代码有何用!
于是A就出来了,说我堂堂一个教授,diss B好多次(如果正常评论说diss的话,那就两次吧),然后又各种对我是敬佩的,用我的包,写书也用我的包,奈何我删了他微信,「痛心疾首」,我又是教授,又是博士,他们自然没我水平高。
还说他「转发了我的文章」,他「不敢得罪我」。以道德要求我,又以自己弱者示人,我觉得有必要让他死得明白,我把「关于《关于转载》」一文扔出来,他去截屏说第一篇有介绍我,我为什么没有在预览的时候说这些问题,尼马就预览了一次,后面我说加二维码没加,发之前当然也没预览,关键是5篇文章,只有一篇预览了一次,后面4篇我提到的没有说转载来源,没有加二维码,没有加原文链接,然后把我文中的链接都给删除了,我说到的诸多问题,避而不谈,就拿第一篇有个介绍的截屏出来说。自己做的不到位,承认一下自己疏忽,虽然大家都知道是假的,但也就过去了,还反过来指责别人,并且说我堂堂教授「瑕疵必报」。结果群里大家都看不下去了,完全没有辩论,而只是在各种身份攻击。
当然也攻击了说我骂人王八,我也解释了一翻,这不是骂人,于是有此文,是为「王八拳编程」做一个定义。
其实A也是香港某高校的博士生,这种我弱我有理,你是老师你应该怎么样的心态,希望不是现在研究生的常态。也希望研究生们不要动不动就觉得自己丢人了,要争个脸,多半时候,你只是在不要脸,这种事情也见多了。