前些天写了一篇《令人作呕的OpenSSL》,顿时引来了大量的恶评。令我非常尴尬,同一时候也认为悲哀。

假设说you can you up之类的,我认为起码这人看出了我的本意,仅仅是怀疑我的能力。可是我看到一些人居然在我评价了一段僵尸代码后认定我不懂编译代码,这就悲哀了,这段代码大致例如以下:

#if 0 /*abcdefghijklmn, ( and
ABCDEFGHHHHSASA
*/
.....
#endif

请问有人会这么写代码吗?我仅仅是指出这段代码确实不合理而已。悲哀点在于,有些人为自己能看懂这段代码感到非常荣幸和自豪。由于他知道编译器先处理掉凝视再做宏的预处理,这仅仅能说明他没有忘掉当初学C语言时学到的东西,既然编译器的行为标准不是他制定的,那么他一定是学来的。非常多人都不是在看第一行代码,写第一行代码的时候才知道它的,假设来了一个新人,他不懂这些,当然仅仅是还没有学到,知道这么一个事实对于coder来讲是早晚的事,知道这一点确实不是什么值得自豪的事情。但他有逻辑,能看懂别人的代码,面对这么一大堆僵尸代码,这不是折磨人吗?难道不令人费解吗?确实。编译器没有迷惑,仅仅是编译器愤慨了而已,假设C标准不允许这么写的话,编译器会轻松非常多,能看懂这段代码并认为这么写没问题的人,记住。是编译器在纵容你。惯着你。不要得寸进尺。

不好的东西无论作者是谁都是不好的东西。即使是大师拉的屎也不是香的。只是我早就猜到会有人不允许我的观点,仅仅要是大家都在用的,存在即是合理的,他们就非要找一个这么做的理由不可,甚至还搞出这么做是“一种艺术”,...请看清楚,关于do {...} while (0)是我之前一直使用的,可是后来我舍弃了这样的做法,明确它妙处的人仅仅知其一不知其二,都知道它能取代goto,可是却不知道它应该用在哪里。

假设你认为它比goto好的话,Linux kernel的粉丝们是不是又要站出来为goto来平反呢??其实,Linux kernel同一时候使用了do{}while(0)和goto,仅仅只是前者都是用在宏定义中而已。Linux之所以用goto是由于它能够实现序列化的回退,正如:

sth1
...goto err sth1 if error
sth2
...goto err sth2 if error
sth3
...goto err sth3 if error
return
err sth3
err sth2
err sth1

在err sth3往下。一系列的回退能够自己主动进行。当然,假设你憎恨goto。用多层的do{}while(0)也是能够的。可是问题又来了,不是也有人说过层次太多不好吗?问题是,就由于某个大湿说了一句goto不好,从此goto就背上骂名了?假设你不是存在主义者。是不是应该大骂goto的引入者或者C的发明人呢?其实,goto也是艺术。其实,以上指出的其二就是,不论什么东西。看你怎么用,屎不能喂人,但能够喂狗,仅此而已。
       诚然。OpenSSL代码能够编译过,也能够执行,它的库已经被用于大量场合,这就说明它是正确的。是的。它并不错。它没有问题。问题在于。我们不应该评价代码本身的错与对。以及编译器怎样地将其优化成人看不懂的机器码。我们更应该关注的是它能给我们带来什么,它怎样让后来人能够看得懂,不那么令人费解地被理解,从而扩展它实现自己的定制需求,这才是根本,代码的生命力也因此而体现出旺盛。对于OpenSSL而言,可读性是差了点,或许跟它的历史以及开发模式加上缺人手有关。这些社区都是承认的。可是同学们把它当教条就不正确了,认为它应用广泛而且是大师參与当中就膜拜它。

开源的东西并不都是好的,也并不都是大湿的作品,开源的本质恰恰是消除了阶级门槛而带来的自由,随便一个菜鸟都能够在github上开一个项目,同一时候,也有非常多大湿參与的项目由于各种原因而夭折。这些原因中就包含代码太烂。太过技巧性,别人无法參与进来。英语和普通话的益处有目共睹,那就是它们的通用性,当然。你能够站在民族主义,文化主义的立场上反驳甚至憎恨我,可是我的意思是,无论你再不喜欢,无论它们多大程度的抹杀了你独特方言给与的创造性。你还是接受了它们。不是吗?你有你的方言,你能够说你的母语多么的美,可是面对第二种相同美的方言,母语的时候。你们将无法交流,无法互通有无...对于计算机编程语言写出的代码而言。可读性。可理解性就是通用性,要让每一个人都能读这段代码,能改这段代码。
       别把代码写的易读看成什么没有技术含量的事情,代码本身就不是什么极其重要的东西,它仅仅是一个交流的媒介,不光是人与机器的交流。还包含人与人的交流,不像高深的数学,代码不值得让你写得如此排他。

