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

From Wikipedia, the free encyclopedia

登場時期 1.0 - 2016年1月25日 (9年前) (2016-01-25)
設計者 محمود سمير فايد(英名: Mahmoud Samir Fayed / 和名: マハムード・サミル・ファイド)
開発者 The Ring Development Team(和名: リング開発チーム)
Ring
Ring のロゴ
Ringのロゴ
パラダイム マルチパラダイムプログラミング言語: オブジェクト指向命令型関数型メタプログラミング手続き型リフレクション宣言型自然言語プログラミング英語版
登場時期 1.0 - 2016年1月25日 (9年前) (2016-01-25)
設計者 محمود سمير فايد(英名: Mahmoud Samir Fayed / 和名: マハムード・サミル・ファイド)
開発者 The Ring Development Team(和名: リング開発チーム)
最新リリース 1.18 - 2023年7月12日 (2年前) (2023-07-12)
型付け 動的型付け弱い型付け
影響を受けた言語 Lua, Python, Ruby, C, C#, BASIC, QML, xBase, Supernova[1]
プログラミング言語 主にC、一部のコンポーネントはC++
プラットフォーム LinuxmacOSおよびMicrosoft Windows
ライセンス MITライセンス
ウェブサイト http://ring-lang.net/
拡張子 .ring, .rh, .rform, .cf
テンプレートを表示

Ring(リング)は動的型付けに対応した中東出身の汎用プログラミング言語である。言語キーワードや演算子のユーザ再定義機能、自然言語プログラミング、 C/C++プロジェクトへの組み込み、 C/C++コードを用いた機能拡張や言語単体での使用も可能である。命令型、手続き型、オブジェクト指向、関数型、メタプログラミング、入れ子構造を用いた宣言型、および自然言語プログラミングのプログラミングパラダイムに対応している。この言語は可搬性(WindowsLinuxmacOSAndroidなど) があり、コンソール、GUI、ゲームとモバイルアプリケーションの開発で使用できる。[2][3][4][5][6][7][8][9][10][11][12][13]

  • 2011年11月未明 新しいプログラミング言語のアイデアを思い付く
  • 2013年 9月未明 設計と実装の開始
  • 2015年 4月未明 言語の名称決定
  • 2015年 5月未明 コンパイラの完成
  • 2015年 9月未明 ドキュメンテーションの完成
  • 2016年 1月25日 Ring 1.0 公開
  • 2016年10月 6日 Ring 1.1 公開
  • 2017年 1月25日 Ring 1.2 公開
  • 2017年 5月15日 Ring 1.3 公開
  • 2017年 6月29日 Ring 1.4 公開
  • 2017年 8月21日 Ring 1.5 公開
  • 2017年11月30日 Ring 1.6 公開
  • 2018年 1月25日 Ring 1.7 公開
  • 2018年 6月25日 Ring 1.8 公開

[14] [15]

目的

  • アプリケーション開発用プログラミング言語
  • 生産性と拡張性に優れた高品質な解決方法の開発
  • 小型かつ高速な言語であり C/C++プロジェクトに組み込み可能
  • 教育用途およびコンパイラ・仮想計算機の概念の入門に使用できるシンプルなプログラミング言語
  • ドメイン特化ライブラリ、フレームワークおよびツールの作成に使用できる汎用プログラミング言語
  • ビジュアルプログラミング言語である Programming Without Coding Technology (PWCT) ソフトウェアの次世代版を作成するために設計された実用言語

[16][17][18][19]

Hello Worldプログラム

Ringには同じプログラムを異なる記法で記述できる機能がある。この用例は標準的な "Hello, World!" プログラムを三種類の異なる記法で表したものである。

第一記法:

See "Hello, World!"

第二記法:

Put "Hello, World!"

第三記法:

Load "stdlib.ring"
Print("Hello, World!")

[20] [21][22] [23] [24]

また、このような自然言語プログラミング風の記法も可能である(試すにはConEmuなどUTF-8環境が必要):

ChangeRingKeyword  See 手紙を出す
ChangeRingOperator + そして
改行 = nl
します。 = :します。

手紙を出す "こんにちは、世界" そして 改行 します。

ChangeRingKeyword 手紙を出す See // キーワードの復旧
ChangeRingOperator そして     + // 演算子の復旧

コメント

下記はRingのコメント記法である。なお、コメントはキーワードや演算子ではないためChangeRingKeywordやChangeRingOperatorでの再定義や変更はできない(Ring 1.7で確認済み)。

一行コメント:

// これはコメントです。
# これもコメントです。

一行コメント(BASIC言語風のユーザー定義):

rem = :rem // 文字列として展開されるが命令文の意味を持たないのでエラーにはならない。
// または def rem comment_strings {}
def main
    rem "これはコメントです。"
    see "これはコメントです。" + nl // nl の代わりに ¥n も使用可能。

複数行コメント:

/* これはコメントです。
   複数行に渡って書くことができます。
*/

ブロック

Ring では C/C++ のカーリーブラケットブロック、 Python のインデントブロック (は見た目だけであり、Ring の仕様上、特に意味を持たない) を使用できる。

カーリーブラケットブロック (変更時は ChangeRingOperator を使用する)

def main
{
    see "Hello, World!"
    return 0
} // ; は不要

インデントブロック

def main
    see "Hello, World!"
    return 0
// end は不要

Pascal風のブロック

ChangeRingKeyword func function
ChangeRingKeyword def  procedure
begin = :begin

function main
begin
    see "Hello, World!"
    return 0
end

ChangeRingKeyword function func
ChangeRingKeyword procedure def

また、改行やセミコロンよる文の区切りは不要であるため、一行で書くこともできる。 この機能は通常の一行記述のほか、自然言語プログラミング、難解プログラミング、ボイスコーディングで使用できる (Ring ではソースコードを中間コードへコンパイルして実行するため、この機能を使用したソースコードの難読化はあまり意味がない)。

def dummy x, y, z def yummy (x, y, z) {} def main see "Hello, World!" return 0 end

標準で付属している拡張機能

下記は、フルインストール版(ファイルサイズが約100MBのもの)の導入直後から利用できる拡張機能である。これらは Ring 側で公式提供・保守継続されているため、他の言語で問題となるようなライブラリの依存関係に悩まされることがなく、破壊的な言語仕様の変更であっても突然使えなくなる心配が少ない利点もある。

  • RingAllegro(Allegro ゲームライブラリ)
  • RingConsoleColor(Yusuke Suzuki氏によるコマンドプロンプト用テキスト色付けライブラリ)
  • RungCurl(CURLライブラリ)
  • RingFreeGLUT(FreeGLUT)
  • RingInternet(インターネット関連ライブラリ)
  • RungLibUV(LibUV - 非同期I/Oライブラリ)
  • RingMurMurHash(ハッシュ関数ライブラリ)
  • RingMySQL (MySQL)
  • RingODBC (ODBC)
  • RingOpenGL (OpenGL 1.1 - 4.6)
  • RingOpenSSL (OpenSSL)
  • RingQt(Qtフレームワーク)
  • RingSDL(SDL - Simple DirectMedia Layer ライブラリ)
  • RingSQLite (SQLite)
  • RingZIP(zipファイル処理ライブラリ)

など。

日本語への対応

出典

外部リンク

Related Articles

Wikiwand AI