揣摩大師是如何想到序對的

2021-06-22 01:54:20 字數 994 閱讀 3096

這幾日在看sicp, 瞬間被其簡潔表示方式所觸動, 突然想起以前看到的一句話, 理論家一直在尋找一種概念最簡潔的定義方式, 他們發明概念, 不斷修剪, 直到這個理論簡單的不能再精簡為止. sicp中的list就是這樣的一種概念. 我一直在想, 當初的設計者是為何會想到用序對來表述陣列這一概念的? 今天, 就容我揣摩下. 

首先我想到的是, 自然數的定義:

0是最小的自然數.

每乙個自然數n都有乙個後續者n+1, 其中n+1也是自然數.

多麼簡潔的定義! 不由得讓人想到了遞迴, 0是類似於遞迴出口的東西. 而n的後繼為n+1正式遞迴的逆向-迭代. 他可以採取順推的方式求得乙個自然數.

想起以前看到文章裡的一句調侃遞迴的話: 人理解迭代, 神理解遞迴. 為何人的思維是天生理解迭代的呢, 舉乙個例子, 小時候上學 頑皮, 老是都是怎麼懲罰學生的? ->把這首詩抄500遍. 於是乎聽話的學生就開始抄了, 第一遍, 第二遍.....直到數到第500遍為止. 喪心病狂! 但是為什麼我們不是逆向去數的呢, 如果乙個孩子的思維是這樣的, 我要抄500遍對吧, 我從結果出發, 500遍是個大工程, 那我先把第500次給寫好, 然後再去解決前面的499遍, 這樣問題的規模就小了 , 以此類推. 但是很少有這樣思維的小朋友.

說了這麼多廢話, 那麼我就猜猜大師是為何會想到序對來定義陣列呢, 首先 ,大師們對遞迴都有非常深的理解. 然後陣列是不是可以這樣定義:

最小的陣列是空集

每乙個陣列list(n)在新增了乙個新的元素之後, 會變成乙個長度為n+1的陣列list(n+1)

是不是和自然數的定義很像?

那麼如何推導出陣列的最簡單表示形式, 我們可以把乙個長度為n的陣列看成乙個整體, 記為p, 新元素為q, 那麼新的陣列就是(p, q) 而p的定義也不曉得, 好吧, 那我們就逆推p= (m ,o)其中o也是乙個整體, 此時((m,o) q) 以此類推. 是不是發現組成陣列的最基本元素-序對自然而然的出來了呢.

如果經常用這種思維方式去探索事務的本質(最簡形式),那麼一旦訓練出這種思維方式, 我們會不會高人一等呢?

《大師們是如何工作的》

天才們是如何工作的,也許大多數的人認為天才是天賦加上死命的努力來的,但並不是這樣的,一下分享一下關於大神是如何將自己的工作效率提公升來達到自己的目標成為人們所謂的天才的。每日儀式 大師們如何工作 的作者馬森 柯里 mason curry 研究了161位大師的日程安排,包括畫家 作家和作曲家,以及哲學...

想到linux到其它,開源對商業化的軟體是乙個促進

一年前就在vmware上面裝了debian,滿含熱情的奮鬥了好幾個晚上。可惜熱情消退,就再也沒理了,許多東西都忘得差不多了。最近又開始搗騰起來,相在debian建乙個amp環境,結果一開始就遇到麻煩了。apache用瀏覽器訪問不了,但確實又服務啟動了,後來用dpkg s 看了,原來系統已經裝了乙個1...

你對SpringMvc是如何理解的?

spring mvc工作原理 springmvc是基於過濾器對servlet進行了封裝的乙個框架,我們使用的時候就是在web.xml檔案中配置dispatcherservlet類 springmvc工作時主要是通過dispatcherservlet管理接收到的請求並進行處理。具體執行流程如下 spr...