主頁 > 軟體設計 > 程式員必備的思維能力:邏輯思維

程式員必備的思維能力:邏輯思維

2021-08-03 08:00:05 軟體設計

更多關于思維能力的內容,盡在我的新書《程式員必備的思維能力》

“你講話要有邏輯!”

“你這邏輯不對!”

“你的底層邏輯是什么?”

“說說你的邏輯思維能力體現在哪兒?”

在日常交流中,我們會頻繁的使用“邏輯”這個詞,但能夠清晰的說出邏輯的定義(什么是邏輯)應該不多,能夠正確的掌握邏輯推理的人就應該更少了,對于大部分人來說,邏輯更像是一個“熟悉的陌生人”,

舉個例子,

小王說:“Frank真不是男人,竟然會怕老鼠,”

小張說:“Frank怎么不是男人,他不是男人,怎么會有鼓鼓的二頭肌呢?”

你覺得小張的反駁有道理嗎?如果你覺得有問題,問題出在哪里呢?這里其實是犯了一個典型的邏輯謬誤(先賣個關子,在邏輯謬誤小節會給出答案),類似于這樣的邏輯謬誤,每天都會在我們的溝通交流中發生,只是因為我們缺乏相應的邏輯知識,不能被識別罷了,因此,作為以邏輯思維縝密自居的程式員們,我們有必要好好的探究一下邏輯思維,

然而,邏輯學是一門非常復雜的學科,光《邏輯學導論》就有752頁,系統的介紹邏輯學并不是本章的目的,本章的主要目的是邏輯知識科普,旨在喚起大家的理性意識,能夠掌握一些邏輯學的基本知識,具備一些邏輯思維能力,在面對“杠精”的時候,能發現對方的邏輯謬誤;在思考問題的時候,能盡量做到邏輯完整;在表達的時候,能盡量做到邏輯清晰,

下次,當別人對你說“你這邏輯不對!”的時候,你能知道他是在說什么,同樣,當你對他人說“你這邏輯不對!”的時候,也知道自己在說什么,

什么是邏輯

邏輯(logic),源自古典希臘語邏各斯(logos),最初的意思是“詞語”或“言語”,(引申出意思“思維”或“推理”),邏各斯,是古希臘哲學家赫拉克利特最早引入的哲學概念,古希臘哲學從探求世界本原問題開始,從泰勒斯的水本原(具象),認為水是萬物之源,到赫拉克利特的邏各斯(抽象),再到柏拉圖的理念論,完成了自然哲學到形而上學的發展,

簡而言之,邏各斯是指可理解的一切規律,邏輯是指思維的規律和規則,

邏輯除了指思維規律,狹義上,也有邏輯學的含義,按照《邏輯學導論》中的定義,邏輯學是研究用于區分正確推理(inference)與不正確推理的方法和原理的學問,

相比較上面的教科書定義,我覺得芝本秀德在《深度思考法》中對邏輯的定義要更容易理解,他說“邏輯就是關系,”

我們說某人邏輯性太差,其實正是因為他們沒有在想表達東西之間建立關系,例如,對方說“今天的天氣真不錯,”我們認為,諸如“是啊,天氣太好了”或者“天氣讓人心情都變好了”這樣的回答是有邏輯性的,可是如果回答是“我肚子好餓啊”,那么這種答非所問,就完全不符合邏輯,所以說無邏輯就是沒有建立起事物之間的正確關系,換句話說有邏輯就是能建立事物之間的正確關系,

這個表述有一定的道理,因為邏輯學就是研究多個陳述句(sentence)之間推理是否正確的學問,所以從這個意義上來說,邏輯學就是研究陳述句之間關系的學問,不過,這個“關系”并不是都像“天氣好”和“心情好”這樣的顯而易見,有些關系很復雜,有些關系很隱蔽,這就要借助更多邏輯學的知識來分析他們的有效性了,

不管怎樣,從理解的角度來說,記住“邏輯就是關系”還是很有用的,關于邏輯關系,我也會在結構化思維一章中進行更加詳細的闡述,

邏輯思維的要素

