在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    7549

    瀏覽量

    88737
  • 代碼
    +關注

    關注

    30

    文章

    4837

    瀏覽量

    69128
收藏 人收藏

    評論

    相關推薦

    北汽集團戰略投資小馬智7035萬美元

    日前,北汽集團戰略投資小馬智7035萬美元,小馬智于11月27日在美國納斯達克掛牌上市(股票代碼“PONY”),公開發行定價為13美元/ADS,融資額達2.99億美元,成為今年以來美股自動駕駛領域最大規模IPO。
    的頭像 發表于 12-02 11:46 ?460次閱讀

    自動駕駛企業小馬智登陸納斯達克

    近日,小馬智正式在納斯達克掛牌上市,股票代碼“PONY”,公開發行定價為13美元/ADS,融資額達2.99億美元,成為今年以來美股自動駕駛領域最大規模IPO。
    的頭像 發表于 11-29 09:59 ?232次閱讀

    小馬智納斯達克掛牌上市

    近日,小馬智正式在納斯達克掛牌上市,股票代碼“PONY”,成為Robotaxi第一股。在擴大發行規模后,若承銷商的超額配售權悉數行使,小馬智行將以每股13美元的發行區間價上限發行總計2300萬股
    的頭像 發表于 11-28 09:55 ?271次閱讀

    如何安全有效的刪代碼

    作者:京東科技 丹迪 刪除代碼是軟件開發過程中常見的一部分,但必須謹慎操作以確保不會引入錯誤或破壞現有功能。有效的做系統瘦身會降低維護成本,減少冗余代碼,減少開發同事踩坑的機會。以下是幾個步驟
    的頭像 發表于 11-20 10:39 ?296次閱讀

    軟通動力領導一訪問福州大學

    軟通動力高級副總裁曉良、楊念農,軟通教育總裁林濤及福建新東湖集團有限公司董事長陳國平一來訪福州大學。校黨委陳國龍書記在行政南樓會見了客人并座談交流,郭文忠副校長陪同會見。
    的頭像 發表于 10-10 10:43 ?555次閱讀

    海南大學副校長一到訪芯原海南

    海南大學黨委常委、副校長高佃恭,信息與通信工程學院院長咸鵬,黨委書記黃國標,海德書院黨委書記韓勝丁等一到芯原微電子 (海南) 有限公司參觀調研。芯原股份創始人、董事長兼總裁戴偉民博士,芯原海南人事行政總監云玲和芯原海南財務總監林靜進行了接待。
    的頭像 發表于 09-29 09:16 ?1689次閱讀

    BQ40Z80量產校準代碼示例

    電子發燒友網站提供《BQ40Z80量產校準代碼示例.pdf》資料免費下載
    發表于 09-27 09:34 ?1次下載
    BQ<b class='flag-5'>40</b>Z80量產校準<b class='flag-5'>代碼</b>示例

    ensp啟動失敗,錯誤代碼40怎么回事

    ENSP(Enterprise Network Simulation Platform)啟動失敗并顯示錯誤代碼40,通常是由多種原因引起的。以下是一些可能的原因及相應的解決方法: 一、可能的原因
    的頭像 發表于 08-30 14:29 ?9549次閱讀

    中國汽研董事長周玉林一蒞臨國芯科技調研交流

    日前,中國汽車工程研究院股份有限公司(以下簡稱: 中國汽研 ,股票代碼: 601965 )董事長周玉林及副總經理紅鋼一蒞臨蘇州國芯科技股份有限公司(以下簡稱“ 國芯科技 ”,股票代碼
    的頭像 發表于 08-13 09:54 ?650次閱讀

    賽思快訊 | 熱烈歡迎嘉興市政協一領導蒞臨賽思總部調研指導工作!

    近日,嘉興市政協一領導蒞臨賽思總部調研指導工作,賽思副總經理文濤、田永和全程陪同。嘉興市政協一領導蒞臨賽思調研5月11日,嘉興市政協戴銘一領導蒞臨賽思總部聚焦“金融支持科技人才
    的頭像 發表于 05-17 13:22 ?527次閱讀
    賽思快訊 | 熱烈歡迎嘉興市政協一<b class='flag-5'>行</b>領導蒞臨賽思總部調研指導工作!

    在uCGUI的回調函數里加了代碼,stm32無法啟動怎么解決?

    我是一個初學者。最近在寫一個uCGUI上的小應用的時候遇到了這樣的問題,我在MULTIEDIT控件的回調函數里加了一代碼,運行我自己寫的一個用于計算的函數,在沒有加這一代碼的時候運
    發表于 04-24 07:06

    百度首席技術官海峰解讀文心大模型的關鍵技術和最新進展

    4月16日,以“創造未來”為主題的Create 2024百度AI開發者大會在深圳國際會展中心成功舉辦。百度首席技術官海峰以“技術筑基,星河璀璨”為題,發表演講,解讀了智能體、代碼、多模型等多項文心大模型的關鍵技術和最新進展。
    的頭像 發表于 04-18 09:20 ?768次閱讀
    百度首席技術官<b class='flag-5'>王</b>海峰<b class='flag-5'>解讀</b>文心大模型的關鍵技術和最新進展

    賈揚清的500代碼,掀翻了Perplexity5.2億的桌子?

    500代碼VS估值5億1月25日,自從宣布創業后就備受社區矚目的賈揚清,在推特上展示了一個對話式搜索引擎的demo。這個demo基于他創辦的LeptonAI提供的框架,“只用500python
    的頭像 發表于 04-17 08:05 ?128次閱讀
    賈揚清的500<b class='flag-5'>行</b><b class='flag-5'>代碼</b>,掀翻了Perplexity5.2億的桌子?

    贛江新區黨工委副書記萬征一,蒞臨我司調研半導體產業發展情況!

    贛江新區高層視察引領高科技企業再上新臺階1月31日,贛江新區黨工委副書記、管委會主要負責同志萬征一蒞臨江西薩瑞微電子技術有限公司參觀。這不僅是一次簡單的視察,更是對江西薩瑞微電子技術有限公司在
    的頭像 發表于 04-13 08:38 ?376次閱讀
    贛江新區黨工委副書記<b class='flag-5'>王</b>萬征一<b class='flag-5'>行</b>,蒞臨我司調研半導體產業發展情況!

    湖南大學校長、耀南院士一赴中科億海微調研指導

    近日,湖南大學校長、耀南院士帶隊赴中科億海微電子科技(蘇州)有限公司(簡稱中科億海微)北京研究院調研指導,魏育成總裁率隊接待。段校長及院士一參觀了企業展廳,并詳細了解了中科億海微業務領域
    的頭像 發表于 02-19 12:17 ?933次閱讀
    湖南大學校長、<b class='flag-5'>王</b>耀南院士一<b class='flag-5'>行</b>赴中科億海微調研指導
    主站蜘蛛池模板: 色九| 亚洲香蕉毛片久久网站老妇人 | 一级美女视频 | 永久网站色视频在线观看免费 | 激情综合婷婷丁香六月花 | 成年人一级毛片 | 国内啪啪| 日本xxxx色视频在线观看 | 天天操天天曰 | 五月天婷婷在线观看视频 | 成人三级视频 | 西西人体44rt高清午夜 | 天堂在线www天堂中文在线 | 免费大秀视频在线播放 | 午夜影视在线 | 日本免费一级 | 欧美ol丝袜高跟秘书在线观看 | 99久久伊人 | 色女人网| 手机午夜视频 | 一级一片免费视频播放 | 男人性天堂 | 免费一级做a爰片久久毛片 免费一看一级毛片 | 涩涩97在线观看视频 | 成人黄色免费网站 | 久久草在线免费 | 欧美成人高清性色生活 | 色老头影视 | 在线三区 | 成人黄色在线 | 天堂网在线.www天堂在线资源 | 新版天堂资源在线官网8 | 欧美yw193.c㎝在线观看 | www成人在线观看 | 人人草人人插 | 性欧美xxxx视频在线观看 | 在线你懂的 | 老子影院午夜精品欧美视频 | avtt亚洲一区中文字幕 | 精品噜噜噜噜久久久久久久久 | 欧美色视频日本 |