1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Similarityの設計思想と文法

こんにちは。Success Blue、奇曲宮夢です。

今回は、Similarityの設計思想と文法について紹介します。


キャッチコピー

Similarityには、開発当初から掲げているキャッチコピーがあります。

No GC. No guessing. No C/C++.

それぞれ、次の意味を表しています。

  • No GC. …… ガベージコレクション(GC)を採用しない。
  • No guessing. …… コンパイラによる推論に依存しない。
  • No C/C++. …… 言語自体がC/C++に依存しない。

「No C/C++.」とは?

ここで誤解されやすいので、一つ補足します。

「No C/C++.」とは、Similarityという言語の実装や実行環境が、C/C++を前提としないという意味です。

例えば、OSのシステムコールを直接利用するなど、Cランタイムに依存しない設計を目指しています。

もちろん、CPUやOSそのものまでC/C++から切り離す、という意味ではありません。

そこは、現実的な設計として区別しています。


Similarityの設計思想

Similarityが目指しているものは、とてもシンプルです。

  • 最小限のルール
  • 安全性
  • 高い実行性能
  • 分かりやすさ
  • 書きやすさ

このすべてを、可能な限り高いレベルで両立することです。

……もっと分かりやすく言えば、

「僕が考えたサイキョーのプログラミング言語」です。

もちろん、この言葉だけ聞くと、

「いやいや、それは無理でしょ。」

と思う方もいるでしょう。

その通りです。

プログラミング言語には必ずトレードオフがあります。

完璧にすべてを最高峰へ持っていくことは、おそらくできません。

しかし、Similarityが目指しているのは、

一つだけを極端に伸ばす言語ではありません。

それぞれの要素を、トレードオフの限界まで妥協せず、高い水準で両立させること。

それがSimilarityの設計思想です。

そして、この考え方は文法にも反映されています。


Similarityの文法

突然ですが、一つ質問です。

皆さんは、「スポーツ」と聞いて何を思い浮かべますか?

私は「サッカー」です。

では、サッカーと聞いて何を思い浮かべますか?

私は「ゴールキーパー」です。

さらに、ゴールキーパーと聞けば、

「背番号」

「名前」

「身長」

など、さらに細かい情報を思い浮かべることができます。

つまり、人は自然と、

スポーツ
 └ サッカー
    └ ゴールキーパー
       └ 背番号:12

のように、意味を階層的に整理して考えています。

Similarityも、まったく同じ考え方です。

Similarityの基本文法は、

カテゴリ[操作{引数}]

です。

例えば、

Variable[let{int(x:12)}]

これは、

  • Variable …… 変数というカテゴリ
  • let …… 変数を宣言する操作
  • int(x:12) …… 型・名前・値という情報

という意味になります。

この考え方は、変数だけではありません。

条件分岐なら、

If[
  check{...},
  True{
    ...
  },
  False{
    ...
  }
]

ループなら、

Loop[
  check{...},
  for{
    ...
  }
]

というように、すべて同じ構造で表現します。


なぜこの形なのか

多くのプログラミング言語には、

  • if文
  • for文
  • while文
  • switch文
  • 関数定義
  • 変数宣言

など、それぞれ異なる文法があります。

Similarityでは、それらを可能な限り一つの形へ統一しています。

理由はシンプルです。

文法のルールを覚えるのではなく、単語の意味を覚えてほしいからです。

Similarityでは、

ルールに意味はありません。

単語にこそ意味があります。

Ifには条件分岐という意味があり、

Loopには繰り返しという意味があり、

Variableには変数という意味があります。

そして、それぞれが意味を持つ子要素を持っています。

つまり、Similarityは構文を書く言語ではなく、

意味を組み立てる言語です。

これが、Similarityという言語の文法であり、設計思想の核心です。

次回について

次回は、実際にSimilarityでコードを書きながら、変数宣言や条件分岐、ループなどの基本的な書き方を紹介します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?