国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

王垠的40行代碼是什么_王垠40行代碼專家解讀

汽車玩家 ? 來源:電子發燒友網 ? 2018-04-11 18:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

王垠

王垠[yín],四川大學97級本科畢業,保送到清華大學計算機系直博。期間曾在清華大學計算機系軟件工程專業就讀,主要進行集成電路布線算法的研究。在此期間,他因《完全用GNU/Linux工作》一文和對TeX的推廣等“非研究成果的業余東西”而出名。 在只剩一年就要博士畢業的時候,他申請退學,并將1萬7千余字的“退學申請書”(題為清華夢的粉碎)公布在網上,引起輿論界一時對教育體制、理想主義等的熱議。

王垠的40行代碼

王垠的40行代碼是什么_王垠40行代碼專家解讀
王垠的40行代碼是什么_王垠40行代碼專家解讀
王垠的40行代碼是什么_王垠40行代碼專家解讀

40行代碼專家解讀

1. 背景知識

CPS: Continuation-Passing Style. 有一篇介紹 CPS 通俗易懂的文章(中文翻譯)。

簡單來講,CPS 是一種編程風格:

Javascript:

(原味)

function foo(x) {

return x ;

}

(CPS)

function cps_foo(x, return_point) {

return return_point (x) ;

}

CPS 多了一個參數 return_point,return_point 來自 caller ,是 caller 所在的“世界”,caller 將這個“世界” 傳遞給 callee (cps_foo),這樣 cps_foo 就無須利用額外的工具(比如堆棧)去查詢 caller 的世界在哪里,以便返回,而是直接進入這個世界:return_point (x)。 這便是 CPS 的初衷 —— 去掉層層嵌套的世界。行話講就是 desugar(脫糖)。Syntax sugar 是為了方便人類的表達和理解,給編程語言的核心套上的一層好吃好看的外衣,而對機器對程序的解釋,需要將其還原到最本質的結構,以便機械化處理和優化,這 就是脫糖的意義。

以函數式編程的觀點來看,return_point 是一個函數,以 C 觀點來看,你可以把它理解為程序地址,或者,以 Matrix 來看,它是 key-maker 打開門進入新世界的那把鑰匙?!笆澜纭鄙现挥幸粋€巨大的程序(比如,你的程序不過是在 chrome 里面運行的一個小程序,而 chrome 又是在 OS 里面的一個小程序),return_point 將各種小程序竄連起來了。恩,差不多就是這個意思。只不過,在函數式程序里面(比如Scheme)里面,return_point 是函數,而在過程式程序(比如C)里面它更像是 0x4f36a0c4。

這段 40 多行代碼是給 Scheme 程序脫糖的程序,屬于解釋器的代碼,而不是應用代碼。對其的客觀評價顯然只有設計解釋器的人才能給出。對應用程序員的意義在于,發現每天上班時編寫的代碼多么無聊,此外并沒有任何實用價值。

2. 運行結果

‘x

’(lambda (x k) (k x))

‘(lambda (x k) (x 1 k))

’(f x (lambda (v0) (if v0 a b)))

‘(if x (f a (lambda (v0) v0)) b)

’(lambda (x k) (f x (lambda (v0) (if v0 (k a) (k b)))))

‘(lambda (x k) (let ((k (lambda (v0) (if v0 (k c) (k d))))) (if x (f a k) (k b))))

’(lambda (x k) (let ((k (lambda (v0) (if v0 (k c) (k d))))) (if x (k (zero? a)) (k b))))

‘(lambda (x k) (if t (if x (f a k) (k b)) (k c)))

’(lambda (x k) (let ((k (lambda (v0) (if v0 (k e) (k w))))) (if t (if x (f a k) (k b)) (k c))))

‘(lambda (x k) (let ((k (lambda (v0) (h v0 k)))) (if x (f a k) (k b))))

’(lambda (x k) (let ((k (lambda (v0) (v0 c k)))) (if x (f g k) (k h))))

‘(f a (lambda (v0) (g b (lambda (v1) (v0 v1 (lambda (v2) (f c (lambda (v3) (g d (lambda (v4) (v3 v4 (lambda (v5) (v2 v5 (lambda (v6) v6))))))))))))))

’(lambda (n k)

((lambda (fact k) (fact fact (lambda (v0) (v0 n k))))

(lambda (fact k)

(k

(lambda (n k)

(if (zero? n)

(k 1)

(fact

fact

(lambda (v1) (v1 (sub1 n) (lambda (v2) (k (* n v2))))))))))

k))

