W!o 的派生‧十日談之《九》

Xiaoyuncong_nvwa
清初蕭雲從《女媧

180px-Anonymous-Fuxi_and_Nüwa3
新疆岀土的人首蛇身伏羲女媧圖。其中女媧持規,伏羲持矩

女媧補天
女媧補天

淮南子‧覽冥

往古之時,四極廢,九州裂,天不兼複,地不周載。火爁焱而不滅,水浩洋而不息。猛獸食顓民,鷙鳥攫老弱。於是女媧鍊五色石以補蒼天,斷鼇足以立四極,殺黑龍以濟冀州,積蘆灰以止淫水。蒼天補,四極正,淫水涸,冀州平,狡蟲死,顓民生。

篆文媧 

篆文鬲

説文解字》:媧,古之神聖女,化萬物者也。从女,咼聲。篆文媧,籀文媧从篆文鬲

話說共工怒而觸不周之山,天柱摺,地維絕。天傾西北,故日月星辰移焉;地不滿西南,故水潦塵埃歸焉。或許此乃遠古之時『洪‧江』滔天之『大洪水』,傳自『洛水神龜』感念大禹之後。故而『女媧氏』以神『』煉『五色石』以『補天』當在大禹之前,此故得於『大荒山』『無稽崖』『青埂峰』之下無緣補天之『頑石』所記。當真是以『天子之劍』『制約』造化之『五行』,能開陰陽,持春夏,行秋冬,上決浮雲,下絕地紀。此劍一用,匡【正】諸侯,天下服矣的耶!!

誰能告訴我,為何故事總是起於『 Once Upon a Time 』,那個『很久很久以前』??

若說天下有多少種『派生』語言,《Python Implementations》︰

An “implementation” of Python should be taken to mean a program or environment which provides support for the execution of programs written in the Python language, as represented by the CPython reference implementation.

There have been and are several distinct software packages providing of what we all recognize as Python, although some of those are more like distributions or variants of some existing implementation than a completely new implementation of the language.

其中『 PyPy 』可就有趣的了,用『派生』寫『 Python 』,還能跑的『比較快』??

PyPy is a fast, compliant alternative implementation of the Python language (2.7.8 and 3.2.5). It has several advantages and distinct features:

  • Speed: thanks to its Just-in-Time compiler, Python programs often run faster on PyPy. (What is a JIT compiler?)

    “If you want your code to run faster, you should probably just use PyPy” — Guido van Rossum (creator of Python)

  • Memory usage: memory-hungry Python programs (several hundreds of MBs or more) might end up taking less space than they do in CPython.

  • Compatibility: PyPy is highly compatible with existing python code. It supports cffi and can run popular python libraries like twisted and django.

  • Sandboxing: PyPy provides the ability to run untrusted code in a fully secure way.

  • Stackless: PyPy comes by default with support for stackless mode, providing micro-threads for massive concurrency.

  • As well as other features.

要如何看待這些『建置』  implementation 的呢?也許好好『履行』 Implementation 其一,將自可及於『其它』,或若有『所思』,也可讀讀『淮南子』之《說林訓》︰

以一世之度制治天下,譬猶客之乘舟,中流遺其劍,遽契其舟桅,暮薄而求之,其不知物類亦甚矣!夫隨一隅之跡,而不知因天地以游,惑莫大焉。雖時有所合,然而不足貴也。譬若旱歲之土龍,疾疫之芻狗,是時為帝者也。曹氏之裂布,蛷者貴之,然非夏后氏之璜。無古無今,無始無終,未有天地而生天地,至深微廣大矣。足以蹍者淺矣,然待所不蹍而後行;智所知者偏矣,然待所不知而後明。遊者以足蹶,以手㧊,不得其數,愈蹶愈敗。及其能遊者,非手足者矣。鳥飛反鄉,兔走歸窟,狐死首丘,寒將翔水,各哀其所生。毋貽盲者鏡,毋予躄者履,毋賞越人章甫,非其用也。

椎固有柄,不能自椓;目見百步之外,不能自見其眥。狗彘不擇甂甌而食,偷肥其體而顧近其死。鳳皇高翔千仞之上,故莫之能致。月照天下,蝕于詹諸。騰蛇遊霧,而殆於蝍蛆。鳥力勝日,而服於鵻禮,能有修短也。莫壽於殤子,而彭祖為夭矣。短綆不可以汲深,器小不可以盛大,非其任也。怒出於不怒,為出於不為。視於無形,則得其所見矣;聽於無聲,則得其所聞矣。至味不慊,至言不文,至樂不笑,至音不叫,大匠不斫,大豆不具,大勇不鬥,得道而德從之矣。譬若黃鍾之比宮,太簇之比商,無更調焉。以瓦鉒者全,以金鉒者跋,以玉鉒者發,是故所重者在外,則內為之掘。逐獸者目不見太山,嗜欲在外,則明所蔽矣。聽有音之音者聾,聽無音之音者聰;不聾不聰,與神明通。

