Similarity(シミラリティ)とは?
こんばんは、Success Blue、奇曲宮夢(ききょくみゆ)です。
今回は、Similarityについて話していきたいと思います。
Similarity(シミラリティ)は、C/C++の完全な代替を目標として開発しているシステムプログラミング言語です。
ただし、単純に「新しい構文を作る」ことが目的ではありません。
C/C++が持つ、
- 高い性能
- 低レイヤへのアクセス
- 予測可能な動作
といった強みを維持しながら、より明確で安全なソフトウェア開発環境を目指しています。
Similarityのキャッチコピーは、
No GC.
No guessing.
No C/C++.
です。
これは、Similarityが目指す方向性を表しています。
誕生の経緯
「なぜSimilarityという言語を作ることになったのか?」
その始まりは、Lispとの出会いでした。
皆さんは、Lispというプログラミング言語をご存じでしょうか。
私は初めてLispのコードを見た時、その美しさに衝撃を受けました。
「プログラミング言語は、こんなにも少ないルールで表現できるのか。」
そう感じたことが、Similarityの始まりです。
Lispは、構造そのものを組み合わせる美しさを持っています。
そして私は、ある疑問を持ちました。
「もっとルールを減らせるのではないか?」
その問いから、Similarityの設計思想が始まりました。
もちろん、SimilarityはLispをそのまま再現するものではありません。
Lispから影響を受けたのは、
「構造を統一する」という考え方
です。
Similarityは、C/C++を代替できるシステムプログラミング言語という、別の目標に向かって設計しています。
なぜC/C++代替なのか
そして、もう一つ大きな理由があります。
それは、C/C++が社会の非常に広い範囲で使われていること。
そして、メモリ安全性に関する問題が現実の課題になっていることです。
C/C++は現在でも、
- ゲーム
- 音楽制作
- OS
- 組み込み機器
- 金融システム
など、多くの重要な分野で利用されています。
C/C++は決して悪い言語ではありません。
長年にわたり、世界中のソフトウェアを支えてきた非常に重要な言語です。
しかし、その一方で、メモリ管理に関する問題は、現在もソフトウェア開発における大きな課題の一つです。
私はこの二つの事実を知った時、こう考えました。
「性能を維持したまま、もっと明確で安全な選択肢を作れないだろうか。」
その答えとして開発しているものが、Similarityです。
もし、Lispとの出会いと、C/C++が抱える課題の両方を知らなければ、Similarityを作ることも、こうして記事を書くこともなかったと思います。
「Rustで良くない?」と思った方へ
ここまで読んで、一部の方はこう思ったかもしれません。
「新規開発ならRustで良くない?」
「Zigで良くない?」
「Odinで良くない?」
そう思うのは自然なことです。
実際、これらの言語はそれぞれ優れた設計思想と魅力を持っています。
かくいう私も、Rustの世界観には強く惹かれるものがあります。
所有権や借用によってメモリ安全性を実現する考え方は、とても美しいものです。
また、ZigやOdinにも、それぞれ独自の思想があります。
Similarityは、それらの言語を否定するために作っているわけではありません。
目指しているのは、
「既存言語より優れた言語を作ること」ではなく、私自身が理想と考えるシステムプログラミング言語を形にすることです。
それでも意味はあるのか?
正直に言うと、私自身もこの疑問とは何度も向き合いました。
「すでにRustがあるのでは?」
「C/C++の代替を作る意味はあるのか?」
そう考えることもありました。
しかし、考え続けた結果、一つの答えにたどり着きました。
既存の選択肢があることと、新しい選択肢を作る意味がないことは別です。
RustにはRustの思想があります。
C/C++にはC/C++が築いてきた歴史があります。
そしてSimilarityには、Similarityとして目指す設計があります。
Similarityの目的は、既存の言語を否定することではありません。
これまでの技術を尊重しながら、自分が理想とする新しいシステムプログラミング言語を作ることです。
それが、Similarityを開発する理由です。
次回について
次回は、Similarityの中心となる設計思想、
カテゴリ[操作{引数}]- 文法を統一する理由
- 単語に意味を持たせる設計
について紹介します。
まだ開発途中の言語ですが、これからもSimilarityの進化を記録していきます。