邏輯思維基本包含三個方面:

  1. 概念;
  2. 判斷(在邏輯學中,也叫命題,英文是proposition);
  3. 推理(在邏輯學中,也叫論證,英文是argument);

概念是思維的基本單位;通過概念對事物是否具有某種屬性進行肯定或否定的回答,這就是判斷;由一個或幾個判斷推出另一判斷的思維形式,就是推理,

實際上一本書的邏輯也是包含這三個要素,如果你看過《如何閱讀一本書》,里面提到的分析閱讀,說的就是如何通過提煉一本書的關鍵字詞(概念),關鍵句子(判斷),以及關鍵論述(推理)來分析一本書的主旨,

所以邏輯思維的要義,就在于正確運用概念、判斷、推理的思維形式,想要正確掌握邏輯思維,就必須從這三方面學起,

概念

概念是思維的基本單位,是反映事物本質屬性或特有屬性的思維形式,

這個世界有很多事物,都是通過我們的思維去賦予它們意思或意義的,然后通過語言符號呈現出來,所以說,這些意思或意義,就是概念的思維內顯形式,語言是概念的外顯形式,

明晰概念可以說是我們了解事物的第一步,是我們學習、研究和討論的基礎,可以說認知水平越高的人,越能認識到概念的重要性,

在《批判性思維工具》一書中,作者說學習一門課程應該從理解課程的最基本概念開始, 比如在經濟學中,“稀缺”是經濟學中的基本概念,其它經濟學概念都與這一中心概念有關:稀缺意味著我們任何一個人都不可能擁有所有想要的資源(稀缺的事實),我們想要得到一些東西必須先放棄另一些東西,

同樣,在2016年11月9日下午,在北京舉辦的“朗潤·格政”國家發展研究院論壇上,兩位著名經濟學家林毅夫和張維迎在北京大學朗潤園進行了一場可以寫入歷史的辯論,

他們辯論的主題是“產業政策”,在辯論的開始很有意味,林毅夫首先開講,在說完客套話后接著說:
“在準備這個報告的時候,他們給我一個任務,你在講你的看法之前先定義一下什么是產業政策,我想定義是非常重要的,不然會各說各話,談論程序當中就沒有激情,”

我個人也是如此,我在分享DDD(Domain Driven Design:領域驅動設計)的時候,總是會花很大的篇幅去介紹通用語言(Ubiquitous Language),說這是DDD的核心,一個團隊只有在統一語言概念基礎上,才能更好的溝通協作;檔案和代碼里面的核心概念只有保持一致,才會具備更好的可讀性和可理解性,我建議,對于任何領域,都應該有一份核心領域詞匯表,方便團隊在這些核心概念的表達和命名上達成共識,

中文名英文名縮寫代碼中的表達含義
單品Children Standard Product UnitCSPUCSPUSKU的產品資訊聚合
商品ItemItem由商家發布,可在App購買
標品Standard ProductProduct有69碼的是標準產品
貨品Supply Chain ItemScItemScItem商品在倉儲配送域叫貨品
生產日期Production DateP.ProductionDate商品生產日期
有效期Expiring DateE.ExpiringDate保質期=效期-生成日期

所以,提高我們的邏輯思維能力,要從懂清楚每一個概念所表達的具體內容(內涵和外延)開始,

判斷

判斷(也叫命題)是推理的建筑基塊,一個判斷就是一個斷言(Assert),它斷定了一個事情是這樣或者不是這樣,因此,每一個判斷都是或真或假的,

一個問題沒有斷言任何東西,就不是判斷,“你知道下象棋嗎?”這的確是一個句子,但沒有做出關于這個世界的斷定,一個命令(“快點!”)或者感嘆(“我的天哪!”)也不是判斷,因為這些問題、命令和感嘆都是非真且非假的,

判斷一般都是用陳述句作為表達的,如“世界上的所有人都是善良的”,這是一句肯定判定,只要該判斷符合物件的實際情況,這就是真的,反之就是假的,

判斷是概念的展開,沒有判斷,就不能揭示和說明概念,同時,判斷也是推理的前提,是正確運用各種推理的必要條件,

