改行だけでプログラムが書ける言語を作ったので紹介します。チューリング完全です。
仕様
この言語の実態は Brainf*ck の命令の置き換えです。CR (Carriage Return) と LF (Line Feed) のいずれかの 3 つの組み合わせを 1 つの命令として解釈します。そのため名前を CRLF*ck としました。
特徴
改行コード (CR, LF) のみでコードを記述されるため、ソースコードの見た目は真っ白になります。
利点
- ソースコードの見た目がスッキリしている
- エディタに背景画像を設定している場合、コードの可読性を下げる設定を行うことなく背景を楽しめる
- コード量を行数で測る人にマウントを取れる
- Hello Worldでも500行を超えるがそもそも改行の概念が怪しい
欠点
- コードが
見づらい見えない - コードが非常に縦に長くなる傾向にある
- 改行コードが統一されるエディタでは編集が不可能
- 一般的なキーホードで入力が不可能
Whitespace との比較
CRLF*ck と類似の言語に Whitespace があり、この言語は Tab と Space, LF によってプログラムを記述します。主要な相違点は以下のようになります。
-
使用している文字: Whitespace が Tab, Space, LF を使用するのに対し、CRLF*ck は CR, LF を用いる
- CRLF*ck の方が使用している文字数が少ないため、より少ないキー数で記述が可能
- Whitespaces のほうが平均命令語長が短い
-
命令の記述方法: CRLFck が Brainfck をベースとしているのに対し、Whitespace は独自の命令記述方法を採用している
- CRLF*ck のほうが学習コストが低い
- Whitespace は定数リテラルや加減乗除などを扱うことができ、コードの記述が容易であり、より実行効率の良いコードを記述することができる
-
コメントの記述
- Whitespace はスペースが単体で命令であるためコメント内にスペースを用いることができない
- CRLF*ck は改行以外自由に用いることができるため単一行のコメントを自由に記述できる
-
コードの美しさ
- どちらも一見何も見えないという点では同一
- Whitespace は同じ行に Tab, Space が入り混じっている
- Whitespace は任意の場所に改行を挿入できない
- CRLF*ck はすべての行が 0 文字で統一されている
まとめ
以上より CRLF*ck が機能性や学習コストの面で優れた言語であることがお分かりいただけたと思います。その一方でテキストによって記述された言語であるにも関わらず一般的な環境で入力が不可能である点など解決すべき点も存在します。
ちなみに友人には Whitespace より邪悪と言われました。でかい Enter キー買って左手で CR 、右手で LF を打てるようにしよう
ソースコードは GitHub 上で MIT ライセンスで公開されています。