2024年04月19日くいなちゃん


プログラミング言語Kuin」の言語仕様1、命名と予約語についてです。

1Kuin命名規則

多くのプログラミング言語では、関数名や変数名の単語の略し方が不統一だったり、同じ概念に対して異なる単語が使われていたりと、ユーザにとって余分に複雑になっています。
そこでKuinでは、なるべく一貫した命名になるように命名方法について指針を定め、標準ライブラリなどでこれを守るようにしました。 これを「Kuin命名規則」と呼びます。
ここではKuin命名規則について順に紹介します。

1.1名前に使える文字



Kuinの識別子に使える文字は、英数字と「_」のみで、先頭は数字以外にする必要があります。
またファイル名に使える文字は、小文字と数字と「_」のみで、先頭は数字以外にする必要があります。

1.2大文字と小文字の規則



Kuinではソースコード中の大文字と小文字を別の文字として区別します。 Kuin命名規則では、大文字と小文字の使用について図1-1のように定めます。
  • 基本的に小文字で命名して、複数の単語が連結しているときには2番目以降の単語の先頭を大文字にする。
  • 「XML」のように頭文字から成る略語は、それ全体で1つの単語とみなす。
図1-1: 大文字と小文字の規則
例えば、「exampleCorrectName」「readXml」などとします。
設計の理由

このルールは「キャメルケース」と呼ばれますが、このルールを採用した理由はタイプ数もコード量も少なくなるためです。

また、グローバル変数とローカル変数とがぶつからないように別の命名規則を定めることがよく行われますが、Kuinではグローバルなものには先頭に「@」を付けるという構文ルールがあるためキャメルケースで統一しています。

1.3型名の接頭辞の規則



列挙型とクラスの型名は、図1-2のように命名します。
  • 列挙型名やクラス名など、ユーザが定義した型名の先頭は大文字にする。
図1-2: 型名の接頭辞の規則
例えば、「example color」という列挙型を定義したいときには、名前を「ExampleColor」とします。 ただし変数側は「exampleColor」などと定義します。
設計の理由

クラスを定義してそれと同名の変数を作りたくなるというケースはしばしばありますが、そのときに名前がぶつかるのを防ぐためにこのようなルールにしています。

1.4ソースコード名の規則



Kuinでは他のソースコードを参照するときに、ソースコード名をソースコード中に記述することがありますが、このときのソースコード名は図1-3のルールで記述します。
  • ソースコード名はすべて小文字で命名する。
  • 複数の単語が連結しているときは間に「_」を挟む。
図1-3: ソースコード名の規則
例えば、「example_kuin_code」などとします。
設計の理由

Windowsではファイル名の大文字・小文字を区別しないため、同じファイル「ABC」に対し「abc」や「Abc」など別ファイルと扱われる余地があって不具合の元になりましたので、すべて小文字で統一しました。

1.5略語の規則



プログラマはしばしば、なるべくタイプ数を減らしたりコードを短くするために、単語を省略形で書いてきました。 しかしそれぞれが独自に単語を省略したため、元の単語が判らなくなることが頻発しています。
そこでKuin命名規則では、単語のよくある省略形を「Kuin略語辞典」としてまとめ、ここにある単語は必ずこの省略形で用いるという指針を定めました。
略語の基準は図1-4の通りです。
  • 4文字以下は省略しない。
  • プログラミングにおいて頻出の単語は略す。
  • 慣習的によく略されている単語は略す。
  • 略語が重複したり元の語が判りにくくなる場合は、略さないか別の同義語を使う。
図1-4: 略語の規則
設計の理由

全く省略しなければ混乱のおそれもありませんが、プログラムが長くなることはそれだけ複雑になって把握しづらくなりますので、可能な限り省略する方針にしました。

2Kuinの予約語

いくつかの単語は予約語として、変数名や関数名などの識別子に使うことができません。
Kuinの予約語は全部で表2-1の通りです。
表2-1: Kuinの予約語
alias assert bit16 bit32
bit64 bit8 block bool
break case catch char
class const dbg default
dict do elif else
end enum env excode
false finally float for
func if include inf
int list me null
queue ret skip stack
super switch throw to
true try var while
設計の理由

Kuinは識別子とそうでないものが構文的に区別可能なため、実は「if」や「for」などを変数名として許可しても問題になりません。 ただ変数名に「if」などを使うのはやはり混乱の元になりますので、予約語として弾きました。

1713484288jaf