試想一下,“世界上的所有人都是善良的”這個判斷,我們都知道是假的,否則這個世界就沒有違法犯罪的人了,

由此,我們可以得出判斷的兩個重要特征:

  1. 判斷有肯定或者否定之分,可以有肯定判斷和否定判斷;
  2. 判斷有真偽之分,一個判斷要么真要么假,不能非真非假;

準確的運用判斷,我們才能夠進行正確的思考,而思考的形式,就是推理了,

邏輯推理

邏輯推理,可以分為演繹推理(Deductive Inference)、歸納推理(Inductive Inference)和溯因推理(Abductive Inference),
還記得上文關于邏輯的定義嗎,邏輯就是關系,所謂的推理,就是研究陳述句、判斷、命題之間相互關系的學問,

演繹推理

演繹推理旨在闡明前提和結論之間的關系,為評估演繹論證是否有效提供方法,

演繹邏輯是一個從一般到特殊的程序,我們通常說的“大前提、小前提、結論”的三段論形式就是典型的演繹邏輯,例如“所有人都會死,蘇格拉底是一個人,因此,蘇格拉底會死,” 大前提是“所有人都會死”,小前提是“蘇格拉底是一個人”,結論是“蘇格拉底會死,” 這是一種必然性推理(保真推理),因為其結論就包含在前提之中,“所有人會死”本身就包含“蘇格拉底會死”,

演繹邏輯,在歷史上出現了兩種杰出理論,第一種被稱為“古典邏輯”或“亞里士多德邏輯”,開創這種理論的是古希臘哲學家亞里士多德,他關于推理的論述被收集成冊,稱為《工具論》,另一種稱為“現代邏輯”或“現代符號邏輯”,他主要形成與20世紀,

古典邏輯和符號邏輯,都是研究推理的形式(form),所以也被稱之為形式邏輯,

也就是說,對于一個推理來說,首先要保證在形式上是有效的,如果推理形式有效且前提為真,那么結論必定為真,如果形式是無效的,即使前提為真,結論不一定為真,“真”和“假”的概念適用于命題,“有效性”和“無效性”適用于邏輯形式,

例如下面的論證:

如果比爾蓋茨擁有福特的所有財富,那么比爾蓋茨將是富有的;(p=>q)

比爾蓋茨不擁有福特的所有財富;(~p)

所以,比爾蓋茨不是富有的,(∴ ~q)

雖然前提(premise)是真的,但是其論證形式是無效的(否定前件謬誤,后續會介紹),所以其結論是無效的,同時也是假的,

古典邏輯

古典邏輯(亞里斯多德邏輯)主要處理的是不同物件的類之間關系的論證,類是指共有某種特定屬性的物件的匯集,
類與類之間的三種關聯方式:

  1. 全包含(wholly included)例如狗的類和哺乳動物的類,
  2. 部分包含(partially included)例如運動員的類和女人的類,
  3. 互斥(exclude),例如三角形的類和圓形的類,

基于類和類之間的關系,有四種直言命題:

  1. 全稱肯定命題,所有S是P,例如所有政客都是說謊者,也叫A命題,
  2. 全稱否定命題,沒有S是P,例如沒有政客是說謊者,叫E命題,
  3. 特稱肯定命題,有S是P,例如有政客是說謊者,叫I命題,
  4. 特稱否定命題,有S不是P,例如有政客不是說謊者,叫O命題,

基于這些命題和謂項,組成了很多形式,古典邏輯學家很細致的研究了這些形式,總結出15個有效的三段論形式,

例如下面的論證:

沒有富人是游民,(E命題)

所有律師都是富人,(A命題)

所以,沒有律師是游民,(E命題)

因為這個論證形式是EAE-1,而EAE-1是15個有效論證形式之一,所以是一個有效論證,又因為其前提是真的,所以結論也是真的,

符號邏輯

所謂符號邏輯就是利用符號來表示邏輯中的各種概念,1847年,英國數學家布爾發表了《邏輯的數學分析》,建立了“布爾代數”,并創造一套符號系統,布爾建立了一系列的運演算法則,利用代數的方法研究邏輯問題,初步奠定了數理邏輯的基礎,

