從東北話編程語言窺探Esolang的世界

14 天前(已編輯)
12
AI 生成的的摘要(由 xLog 驅動)

初探

今日瀏覽社交平台時,偶然發現一張令人會心一笑的梗圖:

菲薄那气数列

菲薄那气数列

透過對東北方言稍加熟悉,我們就能輕鬆將其轉換成這樣的代碼表示:

def print_fibonacci_sequence(n):
    if n < 1:
        raise ValueError("Invalid input! Please enter a positive integer.")

    fibonacci_sequence = []
    current = 0
    next_num = 1
    fibonacci_sequence.append(current + next_num)

    for _ in range(2, n+1):
        current, next_num = next_num, current + next_num
        fibonacci_sequence.append(next_num)

    return ', '.join(map(str, fibonacci_sequence))

print("Checking result for 0:")
try:
    print(print_fibonacci_sequence(0))
except ValueError as e:
    print(e)

print("Checking result for 15:")
print(print_fibonacci_sequence(15))

# 並未完全對應原文的代碼

尋根

然而,注意到梗圖中的代碼結構清晰且配有代碼高亮標記,讓人感到這并非單純的惡搞之作,于是我決定在互聯網上進一步探索,竟意外地找到了相關的實在項目:

dongbei 是啥?它是一门以东北方言词汇为基本关键字的以人为本的编程语言。

这玩意儿可是填补了世界方言编程地图上的一大片儿空地啊! 这么说吧,谁要是看了 dongbei 程序能憋住了不笑,我敬他是纯爷们儿!

那它有啥特点咧?多了去了:

简单啊!小学文化程度就行。您能看懂春晚不?能?那就没问题。 好读啊!看着看着包您不由自主地念出声儿来。 开心啊!呃,做人嘛,最重要的是要开心。 开源啊!不但不要钱,而且不要脸 -- 随时随地欢迎东北话高手打脸指正。 总而言之,dongbei 语言具有极高的娱技比(娱乐精神-技术含量比例)。

dongbei 编程语言的开发采用了业界领先的 TDD(TreeNewBee-Driven Development) 方式。 具体地说,就是每个功能都是先把文案写好,八字没一撇牛皮就吹起来了,然后根据牛皮写测试案例,最后再实现功能让牛皮不被吹破。 这样做有两大好处:第一每个功能都是有的放矢,不值得 tree new bee 的功能一概没有。 第二确保了每个功能都有文案负责吹嘘,开发者绝对不会养在深闺无人识。

經過搜尋,我發現了一個來自該項目的示例文件:

這便確定了梗圖中的代碼,來自這個名為 dongbei 的項目。

問底

根據項目的文檔指示,我將dongbei的代碼庫成功克隆至本地,執行src/dongbei.py,這樣便能親自體驗這個充滿趣味的編程語言。

學習dongbei的最快方法就是和大哥嘮嗑

學習dongbei的最快方法就是和大哥嘮嗑

然而,dongbei的功能遠不止于此。通過閱讀dongbei 语言咬文嚼字,我們可以發現這門語言已經相當完備,足以應對各種複雜的編程挑戰。

例如:

河內塔動喚.dongbei

河內塔動喚.dongbei
康家莊的活著遊戲.dongbei

康家莊的活著遊戲.dongbei

融會

事實上,網絡上除了標新立異的dongbei之外,還隱藏著眾多富有創意的編程語言,它們通常被歸類為「Esolang」——Esoeric programming language,旨在嘗試奇怪的想法,難以程式設計,或作為笑話,而不是實際使用。

Cantonese

參考dongbei的模式,還有另一個創新的項目——Cantonese,它讓開發者能夠使用粵語進行編程,進一步將地方方言融入編程語言的世界,作者至今依舊在維護它。

使用該語言輸出「Hello World!」的代碼:

畀我睇下「"Hello World!"」點樣先?
收工

Ook!

