コマンドライン引数を「argv」と命名する規則はどこから来たのですか?


18

ように思えるのPythonPHP、およびRubyは、すべてのコマンドライン引数のリストを参照するために名前「ARGV」を使用します。名前「argv」はどこから来たのですか?なぜ「引数」のようなものではないのですか?

私の推測では、vは「ベクトル」を表すCに由来するものです。ウィキペディアには、次のような脚注があります。

この変数の名前のベクトル用語は、文字列を参照するために従来の意味で使用されます。

ただし、この情報のソースはありません。本当に、さらにさかのぼるルートがあるかどうか興味があります。Cがそれを使用したのは、その前の何かがそれを使用したからですか


2
そして、私はいつも「v」は「価値」を
意味していました

回答:


25

他の回答でargvは、Cに由来することに注意していますが、Cは配列を「ベクトル」と呼ぶアイデアをどこで得ましたか?

直接、それはBCPLからました。けれどもがargv(文字列)の引数のベクトルを指し、BCPLはベクトルに保存されている文字列を持っていたが、彼らは文字列リテラルであり、彼らはパスカル文字列のように働きました。ベクトルには2つの要素がありliteral!0ましたliteral!1。長さat と文字at です。Clive Featherによると、文字列は文字配列に「アンパック」して操作し、配列を変換してから文字列に「再パック」します。これを文字列文字配列であるCと比較してください。

はい、そうです、Cは以前に何か他のことを行っていたため、ベクトルにvを使用しました。さて、BCPL以前はこのようにベクターを使用していましたか?BCPL自体は、「Cambridge [またはCombined]プログラミング言語」を単純化したものです。これvectorは、1次元配列matrixの同義語および2次元配列の同義語として使用さます。これはベクトルと行列の数学の表記法と一致していますが、CPLでは単なる便利なニーモニックであり、数学的な構造に関連付けられたプロパティはありません。

コンピューティング言語に関してさらに時間を遅らせることはできますか?トレイルの潜在的な分岐の1つが冷たくなっています。CPLはAlgol 60(1963年の更新)の影響を強く受けました。現在、ALGOL 68にはbitsand などの「パックされたベクトル」として記述されたタイプbytesがありましたが、これらはARRAY配列を参照していた以前のリリースのAlgolにはありませんでした。BCPLは1966年から来ているため、CPLはそれ以前(ただし1963年以降)でなければなりませんでした。ALGOL68(1968年と1973年に標準化)は直接的な影響を与えることはできませんでした。

一方、CPLの主な機能はMcCarthyのLISPシステムにも言及しています。これは、システム自体のデータ構造を参照するためにベクターを使用しませんが、それらはS式M式、およびL式です(L式は文字列であるため、ベクトルと文字列の間の関連付けはなくなりました)。ない別の意味で使用するベクターは、「いつでも機械の状態」を表す「変数の数の値を」表現します。そのため、コメントで行われた仮定の証拠があります:コンピューティングで「配列」を意味する「ベクトル」という言葉は、数学で同様の用語を適用することから来るということです。


1
また、CとBCPLの間で行われていたように、Bにも存在していました。
ロビーディー

5
そして、BCPLはどこで入手しましたか?「ベクトル」が値の1次元リストである数学から。
カレブ

2
文字列をベクトルとして表現することは、 BCPLよりずっと古いです(たとえば、計算理論に関する古い本を参照してください)。実際には、概念があり、おそらく単語「文字列」より古い (文字列など)自体...
BlueRaja -ダニーPflughoeft

1
@Calebは正しいです。BCPL(〜1967)およびAPL(〜1960)の時点で、ほとんどのプログラマーは数学部門で教育を受けていました。当時、学部CSプログラムはほとんどありませんでした。
ロスパターソン

2
@RossPatterson CPLはケンブリッジから来ています。ケンブリッジは1953年からコンピューターサイエンスの学位を取得しています(ただし、変換コースとして)。1960年代までに、CSの卒業生に足りない数少ない場所の1つになる可能性がありました。

12

argvmain()関数はargv、プログラムへの引数のベクトルを表すパラメーターを受け取るCから取得されます。また、Unixから来たと言うこともできます。これは、ほとんどのUnix開発がCで行われ、UnixとCには長い歴史があるため、Cから来たということとほぼ同じです。


1
常にargvは「引数の値」を意味すると思っていました。何か新しいことを学んだことを嬉しく思います:)
ホンザブラベック

2
Cの場合、配列の次元は固定されていないため、Right and argc(argument count)はアイテムの数でしたargv
ロスパターソン

9

Cでは、main()関数は2つのパラメーターを取ることができます。argc「引数カウント」argvを表す、および「引数ベクトル」を表す。Cでは、ベクターのような派手なオブジェクトはありませんargc。そのため、アイテムの数をとして渡す必要があります。対照的に、あなたが言及した言語には、ベクトルやリストのようなものがあり、それぞれのサイズを知っているため、argc必要ありません。しかし、名前はargv固まりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.