目前,符號邏輯已經超出邏輯學的范疇,成為數學的一個分支,同時也是計算機科學的基礎,

邏輯代數也叫做開關代數,它的基本運算是邏輯加、邏輯乘和邏輯非,也就是命題演算中的“或”、“與”、“非”,運算物件只有兩個數 0和 1,相當于命題演算中的“真”和“假”,邏輯代數的運算特點如同電路分析中的開和關、高電位和低電位、導電和截止等現象完全一樣,都只有兩種不同的狀態,因此,它在電路分析中得到廣泛的應用,

通過符號化和公式化,我們就可以對邏輯命題進行數學演算,比如符號~代表否定,因此 p=q 和 p=~~q 是等價的,即雙重否定等于肯定,同樣,我們在計算機中的邏輯運算(與、或、非)也是完全符合符號邏輯的,

再比如,如下的論證形式都是無效的,因為犯了肯定后件和否定前件的謬誤,

肯定后件謬誤
p=>q
q
∴ p

否定前件謬誤
p=>q
~p
∴ ~q

關于這兩個謬誤很容通過例子看出來,前面“比爾蓋茨不是富翁”的例子就是一個典型的否定前件謬誤,而下面“華盛頓之死”的例子是肯定后件謬誤,因此,所有的論證形式只要是否定前件或者肯定后件的,都是無效的,

如果華盛頓是被暗殺的,那么華盛頓死了,(p=>q)

華盛頓死了,(q)

因此,華盛頓是被暗殺的,(∴ p)

歸納推理

歸納推理是以一類事物中若干個別物件的具體知識為前提,推出有關該類事物的普遍性知識的結論的程序,

例如:

貓A喜歡吃魚,
貓B喜歡吃魚,
貓C喜歡吃魚,
貓D喜歡吃魚,

因此:貓喜歡吃魚,

就是一個典型的歸納推理,然而,同樣的推理用在下面的案例中,就出現了問題,因為我們知道還有黑天鵝的存在,

天鵝A是白的,
天鵝B是白的,
天鵝C是白的,
天鵝D是白的,

因此:天鵝是白的,

這也是為什么有很多哲學家吐槽歸納法,認為歸納法雖然可以得到新知識,但是因為不能窮舉,所以永遠也得不到真理,然而,演繹法雖然可以保真,但因為結論是蘊含在大前提里面,又不能產出新知識,最后推匯出如果有真理存在的話,真理只能是先驗的(先于我們感覺經驗,先天存在于我們的意識之中),

然而科學知識都是來自于科學歸納法,所以真正的科學都是可以被證偽的,即當一個科學理論與最新的發現發生矛盾的時候,就需要一個新的理論來代替它,愛因斯坦的相對論雖然在牛頓力學的基礎上邁出了一大步,但還是受到了量子力學的挑戰,因此,我們還需要一個能夠解釋所有力學現象的統一場論,這也是愛因斯坦終其一生沒有完成的作業,只能期待另一個愛因斯坦來完成這個偉大的作業了,

實際上歸納和演繹并不是割裂的,而是彼此聯系的,主要有兩個原因:

  1. 其一,為了提高歸納推理的可靠程度,需要運用已有的理論知識,對歸納推理的個別性前提進行分析,把握其中的因果性,必然性,這就要用到演繹推理,
  2. 其二,歸納推理依靠演繹推理來驗證自己的結論,同樣,演繹推理要以一般性知識為前提,這通常要依賴歸納推理來提供一般性知識,

這一點在我們軟體工程中的建模作業中得到了充分的體現,建模是一個歸納作業,我們通過抽象問題域里具有共同特性的類來建立模型,為了驗證模型的有效性,我們會使用演繹的方法,去推演不同的業務場景,看看是否能滿足業務的需要, 這樣的作業往往并不是一次成型,而是要交替往復,最終才能得到一個相對合理的模型,

溯因推理

溯因推理就是我先知道了答案,再去追溯原因的推理,這種推理方法最早也是由亞里斯多德提出的,在他的著作《前分析篇》中,提到過一種“還原推理模式”,說的正是溯因推理,

