維基函數:關於
- 使命宣言
- 一個維基媒體項目,畀所有人協作創建同維護一個代碼函數庫,以支援維基媒體項目同其他項目,畀所有人用世界上嘅自然語言同編程語言調用同重用
The vision for Wikifunctions:
- Imagine a programming system that is collaboratively grown and maintained, to which everyone can contribute, and that everyone may share.
- Imagine a programming system that truly is accessible, one that is open not only to speakers of English but to billions of people more who will not have to learn English first in order to learn how to program.
- Imagine a programming system that is truly geared to a mobile-first world, and where the execution of the code and the data flow become intelligently managed and distributed.
- Imagine a programming system where you write code only once and then it can be run anywhere by anyone – even from programs written in different programming languages.
- Imagine a programming system that allows us to make the next big leap in knowledge representation.
維基函數係一個開放式代碼存儲庫,任何人都可以使用同埋貢獻。
維基函數由函數組成。函數可以有好多語言嘅描述,包括參數清單、測試用例、唔同編程語言嘅實現清單,同埋進一步嘅元數據,全部都係用多種語言(維基媒體支援嘅語言當中)。呢啲實現可以喺其他軟件項目(私人應用程式或者腳本)中重用,喺網上調用同執行(只需要喺瀏覽器、雲端環境,或者喺 Jupyter[1] 或者 PAWS[2] 筆記本入面),組成嚟實現更複雜嘅功能,簽署、分析或者驗證,等等。
維基函數係一個以維基百科、維基數據、維基詞典同其他類似嘅全球協作自由文化項目為精神嘅項目:佢畀嚟自世界各地嘅貢獻者創建同維護一個多語言嘅函數庫,任何人都可以用嚟做任何目的。每個函數都可以由唔同編程語言嘅多個實現、測試用例、前後條件、文件、以跑時估計形式嘅元數據同埋唔同實現嘅複雜性保證等等支援。用戶可以直接喺網站上面調用函數,或者喺自己嘅代碼或者應用程式、命令行介面或者本地應用程式調用函數。呢個函數可以喺瀏覽器、雲端或者本地執行,並且嵌入喺用戶嘅應用程式入面。
維基函數嘅目的係創造一個明確定義嘅共同函數目錄,可以廣泛重用,同埋一個可以快速組合同即時執行函數嘅環境。維基函數嘅目標係令開發人員嘅生活更容易,因為佢哋可以好似任何外部庫噉依賴呢個存儲庫,同埋最終用戶,佢哋可以根據需要調用函數,而呢種方式目前只可以透過特定嘅網站,覆蓋率非常唔均勻,而呢啲網站通常以 1990年代嘅網站形式寫,並且有Java小程式。
所有函數都係純粹功能,以便啟用安全嘅沙盒執行。同埋,每個實現都可以用元數據加註解同埋加密簽名。最終用戶可以根據佢哋可用嘅硬件資源同埋信任網絡設定,選擇同埋審核每個功能嘅邊個實現。
維基函數會令到可以輕鬆存取大型知識庫,例如維基數據,亦可以存取二進制輸入同輸出檔案。完全可以將圖片上載為輸入檔案,然後返回分析結果,例如圖片上所描繪嘅內容,或者圖片有幾多種唔同嘅顏色 —— 或者唔同嘅二進制檔案,例如:用唔同嘅格式。呢個會提供畀維基共享資源嘅工作流程。
維基函數繼續咗將更多計算移至網絡嘅傳統,通常係喺命令行或者更多識電腦嘅用戶嘅應用程式上面發生,並且民主化以前唔可用嘅功能。同時,呢個方法會提高所有地方嘅開發人員嘅生產力,因為佢哋只需要用一個大型嘅代碼庫,而唔係依賴喺「StackOverflow」呢類網站複製同貼上答案。
同維基百科唔同,貢獻者大多數會為某個函數創建新嘅實現,而唔係更新現有嘅函數。呢啲實現可以自動根據給定嘅測試、互相測試,同埋進一步分析。
實現可以用好多唔同嘅編程語言寫,但係佢哋會可以調用用其他編程語言實現嘅函數。執行引擎可以順利噉用唔同嘅語言運作(雖然唔一定係有最高嘅性能)。雖然喺大多數情況下,喺單一編程語言入面編寫函數嘅性能會有好大嘅提升,但係冇要求咁做。喺好多情況下,開發速度同開發人員嘅時間會比起喺執行引擎度花費嘅額外電腦週期更加有價值。
參考文獻