每一个程序猿在刚毕业后差点儿都以前认为写一些非常有技巧性的绚烂代码会显得自己水平非常高,看不惯那种寻常的代码。或许老师教过说goto不好,那就再也不用它。然后换成do{}while(0)或者switch case之类的,或许老师又教过,说OO的多态能够免去else if,然后就当成了教条,时刻捍卫这些教条的同一时候。残留着一点小叛逆。这就造就大量炫技巧的代码,奇葩的代码。比方仅仅用一行代码实现一个复杂的功能之类的。这类代码可读性极差。以至于非常难维护,差点儿不可扩展,在不久的以后,面临全面重写。

这样的喜欢炫技的,特别较真儿,钻牛角尖。你说一件事这么做不好,他非要给你找出这么做非常艺术的原因,反之你说这么做非常不错。他却非要挑一个毛病,总之,总是想表现他与众不同,表现的自己非常有不同的想法。这样的人倒是挺适合參加比赛或者去单打独斗,不太适合在团队工作,同一时候我也认为。公司在面试的时候。不要再出那种非常能让人炫技巧可是网上答案一搜一大堆的题了...
       喜欢唱反调的并不一定是怀疑论者。他们并没有勇气或者能力向权威提出质疑,很多其它地,他们是捣蛋鬼,毫无针对性。抓住什么都不放,就像大多数记者一样。看到人家做好事。就说是作秀,看到人家无动于衷。就说是冷漠...非常多人从大学毕业后。携带了一身的迂腐书生气,爱较真,你说一个观点,他就反驳,你说好。他就找出一点能证明不好的证据。你说不好,他就说你不懂这么玩的艺术性,他们这么做全然就是为了反驳你而反驳你,没有丝毫的逻辑性。经不起不论什么推敲...他们非常喜欢甄别说这话的人是谁,假设是权威,他们反而会把哪怕明显错误的观点当成教条。可是专家权威千万别犯错。否则他们就会永远被攻击,哪怕略微有一次。权威的观点真的就是对的。这就是一边倒的书生气。

这就要扯到教育了...
       现现在非常多人已经认识到了传统教育的悲哀,迫不及待地想要採用美式教育或者日式教育方式,但在认识到自己的局限性在于态度而不是方法之前,所做的一切终于还是悲哀。
       在这个奇妙的国度。相同一个问题,美国人日本人那样回答就说是引导思考。自己人假设那样回答相信非常多人都会认为是毫无根据的信口开河,非常多人已经丧失了推断能力!

生活在一个没有思考的世界。生活在一个仅仅有标准答案的世界。生活在一个歧视推理重视事实的世界。我每天面对的就是嘲讽和恶意!因此,怎样进行教育的方法并不重要。重要的是先改变自己的态度。学会思考和推断!

否则,美式日式的教育也会被模式化。成为教条!

更正一下,中国人失去推理推断力已经2000年了。或许更久。或许根本就没有推理推断力,必须有人给指个方向才干走!这或许就是集权的原因。

拿汉唐雄风反驳我的,那是你根本不懂成长曲线。
       非常多孩子,在非常小的时候表现的绝顶优秀,可是长大后就泯然众人。每一个人或者社会都有自己的成长曲线。拥有促进早熟的环境并非什么值得高兴的事实,相反它是夹生饭的温床,非常多人在YY汉唐雄风的时候。说不定来了一队罗马军团就能把皇家卫队给灭了,尽管也有把罗马军团灭了的极大可能性。当初西班牙人灭了美洲帝国之前。那些帝国之间不也轰轰烈烈地上演战国七雄吗?假设当地的人相同YY。说阿兹特克国王的无敌军队能够横扫整个西欧(假设他们确实知道有西欧的话),那么我想大部分的人也会赞同的。有点跑题,但事实就是。不加推理信口开河的可能是你而不是我。

我没有根据。我就不会肯定的说某件事。我说的仅仅是自己的设想猜想。或者仅仅是自己的一点看法,假设有人那我所论述的这些看法来较真。那他就真的上套了。
       有一点我非常相信。那就是喜欢唱反调的人基本就是干活的人,这是最最令人悲哀的地方。由于不唱反调的人基本都当了领导,也基本失去了不论什么解决这个问题的能力,当然也包含唱反调的能力...
       我发现一个让别人相信你的好办法。那就是表达论点时千万别推理。直接说在某个外国人写的书上看到的就可以,但别太详细,由于教育出来的非常多人的强烈的钻牛角尖癖好....理论联系实际就是一脬屎,假设牛顿生在中国。那他的所谓毫无摩擦力的理想平面不被骂死才怪!

别人先提一个问题并给个答案,能够回答和反驳。可是却没有能力提出问题或者不敢针对一个问题给出自己的答案或者哪怕是一点点看法。

