メインコンテンツまでスキップ
バージョン: 開発中

Hello, World!

まずは挨拶を出します。ソースに使えるのは 8 = D ~ と空白だけ。

8================D
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8=================D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8===D

出力:

Hello, World!

最初の行で空の文字列を作り、続く行で1文字ずつ追加し、最後の 8===D で出力します。= が16個なら文字列の作成、17個なら文字の追加。追加する文字は ~ の個数(Unicodeコードポイント)で指定します。たとえば H は72個です。

長く見えるのは仕様です。言語サイトの実行欄 へ貼り付けて、結果を確かめてください。

まずブラウザで​

言語サイト のエディターで実行できます。Dicks 自身で書かれたコンパイラを Web Worker 内で動かします。ソースの外部送信、ネットワーク呼び出し、DBへのアクセスはありません。コンパイラのファイルは最初にダウンロードします。

⌘ + Enter または Ctrl + Enter で実行。長い処理は同じボタンで中断できます。生成した JavaScript は保存できます。保存するコードにも AGPL が適用されます。

手元で使う​

Node.js と Rust を用意し、ソース一式を展開します。検証済みのコンパイラを初回に作ります。詳しいバージョン・手順は 導入 と ツール にあります。

npm ci
node bin/dicks toolchain
node bin/dicks init ../hello
node bin/dicks --project ../hello run

dicks を PATH に置いた環境では node bin/dicks を dicks と書けます。まだ公開インストーラーや自動アップデーターはありません。

次は足し算​

8=D~~
8=D~~~
8==D
8===D

上から「2を積む」「3を積む」「足す」「出力する」。結果は 5 です。整数は符号付き64ビットで、型が合わない演算やオーバーフローはエラーになります。

ファイルを分ける​

.dicks は処理、dicks.json はファイル名・公開する関数・依存関係などの宣言です。関数IDはモジュールごとに独立します。リンク時に再配置されるため、別ファイルで同じIDを使えます。公開していない関数は外から呼べません。

作成したプロジェクトの main.dicks と lib.dicks が最小例です。複数ファイル で imports / exports を確認してください。

ライブラリを足す​

dicks add @dicks/math@0.2.1
dicks sync
dicks run

バージョンは完全一致で指定します。ダウンロードした全ファイルを SHA-256 で検証し、dicks.lock に固定します。インストールスクリプトは実行しません。検証済みのキャッシュがあればオフラインでも同期できます。レジストリ と 標準ライブラリ も参照してください。

まだできないこと​

言語はまだ 0.x です。再帰、浮動小数の算術、バージョン範囲の依存解決には対応していません。言語サイトの実行欄は単一ソース・出力のみです。画面を作るアプリは browserターゲット、HTTP・DB・認証は CLI と Cloudflare 用アダプターで構築します。

見た目の小ささと万能さは別です。制約は 仕様 と 設計上の選択 に明記しています。