說實話,如果希臘國王西西弗斯將在
2016
年成為開發人員編寫開原始碼,他會有賓至如歸的感覺。
被眾神傳下來的西西弗斯的著名懲罰
是被迫將一塊巨大的巨石翻滾到山上
-
只是看到它在到達山頂後向後滾動,重複這個動作永恆。幾乎沒有注意到,世界開發者社群在過去幾年中也遭受了類似的懲罰。但現在巨石不斷變大。
美國國會圖書館擁有大約
2400
萬冊編目書。透過多次測量,它是人類創造的最大的人類知識庫,已有數千年的歷史。
2009
年,
GitHub
成立。它現在擁有超過
3500
萬個圖書館或儲存庫,擁有數十萬億行程式碼。研究表明,這一數量正以指數速度增長,並且每
14
個月左右就會增加一倍。開原始碼毫無疑問是當今程式設計技術的前沿,是人類有史以來最偉大,最強大,最先進的知識庫存之一。閃亮的新框架是行業基準,輝煌的開源構建者是搖滾明星。
那麼,為什麼
90
%
-98
%的開原始碼會在
12
個月後被丟棄?
程式碼在細節中
以下是一些令人吃驚的數字:在他們第一次寫完之後的一年,超過
90
%的回購將永遠不會被觸及,永遠不會被再次使用。
它們變得不活躍和過時,在時間的流逝中被遺忘。在
2015
年的調查中,
Stack Overflow
發現平均每週開發人員每週花費大約
7
個小時在工作之外進行程式設計。
GitHub
報告有超過
1200
萬用戶從事開源專案。人類正在拋棄並拋棄數百萬聰明人所花費的數百萬工時。
瘋狂的部分?似乎沒有人問
“為什麼?”為什麼絕大多數書面開原始碼被埋沒和遺忘?為什麼我們每天都一遍又一遍地編寫相同的程式碼,同時這個程式碼幾乎肯定存在於開源周圍
-
只是等待使用?
這種情況的發生主要是因為人們完全像處理儲存庫一樣處理儲存庫。每個人都知道
AngularJS
,或
JQuery
或
React
,但很少有人知道十多個開源軟體包。這是瘋狂的部分
-
因為人們不知道或不使用整個包,沒有人使用其中的程式碼。
2015
年編寫的軟體包可能對整個人沒有用,但也許它只包含其他東西所需的功能。最有用的部分並不總是整個包,但有時是其中的程式碼片段。
假設某人正在尋找一個
JavaScript
函式來對陣列中的元素進行混洗,或者使用不同的函式來建立隨機字串。這些小程式碼在整個開源中存在數百次。但沒有人知道它們存在,即使它們存在,也沒有人知道如何找到它們。因此無價值的有價值的知識被丟棄或遺忘,僅僅因為它們無法訪問。這太瘋狂了,對每個人都不好。
組織所有程式碼並使其易於訪問
那我們解決這個爛攤子呢?容易回答,很難做
-
你需要做三件事:
按功能部分組織所有開原始碼:功能,庫等。
構建一個模型來表示每個不同部分實際上做的事情,如
“它們的功能是什麼?”
建立一種簡單易用的方法來搜尋和查詢這些程式碼。
這就是我們建造
Cocycles
的原因。這些 都是上述內容,但也是一項正在進行中的工作。它的演算法處理大量的開原始碼,透過它讀取並理解每個不同行,功能或其他功能單元的功能。然後它允許人們使用普通英語搜尋該程式碼。
在上面提到的示例中,使用者只需要鍵入
“
shuffle array
”或“
create random string
”,然後他們將會看到各種開原始碼實現,文件,用法示例等。它甚至可以生成一個已經包含所有依賴項和子函式的有用程式碼段。
在未來幾年,人工智慧軟體可能會使用它來自行查詢和學習新程式碼,使它們能夠自行發展,變化和發展。但是現在,它目前只支援
Javascript
,它是一種免費開放的技術,旨在確保開原始碼的指數增長能夠透過不斷增長的共享和使用該程式碼的能力得到滿足。