+++ /dev/null
-<% eval(read("news.data")) %>
-
-<div class="row">
-
- <div class="col-sm-12 col-md-6">
-
- <div id="introduction" class="panel-group">
- <div class="panel panel-default">
- <div class="panel-heading"><h4>はじめに</h4></div>
- <div class="panel-body">
- <p align="justify">
- <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> は<ruby>画期的<rp>(</rp><rt>かっきてき</rt><rp>)</rp></ruby>で<ruby>実用性豊<rp>(</rp><rt>じつようせいゆた</rt><rp>)</rp></ruby>かなマルチパラダイム<ruby>汎用<rp>(</rp><rt>はんよう</rt><rp>)</rp></ruby>プログラミング<ruby>言語<rp>(</rp><rt>げんご</rt><rp>)</rp></ruby>です。
-
- <ruby>命令型<rp>(</rp><rt>めいれいがた</rt><rp>)</rp></ruby>、<ruby>手続<rp>(</rp><rt>てつづ</rt><rp>)</rp></ruby>き<ruby>型<rp>(</rp><rt>がた</rt><rp>)</rp></ruby>、オブジェクト<ruby>指向<rp>(</rp><rt>しこう</rt><rp>)</rp></ruby>、<ruby>入<rp>(</rp><rt>い</rt><rp>)</rp></ruby>れ<ruby>子構造<rp>(</rp><rt>ここうぞう</rt><rp>)</rp></ruby>による<ruby>宣言型<rp>(</rp><rt>せんげんがた</rt><rp>)</rp></ruby>、<ruby>関数型<rp>(</rp><rt>かんすうがた</rt><rp>)</rp></ruby>、メタ、および<ruby>自然言語<rp>(</rp><rt>しぜんげんご</rt><rp>)</rp></ruby>のプログラミング・パラダイムに<ruby>対応<rp>(</rp><rt>たいおう</rt><rp>)</rp></ruby>しています。
-
- <ruby>移植性<rp>(</rp><rt>いしょくせい</rt><rp>)</rp></ruby> (<ruby>Windows<rp>(</rp><rt>ウィンドウズ</rt><rp>)</rp></ruby>, <ruby>Linux<rp>(</rp><rt>リナックス</rt><rp>)</rp></ruby>, <ruby>macOS<rp>(</rp><rt>マック・オーエス</rt><rp>)</rp></ruby>, <ruby>Android<rp>(</rp><rt>アンドロイド</rt><rp>)</rp></ruby> など) があり、<ruby>小規模<rp>(</rp><rt>しょうきぼ</rt><rp>)</rp></ruby>、<ruby>柔軟<rp>(</rp><rt>じゅうなん</rt><rp>)</rp></ruby>かつ<ruby>高速<rp>(</rp><rt>こうそく</rt><rp>)</rp></ruby>な<ruby>設計<rp>(</rp><rt>せっけい</rt><rp>)</rp></ruby>です。
-
- コンソール、<ruby>GUI<rp>(</rp><rt>ジー・ユー・アイ</rt><rp>)</rp></ruby>、ウェブ、ゲーム、およびモバイルアプリケーションを<ruby>作成<rp>(</rp><rt>さくせい</rt><rp>)</rp></ruby>できます。
-
- </p>
- </div>
- </div>
- </div>
-
- </div>
-
- <div class="col-sm-12 col-md-6">
-
- <div id="news" class="panel-group">
- <div class="panel panel-info">
- <div class="panel-heading"><h4><ruby>新着情報<rp>(</rp><rt>しんちゃくじょうほう</rt><rp>)</rp></ruby></h4></div>
- <div class="panel-body">
-
- <table class="table table-striped">
- <thead>
- <tr>
- <th width="40%"><ruby>日付<rp>(</rp><rt>ひづけ</rt><rp>)</rp></ruby></th>
- <th><ruby>概要<rp>(</rp><rt>がいよう</rt><rp>)</rp></ruby></th>
- </tr>
- </thead>
- <tbody>
-
- <% for x=1 to 3 %>
- <tr>
- <td><%= aNews[x][1] %></td>
- <td><%= aNews[x][2] %></td>
- </tr>
- <% next %>
-
- </tbody>
- </table>
- <div style="text-align:right;">
- <a href="news.html"><ruby>過去<rp>(</rp><rt>かこ</rt><rp>)</rp></ruby>の<ruby>新着情報<rp>(</rp><rt>しんちゃくじょうほう</rt><rp>)</rp></ruby></a>
- </div>
- </div>
- </div>
- </div>
-
- </div>
-
-</div>
-
-<br>
-
-
-<a href="#innovative" class="btn btn-default" data-toggle="collapse" style="width:100%"><ruby>画期的<rp>(</rp><rt>かっきてき</rt><rp>)</rp></ruby></a>
- <div id="innovative" class="panel-group collapse in">
- <div class="panel panel-primary">
- <div class="panel-heading"><h4><ruby>画期的<rp>(</rp><rt>かっきてき</rt><rp>)</rp></ruby></h4></div>
- <div class="panel-body">
-
- <div class="row">
- <div class="col-sm-12 col-md-12">
- <p>
- <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> には<ruby>自然言語<rp>(</rp><rt>しぜんげんご</rt><rp>)</rp></ruby>プログラミング、<ruby>宣言型<rp>(</rp><rt>せんげんがた</rt><rp>)</rp></ruby>プログラミングに<ruby>関<rp>(</rp><rt>かん</rt><rp>)</rp></ruby>する<ruby>最良<rp>(</rp><rt>さいりょう</rt><rp>)</rp></ruby>の<ruby>支援機能<rp>(</rp><rt>しえんきのう</rt><rp>)</rp></ruby>があります。パラダイムには<ruby>最先端<rp>(</rp><rt>さいせんたん</rt><rp>)</rp></ruby>のオブジェクト<ruby>指向<rp>(</rp><rt>しこう</rt><rp>)</rp></ruby>プログラミング、<ruby>関数型<rp>(</rp><rt>かんすうがた</rt><rp>)</rp></ruby>プログラミングの<ruby>実用的<rp>(</rp><rt>じつようてき</rt><rp>)</rp></ruby>な<ruby>新技法<rp>(</rp><rt>しんぎほう</rt><rp>)</rp></ruby>により<ruby>対応<rp>(</rp><rt>たいおう</rt><rp>)</rp></ruby>しています。コンパイラや<ruby>構文解析<rp>(</rp><rt>こうぶんかいせき</rt><rp>)</rp></ruby>などの<ruby>事前知識<rp>(</rp><rt>じぜんちしき</rt><rp>)</rp></ruby>は<ruby>不要<rp>(</rp><rt>ふよう</rt><rp>)</rp></ruby>です。<ruby>短時間<rp>(</rp><rt>たんじかん</rt><rp>)</rp></ruby>でドメイン<ruby>特化言語<rp>(</rp><rt>とっかげんご</rt><rp>)</rp></ruby>を<ruby>作成<rp>(</rp><rt>さくせい</rt><rp>)</rp></ruby>・<ruby>構築<rp>(</rp><rt>こうちく</rt><rp>)</rp></ruby>できる<ruby>言語構成要素<rp>(</rp><rt>げんごこうせいようそ</rt><rp>)</rp></ruby>を<ruby>標準装備<rp>(</rp><rt>ひょうじゅんそうび</rt><rp>)</rp></ruby>しています。
- </p>
-
- <a id="ringarticle" href="http://www.codeproject.com/Articles/1089887/The-Ring-Programming-Language" target="_blank" class="btn btn-default" style="width:100%"><ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> の<ruby>記事<rp>(</rp><rt>きじ</rt><rp>)</rp></ruby> (<ruby>CodeProject<rp>(</rp><rt>コード・プロジェクト</rt><rp>)</rp></ruby>)</a>
- <a id="ringarticle4" href="https://www.codeproject.com/Articles/1137388/Syntax-Flexibility-in-the-Ring-Programming-Languag" target="_blank" class="btn btn-default" style="width:100%">シンタックスの<ruby>柔軟性<rp>(</rp><rt>じゅうなんせい</rt><rp>)</rp></ruby> (<ruby>CodeProject<rp>(</rp><rt>コード・プロジェクト</rt><rp>)</rp></ruby>)</a>
- <a id="ringarticle5" href="https://www.codeproject.com/Articles/1222105/The-declarative-approach-of-the-Ring-programming-l" target="_blank" class="btn btn-default" style="width:100%"><ruby>宣言型手法<rp>(</rp><rt>せんげんがたしゅほう</rt><rp>)</rp></ruby> (<ruby>CodeProject<rp>(</rp><rt>コード・プロジェクト</rt><rp>)</rp></ruby>)</a>
- <a id="ringarticle3" href="https://www.codeproject.com/Articles/1138605/Natural-Language-Programming-in-the-Ring-Programmi" target="_blank" class="btn btn-default" style="width:100%"><ruby>自然言語<rp>(</rp><rt>しぜんげんご</rt><rp>)</rp></ruby>プログラミング (<ruby>CodeProject<rp>(</rp><rt>コード・プロジェクト</rt><rp>)</rp></ruby>)</a>
- <a id="ringarticle2" href="https://www.codeproject.com/Articles/1200766/Using-the-Natural-Language-Programming-Library-NLP" target="_blank" class="btn btn-default" style="width:100%"><ruby>自然言語<rp>(</rp><rt>しぜんげんご</rt><rp>)</rp></ruby>プログラミング・ライブラリ (<ruby>CodeProject<rp>(</rp><rt>コード・プロジェクト</rt><rp>)</rp></ruby>)</a>
-
-
- </div>
- </div>
- </div>
- </div>
- </div>
-
-
-
- <a href="#practical" class="btn btn-default" data-toggle="collapse" style="width:100%"><ruby>豊<rp>(</rp><rt>ゆたか</rt><rp>)</rp></ruby>かな<ruby>実用性<rp>(</rp><rt>じつようせい</rt><rp>)</rp></ruby></a>
- <div id="practical" class="panel-group collapse in">
- <div class="panel panel-default">
- <div class="panel-heading"><h4><ruby>豊<rp>(</rp><rt>ゆたか</rt><rp>)</rp></ruby>かな<ruby>実用性<rp>(</rp><rt>じつようせい</rt><rp>)</rp></ruby></h4></div>
- <div class="panel-body">
-
- <div class="row">
- <div class="col-sm-12 col-md-12">
- <p>
- <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> ライブラリ (<ruby>StdLib<rp>(</rp><rt>スタド・ライブ</rt><rp>)</rp></ruby>, <ruby>WebLib<rp>(</rp><rt>ウェブ・ライブ</rt><rp>)</rp></ruby>, <ruby>自然言語<rp>(</rp><rt>しぜんげんご</rt><rp>)</rp></ruby>ライブラリ、ゲームエンジンなど)、および <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> <ruby>統合開発環境<rp>(</rp><rt>とうごうかいはつかんきょう</rt><rp>)</rp></ruby> (<ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> ノートパッド、フォームデザイナーなど) は <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> で<ruby>記述<rp>(</rp><rt>きじゅつ</rt><rp>)</rp></ruby>しました。
- <ruby>Ring<rp>(</rp><rt>リング</rt><rp>)</rp></ruby> は<ruby>製品開発<rp>(</rp><rt>せいひんかいはつ</rt><rp>)</rp></ruby>の<ruby>即戦力<rp>(</rp><rt>そくせんりょく</rt><rp>)</rp></ruby>であり、<ruby>開発者<rp>(</rp><rt>かいはつしゃ</rt><rp>)</rp></ruby>の<ruby>生産性<rp>(</rp><rt>せいさんせい</rt><rp>)</rp></ruby>を<ruby>改善<rp>(</rp><rt>かいぜん</rt><rp>)</rp></ruby>します。
- </p>
- <br>
-
- <div class="col-xs-12">
- <div id="myCarousel" class="carousel slide" data-ride="carousel">
- <!-- Indicators -->
- <ol class="carousel-indicators">
- <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
- <li data-target="#myCarousel" data-slide-to="1"></li>
- <li data-target="#myCarousel" data-slide-to="2"></li>
- <li data-target="#myCarousel" data-slide-to="3"></li>
- <li data-target="#myCarousel" data-slide-to="4"></li>
- <li data-target="#myCarousel" data-slide-to="5"></li>
- <li data-target="#myCarousel" data-slide-to="6"></li>
- <li data-target="#myCarousel" data-slide-to="7"></li>
- <li data-target="#myCarousel" data-slide-to="8"></li>
- <li data-target="#myCarousel" data-slide-to="9"></li>
- <li data-target="#myCarousel" data-slide-to="10"></li>
- <li data-target="#myCarousel" data-slide-to="11"></li>
- </ol>
-
- <!-- Wrapper for slides -->
- <div class="carousel-inner" role="listbox">
-
- <div class="item active">
- <img src="newringdemo1.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo2.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo3.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo4.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo5.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo6.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo7.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
-
- <div class="item">
- <img src="newringdemo8.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo9.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
-
- <div class="item">
- <img src="newringdemo10.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo11.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="newringdemo12.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
-
- </div>
-
- <!-- Left and right controls -->
- <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
- <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
- <span class="sr-only">前へ</span>
- </a>
- <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
- <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
- <span class="sr-only">次へ</span>
- </a>
-
- </div>
-</div>
-
-
-
- </div>
- </div>
- </div>
- </div>
- </div>
-
-
-
-
-
-
-<a id="why" href="#whyring" class="btn btn-default" data-toggle="collapse" style="width:100%">Ring を選ぶ理由は?</a>
-<div id="whyring" class="panel-group collapse in">
- <div class="panel panel-default">
- <div class="panel-heading"><h4>Ring を選ぶ理由は?</h4></div>
- <div class="panel-body">
- <p align="justify">
- <p>Ring は簡明、<ruby>違和感<rp>(</rp><rt>いわかん</rt><rp>)</rp></ruby>の排除、組織化の奨励、および透過性とビジュアル実装からなるプログラミング言語です。
- 簡潔なシンタックス、そして自然なインタフェースの作成を可能にする機能群、さらに少しの時間で構築できる宣言型問題解決特化言語があります。
- 非常に小規模、高速なスマートガベージコレクターがあり、メモリをプログラマの制御下に置くことができます。</p>
- <p>また、多種多様なプログラミングパラダイムに対応しており、インストール直後からすぐ使える業界標準の実用的なライブラリが付属しています (Allegro, FreeGLUT, cURL, LibUV, MySQL, ODBC, OpenGL, OpenSSL, PostgreSQL, Qt, RayLib, SDL, SQLite などに対応)。</p>
- <p>この言語は生産性と拡張性に優れた高品質な解決方法の開発のために設計されています。<a href="docs-1.11/faq.html#why-do-we-need-yet-another-programming-language-yapl" target="_blank"> → 理由 </a></p>
- </p>
- <br> <br>
-
- <div class="panel panel-primary" id="productivityscal">
- <div class="panel-heading"><h4>明確な設計目標</h4></div>
- <div class="panel-body">
-
- <p>
- <ul>
- <li>アプリケーション開発用のプログラミング言語です。 <a href="docs-1.11/ringapps.html" target="_blank"> → 用例 </a> </li>
- <li>ドメイン特化ライブラリ、フレームワークおよびツールの作成に使用できる汎用言語です。 <a href="docs-1.11/naturallibrary.html" target="_blank"> → 方法 </a></li>
- <li>ビジュアルプログラミング言語である Programming Without Coding Technology (PWCT) ソフトウェアの次世代版を作成するために設計された実用言語です。 <a href="http://pwct.org/" target="_blank"> → PWCT の公式サイト </a></li>
- <li>小規模で高速な言語であり C/C++ プロジェクトへ組み込めます。<a href="docs-1.11/embedding.html" target="_blank"> → 方法 </a></li>
- <li>文教用途およびコンパイラ・仮想計算機の概念における入門に使用できる単純明快な言語です。<a href="#education" target="_blank"> → 方法 </a></li>
- <li>生産性と拡張性に優れた高品質な解決方法の開発。</li>
- </ul>
-
- </p>
-
- </div>
- </div>
-
-
-
-
- <div class="panel panel-primary" id="simple">
- <div class="panel-heading"><h4> 簡明 </h4></div>
- <div class="panel-body">
-
- Ring は非常に簡明な言語であり、非常にシンプルなシンタックスから構成されています。ボイラープレートコードを使用しないプログラムの記述がプログラマに奨励されています。
- 'See' 命令はメッセージを標準出力へ表示します。
- <a href="docs-1.11/faq.html#why-ring-uses-see-give-but-and-ok-keywords" target="_blank"> → 理由 </a>
-
-
- <p>
- <pre>
-<font color="purple">see</font> "Hello, World!"
- </pre>
- </p>
-
- Main 関数はオプション扱いであり、ステートメントの後に実行されるため、ローカルスコープで有用です。
- <a href="docs-1.11/faq.html#what-is-the-goal-of-including-the-main-function-in-ring" target="_blank"> → 理由 </a>
- <p>
- <pre>
-<font color="purple">func</font> main
- <font color="purple">see</font> "Hello, World!"
- </pre>
- </p>
-
- 動的型付け、およびレキシカルスコープを使用しています。変数名の先頭に $ は不要です!
- <a href="docs-1.11/syntaxflexibility.html#using-and-in-the-start-of-the-variable-name" target="_blank"> → 理由 </a>
- <br>
- 文字列の連結で ‘+’ 演算子を使用できます。
- 弱い型付け言語であり、文字列はコンテキストに基づいて数値と文字列の間で自動的に変換されます。
- <a href="docs-1.11/faq.html#why-is-ring-weakly-typed" target="_blank"> → 理由 </a>
- <p>
- <pre>
-nCount = 10 <font color="green"># グローバル変数</font>
-<font color="purple">func</font> main
- nID = 1 <font color="green"># ローカル変数</font>
- <font color="purple">see</font> "Count = " + nCount + nl + " ID = " + nID
- </pre>
- </p>
-
-
-
- </div>
- </div>
-
- <div class="panel panel-primary" id="natural">
- <div class="panel-heading"><h4> 違和感の排除 </h4></div>
- <div class="panel-body">
-
- Ring は大小英数文字を区別しません。
- <a href="docs-1.11/faq.html#why-ring-is-not-case-sensitive" target="_blank"> → 理由 </a>
- <p>
- <pre>
-<font color="purple">see</font> "Enter your name ? "
-<font color="purple">give</font> name
-<font color="purple">see</font> "Hello " + Name <font color="green"># Name は name と同じです。 </font>
- </pre>
- </p>
-
- リストのインデックス (添字番号) は 1 から開始します (Ring 1.11 以降は <a href="docs-1.11/zerolib.html">ZeroLib</a> を使用することで 0 から始めることもできます)。
- <a href="docs-1.11/faq.html#why-the-list-index-start-from-1-in-ring" target="_blank"> → 理由 </a>
- <p>
- <pre>
-aList = ["one","two","three"]
-<font color="purple">see</font> aList[1] <font color="green"># one を表示</font>
- </pre>
- </p>
-
- 定義前に関数を呼び出すには
- <p>
- <pre>
-one()
-two()
-three()
-<font color="purple">func</font> one
- <font color="purple">see</font> "One" + nl
-<font color="purple">func</font> two
- <font color="purple">see</font> "two" + nl
-<font color="purple">func</font> three
- <font color="purple">see</font> "three" + nl
- </pre>
- </p>
-
- 代入演算子は深いコピーを使用します (この操作は参照ではありません)。
- <a href="docs-1.11/faq.html#why-the-assignment-operator-uses-deep-copy" target="_blank"> → 理由 </a>
- <p>
- <pre>
-aList = ["one","two","three"]
-aList2 = aList
-aList[1] = 1
-<font color="purple">see</font> alist[1] <font color="green"># 1 を表示</font>
-<font color="purple">see</font> aList2[1] <font color="green"># one を表示</font>
- </pre>
- </p>
-
- 数値と文字列は値渡しですが、リストとオブジェクトは参照渡しです。
- <br>
- For in ループ でリストの項目 (アイテム、要素とも呼ばれています) を更新できます。
- <p>
- <pre>
-<font color="purple">func</font> main
- aList = [1,2,3]
- update(aList)
- <font color="purple">see</font> aList <font color="green"># one two three を表示</font>
-
-<font color="purple">func</font> update aList
- <font color="purple">for</font> x <font color="purple">in</font> aList
- <font color="purple">switch</font> x
- <font color="purple">on</font> 1 x = "one"
- <font color="purple">on</font> 2 x = "two"
- <font color="purple">on</font> 3 x = "three"
- <font color="purple">off</font>
- <font color="purple">next</font>
- </pre>
- </p>
-
- 定義するときにリストを使用するには
- <p>
- <pre>
-aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
-<font color="purple">see</font> aList <font color="green"># 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 を表示</font>
- </pre>
- </p>
- 一階層以上のループから脱出
- <a href="docs-1.11/faq.html#why-you-can-specify-the-number-of-loops-you-want-to-break-out-of" target="_blank"> → 理由 </a>
- <p>
- <pre>
-<font color="purple">for</font> x = 1 <font color="purple">to</font> 10
- <font color="purple">for</font> y = 1 <font color="purple">to</font> 10
- <font color="purple">see</font> "x=" + x + " y=" + y + nl
- <font color="purple">if</font> x = 3 <font color="purple">and</font> y = 5
- <font color="purple">exit</font> 2 <font color="green"># 二階層のループから脱出</font>
- <font color="purple">ok</font>
- <font color="purple">next</font>
-<font color="purple">next</font>
- </pre>
- </p>
-
-
- </div>
- </div>
-
-
- <div class="panel panel-primary" id="encourageorg">
- <div class="panel-heading"><h4> 組織化の奨励 </h4></div>
- <div class="panel-body">
- Ring ではプログラムの組織化を奨励しています。まずは関数、次にクラス、
- そして関数とヘンテコなモノと組み合わせるプログラミング言語を使用していた悪夢の日々を忘却の彼方へ追いやります!
- <br><br>
- ソースファイルの構造は:
- <br><br>
- <ul>
- <li>ファイルの読み込み</li>
- <li>ステートメントとグローバル変数</li>
- <li>関数</li>
- <li>パッケージおよびクラス</li>
- </ul>
- これにより構成要素で end キーワードを記述しなくてもパッケージ、
- クラスと関数の使用が可能になります。
- <br> <br>
- 一行コメントまたは複数行コメントを使用できます。
- <br>
- 一行コメントは # または // で始まります。
- <br>
- 複数行コメントは /* ~ */ の間に記述します。
- <p>
- <pre>
-<font color="green">/*
- プログラム名 : Ring を使用したはじめてのプログラム
- 日付 : 2017
-*/</font>
-
-<font color="purple">see</font> "What is your name? " <font color="green"># 画面上にメッセージを表示します。</font>
-<font color="purple">give</font> cName <font color="green"># ユーザからの入力を取得</font>
-<font color="purple">see</font> "Hello " + cName <font color="green"> # hello を表示!</font>
-
-<font color="green">// See "Bye!"</font>
- </pre>
- </p>
-
- </div>
- </div>
-
-
- <div class="panel panel-primary" id="libs">
- <div class="panel-heading"><h4> 簡明なシンタックス </h4></div>
- <div class="panel-body">
-
-
-
- <p>
- ステートメントの後に ; を記述したり ENTER や TAB を押して <b>行の区別</b> する必要はありません。
- つまり、このようなコードを書くことができます。
- </p>
- <p>
- <pre>
-<font color="purple">see</font> "The First Message" <font color="purple">see</font> " Another message in the same line! " + <font color="red">nl</font>
-<font color="purple">see</font> "Enter your name?" <font color="purple">give</font> <font color="red">Name</font> <font color="purple">see</font> "Hello " + <font color="red">Name</font>
- </pre>
- </p>
- <p>
- このコードは三種類の属性 X, Y および Z を有する Point クラスを作成します。
- <b>パッケージ・クラス・関数の定義を終了するために end キーワードは使用していません。</b>
- また、<b>クラスの名前の直下に属性の名前を書く</b>ことができます。
- </p>
- <p>
- <pre>
-<font color="purple">class</font> Point X Y Z
- </pre>
- </p>
- <p>
- <b>定義前にクラスと関数を使用</b>できます。
- この用例では、オブジェクトの新規作成と属性の設定、および値を表示します。
- </p>
- <p>
- <pre>
-o1 = <font color="purple">new</font> point o1.x=10 o1.y=20 o1.z=30 <font color="purple">see</font> O1 <font color="purple">class</font> Point X Y Z
- </pre>
- </p>
- <p>
- ドット演算子 ‘.’ でオブジェクトの属性とメソッドへアクセスするのではなく、
- <b>括弧 { } でオブジェクトへアクセスできます。その後にオブジェクトの属性とメソッドを使用できます。</b>
- </p>
- <p>
- <pre>
-o1 = <font color="purple">new</font> point { x=10 y=20 z=30 } <font color="purple">see</font> O1 <font color="purple">class</font> Point X Y Z
- </pre>
- </p>
- <p>
- <b>メソッドの呼出し後に { } を使用してオブジェクトへアクセス</b>します。
- </p>
- <p>
-<pre>
-oPerson = <font color="purple">new</font> Person
-{
- Name = "Somebody"
- Address = "Somewhere"
- Phone = "0000000"
- Print() <font color="green"># ここでは Print() メソッドを呼び出します。</font>
-}
-<font color="purple">class</font> Person Name Address Phone
- <font color="purple">func</font> Print
- <font color="purple">see</font> "Name :" + name + nl +
- "Address :" + Address + nl +
- "Phone : " + phone + nl
-</pre>
- </p>
-
- <p>
- { } を使用してオブジェクトへアクセスしてから任意のオブジェクトの名前を記述するとき、
- <b>自動的に呼び出される全ての setter/getter メソッドに対してクラスを検査します。</b>
- </p>
- <p>
-<pre>
-<font color="purple">new</font> Number {
- <font color="purple">see</font> one <font color="green"># GetOne() の実行</font>
- <font color="purple">see</font> two <font color="green"># GetTwo() の実行</font>
- <font color="purple">see</font> three <font color="green"># GetThree() の実行</font>
-}
-<font color="purple">class</font> Number one two three
- <font color="purple">func</font> GetOne
- <font color="purple">see</font> "Number : One" + nl
- <font color="purple">return</font> 1
- <font color="purple">func</font> GetTwo
- <font color="purple">see</font> "Number : Two" + nl
- <font color="purple">return</font> 2
- <font color="purple">func</font> GetThree
- <font color="purple">see</font> "Number : Three" + nl
- <font color="purple">return</font> 3
-</pre>
-</p>
-
- </div>
- </div>
-
- <div class="panel panel-primary" id="libs">
- <div class="panel-heading"><h4> オブジェクト指向に基づいた自然言語ステートメントの定義 </h4></div>
- <div class="panel-body">
- <p>
- { } を使用してオブジェクトへアクセス後にクラスに BraceEnd() と呼ばれるメソッドがある場合は BraceEnd() メソッドを実行します!
- <a href="docs-1.11/faq.html#why-the-ability-to-define-your-own-languages-instead-of-just-handing-over-the-syntax-so-you-can-parse-it-using-whatever-code-you-like" target="_blank"> → 理由 </a>
- </p>
-<p>
-<pre>
-TimeForFun = <font color="purple">new</font> journey
-<font color="green"># あっと驚く!</font>
-<b>TimeForFun {
- Hello it is me <font color="green"># なんと美しいプログラミングの世界でしょう!</font>
-}</b>
-<font color="green"># クラス本体</font>
-<font color="purple">class</font> journey
- hello=0 it=0 is=0 me=0
- <font color="purple">func</font> GetHello
- <font color="purple">See</font> "Hello" + nl
- <font color="purple">func</font> braceEnd
- <font color="purple">See</font> "Goodbye!" + nl
-</pre>
-</p>
-
- <p>
- Eval() 関数は文字列に記述されたコードを実行します。</b>
- </p>
-<p>
-<pre>
-cCode = "See 'Code that will be executed later!' "
-Eval(cCode) <font color="green"># コードを実行してメッセージを表示します。</font>
-</pre>
-</p>
-
- <p>
- <b>リストの作成後にリストから実行用のコードを生成できます。</b>
- </p>
-<p>
-<pre>
-aWords = ["hello","it","is","me"]
-<font color="purple">for</font> word <font color="purple">in</font> aWords cCode=word+"=0" eval(cCode) <font color="purple">next</font>
-</pre>
-</p>
-
- <p>
- <b>Read(cFileName) 関数はテキストファイルを読み取ります。</b>
- また Write(cFileName,cString) 関数はファイルへ書き込みます。
- </p>
-<p>
-<pre>
-<font color="purple">see</font> "Enter File Name:" <font color="purple">give</font> cFileName <font color="purple">see</font> read(cFileName) <font color="green"># ファイルの内容を表示</font>
-</pre>
-</p>
-
- <p>
- この用例は二つの命令を定義するクラスの作成方法です。<br>
- 最初の命令は : I want window<br>
- 次の命令は : Window title = <式><br>
- ‘the’ などのキーワードは無視されます。<br>
- </p>
-<p>
-<pre>
-<font color="purple">new</font> App
-{
- I want window
- The window title = "hello world"
-}
-
-<font color="purple">class</font> App
-
- <font color="green"># I want window 命令の属性</font>
- i want window
- nIwantwindow = 0
- <font color="green"># Window title 命令の属性</font>
- <font color="green"># ここでは window 属性を再定義しません。</font>
- title
- nWindowTitle = 0
- <font color="green"># 値を与えると、キーワードは無視されます。</font>
- the=0
-
- <font color="purple">func</font> geti
- <font color="purple">if</font> nIwantwindow = 0
- nIwantwindow++
- <font color="purple">ok</font>
-
- <font color="purple">func</font> getwant
- <font color="purple">if</font> nIwantwindow = 1
- nIwantwindow++
- <font color="purple">ok</font>
-
- <font color="purple">func</font> getwindow
- <font color="purple">if</font> nIwantwindow = 2
- nIwantwindow= 0
- <font color="purple">see</font> "Instruction : I want window" + nl
- <font color="purple">ok</font>
- <font color="purple">if</font> nWindowTitle = 0
- nWindowTitle++
- <font color="purple">ok</font>
-
- <font color="purple">func</font> settitle cValue
- <font color="purple">if</font> nWindowTitle = 1
- nWindowTitle=0
- <font color="purple">see</font> "Instruction : Window Title = " + cValue + nl
- <font color="purple">ok</font>
-
-
-</pre>
-</p>
-
- <p>
- 前述の用例を完了するには read() を使用してファイルの内容を取得します。
-<pre>
- I want window
- The window title = "hello world"
-</pre>
- そして eval() を使用してファイルの内容を実行します!<br>
- また、 GUI ライブラリでウィンドウを作成するために GetWindow() と SetTitle() メソッドを更新します。<br>
-
- </p>
-
- </div>
- </div>
-
- <div class="panel panel-primary" id="libs">
- <div class="panel-heading"><h4> オブジェクト指向に基づいた入れ子構造による宣言型言語の定義 </h4></div>
- <div class="panel-body">
-
-
-
-
- <p>
- <b>自然言語 (Natural) ステートメントを使用したコードの実行、
- および入れ子構造を使用したコードの実行方法について既に学んでいます。</b>
- </p>
- <p>
- この用例は Web ライブラリからのものであり Bootstrap ライブラリで HTML ドキュメントを生成します。
- この用例では HTML コードを直接記述せずに類似言語を作成しています (ただの用例です)。
- その後、<b>宣言型言語を使用するために入れ子構造を使用して、 HTML ドキュメントを生成しています。</b>
- <br>
- この用例での考え方として <b>GetDiv() および GetH1() メソッドは { } を使用してアクセスできるオブジェクトを返します。
- 各オブジェクトへのアクセス後に BraceEnd() メソッドが実行されると生成された HTML を
- BraceEnd() の出力表示がルートに到達するまで親オブジェクトへ送信します。</b>
- </p>
-<p>
-<pre>
-<font color="purple">load</font> "weblib.ring"
-<font color="purple">import</font> System.Web
-
-<font color="purple">func</font> Main
-
- BootStrapWebPage()
- {
- div
- {
- classname = :container
- div
- {
- classname = :jumbotron
- H1 { text("Bootstrap Page") }
- }
- div
- {
- classname = :row
- for x = 1 to 3
- div
- {
- classname = "col-sm-4"
- H3 { html("Welcome to the Ring programming language") }
- P { html("Using a scripting language is very fun!") }
- }
- next
- }
- }
- }
-</pre>
-</p>
-
- <p>
- 宣言型インタフェースを強化するクラスはこのようなものなります。
- </p>
-<p>
-<pre>
-<xmp>
- class Link from ObjsBase
- title link
- func braceend
- cOutput = nl+GetTabs() + "<a href='" +
- Link + "'> "+ Title + " </a> " + nl
-
- class Div from ObjsBase
- func braceend
- cOutput += nl+'<div'
- addattributes()
- AddStyle()
- getobjsdata()
- cOutput += nl+"</div>" + nl
- cOutput = TabMLString(cOutput)
-
-</xmp>
-</pre>
-</p>
-
- </div>
- </div>
-
- <br> <br>
-
- <div class="panel panel-primary" id="designgoals_syntaxflexibility">
- <div class="panel-heading"><h4> 柔軟性のあるシンタックス </h4></div>
- <div class="panel-body">
-
- <p>
- ソースコードの記述に関して様々な記法があります! <br> <br>
-
- また、言語のキーワードと演算子を変更することで、お好みの記法を作成できます!<br>
-
- </p>
-
- </div>
- </div>
-
- <br> <br>
-<a name="education"></a>
- <div class="panel panel-primary" id="transparentimplementation">
- <div class="panel-heading"><h4> 透過型実装 </h4></div>
- <div class="panel-body">
- Ring は透過型実装です。コンパイラの処理段階および仮想計算機による実行中の処理内容を把握できます。<br>
-
- 例えば : ring helloworld.ring -tokens -rules -ic
-
- <p>
- <pre>
-<font color="purple">see</font> "Hello, World!"
- </pre>
- </p>
-
- 実行結果
-
- <p>
- <pre>
-==================================================================
-Tokens - Generated by the Scanner
-==================================================================
-
- Keyword : SEE
- Literal : Hello, World!
- EndLine
-
-==================================================================
-
-==================================================================
-Grammar Rules Used by The Parser
-==================================================================
-
-Rule : Program --> {Statement}
-
-Line 1
-Rule : Factor --> Literal
-Rule : Range --> Factor
-Rule : Term --> Range
-Rule : Arithmetic --> Term
-Rule : BitShift --> Arithmetic
-Rule : BitAnd --> BitShift
-Rule : BitOrXOR --> BitAnd
-Rule : Compare --> BitOrXOR
-Rule : EqualOrNot --> Compare
-Rule : LogicNot -> EqualOrNot
-Rule : Expr --> LogicNot
-Rule : Statement --> 'See' Expr
-
-==================================================================
-
-
-
-==================================================================
-Byte Code - Before Execution by the VM
-==================================================================
-
- PC OPCode Data
-
- 1 FuncExE
- 2 PushC Hello, World!
- 3 Print
- 4 ReturnNull
-
-==================================================================
-
-Hello, World!
- </pre>
- </p>
-
- </div>
- </div>
-
- <div class="panel panel-primary" id="visualimplementation">
- <div class="panel-heading"><h4> ビジュアル実装 </h4></div>
- <div class="panel-body">
-
- プログラミング言語 Ring は<a href="http://doublesvsoop.sourceforge.net/" target="_blank">ビジュアルプログラミングツール PWCT (外部サイト)</a> で設計されています。
- Ring 言語のビジュアルソースは “visualsrc” フォルダの *.ssf ファイルにあります。
- 生成された C 言語ソースコードは src フォルダおよび include フォルダにあります。 <a href="http://github.com/ring-lang/ring/" target="_blank">GitHub (外部サイト) から fork する。</a><br><br>
- <br><br>
- このスクリーンショットは ring_vm.ssf (ring_vm.c と ring_vm.h を生成) および ring_list.ssf (ring_list.c と ring_list.h を生成) ファイルからの引用です 。
- <br><br>
-
- <div class="col-xs-12">
- <div id="myCarousel3" class="carousel slide" data-ride="carousel">
- <!-- Indicators -->
- <ol class="carousel-indicators">
- <li data-target="#myCarousel3" data-slide-to="0" class="active"></li>
- <li data-target="#myCarousel3" data-slide-to="1"></li>
- </ol>
-
- <!-- Wrapper for slides -->
- <div class="carousel-inner" role="listbox">
-
- <div class="item active">
- <img src="ringvisualsrc1.jpg" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="ringvisualsrc2.jpg" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- </div>
-
- <!-- Left and right controls -->
- <a class="left carousel-control" href="#myCarousel3" role="button" data-slide="prev">
- <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
- <span class="sr-only">前へ</span>
- </a>
- <a class="right carousel-control" href="#myCarousel3" role="button" data-slide="next">
- <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
- <span class="sr-only">次へ</span>
- </a>
-
- </div>
- </div>
-
-</div>
-
- <div class="panel panel-primary" id="smartgc">
- <div class="panel-heading"><h4> スマートガベージコレクター </h4></div>
- <div class="panel-body">
-
- わずらわしいメモリ操作関連の問題から開放されます。
- <br><br>
- <ul>
- <li>メモリへの不正アクセス</li>
- <li>メモリリーク</li>
- <li>未初期化メモリへのアクセス</li>
- <li>ダングリングポインタ</li>
- </ul>
-
- 規則:
- <br><br>
- <ul>
- <li>グローバル変数は代入ステートメントで削除するまでメモリに存在し続けます。</li>
- <li>ローカル変数は関数の処理終了後に削除されます。</li>
- <li>プログラマは代入ステートメントでメモリから変数を削除する時期を完全に制御できます。</li>
- <br>
- 用例:
- <pre>
-aList = [1,2,3,4,5]
-aList = "nice"
- </pre>
- 二行目の直後、リスト [1,2,3,4,5] はメモリから削除され、文字列 “nice” が残ります。
- <br><br>
- <li>プログラマは callgc() 関数を呼び出すことで強制的に強制的にガベージコレクターを実行できます。</li>
- <li>変数に参照がある場合は (関数へオブジェクトおよびリストを渡すとき)、参照カウントに基づいて変数を削除します。参照されない場合は全て削除されますが、参照がある場合はデータはメモリに残ります。</li>
- </ul>
- </div>
- </div>
-
- <br> <br>
-
- <div class="panel panel-primary" id="designgoals_nogil">
- <div class="panel-heading"><h4> インタプリタ (VM) 全体の停止なし (GIL なし) </h4></div>
- <div class="panel-body">
-
- <p>
- アプリケーションでスレッドを使用するとき、インタプリタ (VM) 全体の停止 (global interpreter (VM) lock - GIL) は起こりません。 <br><br>
-
- よって、スレッドは並列動作可能であり、Ring 命令は同時実行されます。 <br><br>
-
- これはスレッドと平行性において最良のものです (さらなる高速化が実現できます!) <br>
-
- </p>
-
- </div>
- </div>
-
-
- </div>
- </div>
- </div>
-
-</div>
-
-
-<a href="#fastenough" class="btn btn-default" data-toggle="collapse" style="width:100%">高速動作</a>
- <div id="fastenough" class="panel-group collapse in">
- <div class="panel panel-default">
- <div class="panel-heading"><h4>ほとんどのアプリケーションで十分に高速動作します</h4></div>
- <div class="panel-body">
-
- <div class="row">
- <div class="col-sm-12 col-md-12">
- <p>
- Ring は単純明快、小規模、柔軟な言語の頂点として設計されています。また、ほとんどのアプリケーションで十分に高速動作します。
- </p>
- <p>
- これまで5年間、市販の電子計算機で Ring を使用してきました。<b>下記の処理は約1秒で完了します</b>。 <br><br>
-
- (1) 100,000 行コードのコンパイル <br>
- (2) 1 ~ 10,000,000 まで数え上げる空ループの実行 <br>
- (3) 100,000 項目から成るリストで最後の項目を見つけようとして、線形検索で1000 回の検索処理を実行 (最悪の場合) <br>
- (4) 1,000,000 項目から成るリストを作成後にリスト全項目の合計を計算<br>
- (5) GUI アプリケーションで ListWidget へ 20,000 アイテムを追加 <br>
- (6) GUI アプリケーションで TreeWidget へ 5,000 ノードを追加 <br>
- (7) ターミナルのコンソールアプリケーションで 10,000 メッセージを表示 <br>
-
- もっと高速化が必要なときは C/C++ 拡張機能を使用します! <br>
-
- </p>
- <br>
-
- <div class="col-xs-12">
- <div id="myCarousel2" class="carousel slide" data-ride="carousel">
- <!-- Indicators -->
- <ol class="carousel-indicators">
- <li data-target="#myCarousel2" data-slide-to="0" class="active"></li>
- <li data-target="#myCarousel2" data-slide-to="1"></li>
- <li data-target="#myCarousel2" data-slide-to="2"></li>
- <li data-target="#myCarousel2" data-slide-to="3"></li>
- </ol>
-
- <!-- Wrapper for slides -->
- <div class="carousel-inner" role="listbox">
-
- <div class="item active">
- <img src="ringdemo1_speed.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="ringdemo2_speed.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="ringdemo3_speed.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
- <div class="item">
- <img src="ringdemo4_speed.png" alt="" width="1366" height="729">
- <div class="carousel-caption">
- <h3></h3>
- <p></p>
- </div>
- </div>
-
-
-
- </div>
-
- <!-- Left and right controls -->
- <a class="left carousel-control" href="#myCarousel2" role="button" data-slide="prev">
- <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
- <span class="sr-only">前へ</span>
- </a>
- <a class="right carousel-control" href="#myCarousel2" role="button" data-slide="next">
- <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
- <span class="sr-only">次へ</span>
- </a>
-
- </div>
-</div>
-
-
- </div>
- </div>
- </div>
- </div>
- </div>
-
-
-
-<a href="#features" class="btn btn-default" data-toggle="collapse" style="width:100%">特徴</a>
- <div id="features" class="panel-group collapse in">
- <div class="panel panel-default">
- <div class="panel-heading"><h4>特徴</h4></div>
- <div class="panel-body">
-
- <div class="row">
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading">自由で画期的</div>
- <div class="panel-body">
- <ul>
- <li>自由なオープンソース (MIT ライセンス)</li>
- <li>オブジェクト指向プログラミングの頂点としての宣言型プログラミング</li>
- <li>ステートメントへの明示的な end が不要であるため、シンタックスは簡潔です (; または ENTER は不要)</li>
- <li>For in では値ではなく参照により項目を取得するため、項目を読み書きできます</li>
- <li>exit の使用による一階層以上のループからの脱出</li>
- <li>関数・クラス・パッケージには end キーワードは不要</li>
- <li>括弧 { } を使用することでオブジェクトへのアクセス、および属性・変数としてのメソッド・関数を使用できます。</li>
- <li>明瞭なプログラム構造 (ステートメントの後に関数、そしてパッケージとクラス)</li>
- <li>オプションで字句・構文・バイトコードを実行中に表示</li>
- </ul>
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
- <div class="panel panel-primary">
- <div class="panel-heading">強力な実装</div>
- <div class="panel-body">
-
- <ul>
- <li>ハイブリッド実装 (コンパイラ + 仮想計算機)</li>
- <li>コンパイラ + 仮想計算機は 20,000 行の C コードです。</li>
- <li>そのほか 500,000 行のコードはライブラリ関連です!</li>
- <li>ANSI C で記述 (コード生成による)</li>
- <li>ビジュアル言語 (PWCT) を使用して開発</li>
- <li>移植性 (<ruby>Windows<rp>(</rp><rt>ウィンドウズ</rt><rp>)</rp></ruby>, <ruby>Linux<rp>(</rp><rt>リナックス</rt><rp>)</rp></ruby> および <ruby>macOS<rp>(</rp><rt>マック・オーエス</rt><rp>)</rp></ruby>, <ruby>Android<rp>(</rp><rt>アンドロイド</rt><rp>)</rp></ruby> など)</li>
- </ul>
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading">簡明</div>
- <div class="panel-body">
-
- <ul>
- <li>コメント (一行および複数行)</li>
- <li>大小英数文字同一視</li>
- <li>構造化プログラミング</li>
- <li>豪華な制御構造と演算子</li>
- <li>手続き・関数</li>
- <li>メイン関数 (オプション扱い)</li>
- <li>定義前の関数呼び出し</li>
- <li>再帰処理</li>
- <li>複数行リテラル</li>
- <li>インデックスによる文字列内の文字へのアクセス (読み書き)</li>
- <li>リストのインデックスは 1 から開始</li>
- <li>範囲演算子。用例: 1:10 および “a”:”z”</li>
- <li>第一級変数、リスト、オブジェクトと関数</li>
- <li>値による格納・リストのコピー・オブジェクト (深いコピー)</li>
- <li>参照によるリスト・オブジェクト渡し</li>
- <li>8-bit クリーン設計であるためバイナリデータは直接動作します。</li>
- </ul>
- </div>
- </div>
-
- </div>
- </div>
-
- <br> <br>
-
- <div class="row">
-
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading"> 動的言語 </div>
- <div class="panel-body">
-
- <ul>
- <li>動的型付け</li>
- <li>弱い型付け</li>
- <li>レキシカルスコープ (グローバル、ローカルおよびオブジェクトのステート)</li>
- <li>関数の内側の変数のデフォルトスコープ (ローカル)</li>
- <li>関数の外側の変数のデフォルトスコープ (グローバル)</li>
- <li>ガベージコレクター - メモリの自動管理 (エスケープ解析と参照カウント)</li>
- <li>例外処理</li>
- <li>アプリケーション実行中に Eval() でコードを実行</li>
- </ul>
-
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading"> オブジェクト指向へのネイティブ対応</div>
- <div class="panel-body">
-
- <ul>
- <li>カプセル化</li>
- <li>Setter/Getter (オプション扱い)</li>
- <li>プライベートステート (オプション扱い)</li>
- <li>インスタンス化</li>
- <li>多態性</li>
- <li>コンポジション</li>
- <li>継承 (単一継承)</li>
- <li>演算子のオーバーロード</li>
- <li>パッケージ</li>
- <li>リフレクションとメタプログラミング</li>
- </ul>
-
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading"> 標準ライブラリ </div>
- <div class="panel-body">
-
- <ul>
- <li>I/O 命令</li>
- <li>算術関数</li>
- <li>文字列関数</li>
- <li>リスト関数</li>
- <li>ファイル処理関数</li>
- <li>データベースへの対応 (ODBC, PostgreSQL, SQLite および MySQL)</li>
- <li>セキュリティ関数 (OpenSSL)</li>
- <li>インターネット関数 (LibCurl)</li>
- </ul>
-
- </div>
- </div>
-
- </div>
- </div>
-
- <br>
- <br>
-
- <div class="row">
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading"> CGI ライブラリ (Ring にて記述) </div>
- <div class="panel-body">
-
- <ul>
- <li>CGI ライブラリ - HTTP Get</li>
- <li>CGI ライブラリ - HTTP Post</li>
- <li>CGI ライブラリ - ファイルのアップロード</li>
- <li>CGI ライブラリ - クッキー</li>
- <li>CGI ライブラリ - URL エンコード</li>
- <li>CGI ライブラリ - テンプレート</li>
- <li>CGI ライブラリ - HTML 特殊文字</li>
- <li>CGI ライブラリ - 関数を使用した HTML の生成</li>
- <li>CGI ライブラリ - クラスを使用した HTML の生成</li>
- <li>CGI ライブラリ - CRUD の用例 (MVC を使用)</li>
- <li>CGI ライブラリ - ユーザーによる用例 (登録、ログインと確認)</li>
- </ul>
-
-
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
-
- <div class="panel panel-primary">
- <div class="panel-heading"> 拡張機能 </div>
- <div class="panel-body">
-
- <ul>
- <li>C/C++ による拡張機能の使用 (シンプルなAPI)</li>
- <li>C/C++ プログラムへの組み込み</li>
- <li>手軽に C/C++ ライブラリと接続するためのコード生成器 (Ring にて記述) があります。</li>
- <li>デスクトップとモバイル用の 2D ゲーム作成 (Allegro ライブラリ)</li>
- <li>デスクトップおよびモバイル用の GUI アプリケーションの作成 (Qt フレームワーク)。</li>
- </ul>
-
- </div>
- </div>
- </div>
-
- <div class="col-sm-12 col-md-4">
- <div class="panel panel-primary">
- <div class="panel-heading"> これ以外にも </div>
- <div class="panel-body">
-
- <ul>
- <li>非常に安定した動作</li>
- <li>十分な処理能力</li>
- <li>完成度の高い取扱説明書</li>
- </ul>
-
- </div>
- </div>
- </div>
-
- </div>
-
-
-
- </div>
- </div>
- </div>
-
-
- <a id="ringbook" href="https://en.wikibooks.org/wiki/Ring" target="_blank" class="btn btn-default" style="width:100%">Wikibooks での Ring 紹介記事 (外部サイト)</a>
- <a id="ringsamples" href="https://rosettacode.org/wiki/Category:Ring" target="_blank" class="btn btn-default" style="width:100%">Ring のサンプルソ-ス (Rosetta Code)</a>
-
-
-
-