初探#
今日瀏覽社交平台時,偶然發現一張令人會心一笑的梗圖:
透過對東北方言稍加熟悉,我們就能輕鬆將其轉換成這樣的代碼表示:
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 语言咬文嚼字,我們可以發現這門語言已經相當完備,足以應對各種複雜的編程挑戰。
例如:
https://github.com/zhanyong-wan/dongbei/blob/master/demo/%E6%B4%BB%E7%9D%80.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!」的幾種「代碼」:
::: grid {cols=3,rows=2, gap=12,type=images}
:::
Velato#
Velato
是一種創新的編程語言,它允許開發者通過音樂來編寫代碼。這種語言通過分析 MIDI 文件來讀取源代碼,讓你可以在創作旋律的同時編寫程序。它根據音符的順序、間距和音高(視為編程的字母)來處理代碼。儘管 Velato
支持基本的編程結構,如表達式、數字和變量聲明,但它目前不支持函數和數組。此外,它不適用於將真正的音樂作品轉化為功能性程序。
使用該語言輸出「Hello World!」的「代碼」:
其他語言#
可以參考the esoteric programming languages wiki這一站點,了解其他的 Esolang。
根據 Esolang Wiki,Esolang 通常分為以下幾種類別:
-
Minimalism
許多神秘語言的設計目標是盡可能少的指令。例如Brainfuck
、OISC
和Lazy K
就屬於這種類型。當這些語言實現了圖靈完備,常被稱為「圖靈泥潭」。 -
New concepts
探索替代方式設計編程語言在神秘編程中很受歡迎。像Befunge
、Thue
和Unlambda
是很好的例子。 -
Weirdness
有些語言主要為了追求奇特和難以編程而創造。INTERCAL
的初衷就是要與普通語言截然不同(雖然仍有很多與傳統語言相似之處),而Malbolge
的設計目的是極度難以使用。 -
Themed
有些語言基於非計算機相關的主題。比如var'aq
基於虛構的克林貢語。Shakespeare
模仿莎士比亞戲劇風格,而Chef
程序看起來像烹饪菜譜。dongbei
也屬於此類。 -
Brevity
許多神秘語言旨在設計得尽可能短小。這些被稱為「Golfing 語言」,常常用於「程式碼高爾夫」,即競賽解決編程任務,盡量以最少的字符或字節完成。如CJam
、Pyth
和GolfScript
等。 -
Jokes
許多神秘語言純粹是作為笑話創建。其中一些仍然可以用於編程,如l33t
和Ook!
,而其他如HQ9+
和Bitxtreme
则不然。 -
Obfuscation
有些神秘語言刻意設計得難以閱讀(而非難以書寫或理解)。Unreadable
是這方面的典型例子。
納要#
dongbei
是一個基於python
開發的編程語言。可能有人會認為「這也太不正式了吧」。但實際上,我們需要明確,dongbei
只是一個娛樂或探索為目的設計的編程語言,它並不適用於開發嚴肅的應用程序。在開發需要穩定性、容錯能力和功能性的項目時,幾乎所有人都只會去選擇python
,C++
,JavaScript
等成熟的、穩定的語言。
此文由 Mix Space 同步更新至 xLog
原始链接为 https://nishikori.tech/posts/tech/dongbei