120

原代碼中最后一句 ((eval fact-cps ) 5 (lambda (v) v)) 在 racket 中要修改為:

((eval fact-cps (make-base-namespace)) 5 (lambda (v) v)) 才能通過算得 120。

3. 注釋

王垠的40行代碼是什么_王垠40行代碼專家解讀

4. 要點

ctx: 函數在執行(apply)時候的上下文環境,可理解為 C 程序中運行時的棧。

整 個 cps 的(主要)過程就是 if 分支在不斷制造新的 ctx, 而 apply 分支(最后一個分支)不斷在新的 ctx 中 ‘計算’ (實際上是生成 cps 函數的代碼,而不是真的計算),并返回結果(到上一層 ctx)的過程。這個過程就是 scheme 的基本 eval-apply 過程。(參見SICP第四章)

這是一個解釋器(解釋成為 CPS 風格的代碼),同時也是一個CPS轉換器,正所謂 Compiling with Continuations. 另外,Scheme 這種代碼即數據(字符串列表)的特性,使得編寫生成代碼的代碼相對容易和簡潔。

至于代碼為何有 k 這個命名。呵呵,你可以叫它 kontinuation 或者 klosure.

5. 結論

以自然語言寫作比喻,編寫自解釋器級別的代碼,就像你在寫一本小說,而小說的主角也在寫一本小說,這位主角在描寫你,對你的刻畫會影響到你,你受到影響之后又會改變小說中的主角,從而影響到他對你的描寫。你倆要相安無事,情節合符邏輯地發展,直到最后圓滿的結尾。這比寫一本普通小說可難多了。

網友評價:

看來網友們關注的重點,都在王垠說的話上,很多網友都認為他在吹牛。但是也有網友為他說話的,覺得這40行代碼,確實很厲害,有些網友還悄悄的跑去運行了一下。

網友一:這40行代碼的價值,開始我是不以為然的。因為根本不懂它是干嘛用。直到自己水平的提升,又對這些代碼有研究,才發現,這40行代碼的價值。

網友二:這40行代碼的價值既然不在于實現了CPS的算法,也不在于這段代碼寫得有多么精簡和巧妙。而是:獨立思考。

網友三:這段代碼的功能是自動把普通遞歸轉換為尾遞歸。

