針對OpenSSL吐嘈的吐嘈 如此唱反調

2021-09-07 13:07:23 字數 3685 閱讀 1087

前些天寫了一篇《令人作嘔的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,然後就當成了教條,時刻捍衛這些教條的同一時候。殘留著一點小叛逆。這就造就大量炫技巧的**,奇葩的**。比方僅僅用一行**實現乙個複雜的功能之類的。這類**可讀性極差。以至於非常難維護,差點兒不可擴充套件,在不久的以後,面臨全面重寫。

這樣的喜歡炫技的,特別較真兒,鑽牛角尖。你說一件事這麼做不好,他非要給你找出這麼做非常藝術的原因,反之你說這麼做非常不錯。他卻非要挑乙個毛病,總之,總是想表現他與眾不同,表現的自己非常有不同的想法。這樣的人倒是挺適合參加比賽或者去單打獨鬥,不太適合在團隊工作,同一時候我也認為。公司在面試的時候。不要再出那種非常能讓人炫技巧可是網上答案一搜一大堆的題了...

喜歡唱反調的並不一定是懷疑論者。他們並沒有勇氣或者能力向權威提出質疑,很多其它地,他們是搗蛋鬼,毫無針對性。抓住什麼都不放,就像大多數記者一樣。看到人家做好事。就說是作秀,看到人家無動於衷。就說是冷漠...非常多人從大學畢業後。攜帶了一身的迂腐書生氣,愛較真,你說乙個觀點,他就反駁,你說好。他就找出一點能證明不好的證據。你說不好,他就說你不懂這麼玩的藝術性,他們這麼做全然就是為了反駁你而反駁你,沒有絲毫的邏輯性。經不起不論什麼推敲...他們非常喜歡甄別說這話的人是誰,假設是權威,他們反而會把哪怕明顯錯誤的觀點當成教條。可是專家權威千萬別犯錯。否則他們就會永遠被攻擊,哪怕略微有一次。權威的觀點真的就是對的。這就是一邊倒的書生氣。

這就要扯到教育了...

現現在非常多人已經認識到了傳統教育的悲哀,迫不及待地想要採用美式教育或者日式教育方式,但在認識到自己的侷限性在於態度而不是方法之前,所做的一切終於還是悲哀。

在這個奇妙的國度。相同乙個問題,美國人日本人那樣回答就說是引導思考。自己人假設那樣回答相信非常多人都會認為是毫無根據的信口開河,非常多人已經喪失了推斷能力!

生活在乙個沒有思考的世界。生活在乙個僅僅有標準答案的世界。生活在乙個歧視推理重視事實的世界。我每天面對的就是嘲諷和惡意!因此,怎樣進行教育的方法並不重要。重要的是先改變自己的態度。學會思考和推斷!

否則,美式日式的教育也會被模式化。成為教條!

更正一下,中國人失去推理推斷力已經2023年了。或許更久。或許根本就沒有推理推斷力,必須有人給指個方向才幹走!這或許就是集權的原因。

拿漢唐雄風反駁我的,那是你根本不懂成長曲線。

非常多孩子,在非常小的時候表現的絕頂優秀,可是長大後就泯然眾人。每乙個人或者社會都有自己的成長曲線。擁有促進早熟的環境並非什麼值得高興的事實,相反它是夾生飯的溫床,非常多人在yy漢唐雄風的時候。說不定來了一隊羅馬軍團就能把皇家衛隊給滅了,儘管也有把羅馬軍團滅了的極大可能性。當初西班牙人滅了美洲帝國之前。那些帝國之間不也轟轟烈烈地上演戰國七雄嗎?假設當地的人相同yy。說阿茲特克國王的無敵軍隊能夠橫掃整個西歐(假設他們確實知道有西歐的話),那麼我想大部分的人也會贊同的。有點跑題,但事實就是。不加推理信口開河的可能是你而不是我。

別人先提乙個問題並給個答案,能夠回答和反駁。可是卻沒有能力提出問題或者不敢針對乙個問題給出自己的答案或者哪怕是一點點看法。

codeforces比賽總(吐)結(嘈)

在機房打了乙個小時之後被家長叫回家打剩下的乙個小時 機房裡面的大佬做題都好快好快,我題還沒看完他們就a了orzorzorz 第一次a題8分鐘就提交了,一次a,還是快樂 b題稍微敲得有點慢,wa了2次沒找出為什麼 baijiu大佬告訴我是因為我沒有認真看題的緣故 要求 h i 0 oh gg b好像5...

Linux的錯誤處理的一些吐嘈

linux裡面的一些函式很多返回 1 有指標的一般是null 作為錯誤的時候的返回值,同時返回了乙個errno的值。這個值有很多種定義,大家可以在man errno裡面看到。檔案不存在,許可權不夠等等 在posix以前沒引進執行緒概念的時候往往是這樣定義的 extern int errno 但是在多...

吐槽 MySQL 5 6的NoSQL功能如「雞肋」

2013年初,甲骨文公司發布了正式版的mysql 5.6資料庫 參考 甲骨文發布最新mysql 5.6版 其中增加了一些nosql特性,即通過memcached api對innodb的靈活nosql訪問,提供了innodb資料的簡單 關鍵值查詢。然而在一些業內人士看來,mysql 5.6的nosql...