趙澤睿
關鍵詞:法典化公平提示原則 代碼 軟件工程 數(shù)字時代 算法
法典擔負著重建社會共識、聚力社會發(fā)展的歷史重任。在當前推進數(shù)字化轉(zhuǎn)型的背景下,討論數(shù)字時代的法典化對建設數(shù)字中國與中國特色社會主義法治體系均具有重要意義。在此意義上,民法典并非法典化運動的結(jié)束,實則其他部門法法典化的開始。習近平總書記在中央全面依法治國工作會議上指出:“民法典為其他領域立法法典化提供了很好的范例,要總結(jié)編纂民法典的經(jīng)驗,適時推動條件成熟的立法領域法典編纂工作?!比珖舜蟪N瘯矊ⅰ皢迎h(huán)境法典、教育法典、行政基本法典的編纂工作”列入其2021年的立法工作計劃。刑法、刑事訴訟法、行政法、環(huán)境法、知識產(chǎn)權法與教育法領域的學者也紛紛就如何推進該領域的法典化展開研討,法典化一時間成為法學學者們共同關注的話題。
在此背景下,國內(nèi)法典化的現(xiàn)有研究主要分為以下三類。第一類聚焦具體領域的法典化實踐。其包括在已有法典的民法領域探討民法典對我國民法實踐的影響及進一步完善法典的路徑, 以及在未有法典的行政法、環(huán)境法、教育法等領域探討法典化的意義與必要性,并提出具體的法典編纂建議。第二類則聚焦法典化運動的比較研究。其主要通過對比我國當下的法典編纂與歷史上羅馬、法國和德國的法典化運動存在的異同,為我國未盡的法典化運動提供歷史經(jīng)驗,并據(jù)此闡釋我國法典化運動的歷史特殊性。第三類則聚焦法典與法典化的概念分析和類型化研究。其通過歷史梳理與類型劃分的方式,闡明法典及法典化的概念含義、價值追求、立法技術與內(nèi)部機理。
這些討論大多面向歷史且站在立法者的視角,探究法典化運動是否可能或者如何形成一套具備完整性、體系性、邏輯性和普遍性的法典。但這些討論忽略了兩個關鍵問題:一是法典編纂后該如何保障其后續(xù)不斷修訂的動態(tài)發(fā)展過程合理且正當;二是法典化運動未來該如何結(jié)合數(shù)字技術進行發(fā)展,即如何彰顯數(shù)字時代法典化的時代特征。對此,本文將以法律的公平提示原則為核心,論述法典化在化簡分散立法的復雜性時所面臨的發(fā)展悖論,以及在數(shù)字時代的法典化中提出“法律即代碼”觀念的時代意義。同時,本文也將結(jié)合軟件工程學的基礎概念、理論和技術,從法律的公平提示原則推導出“法律即代碼”的實現(xiàn)路徑與落實方案,為計算法學視野下的立法研究提供方向。最后,本文將結(jié)合當下熱議的“代碼即法律”觀念與本文提出的“法律即代碼”觀念,進一步將法律的公平提示原則發(fā)展為代碼的公平提示原則,將國家治理的法典編纂與修訂原則延伸為平臺自治的代碼設計與修訂原則,為解決代碼黑箱問題提供一種程序性視角。
一、“法律即代碼”對法典化的意義
“法典(Code),是指在某一個法律主題之下將既有的和新設的規(guī)范進行體系化集成之后形成的具有單一性和完整性的法律文本。而法典化,則是指國家推進并形成法典的事業(yè)?!狈ǖ浠呐d起是為了應對分散立法所引發(fā)的法律冗雜化和碎片化,以實現(xiàn)法律的公平提示原則。然而持續(xù)不斷的立法與修法讓內(nèi)容繁多、結(jié)構(gòu)復雜的法典本身也成為法律適用復雜性的來源,無法高效、動態(tài)管理繁多法律文本的法典化運動反而阻礙了法律公平提示原則的實現(xiàn),進而形成了法典化的發(fā)展悖論。因此,數(shù)字時代的法典化應當提出“法律即代碼”的觀念,并利用軟件工程學中處理代碼文本的數(shù)字技術實現(xiàn)法典化的數(shù)字化,據(jù)此打破法典化的發(fā)展悖論,保障數(shù)字時代法典化中的公平提示原則。
(一)作為法典化動因的公平提示原則
公平提示原則是指“政府在依據(jù)一項法律規(guī)則要求其公民承擔相應的法律責任之前,公民必須被告知并理解該法律規(guī)則”。其在歷史發(fā)展中演化出了對法律的三項核心要求。其一,法律的發(fā)布要求。政府必須正式頒布其所適用的法律規(guī)則。其二,法律的公民認知要求。政府有義務積極地讓公民認知并理解其所頒布的法律內(nèi)容。其三,法律的清晰度要求。政府有義務保障其所頒布的法律明確清晰,避免含糊或不連貫的規(guī)定縱容權力濫用。公平提示原則最早在雅典的希臘獲得關注,當時的公眾普遍要求政府公布其法律,進而導致“政府應當正式頒布其法律”成為法治國家的標準做法。多位著名法學家也在不斷強調(diào)這項蘊含于法治文明根基的基本原則。約翰·洛克在其《政府論》中便論述了法律的發(fā)布要求對社會運作的重要性,其認為法律的正式頒布與公民對這些法律的認識將保障公民對其自由和財產(chǎn)的信心,進而確保社會運作的高效與穩(wěn)定。杰里米·邊沁則在其著述中進一步明確了法律的公民認知要求,其認為公平提示原則遠不止賦予了政府頒布法律的義務,更要求政府積極努力地將法律告知公民,只有公民認識到法律,才算滿足公平提示原則的要求。而公平提示原則中的清晰度要求則最早由塞繆爾·普芬多夫提出, 其認為法律的公平提示原則不僅要求政府要讓其公民知道法律的存在,還要能讓公民明確知道法律的具體含義,因此法律的頒布若要有意義就必須清晰明確。這些關于公平提示原則的思想論述為當代憲法的禁止溯及既往、禁止司法創(chuàng)造和禁止正當程序模糊等重要條款奠定了理論基礎。
而保障法律的公平提示原則也是法典化運動興起的主要動因之一。縱觀歷史,各國進行法典化運動的目的皆是解決分散立法在社會變動中不斷冗雜化和碎片化而引發(fā)的法律適用復雜和理解爭議增多等破壞法律公平提示原則的問題。例如,1794年普魯士立法機構(gòu)以追求法典的清晰易懂與完整性為目標,頒布了被認為是定義了現(xiàn)代法典體系性特征的普魯士法,此時的公平提示原則為18、19世紀的法學家們追求法典體系內(nèi)部的邏輯性、一致性和完整性提供了正當性依據(jù)。甚至在20、21世紀的德國環(huán)境法法典化過程中,如何通過法典化運動解決過去立法分散引發(fā)的適用復雜與理解爭議等破壞法律公平提示原則的問題,再次成為德國法學家的熱議話題。英、美等普通法系國家的法典編纂雖然在技術層面與大陸法系國家不同,但其同樣也是為了在法律不斷冗雜化與碎片化的趨勢下保障法律的公平提示原則。如美國國會于1795年授權第一次聯(lián)邦法規(guī)匯編便是為了讓法律更加簡單明了,以此便于公眾獲知法律,解決因司法意見堆積導致的法律解釋分歧與爭議。正如韋伯在探究法典化運動背后的社會原因時所總結(jié)的:“法典化運動的興起,是因為法典擁有(或者至少給人一種擁有的印象)非凡的清晰度和精準的可理解性?!?/p>
無論大陸法系還是英美法系,隨著法治的不斷完善與發(fā)展,國家都需要以一種能夠促進理解和樹立權威的樣式呈現(xiàn)一套公認的法律權威文本,以此塑造期望和規(guī)范行為。這也解釋了為何我國當下開始在多個領域開展法典化運動。隨著我國法治建設的推進,正式頒布的法律法規(guī)數(shù)量不斷增多、領域不斷擴張,立法的冗余與碎片化為政府適用法律與公民理解法律帶來了困難,為了保障法律的公平提示原則,法典化運動必不可少。例如,我國現(xiàn)有的行政法數(shù)量繁多且混亂,出現(xiàn)了彼此間重復、矛盾的嚴重現(xiàn)象,而這正是我國學者推動行政法典編纂的正當性理由。
(二)法典化的發(fā)展悖論與“法律即代碼”的意義
但是法典化運動并非一勞永逸的事業(yè),法典為了適應社會發(fā)展需要不斷地擴充與修訂,而法典的擴充與修訂過程反而會產(chǎn)生新的復雜性,這些復雜性不斷積累將會產(chǎn)生一套沒有任何個人可以完全理解的法典,進而破壞法典化的初衷———法律的公平提示原則。 因為法典為了追求完整性、體系性、邏輯性和普遍性,其在動態(tài)發(fā)展過程中必然會面臨著大量法律文本的冗雜問題,這將會對法律的適用造成如下三方面的重要影響:其一,過于龐大、復雜的法典會導致公民的訴訟成本不斷增加并造成法治效率低下。對此,美國一些針對民事訴訟成本的實證調(diào)研顯示,在美國推動法典化進程后,花費在與法治相關的時間、人力和金錢成本不斷增加,并在當代的法治社會形成了數(shù)額龐大的必要開銷,這對大型公司都造成了巨大負擔。其二,隨著法典規(guī)模的擴大,法律條文之間的相互作用導致立法機構(gòu)與司法機構(gòu)無法有效協(xié)同地使用法典。已有學者指出,目前主流的以等級化格式和編號、主題分類和交叉引用為特征的系統(tǒng)化法典編纂雖然降低了立法機構(gòu)的制定成本,但法院獲知特定案件所涉及的法律的信息成本正在指數(shù)式地增長。這會逼迫繁忙的法官更多地關注法典單個字詞和法條,而忽視整個法律的整體政策目標,同時也會誘發(fā)過度犯罪等一系列的司法負面效應。其三,由于法典對普遍性、完整性和體系性的追求,法典對絕大多數(shù)公民來說會變得越來越不透明,公民難以完整、正確地理解法律。對此,一些學者已經(jīng)哀嘆普通公眾在缺少律師的情況下已難以理解復雜的現(xiàn)有法律。而當法典的復雜程度超出一般公眾所能理解的范疇后, 法典化運動便猶如羅馬皇帝尼祿(Nero)將其法律列于高塔之上一般,因公民無法看懂與理解而變得毫無價值。這三個影響將會導致法典在動態(tài)發(fā)展的過程中逐漸脫嵌于社會,最終形成法典化的發(fā)展悖論。
因此,為了在數(shù)字時代的法典化進程中打破法典化的發(fā)展悖論,需要將法律文本類比為代碼文本, 利用數(shù)字時代興起的軟件工程在法典編纂和修訂的動態(tài)發(fā)展過程中保障法律的公平提示原則,形成“法律即代碼”的法典化觀念。在數(shù)字社會中,大型軟件的代碼庫通常有數(shù)百萬行的長度,為了有效管理這些代碼庫使其正常運作,軟件工程學積累了大量用來分析大型軟件代碼庫演變和結(jié)構(gòu)的概念、理念和技術?!胺杉创a”的觀念將基于法典化和代碼庫在大規(guī)模文本管理需求方面的一致性,把這些軟件工程學中的代碼庫管理理念與技術引入法典編纂與修訂技術之中,將法律的公平提示原則從法典化的興起動因轉(zhuǎn)變?yōu)榉ǖ浠瘎討B(tài)發(fā)展的約束原則,實現(xiàn)法典化的數(shù)字轉(zhuǎn)型。對此,下文將進一步論述這種旨在打破法典化發(fā)展悖論的“法律即代碼”觀念具有何種內(nèi)涵、如何實現(xiàn),以及對數(shù)字社會中“代碼即法律”的二元共治研究有何影響。
二、數(shù)字時代法典化中“法律即代碼”的內(nèi)涵
結(jié)合法律的公平提示原則,數(shù)字時代法典化中的“法律即代碼”觀念是指,基于法律與代碼在功能與文本管理需求方面的一致性,對法律文本的法典編纂和修訂要充分利用軟件工程學中對大型代碼庫的管理概念、理念與技術,實現(xiàn)易懂的文本表達、合理的結(jié)構(gòu)安排、顯著的變動提示和簡潔的交叉引用四個維度的法典數(shù)字化轉(zhuǎn)型,以此保障法律的公平提示原則(法律的發(fā)布、公民認知和清晰度要求)。在此,本文將對“法律即代碼”觀念的正當性依據(jù),以及“法律即代碼”內(nèi)涵的四個維度展開論述。
(一)法律與代碼的功能與文本管理需求的一致性
自雷登伯格提出“代碼就是法律”的論述后,關于法律與代碼之間的比較研究日益增多。無論是將代碼比作網(wǎng)絡空間中的法律,以此論述網(wǎng)絡空間規(guī)制方式與現(xiàn)實空間的差異,還是將法律比作社會系統(tǒng)的代碼,以此從結(jié)構(gòu)層面借鑒代碼設計的基本原則來觀察與認識法律,均是基于法律與代碼在功能層面上的相似性展開研究的。在功能層面上,代碼與法律都是由一系列規(guī)則組成,這些規(guī)則都是為了管理某些操作,法律管理人的交互操作,代碼管理計算機的交互操作。例如,代碼規(guī)定了計算機在接收到某種數(shù)據(jù)并將其輸入后得出某種數(shù)據(jù)并將其輸出的規(guī)則,法律規(guī)定了特定人(除了自然人,也包括法人、國家等擬制人)在某種環(huán)境或行為輸入后輸出特定權力或權利的規(guī)則。因此,在功能層面上,代碼和法律具有共同的特征。
隨著軟件工程對代碼文本的需求規(guī)模增大,以及社會發(fā)展對法律文本的需求規(guī)模增加,大規(guī)模的代碼文本和法律文本都將面臨著復雜化引發(fā)的可理解性降低等類似的缺陷,進而也就有了建立和管理軟件代碼庫與編纂和修訂法典的一致性需求。就如法律需要公民理解一樣,軟件工程團隊在人員流動中為了能持續(xù)維護和更新軟件,需要保障其代碼文本能夠被其他人員所理解。從促進成員對規(guī)則認知的需求層面,“代碼和法律作為實現(xiàn)特定目標的指令集,均需要通過過濾信息、建構(gòu)模型來降低認知負擔、提高認知效率”。至少在如下兩個方面,軟件工程和法典化有著相同的大規(guī)模文本管理需求:其一,文本的簡潔性。在軟件工程中,軟件代碼庫的大小是評估開發(fā)和維護它所需工作的常用指標。每行代碼都可能包含錯誤或不必要的復雜性。因此,大量的代碼對應更大、更復雜的軟件,而這些軟件可能會有更多的漏洞。同樣,立法應當使用簡短的句子,而不是復雜或復合的句子。冗長的法律文本需要更多的時間來閱讀、解釋和修改。其二,文本的可讀性。軟件開發(fā)公司通常需要在使代碼可讀和易于理解方面投入大量資金,因為軟件工程團隊通常需要集結(jié)新的團隊成員、修復漏洞和重構(gòu)現(xiàn)有代碼,這些任務都需要深入理解其他人編寫的代碼,而這些人通常不再能夠提供支持或說明。同樣,法律應該易于閱讀和理解,以便公民能夠理解他們的權利和義務,也讓律師、立法者、法官和陪審員能夠更有效地履行他們的職責。例如,美國參議院的立法起草手冊也強調(diào)可讀性。題為“關注讀者”的第107節(jié)規(guī)定:“草案必須為讀者所理解。本手冊中的規(guī)則應以使草案更清晰、更容易理解的方式應用?!辈槐匾膹碗s法律可能會干擾商業(yè)、經(jīng)濟增長和司法公正,甚至會破壞法律的公平提示原則。
因此,可以說,法律和代碼作為均需要溝通與認知方能有效運作的規(guī)則系統(tǒng),其在大規(guī)模的文本管理需求方面是一致的,而這種一致性為法典化引入軟件工程學的理念與技術、實現(xiàn)法律的公平提示原則提供了聯(lián)結(jié)紐帶。
(二)“法律即代碼”內(nèi)涵的四個維度
在軟件工程學中,為了應對大規(guī)模代碼文本的復雜性所引發(fā)的軟件更新與維護困境,軟件工程師們會從四個角度來量化和化簡大型代碼庫中的文本復雜性:文本表達、結(jié)構(gòu)安排、版本變化和引用網(wǎng)絡。這為我們理解軟件工程學如何將法律公平提示原則轉(zhuǎn)化為“法律即代碼”的四個維度(法律要利用軟件工程實現(xiàn)易懂的用詞表達、合理的結(jié)構(gòu)安排、顯著的變動提示和簡潔的交叉引用)提供了方向。
首先,“法律即代碼”意味著數(shù)字時代的法典化應當利用軟件工程追求更加易懂的文本表達。軟件工程學需要保障其代碼的文本表達具有統(tǒng)一性、公認性、簡潔性和語境性,以保障代碼文本符合軟件工程學中最廣泛的常識性認知。這一點對于如何在法典編纂和修訂過程中保障法律的公平提示原則也同樣重要。這意味著法典編纂和修訂過程中應當利用軟件工程實現(xiàn)文本表達的統(tǒng)一性、公認性、簡潔性和語境性。統(tǒng)一性是指,法典在統(tǒng)合各項法律規(guī)則及增刪修改時應當保持用詞的統(tǒng)一, 避免出現(xiàn)對同一對象在不同規(guī)則中用多個同義詞表達或是多個對象用同一詞表達等容易讓公民誤解的情形。公認性是指,法典中的用詞定義應當以公眾可接觸的客觀工具(如詞典)而非學理觀點為準,這些工具應當是最能反映普通人而非普通律師、法官或立法者的理解。簡潔性是指,法典文本應當以盡可能簡單的詞語來表達,因為不必要的復雜詞匯將會干擾商業(yè)、經(jīng)濟增長和司法公正。注重語境則是要求立法者在編纂和修改法典、司法者在解釋適用法典時應當通過注意鄰近的條款來確定文本的用詞與含義。因為基本語言學理論認為,單詞和短語的意義只存在于上下文中,更一般地說,公民只能通過參考上下文來理解特定的規(guī)則用詞含義。由此可以看到,為了保障公民對法律文本的精準理解,法典在編纂及修訂的動態(tài)發(fā)展過程中,創(chuàng)設與變動任意規(guī)則的用詞需要借鑒客觀的工具并考慮其對其他規(guī)則(相同用詞的規(guī)則、同一對象的規(guī)則、上下鄰近的規(guī)則等)的影響,而這些需求是可以通過有效利用軟件工程來解決的。
其次,“法律即代碼”意味著數(shù)字時代的法典化應當利用軟件工程追求更加合理的結(jié)構(gòu)安排。一項評判軟件系統(tǒng)是否達標的要求是其是否能夠通過合理的結(jié)構(gòu)安排讓軟件工程師們迅速找到影響某一操作的所有相關代碼。這種結(jié)構(gòu)的合理性將會大幅影響軟件系統(tǒng)的后續(xù)維護與更新成本。同樣的道理,一部好的法典應當是能夠通過合理的結(jié)構(gòu)安排讓公民便捷地找到特定案件相關的所有法律規(guī)則。然而,無論是法典編纂前的分散立法,還是法典規(guī)模擴張后的復雜法典,若不對法律規(guī)則進行持續(xù)性的結(jié)構(gòu)管理將會導致影響同一案件的相關規(guī)則分散于法典的不同部分,即法律系統(tǒng)的“熵增定律”。當法律規(guī)則的分布過于無序與混亂時,公民便難以通過法律文本來全面、準確地理解法律。該問題在美國的法典化進程中較為突出,由于立法機關很少或根本不關注現(xiàn)有法典的整體結(jié)構(gòu),而不斷將新的法律笨拙地塞進法典已有的標題之中,導致同一案件的相關法律文本可能有數(shù)千頁之隔。然而,管理規(guī)模龐大的法典文本結(jié)構(gòu)并非易事。當一項新的法律涉及的主題較小且狹窄時,現(xiàn)有的法典編纂技術較易將新法納入法典文本之中。但如果新法的規(guī)則數(shù)量較多、涉及多個主題,甚至包含了多個位階規(guī)則時,新法的納入就將變得尤其復雜。因此,為了保障法典動態(tài)發(fā)展中的公平提示原則,數(shù)字時代法典化中的“法律即代碼”要求法典在編纂與修訂過程中利用軟件工程持續(xù)地改進其結(jié)構(gòu)安排,以促進公眾對法律具有更全面的理解。
再有,“法律即代碼”意味著數(shù)字時代的法典化應當利用軟件工程追求更加顯著的變動提示。軟件工程為了保持系統(tǒng)的穩(wěn)定性并降低更新成本,會盡可能地減少每次更新所變動的代碼行數(shù),并以顯著的方式標注此次更新的地方,以促進其他軟件工程師對軟件更新的理解。同樣,法典的編纂與修訂過程中,基于法律的公平提示原則應當盡量減少文本的變動,并以顯著的方式向公民提示其變動部分,以幫助公民理解法律條款的演變。然而,當法典文本的規(guī)模日益龐大時,每一次文本修正都將給公民完整理解當下有效的法律帶來巨大的信息成本。例如,美國國會甚至專門設立了眾議院法律修訂顧問辦公室,要求其及時更新法典文本并編寫相關材料來幫助用戶查找、跟蹤和理解法典的更新內(nèi)容,如發(fā)布新舊法典的比較文本、編寫立法歷史、標注有效日期、制作法律條款的狀態(tài)標簽和索引等。軟件工程中則有許多高效、便捷的數(shù)字技術來幫助人們迅速理解文本的變動狀態(tài),例如下文將會介紹的版本控制系統(tǒng)。因此,“法律即代碼”要求數(shù)字時代的法典修訂充分利用軟件工程技術,以合理、及時的方式來展現(xiàn)法典文本的整體變動,以便公眾能準確、方便地理解法律,避免過時規(guī)定所產(chǎn)生的深遠累積效應。
最后,“法律即代碼”意味著數(shù)字時代的法典化應當利用軟件工程追求更加簡潔的引用網(wǎng)絡。在軟件系統(tǒng)中,代碼之間存在著產(chǎn)生依賴性與復雜性的龐大引用網(wǎng)絡結(jié)構(gòu),而任何軟件工程都要求軟件工程師在必要時才使用交叉引用,并利用模塊化思想化簡引用結(jié)構(gòu),以避免產(chǎn)生不必要的系統(tǒng)依賴性和復雜性。因為這種交叉引用產(chǎn)生的依賴性與復雜性將會導致系統(tǒng)更加脆弱,一旦網(wǎng)絡中的某個節(jié)點代碼出現(xiàn)問題,將會影響整個網(wǎng)絡代碼的功能運作。同理,為了避免內(nèi)容的重復、促進立法的便捷,法典中的條款會經(jīng)常相互參照與引用,進而產(chǎn)生一種相互依賴的引用網(wǎng)絡,但規(guī)模龐大的引用網(wǎng)絡也會導致理解與適用法典的復雜化與困難化。這種引用網(wǎng)絡的規(guī)模越大,法典的復雜程度也就越高,公民想要獲知完整法律引用鏈的知識成本也就越大(尤其是公民可能需要探索多條不同的引用途徑),并且法典在后續(xù)發(fā)展過程中對引用鏈任意部分的修訂都會導致未知的、非預期的下游影響。據(jù)悉,美國法典發(fā)展至今,最長的法律引用鏈條需要經(jīng)過32個引用步驟才能“游走”完。法典的引用網(wǎng)絡規(guī)模也成為許多學者對法典復雜性進行實證研究的基本指標之一。為了避免法典因過于復雜而難以為公民所完整理解,“法律即代碼”要求法典在動態(tài)發(fā)展的過程中利用軟件工程的理念與技術不斷簡化法典中的引用網(wǎng)絡,以避免法典黑箱的形成。
綜上所述,為了保障法典在動態(tài)發(fā)展中不脫嵌于社會,國家必須有效管理大規(guī)模的法典文本,以滿足法律公平提示原則所提出的三項基本要求(發(fā)布、認知與清晰度)。在數(shù)字時代的背景下,隨著以編寫和管理大量代碼文本為專長的軟件工程學的不斷發(fā)展,基于代碼與法律的功能相似性與文本管理需求一致性,提出“法律即代碼”的觀念并利用軟件工程學理念與技術保障法典在動態(tài)發(fā)展中的公平提示原則,將成為數(shù)字時代法典化的時代特征。
三、“法律即代碼”的實現(xiàn)路徑
在明確了“法律即代碼” 的具體內(nèi)涵后, 本文將引用軟件工程學中較為基礎的概念(“圈復雜度”)、理念(“模塊化”思想)和技術(版本控制系統(tǒng))來展示“法律即代碼”觀念的可行性。這三個例子在軟件工程學中僅是最為基礎的部分,但其對數(shù)字時代法典化的推動作用足以表明“法律即代碼”這個觀念的未來發(fā)展?jié)摿Α?/p>
(一)衡量文本表達復雜性的“圈復雜度”
目前,衡量法律文本表達復雜度的主要指標是文本語句的長度,即字數(shù)越少的法典表達越好。然而,軟件工程學的研究表明,文本的長度并非衡量文本表達復雜度的唯一或最佳指標,因為其無法衡量不同文本表達對整體文本結(jié)構(gòu)的復雜性影響。最典型的例子便是一個連續(xù)由25個“IFOTHEN”的條件語句所構(gòu)成的50行代碼將會產(chǎn)生多達3350萬條不同的執(zhí)行路徑,其相比代碼數(shù)達500行但僅有5個條件語句的代碼,所產(chǎn)生的可執(zhí)行路徑數(shù)量要多得多?!尺@意味著在軟件工程中,過多地嵌套條件語句也會導致給定輸入的可執(zhí)行路徑成倍增加,進而增加了軟件的復雜度與出錯率。同樣,法律文本的表達也充斥著大量的條件陳述和例外情況(如“如果”“除外”“但”“規(guī)定”“何時”“何地”“除非”“盡管”“在任何情況下”等表達),但過多地條件語句將會增加公民對基本規(guī)則的理解難度,甚至過多的例外表達會讓公民覺得基本規(guī)則是錯誤的。例如,美國法院在平臺革命期間不斷對通信規(guī)范法第230條中的網(wǎng)絡平臺責任豁免創(chuàng)設例外情況,以此限縮網(wǎng)絡平臺的責任豁免范圍,但過多的例外情況反而讓網(wǎng)絡平臺公司與公眾覺得該條款已無效用。同樣,美國綜合撥款法案的文本字數(shù)非常龐大,但因為條件語句使用較少導致文本間的耦合性較低,公民對其理解較為簡單,因為其只需要關注相關的少數(shù)條款就能預料法律適用情況。而美國的患者保護和平價醫(yī)療法雖然文本字數(shù)遠少于綜合撥款法案,但充斥著大量條件語句和相互引用,導致其文本間耦合性較大,公民理解非常困難,有時公民需要讀懂整部法案才能了解其情況的法律適用可能性。
因此,軟件工程學中用于衡量條件語句引入對整個系統(tǒng)影響的“圈復雜度”指標有助于為立法者在權衡法典編纂與修訂時是否要用條件語句來進行表達提供更加精準、客觀的指標?!叭碗s度”(有時稱為“McCabe復雜度”)是指一段代碼中的可執(zhí)行路徑數(shù),即運行該代碼所必須作出決策的次數(shù)。因此,可以將“法典的圈復雜度”指標定義為“一段法律文本的決策路徑數(shù)(或者說條件語句數(shù)),即法官在適用該法律時所必須作出是否滿足法定條件的決策次數(shù)”。在立法者與學者引入這項指標,并利用計算機統(tǒng)計不同法典編纂或修訂方案的圈復雜度后,便可直觀地比較不同法典編纂或修訂方案之間的復雜性。當法典的某一修正方案以條件語句的方式引入一段新的法律后所產(chǎn)生的圈復雜度遠大于以列舉方式引入的圈復雜度時, 這代表著用條件語句來增加或修訂既有法典將會產(chǎn)生巨大的復雜性。這種復雜性在當下只關注文本長度的立法研究中是很難被直觀發(fā)現(xiàn)的。通過引入圈復雜度的概念和指標,能夠有利于立法者和學者大規(guī)模地量化與比較不同法典編纂或修訂方案在司法實踐中所必須面臨的復雜性,進而有利于立法者與學者作出有利于保障公平提示原則的立法決策或意見。
(二)簡化系統(tǒng)結(jié)構(gòu)與引用網(wǎng)絡的“模塊化”理念
基于“模塊化”的“面向?qū)ο缶幊獭崩砟钍钱敶笮蛙浖到y(tǒng)編程的基本編寫模式,也是許多開創(chuàng)性計算機科學論文和教科書的焦點。其核心思想是通過將軟件劃分為不同的模塊以簡化模塊之間的接口,讓系統(tǒng)的整體結(jié)構(gòu)和引用網(wǎng)絡簡潔化。例如,功能強大的文字處理應用程序(如Microsoft%word)具有許多功能,包括格式化、引用管理、檢查拼寫和語法以及文檔打印選項。為了管理這種復雜的結(jié)構(gòu)與引用網(wǎng)絡,大型軟件系統(tǒng)被劃分為模塊化子系統(tǒng)(如開始模塊、插入模塊、設計模塊、布局模塊等)。更小、更敏捷的軟件工程師團隊分別負責不同的模塊。由此,每個團隊只需了解與其模塊交互的其他模塊的輸入輸出行為,進而大幅降低了大型軟件的開發(fā)與維護成本,并提升軟件系統(tǒng)的魯棒性。在“模塊化”理念的指引下,好的軟件系統(tǒng)很容易被劃分成不同的模塊,模塊之間的接口相對稀疏和簡單。同樣,好的法典也應當很容易被劃分為不同的模塊,模塊之間條文的相互引用應當盡量稀疏和簡單。
簡要地理解“模塊化”理念的一種方法是將軟件系統(tǒng)看作一個網(wǎng)絡,其中代碼文本所用到的函數(shù)或變量看作網(wǎng)絡中的一個節(jié)點,如果節(jié)點a引用了節(jié)點b,則a和b之間存在一條連接。“模塊化”理念的核心在于如何調(diào)整節(jié)點來降低連接的數(shù)量并簡化網(wǎng)絡的結(jié)構(gòu)。如原本的代碼中存在相互引用的函數(shù)或變量a、b、c、d、e(見圖1),其有6條連接。此時若把函數(shù)或變量a和e歸為同一函數(shù)或變量ae(見圖2),則軟件中的代碼連接數(shù)將會減少至4條,且結(jié)構(gòu)也從一個復雜結(jié)構(gòu)簡化為兩個簡單結(jié)構(gòu)的疊加。
基于這種“模塊化”的理念,軟件工程學對于任何給定的軟件代碼庫,都可以構(gòu)造和分析其聚合的節(jié)點和邊。由此產(chǎn)生的網(wǎng)絡結(jié)構(gòu)可以深入了解軟件系統(tǒng)的性質(zhì),例如它的健壯性以及它的漏洞可能存在的位置。網(wǎng)絡圖還可以提供軟件系統(tǒng)中存在的不同類別的模塊。特定模塊所屬的網(wǎng)絡部分可以提供關于模塊如何與系統(tǒng)其余部分相關的信息。而在法典化研究中引入模塊化概念,有助于計算法學利用軟件工程方法將法典中各個條款之間的關聯(lián)可視化。從公眾的角度,這種基于模塊化思想的可視化實證研究能夠便于公民與法官直觀地了解法典文本的整體引用網(wǎng)絡,讓其能更加便捷地找到具體案件所可能涉及的相關法條,并方便學者精準、直觀地了解法典的大規(guī)模文本在演變過程中的整體結(jié)構(gòu)變化。從立法者的角度,引入模塊化概念并基于此形成的可視化實證研究能夠為法典在修訂的過程中如何合理地調(diào)整篇、章結(jié)構(gòu)與引用方式,來減少必要的引用、簡化法典的整體結(jié)構(gòu)提供重要參考。例如,美國已有學者基于模塊化概念與軟件工程技術對美國各個法典的引用網(wǎng)絡進行了可視化的呈現(xiàn)與比較。我國在法典化過程中也可以利用軟件工程的方式進行類似的計算法學研究,這也有利于將知識圖譜技術引入法典化的公平提示原則保障機制之中,成為數(shù)字時代法典化的技術特征之一。
(三)可視化文本變動的“版本控制系統(tǒng)”
在大型軟件代碼庫中,會有許多軟件工程師同時處理代碼,所以需要有確保代碼更改不會破壞功能或產(chǎn)生沖突的機制。為此,軟件工程實踐通常采用“版本控制系統(tǒng)”來處理這些問題。而受軟件工程啟發(fā)的法律版本控制系統(tǒng)可能是未來管理法典變更的合理方法。版本控制系統(tǒng)的“跟蹤任務”功能可以實時提示所有軟件工程師系統(tǒng)目前作出了哪些更改,是誰作出了更改,什么時候進行的更改,以及其更改的理由?!?0R〕在此,本文僅以版本控制系統(tǒng)更改文本的方式,闡述其對數(shù)字時代法典化中公平提示原則保障的借鑒意義。
在代碼庫上工作時,軟件工程師通常會添加、刪除、修改、重新排序或重組代碼行。而有效保障多人同時協(xié)作的關鍵在于他們能夠基于版本控制系統(tǒng)對文本更改的可視化進行溝通。具體來說,盡管編輯軟件代碼可能涉及許多高級思維過程,但它們在版本控制系統(tǒng)中可以通過兩項簡單操作(添加和刪除代碼行)與他人溝通其編程的思路。因為版本控制系統(tǒng)會不斷地對同一文檔的兩個版本進行比較,即即時性的“對比”。當團隊成員在版本控制系統(tǒng)中進行代碼更改時,團隊的其他成員可以很容易地識別更改位置以及這些更改是什么(主要是通過查看紅線比較)。此外,版本控制系統(tǒng)對更改行數(shù)的標識可以直觀地表明修訂是大還是小, 無須人力專門對修訂前與修訂后的文本進行單獨比對?;诎姹究刂葡到y(tǒng)來即時性地對比文檔的兩個版本是軟件工程師共同編寫與修訂軟件代碼的基本習慣。對此,我們可以反思現(xiàn)有法律修正案的頒布方式———僅公布修改的文本內(nèi)容,即“將XX條改為XX條,修改為:‘XXXX”?,F(xiàn)有的這種修正案頒布方式需要對當下文本有較為全面和完整的認識才能快速理解修正案對法律的影響,這對非專業(yè)的公民來說存在著較大認知成本,對律師與法官來說也需要花費大量的時間成本去跟蹤和自行比對法典的修訂。利用軟件工程學中的版本控制系統(tǒng)進行法典的編纂與修訂,一方面有利于公眾參與法典編纂與修訂時的相互溝通,另一方面也有利于公眾對法典編纂與修訂后的有效法律進行直觀、快速地認知。當然,這種用于法典化運動的版本控制系統(tǒng)需要法學專家與計算機專家的共同努力,將法典的編纂和修訂程序納入軟件程序之中。
此外,為了快速尋找到相關文本,軟件工程師在日常工作中也會經(jīng)常利用版本控制系統(tǒng)的查找工具。這些查找工具既有助于立法者在創(chuàng)設規(guī)則時統(tǒng)一表達用詞,也能幫助公民快速尋找到其所需的相關法律文本。與互聯(lián)網(wǎng)搜索引擎幫助用戶在線查找相關文檔,或“查找文件”程序幫助計算機用戶在自己的計算機上查找文檔的方式類似,版本控制系統(tǒng)會幫助工程師自動、快速搜索代碼庫中的特定術語或其頻率,以幫助他們完成工作。原則上,這些搜索技術也可以用于減少立法者與公眾對法典中大規(guī)模文本的認知成本,尤其是在立法者修訂涉及多個領域的相關條文時,這些查找工具將會為立法者與公眾整體性地理解法律提供助益。
上述三個例子僅是軟件工程學中保障代碼庫可理解性較為淺顯的概念、理念和技術,但足以揭示將軟件工程學引入數(shù)字時代法典化研究的重要性與可行性,即“法律即代碼”的未來發(fā)展?jié)摿Α.斎?,“法律即代碼”的理念除了能在法典化研究中發(fā)揮重要作用,也能為數(shù)字社會治理中的“代碼即法律”研究提供新的思路與視角。
四、“法律即代碼”與“代碼即法律”
隨著社會的數(shù)字化轉(zhuǎn)型,法律與代碼的二元共治理念已經(jīng)為社會所接受。而法典化過程中因復雜性引起的黑箱問題也同時出現(xiàn)在了軟件工程的治理領域,“法律即代碼”的觀念據(jù)此與“代碼即法律”的觀念發(fā)生耦合。社會公眾對數(shù)字空間中具有強制性效力的代碼產(chǎn)生了可理解性的需求,約束法典化運動的公平提示原則自然發(fā)展為了代碼的公平提示原則,即公民行為在受到代碼的規(guī)制前,必須被告知并理解該代碼中的相關規(guī)則。大型軟件系統(tǒng)中的代碼黑箱問題也就不再僅僅是工程師們所關注的技術問題,而成為政府、企業(yè)與公眾所共同關心的社會熱點。這種代碼黑箱問題會導致人們難以理解代碼規(guī)制社會的具體邏輯,進而無法對代碼產(chǎn)生信任,甚至會擔憂和恐懼在數(shù)字社會中被代碼暗中操控。此時,代碼之治所遇到的黑箱問題實質(zhì)上與法典化所面臨的復雜性問題具有一致性, 而從法律的公平提示原則出發(fā)研究代碼之治的規(guī)制問題自然也就成為一個重要視角。
對此, 一些學者試圖將法律公平提示原則的三項實體性要求直接適用于代碼之治的規(guī)制之上,即追求代碼的公開發(fā)布、公民認知和清晰明確。例如,有學者提出了設立以實現(xiàn)代碼公開為目標的解釋權和排他權,前者要求軟件開發(fā)者能夠以用戶理解的方式讓他們認知代碼文本,后者通過排他權保障軟件開發(fā)者的商業(yè)利益,據(jù)此鼓勵他們公開代碼文本。然而,這些觀點受到了不同程度的批評,單純的代碼公開已被認定為一種無益于代碼公平提示原則的規(guī)制方式。但有趣之處在于,這些批評的理由與當代批評法典化運動無益于法律公平提示原則的理由類似。如軟件的代碼文本與法典的法律文本均因文本規(guī)模較大、用語專業(yè)晦澀和引用結(jié)構(gòu)復雜,導致單純地公開發(fā)布文本也無益于相關利益者理解其涉及的具體代碼或法律的內(nèi)涵,因為其完整、準確理解相關代碼或法律的認知成本已遠超其收益。而對于旨在加強更寬泛意義上代碼公開的解釋權,有一部分學者也指出,其并非是圍繞代碼文本的解釋, 而是圍繞軟件開發(fā)者與其他利益相關者之間如何達成代碼規(guī)制信任的解釋,這已不再局限于單純的代碼公開,而是涉及溝通問題。這些通過延伸解釋權來保障代碼公平提示原則的主張已經(jīng)不再停留于代碼的公開,而是轉(zhuǎn)變?yōu)樗伎既绾卧诓煌瑧脠鼍跋麓龠M公眾參與和充分溝通來保障代碼之治的正當性與合理性。這些恰恰也是法典化研究目前所追求的目標———如何促進公眾參與和充分溝通來保障法典編纂和修訂的正當性與合理性。因此,在“法律即代碼”和“代碼即法律”兩種觀念的耦合作用下,公平提示原則作為法典化與代碼之治中共通的核心原則,為計算法學的法典化研究和代碼治理研究指明了一個全新的路徑,即促進多方關于法律/代碼溝通的程序視角。
在基于法律程序的溝通視角下,代碼的公平提示原則作為代碼之治的正當化機制將通過法律程序的創(chuàng)設而非實體性要求來實現(xiàn)?;诜沙绦?qū)Ψǖ涞木幾?、修訂和適用分別創(chuàng)設了立法程序和司法程序,基于法律程序的代碼之治可以為代碼的研發(fā)決策、適用決策和自動化決策分別創(chuàng)設狹義的技術性正當程序、算法論證程序和嵌入性正當程序。如狹義的技術性正當程序?qū)⒛抗饩劢褂谲浖こ處熍c平臺需求方之間針對代碼研發(fā)的溝通過程,要求軟件工程師在作出相應的決策時作出可使其他軟件工程師和需求方理解與認可的人類間溝通。這在代碼即法律的數(shù)字社會以前,是由計算機的職業(yè)倫理所規(guī)定,但在進入代碼即法律的數(shù)字社會后,研發(fā)大型平臺軟件系統(tǒng)的工程師們就必須有一套法律程序來保障他們與平臺需求方之間的溝通,進而保證大型平臺的軟件至少包含具有平臺所設想的價值與理念。當然這種狹義的技術性正當程序只保障了代碼在軟件工程師與平臺需求方之間的正當性,為了進一步將其正當性從平臺需求方擴展至平臺用戶,需要類似于法律論證程序的算法論證程序。“算法論證程序”是指,算法應用主體按照特定標準和條件整理利益相關方通過一定順序、方式和步驟得出的意見后,對其算法應用的決定(即選擇某項數(shù)據(jù)處理或代碼構(gòu)建的邏輯規(guī)則作為決策規(guī)則嵌入特定社會領域)作出可使利益相關方理解與認可的溝通過程。而當代碼構(gòu)建的系統(tǒng)具有擬主體性且能夠自行進行決策后,聚焦于人機溝通的嵌入式正當程序也就成為了自動化決策中保障代碼公平提示原則的重要機制。對算法論證程序和嵌入式正當程序,已有專門論文進行討論,就不再贅述。但在此已可以看出,提出“法律即代碼”觀念的意義將會不局限于打破法典化的發(fā)展悖論,其更有將數(shù)字時代法典化中的公平提示原則引入代碼治理領域之中,并為計算法學在立法研究和算法規(guī)制研究方面指明了“溝通—程序”的研究方向。
結(jié)語
隨著我國法典化運動的興起,各領域?qū)W者紛紛著手從學理角度探求一部完整性、體系性和普遍性的法典文本。然而,法典化運動并非一項一勞永逸的事業(yè),隨著社會的發(fā)展,法典在出臺后必然會面臨持續(xù)性的修訂,若不對法典文本的動態(tài)發(fā)展加以約束,將會形成一個任何個體都無法完全理解的法律黑箱。為了打破這種法典化的發(fā)展悖論,提出“法律即代碼”的觀念,并據(jù)此引入軟件工程學的理念與方法是數(shù)字時代法典化的必需。基于法律與代碼在功能與文本管理需求方面的一致性,“法律即代碼”的觀念,是指對法律文本的法典編纂和修訂要充分利用軟件工程學中對大型代碼庫的管理概念、理念與技術,實現(xiàn)易懂的文本表達、合理的結(jié)構(gòu)安排、顯著的變動提示和簡潔的交叉引用四個維度的法典數(shù)字化轉(zhuǎn)型,以保障法律的公平提示原則(法律的發(fā)布、公民認知和清晰度要求)。在軟件工程學中,“圈復雜度”的概念有助于重塑我們對法典文本復雜性的理解,“模塊化”思想的理念則有助于我們可視化與簡化法典文本的引用結(jié)構(gòu),版本控制系統(tǒng)的技術則有助于我們高效地理解與管理文本的變動情況。這些基礎概念、理念和技術對數(shù)字時代法典化的推動作用足以表明“法律即代碼”這個觀念的未來發(fā)展?jié)摿?。而“法律即代碼”的觀念同樣也會與“代碼即法律”的二元共治理念產(chǎn)生耦合,將法典化中的法律公平提示原則轉(zhuǎn)化為代碼的公平提示原則,并指出計算法學在立法研究和算法規(guī)制研究方面的可行方向,即促進多方關于法律/代碼溝通的程序治理。此處的“程序”將會是法律程序與算法程序之和,是法學研究與計算機科學研究的交叉應用。