<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          邏輯是個好東西

          共 3263字,需瀏覽 7分鐘

           ·

          2022-06-28 12:31



          零基礎python入門教程:python666.cn


          大家好,歡迎來到 Crossin的編程教室 !


          Crossin經(jīng)常在公眾號后臺收到這樣的提問:

          英語不好能不能學編程?”

          “編程是不是對數(shù)學要求很高?”

          翻譯一下就是:數(shù)學/英語是否是學編程先決條件?

          我覺得這個問題有點像,身高不高能不能打籃球一樣。雖然對于職業(yè)籃球運動員來說,身高是非常關鍵的因素,但對于普通籃球愛好者,甚至一個籃球相關從業(yè)人員來說,這并不是非要不可的條件。放到編程上,數(shù)學和英語都很重要,但:

          1. 在入門階段,你完全不用在意這些,照著一本教程好好跟著模仿就行
          2. 對于大部分的日常開發(fā)來說,中學程度的數(shù)學和英語水平已經(jīng)可以應付
          3. 和身高這種先天條件不同,英語和數(shù)學是可以通過學習提高的,哪里不足補哪里唄。網(wǎng)上流行一句話:“以大多數(shù)人的努力程度之低,根本輪不到拼天賦。”你能長期堅持背背單詞,看看書,就足以提升自己。總是把XX不好掛在嘴上恐怕更多是在給自己找借口。

          不過,有一項能力,確實是在學習編程初期就需要足夠重視的。然而這一點,很多教程不會專門強調,相關書籍也往往假定你已經(jīng)掌握,以至于很多學習者并沒有意識到自己在此方面的薄弱,為之后的學習留下隱患。我要說的就是:

          邏輯

          某種角度來說,邏輯可部分算作是數(shù)學,在高中數(shù)學課本中就有相關內容。這部分內容也恰好是我們學編程時最需要了解的基礎。

          一、布爾代數(shù)

          真(1)、假(0)兩種狀態(tài),以及與(and)、或(or)、非(not)三種基本運算組成。布爾代數(shù)看似簡單,卻與數(shù)字電路中開和關兩種狀態(tài)相對應,是計算機的邏輯基礎。你可能聽說過,電腦上的一切在內部都是由0和1所表示,那換句話說,計算機的所有行為,本質都是由布爾邏輯所實現(xiàn)的。

          在編程語言中,布爾類型(bool)也是極為重要的存在。沒有它,我們就做不了條件判斷,也就無從控制程序的執(zhí)行。Python 的 if、while 語句都必須依賴布爾類型作為判斷條件

          因此,即使你不想深入學習邏輯,布爾代數(shù)的基本規(guī)則也是無論如何必須了解的。簡單來說,就是下面這張“真值表”:

          p
          q
          not p
          p and q
          p or q
          1
          1
          0
          1
          1
          0
          1
          1
          0
          1
          1
          0
          0
          0
          1
          0
          0
          1
          0
          0

          這些基本規(guī)則又會組合出更復雜的邏輯,比如: 
          not (p or q) 等價于 (not p) and (not q)
          (示例:“不是管理員或者會員”相當于“不是管理員且不是會員”)

          實際開發(fā)中面臨的邏輯判斷復雜多樣,但歸根結底還是會轉化到最基本的這幾個規(guī)則上。

          思考題1:如何用邏輯語言表示“過活動注冊的新用戶或者充值超過100元的老用戶,內部人員除外

          二、命題邏輯

          真值唯一的陳述句叫做命題,不能分解成更簡單的命題叫做原子命題。比如,“1+1=2”是原子命題,“所有貓都是白的”是原子命題(假命題),“存在外星人”也是原子命題(雖不能判斷真假,但結果必然唯一)。命題和邏輯運算相結合,又會產(chǎn)生更復雜的邏輯。

          比如充分必要條件

          如果命題p必然推出命題q,那么p就是q的充分條件,q就是p的必要條件,記作 p→q。

          比如漢樂府的詩句“山無棱,天地合,乃敢與君絕”,用邏輯語言表達是怎樣?

          (山無棱 and 天地合) → 與君絕?

          想一想是不是不大對勁?根據(jù)語義來看,“山無棱”、“天地合”是“與君絕”的必要條件,如果“與君絕”為真,那必然存在“山無棱”和“天地合”,反過來卻未必。所以正確的邏輯是:

          與君絕 → (山無棱 and 天地合)

          再比如三段論

          ①不掌握基本的邏輯知識就無法學好編程
          ②Python是一種編程語言
          所以,學好Python需要掌握基本的邏輯知識

          一個大前提加上一個小前提,可以推導出一個結論。這是日常使用最多的論證形式,看似簡單,但也總有人在這上面犯糊涂。舉個錯誤的例子

          ①有錢人都用 iPhone XS Max
          ②我用 iPhone XS Max
          所以,我是有錢人

          這些邏輯關系、推導過程與程序中的邏輯結構息息相關。如果你對此不能保持思路清晰,寫出的代碼很可能與預期有出入,或是在一些特殊情況下存在漏洞。

          思考題2:一個每天簽到領獎的小功能,在每天的11~13點和18~20點開放,普通用戶每天可以領取一次,會員用戶可以在每個時段分別領取一次。如何實現(xiàn)這段程序的邏輯結構?(我時常拿這個作為面試題,很多人都不能在短時間內給出正確的答案)

          三、歸納

          有時候,我們并不能通過邏輯推導出必然的結論,但仍然可以通過一系列的經(jīng)驗和已有結論,找出其中基本遵循的規(guī)律

          比如:
          ①X團隊歷來給所有成員都配備Dell筆記本作為工作電腦
          ②C老師最近剛加入X團隊
          通過這兩點,我們可以推導出,C老師很可能也使用Dell筆記本。

          但你要清楚歸納的結論并不必然為真,如果遇到邏輯推理出的必然反例,即使再不符合常理,歸納的結論也會被推翻。

          比如除了上述兩點,我們還知道:
          ③C老師簽約了蘋果公司代言
          ④蘋果公司的代言人不得使用其他品牌的手機和筆記本
          那么,上述“C老師使用Dell筆記本”的結論便不成立。

          雖然歸納不是必然,但在解決問題時依然重要。尤其在開發(fā)中遇到錯誤需要 debug(調試)的時候,并不是所有錯誤都可以直接從報錯信息看出問題(比如 Python 開發(fā)時經(jīng)常出現(xiàn)的亂碼問題),這時如果有豐富的經(jīng)驗和較強的歸納能力,效率會大大提升。這也是資深程序員和初級程序員之間差距的重要體現(xiàn)。

          現(xiàn)在網(wǎng)上的編程教程鋪天蓋地,不過呢,大家都喜歡寫寫怎么編個爬蟲抓圖片、抓數(shù)據(jù)之類,卻很少有文章愿意講講背后的思維過程。寫了讀者也不愿意看,因為看不出什么效果,哪有調幾個函數(shù)就出結果來得爽快。以至于你發(fā)現(xiàn),照著例子也能寫個一樣的代碼出來,但是一旦報錯或者沒有預期的結果,就完全抓瞎了,只能把參數(shù)東改改西改改,反復運行,期待某一次奇跡出現(xiàn)。以后換個新的問題,依然不知道從何下手。

          這就是因為并未理解程序背后的邏輯。我常在答疑群里說:遇到程序出錯了不要去猜!要去做假設,再通過輸出驗證假設,最終定位問題所在

          文本只是一個引子,不可能讓你對邏輯融會貫通。但前面講的那些邏輯基礎,任何一本《離散數(shù)學》或者《邏輯學》的書上都有,而且僅僅是最開始的一小部分就很受用了。找一本來看一看。真想好好學編程,不要只局限于讀網(wǎng)上的教程,這些都是別人嚼爛喂到你嘴里的。如果你只能接受這樣二次加工過的知識,而沒有自己咀嚼的過程,那么你學習上的乳牙永遠都掉不了

          了解邏輯學和思維具有邏輯性并不完全等價。有人沒學過邏輯,說話做事一樣很有邏輯性,而有的人雖然學過邏輯,也不過是當做數(shù)學公式在背,整天“邏輯思維”掛嘴邊不代表做事就講邏輯。

          在網(wǎng)絡上,你經(jīng)常可以看到一些邏輯謬誤,舉幾個常見的例子:

          • 以偏概全:你說用X產(chǎn)品遇到了Y問題。有人就反駁說,我也用X產(chǎn)品,我身邊人也用X產(chǎn)品,都沒有問題,所以你一定是故意黑。
          • 關聯(lián)當因果:某地區(qū)的人喜歡喝生牛乳,同時該地區(qū)人平均壽命高于周邊地區(qū),所以喝生牛乳可以延年益壽。
          • 非黑即白:網(wǎng)上都在抨擊某個產(chǎn)品竊聽用戶聊天,并且之前也有發(fā)垃圾廣告的前科。你說竊聽從技術上來說不現(xiàn)實,目前也缺少明確證據(jù)。然后就有人認為你不一起噴,你就是水軍、洗地、舔狗。
          • ……

          類似的不講邏輯充斥著網(wǎng)絡。

          我們的周圍有很多偏見、歧視的觀念,還有很多喜歡爭論的“杠精”,歸根結底,你會發(fā)現(xiàn)這些人都有一個共同的特征:邏輯混亂。比如,之所有有人會有性別歧視、地域歧視,就是因為以偏概全地由一些特例而對整體作出推論。而偷換概念、顛倒因果、動機揣測,更是杠精們喜歡濫用的邏輯謬誤。

          不僅僅是在編程上,如果我們更講究邏輯,這個世界的矛盾就會少很多。即使沒經(jīng)過專門的學習和訓練,只要保持謙遜,學會傾聽,以包容的心態(tài)對待不同的聲音,多去思考一下對方的觀點,從不同的角度看問題,你的邏輯就會更完備。

          而反過來,當你發(fā)現(xiàn)網(wǎng)絡上全是不講邏輯的言論時,就不想再發(fā)表任何觀點了。

          感謝轉發(fā)點贊的各位~

          _往期文章推薦_

          電子游戲的核心原理




          如需了解付費精品課程教學答疑服務
          請在Crossin的編程教室內回復: 666

          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日皮视频在线入口 | 青青视频网站 | 草草草视频 | 欧美一级片免费在线 | 国产精品你懂得 |