演繹推理的方法是由A推理出B,而溯因推理則不同,它是在看到了B后,推理出到底是什么導致了B的最佳解釋方法,可以理解成是根據結果B去推測原因A的推理方法,換句話說,溯因推理是解釋已知事物的程序,

如何進行溯因推理呢?

簡單來說,就是八個字:大膽假設,小心求證,

假如你家衛生間地上出現了一灘積水,需要你去推理一下它的原因,你該怎么辦?

按照這個八個字,你首先要做的是:大膽假設,

能夠造成衛生間地上有灘積水的原因比較多,比如衛生間的屋頂漏水、抽水馬桶漏水,或者有人在地上放了冰塊,

接下來,就得從眾多可能原因中找到一個最貼近現實的假設,因為屋頂漏水和地上有冰塊都不好解釋水是在抽水馬桶一側的現象,而且冰塊也不大可能會出現在衛生間,綜合考慮這些因素后,你就能得出一個最貼近現實的假設,那就是抽水馬桶本身漏水,

那么,怎樣才能知道衛生間的積水是抽水馬桶漏水呢?這就需要對這個假設進行驗證了,也就是小心求證,在這里,驗證并不困難,你只需要擦干漏水,看是不是有水從馬桶里漏出來,就能驗證假設是否正確了,這就是溯因推理的具體方法——大膽假設,小心求證,

做科學研究,也離不開大膽假設、小心求證,

1845年,天王星的運動資料和其它行星比起來,出現了2分鐘弧度差值,勒維耶提出一個假設:天王星的差值是有另一顆(未發現的)行星引起的,一旦做出這樣的假設,海王星那顆新行星就很快得以發現,

對于我們程式員來說,這種溯因推理基本每天都在進行,我們通常說的故障排查(Trouble Shooting)就是溯因推理,用的手段基本上也是假設和求證,

比如我們收到系統例外報警,然后去查看系統日志,發現是一個依賴的服務報了超時(Timeout)錯誤,我們的第一反應是:是不是網路出現了問題(假設),于是開始ping依賴服務的IP,發現網路是沒問題的(求證),于是提出了新的假設:是不是依賴服務內部出現了什么問題,于是開始排查依賴服務的日志,發現是因為一個資料庫操作太過頻繁,導致回應時間超時,可是這塊的代碼很長時間沒有修改了,為什么正好今天出現問題呢?通過進一步排查,發現是快取服務器出現了問題,導致本來呼叫快取的操作,全部打到了資料庫上,那為什么快取服務器會宕機呢?進一步追查,是因為最近使用快取的人比較多,導致記憶體空間不足導致了宕機,至此,才算真正的找到了問題的根因(Root Cause),

溯因推理不僅可以幫助我們找到造成現象的原因,還可以幫助我們挖掘問題的根因,因為很多時候,導致問題出現的原因往往是一個因果鏈:A導致了B的發生,B導致了C的發生,C導致了D的發生,D又導致了E的發生,所以,在看到E時,如果我們只追問到D這一層,就是沒有找到問題的根源所在,比如上面服務器超時問題的表象原因是資料庫操作導致的,實際的根因卻是快取服務器的記憶體空間不足,

凡事我們要多問幾個“為什么”,任何問題,如果你能扛得住5個“為什么”,說明你是真正理解了這個問題,有個著名的提問法就叫5Why提問法,

豐田汽車公司前副社長大野耐一曾舉了一個通過5why提問找到問題根因的實體,

有一次,大野耐一先生見到生產線上的機器總是停轉,雖然修過多次但仍不見好轉,便上前詢問現場的作業人員,

問:為什么機器停了?(1Why)

答:因為機器超載,保險絲燒斷了,

問:為什么機器會超載?(2Why)

答:因為軸承的潤滑不足,

問:為什么軸承會潤滑不足?(3Why)

答:因為潤滑泵吸不上來油,

問:為什么潤滑泵吸不上來油?(4Why)

答:因為油泵軸磨損、松動了,

問:為什么油泵軸磨損了?(5Why)

答:因為美譽安裝過濾器,潤滑油里混進了鐵屑等雜質,

