原创 为开发者服务的 21CTO
新推出一種由大型資料結構組成的新程式語言,這樣程式設計師就可以避免命名新事物了。
這個新程式語言的作者,來自烏克蘭的軟體工程師Oleksandr Kaleniuk在媒體採訪中表示,這是「對始終存在命名問題的半開玩笑反應」 。 “命名很難,所以我們什麼都不命名,看看這樣編程是否會變得更加容易。”
他後來補充說:“事實並非如此。”
“該語言還沒有實際應用到程式上,但作為開發人員和用戶,使用起來都很有趣。”
而且,語言本身也沒有名稱。
以上來自無名程式語言文件的片段。
關於新的「無名」語言
「只有一種資料結構,」該語言在GitHub上的儲存庫中解釋。 “既然只有一個資料結構,就不需要名字了。”
但是,該資料結構中的分支和子分支可以表示更小的陣列甚至矩陣。 字元可以表示從字串到數字的所有內容,以及邏輯比較與數學運算。 甚至還有用於從文件讀取或寫入資料的符號,甚至刪除該文件
而且,這個程式語言中只有一種操作。
語言解釋器透過其唯一的資料結構工作,每當遇到符號時將值添加到堆疊中,或對它們進行操作(如果 符號在算術運算之前)時。
「help」的字元對是e_ (因此執行名為the_namingless_programming_language的檔案會在解析器命中e_字元後立即啟動說明…)
生成的源代碼甚至用作文件名時“以避免你編寫程式時出現命名問題”。
最後,GitHub 上的儲存庫中也強調,該語言本身沒有名稱。 因此,將其稱為「無名程式語言」的行為只是對這種尚未命名的語言試圖實現的目標進行定義。
“這樣的語言在世界上只存在一種,所以它不需要名字。”
語言之靈感
在這個語言裡,是有一些真正的程式設計概念在運作的。
作者Kaleniuk 這樣表示說,無名「只是面向堆疊和預設的一個奇特名稱」。
它受到了 Forth、APL 和Uiua等語言的啟發。 Kalenuik 說語言也結合了陣列程式設計和堆疊,他說主要靈感是另一種面向堆疊的語言:PostScript。
PostScript 是一種著名的電子出版行業的「頁面描述」語言,根據Kaleniuk 的說法,它不僅發送資料(關於哪裡繪製直線和曲線),還發送代碼——「這是一種可運行的程序,可 提供給機器解釋,進行實際的列印。
同樣的需求場景也出現在 Kaleniuk 擔任全球 3D 列印公司軟體工程師的工作中。
如果可以用公式對要列印的形狀進行編碼而不是僅使用大量資料轉儲,這不是很有用嗎?
Kaleniuk 選擇了一種陣列處理語言來保持一切簡潔。 “我們談論的是千兆位元組的程式碼/資料。”而且由於它“99% 是機器生產的,100% 是機器消耗的”,因此它也可以是高度抽象的。 Kaleniuk 說,「無論如何沒有人願意閱讀它。」這導致 Kaleniuk 決定採用堆疊導向的方法。 使用高度抽象的隱性語言進行程式設計。
Kaleniuk 稱這「只是一個設計實驗、一個玩的東西、一個玩具…
作者在基輔編碼
Kaleniuk 還開發了一個名為Words and Buttons Online的網站,其中包含程式設計和數學教程(以及演示和測驗)。 就在上個月,他還添加了一篇文章,介紹了所有被認為比他長期使用的程式語言 C++具有競爭優勢的技術。
去年,Kaleniuk 也撰寫了《程式設計師的幾何》一書。 「掌握 CAD、遊戲引擎、GIS 等背後的數學!」。
以下是出版商 Manning Publications 的官方頁面。
自 2015 年以來,Kaleniuk一直擔任3D 列印公司 Materialise基輔分公司的軟體工程師,兩年前轉任專案經理。 「我希望戰爭結束、恢復正常後就立即把這件事放在一邊,說實話,我本來希望戰爭現在就能夠勝利……」
Kaleniuk 於 2014年在烏克蘭東部工作。 他已經在俄佔領下度過了幾個月,並得出了「俄羅斯並不那麼強大,只是野蠻」的結論。
他還記得俄羅斯全面入侵的第一天。
「2022 年2 月24 日,我在導彈來襲的聲音中醒來,打開我的電腦,打開我的銀行應用,並向軍隊捐款。2014年我也這麼做了。這就像一條規則。每 當你聽到爆炸聲——你就在捐款。
“你還要檢查國家金融體係是否仍在運轉。”
他說,他認識的大多數從軍隊退役的軟體工程師都繳納了稅款,「然後將剩下的錢分給軍隊和家庭。」雖然有些直接為前線工作……我們希望戰爭結束,我們願意為 此付出代價…”
籠罩在這一切之上的是一種非常清晰的感覺:這是一場戰爭。 “有些人已經付出了生命的代價。在我的書出版前幾天,我的朋友在戰鬥中陣亡。他也是一名軟體工程師。”
Kaleniuk 試圖將自己的捐款分配給這支部隊,用來「購買砲彈和火箭」以及非政府組織和個人誌願者,後者「幫助快速完成緊急請求,但不提供武器和彈藥」。
他的書的出版商於2022 年3 月初支付了第一筆付款,「我立即捐贈了這筆錢。因為戰爭仍在繼續……大約一個小時前,一枚俄羅斯導彈再次擊中了我家附近 的某個地方。
「作為一名平民、工程師和數學家,我對此無能為力。但我可以賺一些錢並捐贈給有能力的人。這就是我從二月以來一直在做的事情,也是我計劃 做的事情直到勝利。
開發者的迴響
今年早些時候,Kaleniuk 發現他的程式語言正在Hacker News 上被人們熱烈討論。 他很高興它收到了“大部分是積極的反響”。
“這讓我想起了超低級程式設計、操作資料堆疊等,”一個澳洲的Web開發人員Ben Winding寫道:“它可能會成為一種有用的學習工具。”
關於命名,還如何提高可讀性的討論不可避免,還有一些評論者對 Kaleniuk 的努力表示讚賞,其中一位說看到了該實驗的真正價值。
「根據我自己的經驗,從事像這樣的『愚蠢的』項目,例如存在嚴格的人為限制,可能會非常有趣,並且相當富力有挑戰性,並且會帶來可以在以後應用於實際項目的經驗經驗 。
Kaleniuk表示,他的這次經歷非常完美,非常豐富。
「我確實記住了我學到的經驗教訓,所以也許有一天你會看到一些很棒的3D 列印的東西,並思考『他們是如何成功列印出如此複雜東西的?』而且你會記得那 種深奧的小眾語言,根本沒有現實世界的應用程式…”
結語
在語言README 文件的末尾,Kaleniuk 承認該語言的創建「是為了將它從我的系統中刪除,並且取得成功。我的意思是,我確實成功地將它從我的系統中刪除了,不知道 怎的,我不想再玩它了。
「漂亮嗎?不,」 Kaleniuk 在 LinkedIn 上發文表示。 “實用嗎?一定不行。好玩嗎?比你想像的還要多。”
Kaleniuk 也告訴我們這一切會「導致什麼樣的結果」:
“我玩得很開心,現在還分享了原始碼,這樣其他的朋友也可以一起玩~”
作者:洛逸