卜者操龜,筮者端策,以問于數,安所問之哉!舞者舉節,坐者不期而拌皆如一,所極同也。日出暘谷,入于虞淵,莫知其動,須臾之間,俛人之頸。人莫欲學御龍,而皆欲學御馬;莫欲學治鬼,而欲學治人。急所用也。解門以為薪,塞井以為臼,人之從事,或時相似,水火相憎,鏏在其間,五味以和。骨肉相愛,讒賊間之,而父子相危。夫所以養而害所養,譬猶削足而適履,殺頭而便冠。昌羊去蚤虱而來蚙窮,除小害而致大賊,欲小快而害大利。牆之壞也,不若無也,然逾屋之覆。璧瑗成器,礛諸之功;鏌邪斷割,砥礪之力。狡兔得而獵犬烹,高鳥盡而強弩藏。虻與驥,致千里而不飛,無糗糧之資而不饑。失火而遇雨,失火則不幸,遇雨則幸也。故禍中有福也。

鬻棺者,欲民之疾病也;畜粟者,欲歲之荒饑也。水靜則平,平則清,清則見物之形,弗能匿也。故可以為正。川竭而穀虛,丘夷而淵塞,唇竭而齒寒,河水之深,其壤在山。鈞之縞也,一端以為冠,一端以為袜,冠則戴致之,袜則蹍履之。知己者不可誘以物,明於死生者,不可卻以危。故善遊者不可懼以涉。親莫親於骨肉,節族之屬連也。心失其制,乃反自喜,況疏遠乎!聖人之一道,猶葵之與日也。雖不能與終始哉,其向之誠也。宮池涔則溢,旱則涸。江水之原,淵泉不能竭。蓋非橑不能蔽日,輪非輻不能追疾,然而橑輻未足恃也。金勝木者,非以一刃殘林也;土勝水者,非以一墣塞江也。躄者見虎而不走,非勇,勢不便也。傾者易覆也。倚者易軵也。幾易助也,濕易雨也。設鼠者機動,釣魚者泛杭,任動者車鳴也。

芻狗能立而不能行,蛇床似麋蕪而不能芳。謂許由無德,烏獲無力,莫不醜於色。人莫不奮於其所不足。以兔之走,使犬如馬,則逮日歸風;及其為馬,則又不能走矣。冬有雷電,夏有霜雪,然而寒暑之勢不易,小變不足以妨大節。黃帝生陰陽,上駢生耳目,桑林生臂手,此女媧所以七十化也。終日之言,必有聖之事;百發之中,必有羿、逢蒙之巧。然而世不與也,其守節非也。牛蹄彘顱亦骨也,而世弗灼,必問吉凶於龜者,以其曆歲久矣。近敖倉者,不為之多飯;臨江河者,不為之多飲;期滿腹而已。蘭芝以芳,未嘗見霜;鼓造辟兵,壽盡五月之望。舌之與齒,孰先砻也?錞之與刃,孰先弊也?繩之與矢,孰先直也?今鱔之與蛇,蠶之與蠋,狀相類而愛憎異。晉以垂棘之璧得虞、虢,驪戎以美女亡晉國。聾者不歌,無以自樂;盲者不觀,無以接物。觀射者遺其執,觀書者忘其愛。意有所在,則忘其所守。

……

 

然後大膽『解讀』《 TPG 》 Toy Parser Generator 『原始碼』,『遊藝』於『文法』『語意』物件之中,『採擷』 TPG 之『自生自成』的『精華』︰

Toy Parser Generator is a lexical and syntactic parser generator for Python. This generator was born from a simple statement: YACC is too complex to use in simple cases (calculators, configuration files, small programming languages, …).

TPG can very simply write parsers that are usefull for most every day needs (even if it can’t make your coffee). With a very clear and simple syntax, you can write an attributed grammar that is translated into a recursive descendant parser. TPG generated code is very closed to the original grammar. This means that the parser works like the grammar. A grammar rule can be seen as a method of the parser class, symbols as method calls, attributes as method parameters and semantic values as return values. You can also add Python code directly into grammar rules and build abstract syntax trees while parsing.

The first application of TPG is TPG itself. The first (not released) version of TPG has been written by hand then was used to generate next versions. Now TPG can generate itself.

For an uptodate documentation, please read tpg.pdf.