在我們的實際作業中,也是如此,凡事要多問幾個為什么,要知其然知其所以然,這種本質思考會極大的提升我們的認知水平和解決問題的能力,

邏輯謬誤

所謂謬誤(fallacy),就是推理中的欺騙手段,常見的花招有錯誤假設,理由和結論不相關(偷換概念)等,

雖然上文只是對形式邏輯(古典邏輯、符號邏輯)進行了簡單的介紹,想必你也感受到了它的抽象和復雜,是的,形式邏輯雖然強大,但遠離生活,試想下,在與人溝通和辯論的同時,是很難用形式邏輯做算式推導的,

出于實用性的考慮,邏輯學家們發展出了非形式邏輯(informal logic),主要是因為它不依賴于形式邏輯概念,也不依賴形式邏輯的主要評價功能——有效性,非形式邏輯可以在日常生活中,輔助我們進行邏輯分析和批判性思考,

為了方便運用,邏輯學家給這些邏輯謬誤進行了分類,并給與容易記憶的命名,這樣在碰到類似的場景的時候,我們便可以那這些謬誤分類作為武器,為我們的批判、分析、討論進行“防衛”,

那么,都有哪些謬誤呢?

這些謬誤包括偷換概念、錯誤假設、以偏概全、轉移話題、人身攻擊、以勢壓人、以眾壓人、回圈論證、不適當地訴諸權威、不適當地訴諸情感、竊取論題、 得寸進尺等等,關于更多邏輯謬誤的知識,推薦去看看《學會提問》這本書,接下來我會挑選幾個常見的邏輯謬誤簡單介紹一下,

偷換概念

回到開篇關于“Frank不是男人”的例子,這里小張就是使用了偷換概念的花招,小王說的“男人”是指男子漢氣概,而小張說的“男人”是指生理男人,兩個“男人”指向的不是同一個概念,

當你看到一個關鍵詞在論證中不止一次出現,要注意其意義有沒有發生改變,如果意思發生改變,就要警惕偷換概念謬誤,那些高度含混的術語和詞組尤其是偷換概念的絕佳材料,

偷換概念也是一種常見的詭辯手法,主要有以下幾種表現:

  1. 任意改變一個概念的內涵和外延.使之變成另一個概念,
  2. 利用多義詞可以表達幾個不同概念的特點,故意把不同的概念混淆起來,
  3. 抓住概念之間的某些相似之處,抹殺不同概念的本質區別,

再比如,當有人說歐諦德謨克說謊時,他狡辯說:“誰說謊就是在說不存在的東西,而不存在的東西是無法說的,所以沒有人能說謊,”

在歐諦德謨克的狡辯中,兩次使用了“不存在的東西”這一語詞,但其所表達的概念卻是不同的,前者表達的是“不符合事實”的概念,后者表達的是“根本不存在的事物”的概念,他就是故意用后一概念去偷換了前一概念,

錯誤假設

在所有的論證中,都有一些作者認為是理所當然的特定假設,通常情況下他們卻不會明說出來,因此,乍一看,幾乎每個論證都顯得“有道理”,其外表結構看起來都顯得完美無缺,但有些內在的沒有說出來的看法——隱含假設,所起到的作用同樣重要,

讓我們思考下這個說法:“一個小學沒有畢業的人早早地混社會掙了很多錢,一個博士畢業但是沒有掙到太多錢,所以讀書無用,小學沒有畢業可以比博士更成功,”

這種說法,就暗含了一個隱含的價值觀假設:即金錢是唯一的衡量標準,金錢是最重要的,但金錢至上的價值觀并不是普適的,如果你不認同這樣的價值觀(認為精神富足更重要),那么這個論證也就不成立了,

再比如,在阿里面對爛系統,經常有一個說辭叫“野蠻生長”,言下之意是業務發展很快,技術來不及優化只能草率支撐,這里其實隱含著一個前提假設——即時間有限系統就會爛,然而這個前提假設在邏輯上也是不嚴密的,有沒有可能在同等的時間下做到既快又好呢,我想,隨著技術能力水平的提升,是有可能做到“既快又好”的,

