<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>

          Python 的元類設(shè)計(jì)起源自哪里?

          共 2178字,需瀏覽 5分鐘

           ·

          2021-12-25 07:11

          △點(diǎn)擊上方“Python貓”關(guān)注 ,回復(fù)“1”領(lǐng)取電子書

          一個(gè)元老級(jí)的 Python 核心開發(fā)者曾建議我們( 點(diǎn)擊閱讀),應(yīng)該廣泛學(xué)習(xí)其它編程語(yǔ)言的優(yōu)秀特性,從而提升 Python 在相關(guān)領(lǐng)域的能力。在關(guān)于元編程方面,他的建議是學(xué)習(xí) Hy 和 Ruby。但是,他也提到,他并不知道學(xué)習(xí)哪種語(yǔ)言,可以加深對(duì) Python 元類設(shè)計(jì)的理解。

          這其實(shí)意味著,Python 的元類設(shè)計(jì)有著很大的原創(chuàng)性,并非借鑒自哪種語(yǔ)言的成熟設(shè)計(jì)!

          既然不是從其它語(yǔ)言中學(xué)習(xí)來(lái)的,那么,Python 的元類思想到底起源自哪里呢?Guido 不會(huì)是“無(wú)中生有”開創(chuàng)出來(lái)的設(shè)計(jì)吧?

          下面的一篇譯文,作者是 Guido van Rossum(Python 之父),原文寫于 2013 年 10 月,正是要回答 Python 元類的起源問(wèn)題:

          原文:https://python-history.blogspot.com/2013/10/origin-of-metaclasses-in-python.html

          譯者:豌豆花下貓@Python貓?

          聲明:本翻譯是出于交流學(xué)習(xí)的目的,基于 CC BY-NC-SA 4.0 授權(quán)協(xié)議。為便于閱讀,內(nèi)容略有改動(dòng),所有圖片皆為譯者所加。

          python-ideas 上有人猜測(cè) Python 的元類設(shè)計(jì)是起源自 Ruby。事實(shí)并非如此。既然是關(guān)于語(yǔ)言特性的起源,我覺得我有必要來(lái)澄清下事實(shí)。

          關(guān)于元類,我并沒有受過(guò) Ruby 的啟發(fā)(今后也不會(huì))。事實(shí)上,Ruby 受到過(guò) Python 的啟發(fā)。Mats 曾經(jīng)告訴我,他的靈感有 20% 來(lái)自 Python,有 80% 來(lái)自 Perl,而且 Larry Wall 是他心目中的英雄。

          (譯注:Larry Wall ?是 Perl 語(yǔ)言之父。他曾在 2014 年訪華,《程序員》雜志做過(guò)一期專訪,推薦一讀

          我在 1998 年寫過(guò)關(guān)于 Python 元類的文章:http://www.python.org/doc/essays/metaclasses

          Guido 的元類隨筆

          (作者注:那篇 1998 年的文章里包含了一個(gè)功能完整的 Enum 實(shí)現(xiàn),它有許多與 PEP-435 相同的特性。)

          新式類只是這個(gè)想法的第二或第三次迭代物。

          我實(shí)現(xiàn)新式類的靈感來(lái)自于一本書,即 Ira Forman 和 Scott Danforth 寫的《Putting Metaclasses to Work》。

          豆瓣有收錄
          亞馬遜這個(gè)價(jià)格真的嚇尿我了!

          但即便是在 Python 最初的設(shè)計(jì)中(1990 年,發(fā)布于 1991 年),類型(type)本身就是一個(gè)對(duì)象。任何對(duì)象中的類型指針總是指向一個(gè)特殊對(duì)象,該對(duì)象的“數(shù)據(jù)”是一堆實(shí)現(xiàn)其它對(duì)象行為的 C 函數(shù)指針,類似于 C++ 的虛函數(shù)表。

          一個(gè)類型的類型始終是一個(gè)特殊的類型對(duì)象(The type of a type was always a special type object),你可以將其稱為元類型(meta-type),因?yàn)樗亲约旱念愋汀?/p>

          當(dāng)時(shí)我對(duì) Smalltalk 只有模糊的了解;當(dāng)我后來(lái)讀到它的元類設(shè)計(jì)時(shí),我感到很驚訝,因?yàn)樗c Python 或 Ruby 中的元類有很大的不同!

          但是,Smalltalk 的字節(jié)碼對(duì) Python 的字節(jié)碼影響很大。我在 Adele Goldberg 和其他人的一本書中讀到過(guò),好像是《Smalltalk-80: The Language and its Implementation》。

          smalltalk 書

          (譯文完)

          以上文章出自 Guido 的《The History of Python》系列,該系列主要是關(guān)于 Python 語(yǔ)言及社區(qū)的發(fā)展歷史。我曾翻譯過(guò)該系列的最新一篇《pgen 解析器的起源》,曾打算把其它文章也陸續(xù)翻譯出來(lái)……(只是曾)……

          巧合的是,就在本文剛譯完而查資料時(shí),我無(wú)意中發(fā)現(xiàn)有人在 2019 年上半年已經(jīng)把該系列翻譯出來(lái)了(他翻譯了 25 篇,正好不含我所譯的最新一篇)!這些譯文,我竟然一直從未閱讀過(guò)!

          該譯者也有公眾號(hào),我好奇翻看了一些文章,發(fā)現(xiàn)不少的閱讀量只有 10 幾個(gè)!看來(lái)那位譯者是沒有怎么花心思運(yùn)營(yíng)啊,純粹是當(dāng)做了一種學(xué)習(xí)興趣,默默做事,不求掌聲。

          所以,如果你對(duì) Python 歷史相關(guān)內(nèi)容感興趣的話,我誠(chéng)心推薦你關(guān)注“ReadingPython”,查看其歷史文章。(另外,該譯者正在譯《Python behind the scenes》系列,這也是我的翻譯計(jì)劃之一,而且實(shí)際已經(jīng)把一篇 1.4 萬(wàn)字的譯了一半后就擱置了好幾個(gè)月……)

          推薦閱讀:

          1、與 Python 之父聊天:更快的 Python!

          2、Python 之父爆料:明年至少令 Python 提速 1 倍!

          3、Python之父重回決策層,未來(lái)如何發(fā)展?

          4、聊聊 Python 的內(nèi)置電池

          5、從 Python 之父的對(duì)話聊起,關(guān)于知識(shí)產(chǎn)權(quán)、知識(shí)共享與文章翻譯

          如果你覺得本文有幫助
          請(qǐng)慷慨分享點(diǎn)贊,感謝啦
          瀏覽 61
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国产特级乱浽片AA片 | 伊人久久五月 | 欧美成人精品三级 | 久久精品夜色 | 亚洲无码www |