初探#
今日ソーシャルプラットフォームを閲覧していると、偶然に心温まるミームを見つけました:
東北方言に少し慣れれば、私たちは簡単にこのようなコード表現に変換できます:
def print_fibonacci_sequence(n):
if n < 1:
raise ValueError("無効な入力です!正の整数を入力してください。")
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("0の結果を確認中:")
try:
print(print_fibonacci_sequence(0))
except ValueError as e:
print(e)
print("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
です。これは開発者が広東語でプログラミングできるようにし、地域方言をプログラミング言語の世界にさらに取り入れています。作者は今でもそれを維持しています。
粤语編程語言.The Cantonese programming language.
この言語で「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。
Brainfuck#
Ook!
と似て、Brainfuck
はシンプルで、最小のコンパイラで実現可能な、チューリング完全なプログラミング言語です。この言語は八つの演算子から構成されています。
この言語で「Hello World!」を出力するコード:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.
Piet#
Piet
は独特なプログラミング言語で、色の組み合わせを利用してプログラムの論理構造を表現します。この言語は 20 種類の明度レベルの色を使用し、それぞれの色が特定の命令機能を持っています。コンパイラは色ブロック間の明度差を認識してプログラムの命令を解読します。プログラムのレイアウトと構造は完全に色ブロックの形状と配置に依存し、白黒の境界が異なるコードブロックを区別する線となります。Piet
でプログラムを書くことは可能ですが、異なるインタプリタが色を解釈する際に差異があるため、実際の計算においては正確さに欠けます。したがって、Piet
は主に創造的なツールとして、新しいプログラミング方法や視覚芸術の表現形式を探求するために使用され、実際の問題を解決するためのツールとしてはあまり使われません。その存在は伝統的なプログラミング言語の限界に挑戦し、プログラミングプロセスをより豊かで表現力豊かにします。
この言語で「Hello World!」を出力するいくつかの「コード」:
::: grid {cols=3,rows=2, gap=12,type=images}
:::
Velato#
Velato
は革新的なプログラミング言語で、開発者が音楽を通じてコードを書くことを可能にします。この言語は MIDI ファイルを分析してソースコードを読み取り、メロディを作成しながらプログラムを書くことができます。音符の順序、間隔、音高(プログラミングの文字として見なされる)に基づいてコードを処理します。Velato
は基本的なプログラミング構造(式、数値、変数宣言など)をサポートしていますが、現在のところ関数や配列はサポートしていません。また、実際の音楽作品を機能的なプログラムに変換するためには適していません。
この言語で「Hello World!」を出力する「コード」:
その他の言語#
他の Esolang についてはthe esoteric programming languages wikiを参照してください。
Esolang Wiki によると、Esolang は通常以下のいくつかのカテゴリに分けられます:
-
Minimalism
多くの神秘的な言語の設計目標は、できるだけ少ない命令です。例えばBrainfuck
、OISC
、Lazy K
はこのタイプに属します。これらの言語がチューリング完全であるとき、しばしば「チューリング泥沼」と呼ばれます。 -
New concepts
代替的な方法でプログラミング言語を設計することは神秘的なプログラミングで人気があります。Befunge
、Thue
、Unlambda
は良い例です。 -
Weirdness
いくつかの言語は主に奇妙さやプログラミングの難しさを追求するために作られています。INTERCAL
の目的は通常の言語とは全く異なることです(ただし、伝統的な言語との類似点も多くあります)。Malbolge
の設計目的は極度に使いにくいことです。 -
Themed
いくつかの言語はコンピュータに関連しないテーマに基づいています。例えばvar'aq
は架空のクリンゴン語に基づいています。Shakespeare
はシェイクスピアの劇スタイルを模倣し、Chef
プログラムは料理レシピのように見えます。dongbei
もこのカテゴリに属します。 -
Brevity
多くの神秘的な言語はできるだけ短く設計されることを目指しています。これらは「ゴルフ言語」と呼ばれ、プログラミングタスクを解決するためにできるだけ少ない文字やバイトで完了する競技にしばしば使用されます。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