针对OpenSSL吐嘈的吐嘈-如此唱反调的更多相关文章

  1. 使用 OpenSSL API 进行安全编程

    创建基本的安全连接和非安全连接 Kenneth Ballard ( kenneth.ballard@ptk.org), 自由程序员 Kenneth 是 Peru State College(位于 Pe ...

  2. 笔记整理——使用openssl编程

    error: openssl 的所有解决方案 (2013/6/22 17:39:00) error: openssl/crypto.h: No such file or directory 解决方案 ...

  3. 谈一下OOP的乱用现象

    很久很久以前写了两篇设计模式乱用的文章,最近心血来潮,突然想写篇OOP乱用. 最近在移植一个旧项目,接手过程很多嘈想吐,开一篇谈一下OOP的乱用. 大多数公司用MVC是为了解耦合,但是这套代码的MVC ...

  4. Egret的若干局限

    Egret是个好东西,整套workflow用下来,特别顺手,对于移动端游戏的开发来说,选择Egret无疑是个不二的选择. 当然,小学语文课上老师就教过一种写作手法,欲扬先抑,笔者今天倒过来,来说说Eg ...

  5. curl英文直译

    文档概述 比较表 curl手册页 常见问题 HTTP脚本编写 mk-ca-bundle 教程 curl / 文件 / 工具文档 /手册页 curl.1手册页 相关: 手动 常见问题解答 HTTP脚本 ...

  6. 常用汉字大全:汉字读音表GB2312版(共7809个汉字)

    转载请注明来源:https://www.cnblogs.com/hookjc/ 常用汉字:a1:阿啊呵腌吖锕a2:啊呵嗄a3:啊呵a4:啊呵ai1:哀挨埃唉哎捱锿ai2:呆挨癌皑捱ai3:矮哎蔼霭嗳a ...

  7. 好文章之——PHP系列(一)

    注:最近实习的公司是一家做电商企业,后台主要是php开发,好久不怎么接触php的我看了几篇相关文章,提高下对它的认识与理解,发现里面的学习思路还是非常好的,当然也会重新拾一下基础知识啦! 其实自己心中 ...

  8. Java多线程编程(3)--线程安全性

    一.线程安全性   一般而言,如果一个类在单线程环境下能够运作正常,并且在多线程环境下,在其使用方不必为其做任何改变的情况下也能运作正常,那么我们就称其是线程安全的.反之,如果一个类在单线程环境下运作 ...

  9. CA认证原理以及实现(上)

    转自:http://yale.iteye.com/blog/1675344 原理基础数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体,依靠数字证书,我们可以构建一个简单的 ...

随机推荐

  1. python 模块学习(二)

    一.日志模块(logging ) 日志是一种追踪软件运行时所发生事件的方法 1.简单的日志编写(文件输出) import logging # 日志模块 # 日志配置,把日志内容存到文件中 loggin ...

  2. POJ 2377 (并查集+sort求最远路)

    Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N ...

  3. 刁肥宅详解中缀表达式求值问题:C++实现顺序/链栈解决

    1. 表达式的种类 如何将表达式翻译成能够正确求值的指令序列,是语言处理程序要解决的基本问题,作为栈的应用事例,下面介绍表达式的求值过程. 任何一个表达式都是由操作数(亦称运算对象).操作符(亦称运算 ...

  4. CEF与代理

    此文已由作者王荣涛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. CEF(Chromium Embedded Framework)如今已经广泛被应用于客户端软件,网易内部就有 ...

  5. js的几个可能不清晰的问题

    一、关于全局变量的 var test=function(){ var a=1; setTimeout(function(){ console.log(a); a=2; },1000); a=3; se ...

  6. 【课余作品】简约QQ申请器(永久免费更新)

    UPDATEDATE:2013-08-28 下载地址:http://pan.baidu.com/share/link?shareid=3376000151&uk=3339155803

  7. [CodePlus2017]晨跑

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 166  Solved: 125 Description "无体育,不清华".&qu ...

  8. 51nod1135 原根

    原根判定:$m>2$,$\varphi (m)$的不同素数是$q_1,q_2,……,q_s$,$(g,m)=1$,则$g$是$m$的一个原根的充要条件是$g^{\frac{\varphi(m)} ...

  9. Flex使用cookie保存登状态

    flex系统要实现普通html系统刷新页面保留登录信息,一个方法是借用js来操作cookie来实现,下边是一个实现的例子: 第一步:在主index.html里边加上两个js方法 //获取cookie内 ...

  10. 学习日常笔记<day12>jsp基础

    1.Jsp基础 1.1Jsp引入 Servlet的作用:用java语言开发动态资源的技术 Jsp的作用:用java语言(+html语言)开发动态资源的技术 jsp就是servlet 1.2Jsp的特点 ...