Ring (プログラミング言語)

Ring（リング）は動的型付けに対応した中東出身の汎用プログラミング言語である。言語キーワードや演算子のユーザ再定義機能、自然言語プログラミング、 C/C++プロジェクトへの組み込み、 C/C++コードを用いた機能拡張や言語単体での使用も可能である。命令型、手続き型、オブジェクト指向、関数型、メタプログラミング、入れ子構造を用いた宣言型、および自然言語プログラミングのプログラミングパラダイムに対応している。この言語は可搬性（Windows、Linux、macOS、Androidなど） があり、コンソール、GUI、ゲームとモバイルアプリケーションの開発で使用できる。
Hello Worldプログラム.
Ringには同じプログラムを異なる記法で記述できる機能がある。この用例は標準的な "Hello, World!" プログラムを三種類の異なる記法で表したものである。
第一記法:
第二記法:
第三記法:
また、このような自然言語プログラミング風の記法も可能である（試すにはConEmuなどUTF-8環境が必要）:
コメント.
下記はRingのコメント記法である。なお、コメントはキーワードや演算子ではないためChangeRingKeywordやChangeRingOperatorでの再定義や変更はできない（Ring 1.7で確認済み）。
一行コメント:
一行コメント（BASIC言語風のユーザー定義）:
複数行コメント:
ブロック.
Ring では C/C++ のカーリーブラケットブロック、 Python のインデントブロック (は見た目だけであり、Ring の仕様上、特に意味を持たない) を使用できる。
カーリーブラケットブロック (変更時は ChangeRingOperator を使用する)
インデントブロック
Pascal風のブロック
また、改行やセミコロンよる文の区切りは不要であるため、一行で書くこともできる。
この機能は通常の一行記述のほか、自然言語プログラミング、難解プログラミング、ボイスコーディングで使用できる (Ring ではソースコードを中間コードへコンパイルして実行するため、この機能を使用したソースコードの難読化はあまり意味がない)。
標準で付属している拡張機能.
下記は、フルインストール版（ファイルサイズが約100MBのもの）の導入直後から利用できる拡張機能である。これらは Ring 側で公式提供・保守継続されているため、他の言語で問題となるようなライブラリの依存関係に悩まされることがなく、破壊的な言語仕様の変更であっても突然使えなくなる心配が少ない利点もある。
など。
日本語への対応.
Shift JISでは Ring で予約されている演算子や括弧などASCII文字と ShiftJIS文字の2バイト目が重なってしまう領域があるため、「伝、義、真、実」などの漢字をキーワードや変数名に使うと誤認識でエラーとなる制限がある。ただし、誤認識されてしまう文字を使わずに類語などで置き換えることで実用は可能である。対策としては ソースコードは UTF-8 で保存。文字列や内部処理は ShiftJIS で行うことである。