網友四:不懂js的人,就算是簡單的js代碼也看不懂的。 很多人看不懂不代表沒有人看得懂。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7807

    瀏覽量

    93202
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73965
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    福建省副省長金福蒞臨海辰儲能調研指導

    3月1日,福建省副省長金福一蒞臨海辰儲能開展工作調研,深入了解企業生產經營、技術創新及全球化布局等情況。海辰儲能聯合創始人、總裁鵬程熱情接待并陪同調研。
    的頭像 發表于 03-04 11:19 ?319次閱讀

    豐臺區委書記少峰一到昱櫟技術調研走訪

    近日,豐臺區委書記少峰,中國科學院院士、北京大學工學院院長段慧玲等一赴北京昱櫟技術有限公司調研走訪,圍繞深化產學研合作、推動科技成果轉化開展專題調研。調研組一在昱櫟技術董事長栗旭錦的陪同
    的頭像 發表于 02-04 09:54 ?521次閱讀
    豐臺區委書記<b class='flag-5'>王</b>少峰一<b class='flag-5'>行</b>到昱櫟技術調研走訪

    開源鴻蒙生態共建成勢,深開鴻主干代碼貢獻量破650萬

    1.3億代碼,1500多款產品通過兼容性測評,構建起覆蓋千百業的龐大生態體系。近日,作為開源鴻蒙社區的核心貢獻者之一,深圳開鴻數字產業發展有限公司(簡稱“深開
    的頭像 發表于 01-09 19:04 ?357次閱讀
    開源鴻蒙生態共建成勢,深開鴻主干<b class='flag-5'>代碼</b>貢獻量破650萬<b class='flag-5'>行</b>

    深開鴻開源鴻蒙社區主干代碼貢獻量破650萬

    歷經五年發展,開源鴻蒙已從技術萌芽成長為萬物智聯時代的核心數字底座。秉持開源、共建、共享、共榮的理念,其生態規模持續擴張,累計匯聚超10000名貢獻者、510多家合作伙伴,沉淀1.3億代碼
    的頭像 發表于 01-07 10:22 ?509次閱讀

    上海市電子材料協會一蒞臨季豐電子參觀交流

    12月18日,上海市電子材料協會會長馬靜一蒞臨季豐電子閔總部參觀交流,協會副會長張偉明、周建輝,副會長兼秘書長建成及秘書處相關人員隨行。季豐電子董事長兼總經理鄭朝暉、輪值CEO倪衛華攜公司管理團隊熱情接待,并與到訪嘉賓展開
    的頭像 發表于 12-28 15:21 ?1102次閱讀

    日本汽車工業協會一到訪中汽中心

    2025年10月17日,日本汽車工業協會常務理事江坂弘一到訪中汽中心,與中汽中心黨委副書記曉杉進行了座談交流。
    的頭像 發表于 10-21 09:38 ?559次閱讀

    中國包裝行業權威專家蒞臨匯川技術參觀指導

    8月27日,中國包裝行業權威專家——中國醫藥包裝協會特聘會長、中國包裝聯合會包裝印刷與標簽專業委員會主任許文才教授,中包聯包裝印刷與標簽專業委員會副秘書長艷霞、張云等一蒞臨匯川技術參觀指導,圍繞自動化、智能化及數智結合在包裝
    的頭像 發表于 09-03 18:03 ?856次閱讀

    HarmonyOSAI編程智能代碼解讀

    CodeGenie提供智能AI能力對框選的代碼片段進行逐條解釋,總結代碼段含義,幫助開發者提升閱讀代碼的速度和效率。 選中.ets文件或者.cpp文件中需要被解釋的代碼
    發表于 09-02 16:29

    全國人大代表學鋒一蒞臨思必馳調研

    日前,全國人大代表、致公黨江蘇省委會主委學鋒一深入人工智能領域領軍企業思必馳,圍繞“以企業為主體貫通‘兩個一公里’,健全全鏈條創新生態體系的政策舉措”展開深度調研。思必馳副總裁李春梅熱情接待。
    的頭像 發表于 08-26 09:53 ?905次閱讀

    HarmonyOS AI輔助編程工具(CodeGenie)代碼智能解讀

    。 選中.ets文件或者.cpp文件中需要被解釋的代碼代碼片段,右鍵選擇CodeGenie > Explain Code,開始解讀當前代碼
    發表于 07-17 17:02

    AI眼鏡中國調研團走進谷東智能

    近日,由潮電智庫副總經理孫燕飚主導的AI 眼鏡中國調研團一 40 余人走進谷東智能,開啟了一場意義非凡的參觀交流之旅。谷東智能董事長崔海濤、交付中心負責人進親自熱情接待,現場洋溢
    的頭像 發表于 06-18 14:31 ?1139次閱讀

    上海雷克薩斯一到訪中汽中心

    近日,雷克薩斯(上海)新能源有限公司(以下簡稱“上海雷克薩斯”)總經理加藤武郎一到訪中汽中心,與中汽中心黨委副書記曉杉進行了座談交流。
    的頭像 發表于 06-13 15:18 ?1037次閱讀

    浩辰CAD看圖:攜手鴻蒙,CAD技術創新驅動企業數字化轉型

    首批受邀啟動HarmonyOSNEXT適配的頭部CAD軟件,開發團隊完成了超過300萬代碼的跨平臺遷移任務,實現了全量全功能的深度整合,并非簡單的輕量化移植,成為全球
    的頭像 發表于 05-30 12:50 ?1048次閱讀
    浩辰CAD看圖<b class='flag-5'>王</b>:攜手鴻蒙,CAD技術創新驅動企業數字化轉型

    煙臺市發改委領導蒞臨華礪智調研

    近日,煙臺市發展改革委黨組書記、主任松杰率調研組蒞臨華礪智,實地參觀企業展廳,深入了解公司智能網聯技術研發成果與行業應用實踐。
    的頭像 發表于 04-14 14:06 ?1056次閱讀

    沐渥科技:氮氣柜故障代碼解讀及處理建議

    氮氣柜的故障代碼因品牌和型號不同而有所差異,但通常涵蓋一些常見問題。以下是沐渥科技對故障代碼解讀及處理建議:一、代碼解讀和原因分析1、E1
    的頭像 發表于 03-20 13:18 ?1220次閱讀
    沐渥科技:氮氣柜故障<b class='flag-5'>代碼</b><b class='flag-5'>解讀</b>及處理建議