doctree icon indicating copy to clipboard operation
doctree copied to clipboard

「プログラムの実行」を整理

Open scivola opened this issue 5 years ago • 8 comments

「プログラムの実行」には「変数と定数」「擬似変数」など、ここに収めないほうがよくて、しかも他のページと内容がかぶっている節があります。これらを整理したいと思います。

第一弾として、「擬似変数」を削除するプルリクエストを作りました。#1508 ここは単純削除でよいと思います。

「変数と定数」の節は「変数と定数」のページと重複していますが、単純削除でよいか分かりません。

「メソッド」や「代入」の節もほかとかぶっていますが、どのような方針で整理したらよいか分かりません。

いかがでしょうか。

scivola avatar Oct 17 '18 22:10 scivola

Ruby プログラムの実行は文の連なりの評価です。なんらかの形であたえられたプログラムテキストをコンパイルし、BEGIN 文があればそれを評価し、トップレベルの式の連なりを評価し、END ブロックがあれば最後にそれを評価して終了します (終了処理の詳細については 終了処理 を参照のこと)。 https://docs.ruby-lang.org/ja/latest/doc/spec=2feval.html

プログラムの実行の冒頭にこのような文があります。 プログラムテキストをコンパイルするのを理解する上で疑似変数の説明は必要だと思います。

hanachin avatar Jan 21 '20 11:01 hanachin

Ruby プログラムの実行」における「擬似変数」は「変数と定数」における「疑似変数」と重複しているんですよね。 「Ruby プログラムの実行」で擬似変数に触れる必要があるのでしたら「変数と定数」のほうへの参照を設ければいいのではないかと思うのですが,擬似変数がこのページのほかの内容とどのように関係するのか私にはよく解りませんでした。

scivola avatar Jan 23 '20 10:01 scivola

説明しているコンテキストが違うと思います。疑似変数を説明している箇所が何箇所かあること自体は問題ないのではないでしょうか。

疑似変数の niltruefalse が唯一のインスタンスを返すのはRuby プログラムの実行と密接に関わる内容ではないかと思います。 またRuby プログラムの実行時にあたえられたプログラムテキストをコンパイルする際 niltruefalse がローカル変数のように見えるが実際には予約語として処理されているのも、Ruby プログラムの実行と密接に関わる内容だと思います。 なので削除するのは反対です。

hanachin avatar Jan 26 '20 09:01 hanachin

#1508 は reject でも(もちろん)受け入れますので,コアの方々で決めていただければ。 #1508 が否決の場合,この issue 自体 close していただければと思います。

scivola avatar Jan 27 '20 03:01 scivola

このページは目次において「プロセスの実行」のグループにいて、またそれとは別に「Rubyの文法」グループがあります。 200127161146

このことから「Rubyプログラムの実行」ではRubyの文や式がどう評価されていくのかを書くことが期待されているように思えます。 ただ実際のところ「Rubyプログラムの実行」はあんまりメンテできていなさそうです。またどう評価されていくのかは「Rubyの文法」グループ内の記事でより詳しく説明されています。

なので、「Rubyの文法」グループ内の記事で評価のされ方まで解説されている 要素に関しては、「Rubyプログラムの実行」のページからはそのページにリンクを貼るにとどめると良いと思いました。 これは「疑似変数」についてもそうですし、ifなどの制御構文も該当しそうです。

一方、メソッド呼び出しの

続いて引数式を左から右の順番で評価し、レシーバに対してメソッドの検索を行います。検索が失敗したら例外 NameError を発生、成功したらメソッドを実行します。

みたいなのは、「Rubyプログラムの実行」にこそ書かれていて欲しい内容だと思うので、こういうのはそのまま残すのが良いのかなあと思います。

つまり、全体的にはリンク集的な感じにしつつ、プログラムを実行するという観点から補足することがあれば書く、という感じですかね。

pocke avatar Jan 27 '20 07:01 pocke

ただ実際のところ「Rubyプログラムの実行」はあんまりメンテできていなさそうです。

ぱっとみた感じ「これなんだっけ 」とか「まだ」とか「retry 複雑だ… 」とか「remove_instance_variable」とか色々メンテされてなさそうな文言はありますね。 あと文のところが全体的に書いていなかったり。

そういう意味だと、整理する前にメンテナンスされていないことを明示するのがいいのかもしれません。

つまり、全体的にはリンク集的な感じにしつつ、プログラムを実行するという観点から補足することがあれば書く、という感じですかね。

リンク集よさそうです。が、疑似変数のようにプログラムの実行時の動作についても解説されているものは「プログラムの実行」の中で書くことがなくなってしまいそうな気もします。

hanachin avatar Jan 28 '20 11:01 hanachin

そういう意味だと、整理する前にメンテナンスされていないことを明示するのがいいのかもしれません。

そうですねえ、メンテナンスするか、メンテナンスされてないことを明示するか、いっそ消してしまうかするのが良いかなと思います。

リンク集よさそうです。が、疑似変数のようにプログラムの実行時の動作についても解説されているものは「プログラムの実行」の中で書くことがなくなってしまいそうな気もします。

書くことはなくなってもいいんじゃないかなと思っています。 「true, falseなどはローカル変数のように見えますが実際には予約語として処理され、決まった値を返します。代入はできません。詳しくは <<リンク>> を参照してください」のような感じで、そういう存在があることだけ分かるようになってればいいかなと思っています

ただのリンク集だとあんまり意味はないので、前のコメントで書いた引数の評価順とか、プログラムの実行という意味で書きたいところを充実させたいですね。 制御構造のドキュメントも、細かい挙動についてはプログラムの実行のページに移すと一貫性はありそうです。ただ移してしまうと今までドキュメントを読んでいた人が期待する内容を見つけづらくなってしまう気がしていて、慎重にやる必要はあるかなあと思います

pocke avatar Jan 28 '20 12:01 pocke

整理する前にメンテナンスされていないことを明示するのがいいのかもしれません。

ええ,「書きかけ」感の強いページや,誤りが発見されていながらすぐには修正できそうにないページがいくつかありますので,そういうのに注意を喚起する標準的な方法(表示方法)が必要だと前から思っていました。

scivola avatar Jan 28 '20 12:01 scivola