Ook! 是一款極致簡潔的編程語言,其核心語法僅由三個基本構件組成,乍看之下易於學習,然而在實際應用中,Ook! 帶來了獨特的挑戰。這種語言的命令系統由 Ook.Ook!Ook? 這三個元素構成,即便代碼量可能因此增加,卻絲毫不影響創建高效能的程式碼。Ook! 的設計原則簡潔到了極致,其創建者深信甚至猩猩也能輕易掌握,因此他們堅信無需附加繁冗的程式註解。

使用該語言輸出「Hello World!」的代碼:

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

Brainfuck

Ook!類似,Brainfuck是一種簡單的、可以用最小的編譯器來實現的、圖靈完備的程式語言。這個語言由八種運算子構成。

使用該語言輸出「Hello World!」的代碼:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

Piet

Piet 是一種獨特的編程語言,它利用色彩的組合來表達程序的邏輯結構。該語言使用了20種亮度級別的色彩,每種色彩都承載著特定的指令功能。編譯器通過辨識色塊之間的亮度差異來解讀程序的命令。程序的布局和結構完全依賴于色塊的形狀和排列,而黑白色調的邊界則作為區分不同代碼區塊的分界線。雖然在Piet上編寫程序是可能的,但由于不同解釋器可能對色彩的解釋存在差異,這使得Piet在實際計算中并不夠精確。因此,Piet 更多地被視為一種創意工具,用于探討編程的新方法和視覺藝術的表現形式,而非作為解決實際問題的工具。它的存在挑戰了傳統編程語言的界限,讓編程過程變得更加豐富多彩和富有表現力。

使用該語言輸出「Hello World!」的幾種「代碼」:

Velato

Velato 是一種創新的編程語言,它允許開發者通過音樂來編寫代碼。這種語言通過分析 MIDI 文件來讀取源代碼,讓你可以在創作旋律的同時編寫程序。它根據音符的順序、間距和音高(視為編程的字母)來處理代碼。儘管 Velato 支持基本的編程結構,如表達式、數字和變量聲明,但它目前不支持函數和數組。此外,它不適用於將真正的音樂作品轉化為功能性程序。

使用該語言輸出「Hello World!」的「代碼」:

其他語言

可以參考the esoteric programming languages wiki這一站點,了解其他的Esolang。

根據Esolang Wiki,Esolang通常分為以下幾種類別:

  • Minimalism 許多神秘語言的設計目標是盡可能少的指令。例如 BrainfuckOISCLazy K 就屬於這種類型。當這些語言實現了圖靈完備,常被稱為「圖靈泥潭」。

  • New concepts 探索替代方式設計編程語言在神秘編程中很受歡迎。像 BefungeThueUnlambda 是很好的例子。

  • Weirdness 有些語言主要為了追求奇特和難以編程而創造。INTERCAL 的初衷就是要與普通語言截然不同(雖然仍有很多與傳統語言相似之處),而 Malbolge 的設計目的是極度難以使用。

  • Themed 有些語言基於非計算機相關的主題。比如 var'aq 基於虛構的克林貢語。Shakespeare模仿莎士比亞戲劇風格,而 Chef 程序看起來像烹饪菜譜。dongbei也屬於此類。

  • Brevity 許多神秘語言旨在設計得尽可能短小。這些被稱為「Golfing語言」,常常用於「程式碼高爾夫」,即競賽解決編程任務,盡量以最少的字符或字節完成。如 CJamPythGolfScript 等。

  • Jokes 許多神秘語言純粹是作為笑話創建。其中一些仍然可以用於編程,如 l33tOok!,而其他如 HQ9+Bitxtreme 则不然。

  • Obfuscation 有些神秘語言刻意設計得難以閱讀(而非難以書寫或理解)。Unreadable 是這方面的典型例子。

納要

dongbei是一個基於python開發的編程語言。可能有人會認為「這也太不正式了吧」。但實際上,我們需要明確,dongbei只是一個娛樂或探索為目的設計的編程語言,它並不適用於開發嚴肅的應用程序。在開發需要穩定性、容錯能力和功能性的項目時,幾乎所有人都只會去選擇pythonC++JavaScript等成熟的、穩定的語言。

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...