每個人的背景和身份不一樣,代表的利益不一樣,所以他們的話語中經常是帶有自己的價值傾向,只有把這些隱含的假設暴露出來,我們才能進行正確的判斷,比如馬老師說996是福報,也是帶有自己利益團體價值觀傾向的,

回圈論證

一個結論會自己證明自己,只不過措辭有所改變,例如:

一個瘦子問胖子:“你為什么長得胖?”

胖子回答:“因為我吃得多,”

瘦子又問胖子:“你為什么吃得多?”

胖子回答:“因為我長得胖,”

電視劇《士兵突擊》里的金典對白也是如此:

老馬:“可是什么有意義呢,許三多?人這輩子絕大多數時候都在做沒意義的事情,”

許三多:“有意義就是好好活,”

老馬:“那什么是好好活呢?”

許三多:“好好活就是做有意義的事情,(看一眼老馬后再強調)做很多很多有意義的事情,”

再比如,論證“逃課不好”,因為“逃課是不對的”,不好和不對是一個意思,等于沒有論證,是在同義反復,

以偏概全

以偏概全是指依據不充分的例證得出普遍的結論,你不能說看到3個意大利人很有情調,就說所有的意大利人都是浪漫的,

以偏概全是使用歸納法中常見的謬誤,即使用過小的樣本量,或者不具代表性的樣本,歸納得到一個錯誤的結論,比如說,用一張什么偏方,治好了某個人的某種疾病,如果就據此得出“這張偏方具有治療該疾病的作用”,那就錯了,現代臨床醫學研究,總是強調大樣本、多中心、隨機、雙盲和對照試驗,目的就是避免在運用歸納法時陷入以偏概全的謬誤,

實際上,上文中關于“讀書無用論”的論證,除了有價值觀假設的問題,也有以偏概全的問題,畢竟即使在經濟上,不讀書能成功的也是極少數,從概率上來講,更多高學歷的人比低學歷的人在經濟上要優越,

滑坡謬誤

滑坡謬誤是指不合理使用連串因果關系,通過一個起因A,引發多米諾效應,帶來一些列負面事情,A并不是很糟糕,但是A導致B,B導致C,C導致D,D簡直糟糕透頂,

想象一位母親告誡她年輕女兒說:“親吻自然沒有什么,但是想想親吻能帶來什么,接下來又會發生什么,只有你弄清楚這些,你才會避免成為一個可憐孩子的媽媽,否則你年輕的生命就永遠地毀了!”焦慮的滑坡謬誤操縱者忘了一點,那就是許多行走在滑坡上的人都很小心,并不會跌倒,

現在的教育內卷,實際上也是一種滑坡謬誤,很多家長不想讓小孩輸在起跑線上,認為沒有好的幼兒園就上不了好小學,沒有好小學就上不了好中學,沒有好中學就上不了好大學,上不了好大學這輩子就沒有希望了,

“滑坡”在邏輯上雖然可能存在漏洞,但是作為一種修辭手法,往往會起到比較好的喜劇效果,比如在《江湖》中,劉德華對張學友經典對白:“說了你又不聽,聽又不懂,懂又不做,做又做錯,錯又不認,認又不改,改又不服,不服也不說,那叫我怎么辦?”

最后,我想說,邏輯思維需要理性的思考,但是,我們人類并不是純粹理性的動物,正如丹尼爾.卡尼曼在《快思慢想》所說:“人類都是主觀性的動物,別說客觀公正了,很多時候,連理性都沒有,都是感覺直觀,”

不可否認,邏輯思維是我們最重要、也是最底層的思維能力,特別是對程式員,因為軟體是一個純思維的創造活動,沒有清晰的邏輯思維,不可能創造出漂亮的作品,

然而在生活上,有時候我們還是可以“傻”一點,沒必要凡事都上綱上線、理性分析,特別是在家庭生活中,你要相信老婆很多時候都是“有道理的”,就拿我自己來說,周日早上還是會乖乖的陪女兒去上英語學習班,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291530.html

標籤:其他

上一篇:關于git簡單的使用(碼云篇)

下一篇:順序表的基本實作

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more