OSDN Git Service

71bb42bfb35fc0b6e46d1ba5013a02e3a5f2dbea
[ring-lang-081/ring.git] / website-obsoleted / index.template
1 <%  eval(read("news.data"))  %>
2
3 <div class="row">
4
5   <div class="col-sm-12 col-md-6">
6
7   <div id="introduction" class="panel-group">
8     <div class="panel panel-default">
9       <div class="panel-heading"><h4>はじめに</h4></div>
10       <div class="panel-body">
11                 <p align="justify">
12                         <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>です。
13
14                         <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>しています。
15
16                         <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>です。
17
18                         コンソール、<ruby>GUI<rp>(</rp><rt>ジー・ユー・アイ</rt><rp>)</rp></ruby>、ウェブ、ゲーム、およびモバイルアプリケーションを<ruby>作成<rp>(</rp><rt>さくせい</rt><rp>)</rp></ruby>できます。
19
20                 </p>
21         </div>
22      </div>  
23   </div>
24
25         </div>
26
27           <div class="col-sm-12 col-md-6">
28
29   <div id="news" class="panel-group">
30     <div class="panel panel-info">
31       <div class="panel-heading"><h4><ruby>新着情報<rp>(</rp><rt>しんちゃくじょうほう</rt><rp>)</rp></ruby></h4></div>
32       <div class="panel-body">
33
34                         <table class="table table-striped">
35                                 <thead>
36                                   <tr>
37                                         <th width="40%"><ruby>日付<rp>(</rp><rt>ひづけ</rt><rp>)</rp></ruby></th>
38                                         <th><ruby>概要<rp>(</rp><rt>がいよう</rt><rp>)</rp></ruby></th>
39                                   </tr>
40                                 </thead>
41                                 <tbody>
42                                 
43                                 <% for x=1 to 3 %>
44                                   <tr>
45                                         <td><%= aNews[x][1] %></td>
46                                         <td><%= aNews[x][2] %></td>
47                                   </tr>
48                                 <% next %>                               
49
50                                 </tbody>
51                         </table>
52                         <div style="text-align:right;">   
53                                   <a href="news.html"><ruby>過去<rp>(</rp><rt>かこ</rt><rp>)</rp></ruby>の<ruby>新着情報<rp>(</rp><rt>しんちゃくじょうほう</rt><rp>)</rp></ruby></a>   
54                         </div>
55           </div>
56      </div>  
57   </div>
58
59         </div>
60
61 </div>
62
63 <br>
64
65
66 <a href="#innovative" class="btn btn-default" data-toggle="collapse" style="width:100%"><ruby>画期的<rp>(</rp><rt>かっきてき</rt><rp>)</rp></ruby></a>
67   <div id="innovative" class="panel-group collapse in">
68     <div class="panel panel-primary">
69       <div class="panel-heading"><h4><ruby>画期的<rp>(</rp><rt>かっきてき</rt><rp>)</rp></ruby></h4></div>
70       <div class="panel-body">
71
72                 <div class="row">
73                         <div class="col-sm-12 col-md-12">
74                         <p>
75                         <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>しています。
76                         </p>
77                         
78                         <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> 
79                         <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> 
80                         <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> 
81                         <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> 
82                         <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> 
83                 
84                         
85                         </div>
86                 </div>
87           </div>
88          </div>
89    </div>
90  
91
92
93  <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>
94   <div id="practical" class="panel-group collapse in">
95     <div class="panel panel-default">
96       <div class="panel-heading"><h4><ruby>豊<rp>(</rp><rt>ゆたか</rt><rp>)</rp></ruby>かな<ruby>実用性<rp>(</rp><rt>じつようせい</rt><rp>)</rp></ruby></h4></div>
97       <div class="panel-body">
98
99                 <div class="row">
100                         <div class="col-sm-12 col-md-12">
101                 <p>
102                 <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>しました。
103                 <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>します。
104                 </p>
105                 <br>
106
107                 <div class="col-xs-12">
108   <div id="myCarousel" class="carousel slide" data-ride="carousel">
109     <!-- Indicators -->
110     <ol class="carousel-indicators">
111       <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
112       <li data-target="#myCarousel" data-slide-to="1"></li>
113       <li data-target="#myCarousel" data-slide-to="2"></li>
114       <li data-target="#myCarousel" data-slide-to="3"></li>
115           <li data-target="#myCarousel" data-slide-to="4"></li>
116           <li data-target="#myCarousel" data-slide-to="5"></li>
117           <li data-target="#myCarousel" data-slide-to="6"></li>
118           <li data-target="#myCarousel" data-slide-to="7"></li>
119           <li data-target="#myCarousel" data-slide-to="8"></li>
120           <li data-target="#myCarousel" data-slide-to="9"></li>
121           <li data-target="#myCarousel" data-slide-to="10"></li>          
122           <li data-target="#myCarousel" data-slide-to="11"></li>          
123     </ol>
124
125     <!-- Wrapper for slides -->
126     <div class="carousel-inner" role="listbox">
127
128       <div class="item active">
129         <img src="newringdemo1.png" alt="" width="1366" height="729">
130         <div class="carousel-caption">
131           <h3></h3>
132           <p></p>
133         </div>
134       </div>
135
136       <div class="item">
137         <img src="newringdemo2.png" alt="" width="1366" height="729">
138         <div class="carousel-caption">
139           <h3></h3>
140           <p></p>
141         </div>
142       </div>
143     
144       <div class="item">
145         <img src="newringdemo3.png" alt="" width="1366" height="729">
146         <div class="carousel-caption">
147           <h3></h3>
148           <p></p>
149         </div>
150       </div>
151
152       <div class="item">
153         <img src="newringdemo4.png" alt="" width="1366" height="729">
154         <div class="carousel-caption">
155           <h3></h3>
156           <p></p>
157         </div>
158       </div>
159   
160       <div class="item">
161         <img src="newringdemo5.png" alt="" width="1366" height="729">
162         <div class="carousel-caption">
163           <h3></h3>
164           <p></p>
165         </div>
166       </div>
167  
168       <div class="item">
169         <img src="newringdemo6.png" alt="" width="1366" height="729">
170         <div class="carousel-caption">
171           <h3></h3>
172           <p></p>
173         </div>
174       </div>
175
176                 <div class="item">
177         <img src="newringdemo7.png" alt="" width="1366" height="729">
178         <div class="carousel-caption">
179           <h3></h3>
180           <p></p>
181         </div>
182       </div>      
183         
184
185           <div class="item">
186         <img src="newringdemo8.png" alt="" width="1366" height="729">
187         <div class="carousel-caption">
188           <h3></h3>
189           <p></p>
190         </div>
191       </div>    
192         
193       <div class="item">
194         <img src="newringdemo9.png" alt="" width="1366" height="729">
195         <div class="carousel-caption">
196           <h3></h3>
197           <p></p>
198         </div>
199       </div>      
200         
201          
202           <div class="item">
203         <img src="newringdemo10.png" alt="" width="1366" height="729">
204         <div class="carousel-caption">
205           <h3></h3>
206           <p></p>
207         </div>
208       </div>    
209         
210       <div class="item">
211         <img src="newringdemo11.png" alt="" width="1366" height="729">
212         <div class="carousel-caption">
213           <h3></h3>
214           <p></p>
215         </div>
216       </div>    
217
218       <div class="item">
219         <img src="newringdemo12.png" alt="" width="1366" height="729">
220         <div class="carousel-caption">
221           <h3></h3>
222           <p></p>
223         </div>
224       </div>    
225           
226
227     </div>
228
229     <!-- Left and right controls -->
230     <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
231       <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
232       <span class="sr-only">前へ</span>
233     </a>
234     <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
235       <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
236       <span class="sr-only">次へ</span>
237     </a>
238         
239   </div>
240 </div>
241                 
242                         
243                 
244                         </div>
245                 </div>
246           </div>
247          </div>
248    </div>
249
250
251
252  
253  
254
255 <a  id="why" href="#whyring" class="btn btn-default" data-toggle="collapse" style="width:100%">Ring を選ぶ理由は?</a>
256 <div id="whyring" class="panel-group collapse in">
257     <div class="panel panel-default">
258       <div class="panel-heading"><h4>Ring を選ぶ理由は?</h4></div>
259       <div class="panel-body">
260                 <p align="justify">
261                 <p>Ring は簡明、<ruby>違和感<rp>(</rp><rt>いわかん</rt><rp>)</rp></ruby>の排除、組織化の奨励、および透過性とビジュアル実装からなるプログラミング言語です。
262                 簡潔なシンタックス、そして自然なインタフェースの作成を可能にする機能群、さらに少しの時間で構築できる宣言型問題解決特化言語があります。
263                 非常に小規模、高速なスマートガベージコレクターがあり、メモリをプログラマの制御下に置くことができます。</p>
264                 <p>また、多種多様なプログラミングパラダイムに対応しており、インストール直後からすぐ使える業界標準の実用的なライブラリが付属しています (Allegro, FreeGLUT, cURL, LibUV, MySQL, ODBC, OpenGL, OpenSSL, PostgreSQL, Qt, RayLib, SDL, SQLite などに対応)。</p>
265                 <p>この言語は生産性と拡張性に優れた高品質な解決方法の開発のために設計されています。<a href="docs-1.11/faq.html#why-do-we-need-yet-another-programming-language-yapl" target="_blank"> → 理由 </a></p>
266                 </p>
267                 <br> <br>
268
269         <div class="panel panel-primary" id="productivityscal">
270               <div class="panel-heading"><h4>明確な設計目標</h4></div>
271               <div class="panel-body">
272
273                 <p>
274                         <ul>
275                         <li>アプリケーション開発用のプログラミング言語です。 <a href="docs-1.11/ringapps.html" target="_blank"> → 用例 </a> </li>
276                         <li>ドメイン特化ライブラリ、フレームワークおよびツールの作成に使用できる汎用言語です。 <a href="docs-1.11/naturallibrary.html" target="_blank"> → 方法 </a></li>
277                         <li>ビジュアルプログラミング言語である Programming Without Coding Technology (PWCT) ソフトウェアの次世代版を作成するために設計された実用言語です。 <a href="http://pwct.org/" target="_blank"> → PWCT の公式サイト </a></li>
278                         <li>小規模で高速な言語であり C/C++ プロジェクトへ組み込めます。<a href="docs-1.11/embedding.html" target="_blank"> → 方法 </a></li>
279                         <li>文教用途およびコンパイラ・仮想計算機の概念における入門に使用できる単純明快な言語です。<a href="#education" target="_blank"> → 方法 </a></li>
280                         <li>生産性と拡張性に優れた高品質な解決方法の開発。</li>                  
281                         </ul>
282
283                 </p>
284
285         </div>
286         </div>
287
288
289
290
291         <div class="panel panel-primary" id="simple">
292               <div class="panel-heading"><h4> 簡明 </h4></div>
293               <div class="panel-body">
294
295                 Ring は非常に簡明な言語であり、非常にシンプルなシンタックスから構成されています。ボイラープレートコードを使用しないプログラムの記述がプログラマに奨励されています。 
296                 'See' 命令はメッセージを標準出力へ表示します。
297                 <a href="docs-1.11/faq.html#why-ring-uses-see-give-but-and-ok-keywords" target="_blank"> → 理由 </a>
298                 
299
300                 <p>
301                         <pre>
302 <font color="purple">see</font> "Hello, World!" 
303                         </pre>
304                 </p>
305
306                 Main 関数はオプション扱いであり、ステートメントの後に実行されるため、ローカルスコープで有用です。
307                 <a href="docs-1.11/faq.html#what-is-the-goal-of-including-the-main-function-in-ring" target="_blank"> → 理由 </a>
308                 <p>
309                         <pre>
310 <font color="purple">func</font> main
311         <font color="purple">see</font> "Hello, World!" 
312                         </pre>
313                 </p>
314
315                 動的型付け、およびレキシカルスコープを使用しています。変数名の先頭に $ は不要です!
316                 <a href="docs-1.11/syntaxflexibility.html#using-and-in-the-start-of-the-variable-name" target="_blank"> → 理由 </a>
317                 <br>
318                 文字列の連結で ‘+’ 演算子を使用できます。
319                 弱い型付け言語であり、文字列はコンテキストに基づいて数値と文字列の間で自動的に変換されます。 
320                                 <a href="docs-1.11/faq.html#why-is-ring-weakly-typed" target="_blank"> → 理由 </a>
321                 <p>
322                         <pre>
323 nCount = 10     <font color="green"># グローバル変数</font>
324 <font color="purple">func</font> main
325         nID = 1 <font color="green"># ローカル変数</font>
326         <font color="purple">see</font> "Count = " + nCount + nl + " ID = " + nID
327                         </pre>
328                 </p>
329
330
331
332         </div>
333         </div>
334
335         <div class="panel panel-primary" id="natural">
336               <div class="panel-heading"><h4> 違和感の排除 </h4></div>
337               <div class="panel-body">
338
339                 Ring は大小英数文字を区別しません。
340                 <a href="docs-1.11/faq.html#why-ring-is-not-case-sensitive" target="_blank"> → 理由 </a>
341                 <p>
342                         <pre>
343 <font color="purple">see</font> "Enter your name ? " 
344 <font color="purple">give</font> name
345 <font color="purple">see</font> "Hello " + Name <font color="green"># Name は name と同じです。 </font>
346                         </pre>
347                 </p>
348
349                 リストのインデックス (添字番号) は 1 から開始します (Ring 1.11 以降は <a href="docs-1.11/zerolib.html">ZeroLib</a> を使用することで 0 から始めることもできます)。
350                 <a href="docs-1.11/faq.html#why-the-list-index-start-from-1-in-ring" target="_blank"> → 理由 </a>
351                 <p>
352                         <pre>
353 aList = ["one","two","three"]
354 <font color="purple">see</font> aList[1]        <font color="green"># one を表示</font>
355                         </pre>
356                 </p>
357
358                 定義前に関数を呼び出すには
359                 <p>
360                         <pre>
361 one() 
362 two() 
363 three()
364 <font color="purple">func</font> one 
365         <font color="purple">see</font> "One" + nl
366 <font color="purple">func</font> two 
367         <font color="purple">see</font> "two" + nl
368 <font color="purple">func</font> three 
369         <font color="purple">see</font> "three" + nl
370                         </pre>
371                 </p>
372
373                 代入演算子は深いコピーを使用します (この操作は参照ではありません)。
374                 <a href="docs-1.11/faq.html#why-the-assignment-operator-uses-deep-copy" target="_blank"> → 理由 </a>
375                 <p>
376                         <pre>
377 aList = ["one","two","three"]
378 aList2 = aList
379 aList[1] = 1
380 <font color="purple">see</font> alist[1]        <font color="green"># 1 を表示</font>
381 <font color="purple">see</font> aList2[1]       <font color="green"># one を表示</font>
382                         </pre>
383                 </p>
384
385                 数値と文字列は値渡しですが、リストとオブジェクトは参照渡しです。 
386                 <br>
387                 For in ループ でリストの項目 (アイテム、要素とも呼ばれています) を更新できます。
388                 <p>
389                         <pre>
390 <font color="purple">func</font> main
391         aList = [1,2,3]
392         update(aList)
393         <font color="purple">see</font> aList   <font color="green"># one two three を表示</font>
394
395 <font color="purple">func</font> update aList
396         <font color="purple">for</font> x <font color="purple">in</font> aList
397                 <font color="purple">switch</font> x
398                 <font color="purple">on</font> 1 x = "one"
399                 <font color="purple">on</font> 2 x = "two"
400                 <font color="purple">on</font> 3 x = "three"
401                 <font color="purple">off</font>
402         <font color="purple">next</font>
403                         </pre>
404                 </p>
405
406                 定義するときにリストを使用するには 
407                 <p>
408                         <pre>
409 aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
410 <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>
411                         </pre>
412                 </p>
413                 一階層以上のループから脱出
414                 <a href="docs-1.11/faq.html#why-you-can-specify-the-number-of-loops-you-want-to-break-out-of" target="_blank"> → 理由 </a>
415                 <p>
416                         <pre>
417 <font color="purple">for</font> x = 1 <font color="purple">to</font> 10
418         <font color="purple">for</font> y = 1 <font color="purple">to</font> 10
419                 <font color="purple">see</font> "x=" + x + " y=" + y + nl
420                 <font color="purple">if</font> x = 3 <font color="purple">and</font> y = 5
421                         <font color="purple">exit</font> 2     <font color="green"># 二階層のループから脱出</font>
422                 <font color="purple">ok</font>
423         <font color="purple">next</font>
424 <font color="purple">next</font>
425                         </pre>
426                 </p>
427
428
429         </div>
430         </div>
431
432
433         <div class="panel panel-primary" id="encourageorg">
434               <div class="panel-heading"><h4> 組織化の奨励 </h4></div>
435               <div class="panel-body">
436                 Ring ではプログラムの組織化を奨励しています。まずは関数、次にクラス、
437                 そして関数とヘンテコなモノと組み合わせるプログラミング言語を使用していた悪夢の日々を忘却の彼方へ追いやります! 
438                 <br><br>
439                 ソースファイルの構造は:
440                 <br><br>
441                 <ul>
442                 <li>ファイルの読み込み</li>
443                 <li>ステートメントとグローバル変数</li>
444                 <li>関数</li>
445                 <li>パッケージおよびクラス</li>
446                 </ul>
447                 これにより構成要素で end キーワードを記述しなくてもパッケージ、
448                 クラスと関数の使用が可能になります。
449                 <br> <br>
450                 一行コメントまたは複数行コメントを使用できます。
451                 <br>
452                 一行コメントは # または // で始まります。
453                 <br>
454                 複数行コメントは /* ~ */ の間に記述します。
455                 <p>
456                 <pre>
457 <font color="green">/* 
458         プログラム名      : Ring を使用したはじめてのプログラム
459         日付          : 2017
460 */</font>
461
462 <font color="purple">see</font> "What is your name? "   <font color="green"># 画面上にメッセージを表示します。</font>
463 <font color="purple">give</font> cName                  <font color="green"># ユーザからの入力を取得</font>
464 <font color="purple">see</font> "Hello " + cName        <font color="green">    # hello を表示!</font>
465
466 <font color="green">// See "Bye!"</font>
467                         </pre>
468                 </p>
469
470         </div>
471         </div>
472
473
474             <div class="panel panel-primary" id="libs">
475               <div class="panel-heading"><h4> 簡明なシンタックス </h4></div>
476               <div class="panel-body">
477
478
479                 
480                 <p>
481                         ステートメントの後に ; を記述したり ENTER や TAB を押して <b>行の区別</b> する必要はありません。
482                         つまり、このようなコードを書くことができます。
483                 </p>
484                 <p>
485                         <pre>
486 <font color="purple">see</font> "The First Message"     <font color="purple">see</font> " Another message in the same line! " + <font color="red">nl</font>
487 <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>
488                         </pre>
489                 </p>
490                 <p>
491                         このコードは三種類の属性 X, Y および Z を有する Point クラスを作成します。
492                         <b>パッケージ・クラス・関数の定義を終了するために end キーワードは使用していません。</b>
493                         また、<b>クラスの名前の直下に属性の名前を書く</b>ことができます。
494                 </p>
495                 <p>
496                         <pre>
497 <font color="purple">class</font> Point X Y Z
498                         </pre>
499                 </p>
500                 <p>
501                         <b>定義前にクラスと関数を使用</b>できます。
502                         この用例では、オブジェクトの新規作成と属性の設定、および値を表示します。
503                 </p>
504                 <p>
505                         <pre>
506 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
507                         </pre>
508                 </p>
509                 <p>
510                         ドット演算子 &#8216;.&#8217; でオブジェクトの属性とメソッドへアクセスするのではなく、
511                         <b>括弧 { } でオブジェクトへアクセスできます。その後にオブジェクトの属性とメソッドを使用できます。</b>
512                 </p>
513                 <p>
514                         <pre> 
515 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
516                          </pre>
517                 </p>
518                 <p>
519                         <b>メソッドの呼出し後に { } を使用してオブジェクトへアクセス</b>します。
520                 </p>
521                 <p>
522 <pre> 
523 oPerson = <font color="purple">new</font> Person
524 {
525         Name = "Somebody"
526         Address = "Somewhere"
527         Phone = "0000000"
528         Print()                 <font color="green"># ここでは Print() メソッドを呼び出します。</font>
529 }
530 <font color="purple">class</font> Person Name Address Phone
531         <font color="purple">func</font> Print
532                 <font color="purple">see</font> "Name :" + name + nl +
533                     "Address :" + Address + nl +
534                     "Phone : " + phone + nl
535 </pre>
536                 </p>
537
538                 <p>
539                         { } を使用してオブジェクトへアクセスしてから任意のオブジェクトの名前を記述するとき、
540                         <b>自動的に呼び出される全ての setter/getter メソッドに対してクラスを検査します。</b>
541                 </p>
542                 <p>
543 <pre>
544 <font color="purple">new</font> Number {
545                 <font color="purple">see</font> one             <font color="green"># GetOne() の実行</font>
546                 <font color="purple">see</font> two             <font color="green"># GetTwo() の実行</font>
547                 <font color="purple">see</font> three   <font color="green"># GetThree() の実行</font>
548 }
549 <font color="purple">class</font> Number one two three
550         <font color="purple">func</font> GetOne
551                 <font color="purple">see</font> "Number : One" + nl
552                 <font color="purple">return</font> 1
553         <font color="purple">func</font> GetTwo
554                 <font color="purple">see</font> "Number : Two" + nl
555                 <font color="purple">return</font> 2
556         <font color="purple">func</font> GetThree
557                 <font color="purple">see</font> "Number : Three" + nl
558                 <font color="purple">return</font> 3    
559 </pre>
560 </p>
561
562                 </div>
563                 </div>
564
565             <div class="panel panel-primary" id="libs">
566               <div class="panel-heading"><h4> オブジェクト指向に基づいた自然言語ステートメントの定義 </h4></div>
567               <div class="panel-body">
568                 <p>
569                 { } を使用してオブジェクトへアクセス後にクラスに BraceEnd() と呼ばれるメソッドがある場合は BraceEnd() メソッドを実行します!
570                 <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>
571                 </p>
572 <p>
573 <pre>
574 TimeForFun = <font color="purple">new</font> journey
575 <font color="green"># あっと驚く!</font>
576 <b>TimeForFun {
577         Hello it is me          <font color="green"># なんと美しいプログラミングの世界でしょう!</font>
578 }</b>
579 <font color="green"># クラス本体</font>
580 <font color="purple">class</font> journey
581         hello=0 it=0 is=0 me=0
582         <font color="purple">func</font> GetHello
583                 <font color="purple">See</font> "Hello" + nl
584         <font color="purple">func</font> braceEnd
585                 <font color="purple">See</font> "Goodbye!" + nl 
586 </pre>
587 </p>
588
589                 <p>
590                 Eval() 関数は文字列に記述されたコードを実行します。</b>
591                 </p>
592 <p>
593 <pre>
594 cCode = "See 'Code that will be executed later!' "
595 Eval(cCode)     <font color="green"># コードを実行してメッセージを表示します。</font>
596 </pre>
597 </p>
598
599                 <p>
600                 <b>リストの作成後にリストから実行用のコードを生成できます。</b>
601                 </p>
602 <p>
603 <pre>
604 aWords = ["hello","it","is","me"]
605 <font color="purple">for</font> word <font color="purple">in</font> aWords cCode=word+"=0" eval(cCode) <font color="purple">next</font>
606 </pre>
607 </p>
608
609                 <p>
610                 <b>Read(cFileName) 関数はテキストファイルを読み取ります。</b>
611                 また Write(cFileName,cString) 関数はファイルへ書き込みます。
612                 </p>
613 <p>
614 <pre>
615 <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>
616 </pre>
617 </p>
618
619                 <p>
620                 この用例は二つの命令を定義するクラスの作成方法です。<br>
621                 最初の命令は : I want window<br>
622                 次の命令は : Window title = &lt;式&gt;<br>
623                 &#8216;the&#8217; などのキーワードは無視されます。<br>
624                 </p>
625 <p>
626 <pre>
627 <font color="purple">new</font> App
628 {
629         I want window
630         The window title = "hello world"
631 }
632
633 <font color="purple">class</font> App
634
635         <font color="green"># I want window 命令の属性</font>
636                         i want window
637                         nIwantwindow = 0
638         <font color="green"># Window title 命令の属性</font>
639         <font color="green"># ここでは window 属性を再定義しません。</font>
640                         title
641                         nWindowTitle = 0
642         <font color="green"># 値を与えると、キーワードは無視されます。</font>
643                         the=0
644
645         <font color="purple">func</font> geti
646                 <font color="purple">if</font> nIwantwindow = 0
647                         nIwantwindow++
648                 <font color="purple">ok</font>
649
650         <font color="purple">func</font> getwant
651                 <font color="purple">if</font> nIwantwindow = 1
652                         nIwantwindow++
653                 <font color="purple">ok</font>
654
655         <font color="purple">func</font> getwindow
656                 <font color="purple">if</font> nIwantwindow = 2
657                         nIwantwindow= 0
658                         <font color="purple">see</font> "Instruction : I want window" + nl
659                 <font color="purple">ok</font>
660                 <font color="purple">if</font> nWindowTitle = 0
661                         nWindowTitle++
662                 <font color="purple">ok</font>
663
664         <font color="purple">func</font> settitle cValue
665                 <font color="purple">if</font> nWindowTitle = 1
666                         nWindowTitle=0
667                         <font color="purple">see</font> "Instruction : Window Title = " + cValue + nl
668                 <font color="purple">ok</font>
669
670         
671 </pre>
672 </p>
673
674                 <p>
675                 前述の用例を完了するには read() を使用してファイルの内容を取得します。
676 <pre>
677         I want window
678         The window title = "hello world"
679 </pre>
680                 そして eval() を使用してファイルの内容を実行します!<br>
681                 また、 GUI ライブラリでウィンドウを作成するために GetWindow() と SetTitle() メソッドを更新します。<br>
682
683                 </p>
684
685                 </div>
686                 </div>
687
688             <div class="panel panel-primary" id="libs">
689               <div class="panel-heading"><h4> オブジェクト指向に基づいた入れ子構造による宣言型言語の定義 </h4></div>
690               <div class="panel-body">
691
692
693                 
694
695                 <p>
696                 <b>自然言語 (Natural) ステートメントを使用したコードの実行、
697                 および入れ子構造を使用したコードの実行方法について既に学んでいます。</b>
698                 </p>
699                 <p>
700                 この用例は Web ライブラリからのものであり Bootstrap ライブラリで HTML ドキュメントを生成します。
701                 この用例では HTML コードを直接記述せずに類似言語を作成しています (ただの用例です)。
702                 その後、<b>宣言型言語を使用するために入れ子構造を使用して、 HTML ドキュメントを生成しています。</b>
703                 <br>
704                 この用例での考え方として <b>GetDiv() および GetH1() メソッドは { } を使用してアクセスできるオブジェクトを返します。
705                 各オブジェクトへのアクセス後に BraceEnd() メソッドが実行されると生成された HTML を
706                 BraceEnd() の出力表示がルートに到達するまで親オブジェクトへ送信します。</b>
707                 </p>
708 <p>
709 <pre>
710 <font color="purple">load</font> "weblib.ring"
711 <font color="purple">import</font> System.Web
712
713 <font color="purple">func</font> Main
714
715   BootStrapWebPage()
716   {
717         div
718         {
719           classname = :container
720           div
721           {
722                 classname = :jumbotron
723                 H1 {   text("Bootstrap Page")   }
724           }
725           div
726           {
727                 classname = :row
728                 for x = 1 to 3
729                   div
730                   {
731                         classname = "col-sm-4"
732                         H3 { html("Welcome to the Ring programming language") }
733                         P  { html("Using a scripting language is very fun!") }
734                   }
735                 next
736           }
737         }
738   }
739 </pre>
740 </p>
741
742                 <p>
743                 宣言型インタフェースを強化するクラスはこのようなものなります。
744                 </p>
745 <p>
746 <pre>
747 <xmp>
748         class Link from ObjsBase
749                 title  link
750                 func braceend                   
751                         cOutput = nl+GetTabs() + "<a href='" + 
752                                   Link + "'> "+ Title + " </a> " + nl                   
753
754         class Div from ObjsBase 
755                 func braceend
756                         cOutput += nl+'<div'
757                         addattributes()
758                         AddStyle()
759                         getobjsdata()
760                         cOutput += nl+"</div>" + nl
761                         cOutput = TabMLString(cOutput)
762          
763 </xmp>
764 </pre>
765 </p>
766
767                 </div>
768                 </div>
769                 
770                 <br> <br>
771                 
772                  <div class="panel panel-primary" id="designgoals_syntaxflexibility">
773               <div class="panel-heading"><h4> 柔軟性のあるシンタックス </h4></div>
774               <div class="panel-body">
775
776                 <p>
777                         ソースコードの記述に関して様々な記法があります! <br> <br>
778
779                         また、言語のキーワードと演算子を変更することで、お好みの記法を作成できます!<br>
780
781                 </p>
782
783                   </div>
784                 </div>
785                 
786                 <br> <br>
787 <a name="education"></a>
788                         <div class="panel panel-primary" id="transparentimplementation">
789               <div class="panel-heading"><h4> 透過型実装 </h4></div>
790               <div class="panel-body">
791                 Ring は透過型実装です。コンパイラの処理段階および仮想計算機による実行中の処理内容を把握できます。<br>
792
793                 例えば : ring helloworld.ring -tokens -rules -ic
794
795                 <p>
796                         <pre>
797 <font color="purple">see</font> "Hello, World!" 
798                         </pre>
799                 </p>
800
801                 実行結果
802
803                 <p>
804                         <pre>
805 ==================================================================
806 Tokens - Generated by the Scanner
807 ==================================================================
808
809    Keyword : SEE
810    Literal : Hello, World!
811    EndLine
812
813 ==================================================================
814
815 ==================================================================
816 Grammar Rules Used by The Parser
817 ==================================================================
818
819 Rule : Program --> {Statement}
820
821 Line 1
822 Rule : Factor --> Literal
823 Rule : Range --> Factor
824 Rule : Term --> Range
825 Rule : Arithmetic --> Term
826 Rule : BitShift --> Arithmetic
827 Rule : BitAnd --> BitShift
828 Rule : BitOrXOR -->  BitAnd
829 Rule : Compare --> BitOrXOR
830 Rule : EqualOrNot --> Compare
831 Rule : LogicNot -> EqualOrNot
832 Rule : Expr --> LogicNot
833 Rule : Statement  --> 'See' Expr
834
835 ==================================================================
836
837
838
839 ==================================================================
840 Byte Code - Before Execution by the VM
841 ==================================================================
842
843      PC      OPCode        Data
844
845       1     FuncExE
846       2       PushC   Hello, World!
847       3       Print
848       4  ReturnNull
849
850 ==================================================================
851
852 Hello, World!
853                         </pre>
854                 </p>
855
856         </div>
857         </div>
858
859                 <div class="panel panel-primary" id="visualimplementation">
860               <div class="panel-heading"><h4> ビジュアル実装 </h4></div>
861               <div class="panel-body">
862                   
863                   プログラミング言語 Ring は<a href="http://doublesvsoop.sourceforge.net/" target="_blank">ビジュアルプログラミングツール PWCT (外部サイト)</a> で設計されています。
864                   Ring 言語のビジュアルソースは &#8220;visualsrc&#8221; フォルダの *.ssf ファイルにあります。
865                   生成された C 言語ソースコードは src フォルダおよび include フォルダにあります。 <a href="http://github.com/ring-lang/ring/"  target="_blank">GitHub (外部サイト) から fork する。</a><br><br>
866                         <br><br>
867                   このスクリーンショットは ring_vm.ssf (ring_vm.c と ring_vm.h を生成) および ring_list.ssf (ring_list.c と ring_list.h を生成) ファイルからの引用です 。
868                   <br><br>
869                   
870         <div class="col-xs-12">
871   <div id="myCarousel3" class="carousel slide" data-ride="carousel">
872     <!-- Indicators -->
873     <ol class="carousel-indicators">
874       <li data-target="#myCarousel3" data-slide-to="0" class="active"></li>
875       <li data-target="#myCarousel3" data-slide-to="1"></li>
876     </ol>
877
878     <!-- Wrapper for slides -->
879     <div class="carousel-inner" role="listbox">
880
881       <div class="item active">
882         <img src="ringvisualsrc1.jpg" alt="" width="1366" height="729">
883         <div class="carousel-caption">
884           <h3></h3>
885           <p></p>
886         </div>
887       </div>
888
889       <div class="item">
890         <img src="ringvisualsrc2.jpg" alt="" width="1366" height="729">
891         <div class="carousel-caption">
892           <h3></h3>
893           <p></p>
894         </div>
895       </div> 
896
897     </div>
898
899     <!-- Left and right controls -->
900     <a class="left carousel-control" href="#myCarousel3" role="button" data-slide="prev">
901       <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
902       <span class="sr-only">前へ</span>
903     </a>
904     <a class="right carousel-control" href="#myCarousel3" role="button" data-slide="next">
905       <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
906       <span class="sr-only">次へ</span>
907     </a>                  
908                   
909         </div>
910         </div>
911
912 </div>          
913                 
914         <div class="panel panel-primary" id="smartgc">
915               <div class="panel-heading"><h4> スマートガベージコレクター </h4></div>
916               <div class="panel-body">
917
918                 わずらわしいメモリ操作関連の問題から開放されます。
919                 <br><br>
920                 <ul>
921                  <li>メモリへの不正アクセス</li>
922                  <li>メモリリーク</li>
923                  <li>未初期化メモリへのアクセス</li>
924                  <li>ダングリングポインタ</li>
925                 </ul>
926
927                 規則:
928                 <br><br>
929                 <ul>
930                 <li>グローバル変数は代入ステートメントで削除するまでメモリに存在し続けます。</li>
931                 <li>ローカル変数は関数の処理終了後に削除されます。</li>
932                 <li>プログラマは代入ステートメントでメモリから変数を削除する時期を完全に制御できます。</li>
933                         <br>
934                         用例:
935                         <pre>
936 aList = [1,2,3,4,5]
937 aList = "nice"
938                         </pre>
939      二行目の直後、リスト [1,2,3,4,5] はメモリから削除され、文字列 &#8220;nice&#8221; が残ります。
940         <br><br>
941                 <li>プログラマは callgc() 関数を呼び出すことで強制的に強制的にガベージコレクターを実行できます。</li>
942                 <li>変数に参照がある場合は (関数へオブジェクトおよびリストを渡すとき)、参照カウントに基づいて変数を削除します。参照されない場合は全て削除されますが、参照がある場合はデータはメモリに残ります。</li>
943                 </ul>
944         </div>
945         </div>
946
947                         <br> <br>
948                 
949                  <div class="panel panel-primary" id="designgoals_nogil">
950               <div class="panel-heading"><h4> インタプリタ (VM) 全体の停止なし (GIL なし) </h4></div>
951               <div class="panel-body">
952
953                 <p>
954                         アプリケーションでスレッドを使用するとき、インタプリタ (VM) 全体の停止 (global interpreter (VM) lock - GIL) は起こりません。 <br><br>
955
956                         よって、スレッドは並列動作可能であり、Ring 命令は同時実行されます。 <br><br>
957
958                         これはスレッドと平行性において最良のものです (さらなる高速化が実現できます!) <br>
959
960                 </p>
961
962                   </div>
963                 </div>
964         
965
966         </div>
967      </div>  
968   </div>
969
970 </div>
971
972   
973 <a href="#fastenough" class="btn btn-default" data-toggle="collapse" style="width:100%">高速動作</a>
974   <div id="fastenough" class="panel-group collapse in">
975     <div class="panel panel-default">
976       <div class="panel-heading"><h4>ほとんどのアプリケーションで十分に高速動作します</h4></div>
977       <div class="panel-body">
978
979                 <div class="row">
980                         <div class="col-sm-12 col-md-12">
981                 <p>
982                 Ring は単純明快、小規模、柔軟な言語の頂点として設計されています。また、ほとんどのアプリケーションで十分に高速動作します。
983                 </p>
984                 <p>
985                 これまで5年間、市販の電子計算機で Ring を使用してきました。<b>下記の処理は約1秒で完了します</b>。  <br><br>
986                 
987                 (1) 100,000 行コードのコンパイル <br>
988                 (2) 1 ~ 10,000,000 まで数え上げる空ループの実行  <br>
989                 (3) 100,000 項目から成るリストで最後の項目を見つけようとして、線形検索で1000 回の検索処理を実行 (最悪の場合) <br>
990                 (4) 1,000,000 項目から成るリストを作成後にリスト全項目の合計を計算<br>
991                 (5) GUI アプリケーションで ListWidget へ 20,000 アイテムを追加 <br>
992                 (6) GUI アプリケーションで TreeWidget へ 5,000 ノードを追加 <br> 
993                 (7) ターミナルのコンソールアプリケーションで 10,000 メッセージを表示 <br>
994                 
995                 もっと高速化が必要なときは C/C++ 拡張機能を使用します! <br>
996                 
997                 </p>
998                 <br>    
999
1000                 <div class="col-xs-12">
1001   <div id="myCarousel2" class="carousel slide" data-ride="carousel">
1002     <!-- Indicators -->
1003     <ol class="carousel-indicators">
1004       <li data-target="#myCarousel2" data-slide-to="0" class="active"></li>
1005       <li data-target="#myCarousel2" data-slide-to="1"></li>
1006       <li data-target="#myCarousel2" data-slide-to="2"></li>
1007       <li data-target="#myCarousel2" data-slide-to="3"></li> 
1008     </ol>
1009
1010     <!-- Wrapper for slides -->
1011     <div class="carousel-inner" role="listbox">
1012
1013       <div class="item active">
1014         <img src="ringdemo1_speed.png" alt="" width="1366" height="729">
1015         <div class="carousel-caption">
1016           <h3></h3>
1017           <p></p>
1018         </div>
1019       </div>
1020
1021       <div class="item">
1022         <img src="ringdemo2_speed.png" alt="" width="1366" height="729">
1023         <div class="carousel-caption">
1024           <h3></h3>
1025           <p></p>
1026         </div>
1027       </div>
1028     
1029       <div class="item">
1030         <img src="ringdemo3_speed.png" alt="" width="1366" height="729">
1031         <div class="carousel-caption">
1032           <h3></h3>
1033           <p></p>
1034         </div>
1035       </div>
1036
1037       <div class="item">
1038         <img src="ringdemo4_speed.png" alt="" width="1366" height="729">
1039         <div class="carousel-caption">
1040           <h3></h3>
1041           <p></p>
1042         </div>
1043       </div>
1044   
1045   
1046
1047     </div>
1048
1049     <!-- Left and right controls -->
1050     <a class="left carousel-control" href="#myCarousel2" role="button" data-slide="prev">
1051       <span class="glyphicon glyphicon-chevron-left" aria-hidden="false"></span>
1052       <span class="sr-only">前へ</span>
1053     </a>
1054     <a class="right carousel-control" href="#myCarousel2" role="button" data-slide="next">
1055       <span class="glyphicon glyphicon-chevron-right" aria-hidden="false"></span>
1056       <span class="sr-only">次へ</span>
1057     </a>
1058         
1059   </div>
1060 </div>
1061                         
1062                 
1063                         </div>
1064                 </div>
1065           </div>
1066          </div>
1067    </div>
1068
1069   
1070
1071 <a href="#features" class="btn btn-default" data-toggle="collapse" style="width:100%">特徴</a>
1072   <div id="features" class="panel-group collapse in">
1073     <div class="panel panel-default">
1074       <div class="panel-heading"><h4>特徴</h4></div>
1075       <div class="panel-body">
1076
1077           <div class="row">
1078           <div class="col-sm-12 col-md-4">
1079
1080             <div class="panel panel-primary">
1081               <div class="panel-heading">自由で画期的</div>
1082               <div class="panel-body">
1083                         <ul>
1084                                 <li>自由なオープンソース (MIT ライセンス)</li>
1085                                 <li>オブジェクト指向プログラミングの頂点としての宣言型プログラミング</li>
1086                                 <li>ステートメントへの明示的な end が不要であるため、シンタックスは簡潔です (; または ENTER は不要)</li>
1087                                 <li>For in では値ではなく参照により項目を取得するため、項目を読み書きできます</li>
1088                                 <li>exit の使用による一階層以上のループからの脱出</li>
1089                                 <li>関数・クラス・パッケージには end キーワードは不要</li>
1090                                 <li>括弧 { } を使用することでオブジェクトへのアクセス、および属性・変数としてのメソッド・関数を使用できます。</li>
1091                                 <li>明瞭なプログラム構造 (ステートメントの後に関数、そしてパッケージとクラス)</li>
1092                                 <li>オプションで字句・構文・バイトコードを実行中に表示</li>
1093                         </ul>
1094               </div>          
1095             </div>
1096          </div>
1097
1098          <div class="col-sm-12 col-md-4">
1099             <div class="panel panel-primary">
1100               <div class="panel-heading">強力な実装</div>
1101               <div class="panel-body">
1102
1103                 <ul>
1104                 <li>ハイブリッド実装 (コンパイラ + 仮想計算機)</li>
1105                 <li>コンパイラ + 仮想計算機は 20,000 行の C コードです。</li>
1106                 <li>そのほか 500,000 行のコードはライブラリ関連です!</li>
1107                 <li>ANSI C で記述 (コード生成による)</li>
1108                 <li>ビジュアル言語 (PWCT) を使用して開発</li>
1109                 <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>
1110                 </ul>
1111                </div>
1112            </div>
1113         </div>
1114
1115         <div class="col-sm-12 col-md-4">
1116
1117             <div class="panel panel-primary">
1118               <div class="panel-heading">簡明</div>
1119               <div class="panel-body">
1120
1121                 <ul>
1122                 <li>コメント (一行および複数行)</li>
1123                 <li>大小英数文字同一視</li>
1124                 <li>構造化プログラミング</li>
1125                 <li>豪華な制御構造と演算子</li>
1126                 <li>手続き・関数</li>
1127                 <li>メイン関数 (オプション扱い)</li>
1128                 <li>定義前の関数呼び出し</li>
1129                 <li>再帰処理</li>
1130                 <li>複数行リテラル</li>
1131                 <li>インデックスによる文字列内の文字へのアクセス (読み書き)</li>
1132                 <li>リストのインデックスは 1 から開始</li>
1133                 <li>範囲演算子。用例: 1:10 および “a”:”z”</li>
1134                 <li>第一級変数、リスト、オブジェクトと関数</li>
1135                 <li>値による格納・リストのコピー・オブジェクト (深いコピー)</li>
1136                 <li>参照によるリスト・オブジェクト渡し</li>
1137                 <li>8-bit クリーン設計であるためバイナリデータは直接動作します。</li>
1138                 </ul>
1139               </div>
1140            </div>
1141
1142         </div>
1143         </div>
1144
1145         <br> <br>
1146
1147         <div class="row">
1148
1149         <div class="col-sm-12 col-md-4">
1150
1151             <div class="panel panel-primary">
1152               <div class="panel-heading"> 動的言語 </div>
1153               <div class="panel-body">
1154
1155                 <ul>
1156                 <li>動的型付け</li>
1157                 <li>弱い型付け</li>
1158                 <li>レキシカルスコープ (グローバル、ローカルおよびオブジェクトのステート)</li>
1159                 <li>関数の内側の変数のデフォルトスコープ (ローカル)</li>
1160                 <li>関数の外側の変数のデフォルトスコープ (グローバル)</li>
1161                 <li>ガベージコレクター - メモリの自動管理 (エスケープ解析と参照カウント)</li>
1162                 <li>例外処理</li>
1163                 <li>アプリケーション実行中に Eval() でコードを実行</li>
1164                 </ul>
1165               
1166               </div>
1167            </div>
1168         </div>
1169
1170         <div class="col-sm-12 col-md-4">
1171
1172             <div class="panel panel-primary">
1173               <div class="panel-heading"> オブジェクト指向へのネイティブ対応</div>
1174               <div class="panel-body">
1175
1176                 <ul>
1177                 <li>カプセル化</li>
1178                 <li>Setter/Getter (オプション扱い)</li>
1179                 <li>プライベートステート (オプション扱い)</li>
1180                 <li>インスタンス化</li>
1181                 <li>多態性</li>
1182                 <li>コンポジション</li>
1183                 <li>継承 (単一継承)</li>
1184                 <li>演算子のオーバーロード</li>
1185                 <li>パッケージ</li>
1186                 <li>リフレクションとメタプログラミング</li>
1187                 </ul>
1188      
1189               </div>
1190            </div>
1191         </div>
1192
1193         <div class="col-sm-12 col-md-4">
1194
1195             <div class="panel panel-primary">
1196               <div class="panel-heading"> 標準ライブラリ </div>
1197               <div class="panel-body">
1198
1199                 <ul>
1200                 <li>I/O 命令</li>
1201                 <li>算術関数</li>
1202                 <li>文字列関数</li>
1203                 <li>リスト関数</li>
1204                 <li>ファイル処理関数</li>
1205                 <li>データベースへの対応 (ODBC, PostgreSQL, SQLite および MySQL)</li>
1206                 <li>セキュリティ関数 (OpenSSL)</li>
1207                 <li>インターネット関数 (LibCurl)</li>
1208                 </ul>
1209               
1210               </div>
1211            </div>
1212
1213         </div>
1214   </div>
1215
1216         <br>
1217         <br>
1218
1219   <div class="row">
1220     <div class="col-sm-12 col-md-4">
1221
1222             <div class="panel panel-primary">
1223               <div class="panel-heading"> CGI ライブラリ (Ring にて記述)  </div>
1224               <div class="panel-body">
1225
1226                 <ul>
1227                 <li>CGI ライブラリ - HTTP Get</li>
1228                 <li>CGI ライブラリ - HTTP Post</li>
1229                 <li>CGI ライブラリ - ファイルのアップロード</li>
1230                 <li>CGI ライブラリ - クッキー</li>
1231                 <li>CGI ライブラリ - URL エンコード</li>
1232                 <li>CGI ライブラリ - テンプレート</li>
1233                 <li>CGI ライブラリ - HTML 特殊文字</li>
1234                 <li>CGI ライブラリ - 関数を使用した HTML の生成</li>
1235                 <li>CGI ライブラリ - クラスを使用した HTML の生成</li>
1236                 <li>CGI ライブラリ - CRUD の用例 (MVC を使用)</li>
1237                 <li>CGI ライブラリ - ユーザーによる用例 (登録、ログインと確認)</li>
1238                 </ul>
1239
1240               
1241               </div>
1242            </div>
1243     </div>
1244
1245     <div class="col-sm-12 col-md-4">
1246
1247             <div class="panel panel-primary">
1248               <div class="panel-heading"> 拡張機能  </div>
1249               <div class="panel-body">
1250
1251                 <ul>
1252                 <li>C/C++ による拡張機能の使用 (シンプルなAPI)</li>
1253                 <li>C/C++ プログラムへの組み込み</li>
1254                 <li>手軽に C/C++ ライブラリと接続するためのコード生成器 (Ring にて記述) があります。</li>
1255                 <li>デスクトップとモバイル用の 2D ゲーム作成 (Allegro ライブラリ)</li>
1256                 <li>デスクトップおよびモバイル用の GUI アプリケーションの作成 (Qt フレームワーク)。</li>
1257                 </ul>
1258               
1259               </div>
1260            </div>
1261     </div>
1262
1263     <div class="col-sm-12 col-md-4">
1264             <div class="panel panel-primary">
1265               <div class="panel-heading"> これ以外にも </div>
1266               <div class="panel-body">
1267
1268                 <ul>
1269                 <li>非常に安定した動作</li>
1270                 <li>十分な処理能力</li>
1271                 <li>完成度の高い取扱説明書</li>
1272                 </ul>
1273               
1274               </div>
1275            </div>
1276     </div>
1277  
1278   </div>
1279
1280
1281  
1282       </div>
1283     </div>  
1284   </div>
1285
1286   
1287  <a id="ringbook" href="https://en.wikibooks.org/wiki/Ring" target="_blank" class="btn btn-default"  style="width:100%">Wikibooks での Ring 紹介記事 (外部サイト)</a>
1288  <a id="ringsamples" href="https://rosettacode.org/wiki/Category:Ring" target="_blank" class="btn btn-default"  style="width:100%">Ring のサンプルソ-ス (Rosetta Code)</a>
1289
1290  
1291   
1292