Jump to content

Wikifunctions:關於

From Wikifunctions
This page is a translated version of the page Wikifunctions:About and the translation is 100% complete.
Wikifunctions的首個目標是支援各個維基媒體專案,但它未來將支援的對象不僅止於此,正如維基資料的情形一樣。這是一段跳脫維基百科的Wikifunctions描述。
使命宣言
一個維基媒體專案,供所有人協作建立與維護程式碼函式庫,以支援維基媒體專案及其他專案,讓全世界的人能以各種自然語言與程式語言進行呼叫與重複使用。

維基函式庫願景

  1. Imagine a programming system that is collaboratively grown and maintained, to which everyone can contribute, and that everyone may share.
  2. 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.
  3. 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.
  4. 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.
  5. Imagine a programming system that allows us to make the next big leap in knowledge representation.

Wikifunctions是一個任何人都可以使用與貢獻的公開程式碼庫

Wikifunctions由函式所組成。函式具有一個多語言的描述、一個參數列表、測試用例、不同程式語言的實作列表,以及更多其他的中繼資料,全部以維基媒體所支援的多語言呈現。這些實作可以在其他軟體專案(私有應用程式或腳本)中線上重複使用,可以在線上環境中呼叫和執行(可以是僅在瀏覽器中或在雲端環境或Jupyter[1]或PAWS[2]筆記本中),可以組合以實現更複雜的功能,可以簽名、分析或驗證等等。

Wikifunctions是一個秉承維基百科、維基資料、維基詞典等精神的專案,它允許來自世界各地的貢獻者建立和維護一個多語言的函式庫,任何人都可以出於任何目的使用該庫。每個函式都可以由不同程式語言的多個實作、測試用例、前置和後置條件、文件、執行時預估的中繼資料和不同實作的複雜性保證等支援。使用者可以直接在網站上呼叫函式,也可以從他們自己的程式碼或應用程式、命令列介面或本地應用程式中呼叫。函式可以在瀏覽器中本地執行,也可以在雲端執行,或者本地嵌入到使用者的應用程式中執行。

Wikifunctions旨在建立一個定義明確、可廣泛重複使用的通用函式目錄、和一個可以快速組合並即時執行函式的環境。Wikifunctions旨在讓開發人員的生活更輕鬆,他們可以像使用任何外部函式庫一樣依賴這個程式碼庫,同時也方便終端使用者根據需要呼叫函式,這種便利目前僅透過特定網站實現,但覆蓋範圍非常不均勻,這些網站常常採用1990年代網站的形式,配合Java小程式編寫。

所有函式都是純函式,以便能夠實現在安全的沙箱執行。此外,每個實作都可以使用中繼資料進行註釋並進行加密簽名。終端使用者可以根據他們可用的硬體資源和信任網路設定,選擇並稽核每個功能的哪個實作版本。

Wikifunctions將允許輕鬆存取大型知識庫,例如維基資料,以及二進位輸入和輸出檔案。完全可以上傳一張圖片作為輸入檔案並回傳分析結果,例如圖片上描繪的是什麼,或者圖片有多少種不同的顏色——或者是不同的二進位檔案,例如不同的格式。這將可供維基共享資源上的工作流程使用。

Wikifunctions正在延續將更多計算(這通常是發生在許多精通電腦的使用者所使用的命令列或應用程式上)轉移到網路、以及將之前無法取得的功能大眾化的傳統。同時,它將提高各地開發人員的生產效率,因為他們可以簡單地使用大型程式碼庫,而不是依賴複製和貼上類似「StackOverflow」網站上的答案。

與維基百科不同,貢獻者大都會為一個函式建立新的實作,而不是更新現有的函式。這些實作可以透過給定的測試自動進行測試、互相對比,進而進行深入分析。

實作可以用多種不同的程式語言編寫,但它們將會能夠呼叫那些已由其他程式語言實作的函式。執行引擎可以流暢地(儘管不一定具有最高的效能)以不同的語言執行。儘管在大多數情況下,使用單一程式語言編寫函式可以顯著提升效能,但沒有必要這樣做。在許多情況下,開發速度和開發人員的時間將比在執行引擎中花費的額外電腦計算週期更有價值。

參考資料

  1. m:WikiCite 2017/Jupyter notebooks on Wikimedia sites
  2. PAWS

參閱