「ストリング」の語源


58

したがって、一連のことは一連のことであり、文字/バイトなどの連続であることは明らかです。文字列と呼ばれることもあります。しかし、誰が最初に文字列と呼んだのでしょうか?そしていつ?そして、どのような文脈でそれが立ち往生しましたか?私はいつもこれについて疑問に思っていました。


10
すでに尋ねたstackoverflowの上
アルプ

1
@マーク申し訳ありませんが、それが慣習であることに気づきませんでした。理にかなっています。
アルプ

1
問題ありません。あなたや他の人の参考のために(この質問は重複としてフラグが立てられています)、Stack Overflowに存在する質問はこの質問のステータスに影響しませんが、ネットワーク上の他の質問にコメントしてメモすることは間違いなく役立ちますそれが答えに役立つ可能性があります。

1
Albは、user4051の素晴らしい回答で、stackoverflowの質問を参照しているコメントを削除し、この質問へのリンクをそこに戻すことをお勧めします。
タイラーコリアー

1
私は閉会に投票したが、この質問を道標として残すべきだと思うことに注意してください。この質問の答えは、Programmers.SEまたはStack Overflowの他の同様の質問の答えよりもはるかに徹底的で完全です。これも客観的に答えられる興味深い質問です。

回答:


47

Hugoが1963年に引用する前に、実際の引用を入手できますか?はい。ジョン・マッカーシーは、1960年4月から、シンボリック式の再帰関数とその機械による計算、パートIで「文字列」という言葉を使用しました。

原子記号の場合、大文字のラテン文字と数字の文字列を使用します…

しかし、この質問にとってより便利なのは、データ型としての文字列への参照です:

許可される文字の文字列はすべて[L]式です。

それは素晴らしい例ではありません。「文字列」と言うことで、マッカーシーは、プログラマーが今日意味する特殊な意味で「文字列」を使用していません。Javaプログラマーに「文字列」と簡単に言うと、「文字の」部分が暗黙的であることがわかります。McCarthyの使用はこの機能を実証していません。マッカーシーがそれを安全にプレイしていたのか、それともその用語が本当に存在しなかったのかを確認するために、1950年代に戻ろうとします。LISPはおそらく数学的な計算に基づいているため、ここではあまり役に立たないでしょう。そのため、McCarthyの文字列関数は、文字列処理へのアイデアの最初の応用であったかもしれません。

1960年代の重要な文字列処理システムは、1964年の文字列操作言語SNOBOLでした。これは上記のMcCarthyの論文を引用しますが、COMITとSCLについても説明します。彼らがSCLについて引用している仕事は未発表であり、不運な行き止まりです。

COMITは追跡が簡単です。Art of Computer Programming(第1巻、第3版、p.461)は、VH Yngveが1963年のCACM記事を書いたことを示しています。しかし、私は「文字列」の最も早い使用を探しているので、著者は以前の出版物を検索します。

最初に見つけることができるのは、1958年7月からの機械翻訳用のプログラミング言語です。これには、「string」という単語の使用が1つだけ含まれています。

句読点またはスペースの間の文字の各連続文字列は、辞書で検索されます。

繰り返しますが、この使用法はマッカーシーの使用法に似ています。これは、現在の意味で使用されている「ストリング」の証拠ではありません。論文を詳細に見ると、データ構造はカード上の「行」であることがわかります(より長い「行」の継続を可能にします)。

OK、私たちはCOMITの歴史の中で前進し、何が得られるかを見ていきます。最初の有用なリファレンスは、1959年6月の会議の議事録からの機械翻訳用のCOMITシステムです

D SIN(F)をCOS(F)D(F)で置き換えたい場合、Fは無制限で、構成要素の任意のシーケンスである可能性があるため、この文字列を表す表記法$を使用します。

これは、今日の使用方法に似ているようです。「文字列」は単独で、ボーナスには認識可能な特殊記号があります。一部のBASICフレーバーでは、文字列変数を表すためにドル記号が使用されます。

この頃から、単語「文字列」もで何度も表示される記号の文字列を処理するためのコマンド言語 ACM '58会報からペルリスとスミスを、一度でシェア709システム:シンボリックプログラミングのマシン実装ベームによると、鋼。

1960年代初期にACMデジタルライブラリで「文字列」を検索すると、「ALGOLでの文字列処理」、「新しい言語での文字列操作」、「英数字情報のリスト型保存技術」などのタイトルを含む62の結果が得られます。それまでにアイデアは定着しているようです。

私は、文字の順序付けられたリストとしてのコンピューターサイエンスの専門用語の意味での「文字列」は、1960年頃の数年で一般的になったと主張します。その前に、YngweやMcCarthyのような著者は、「文字列」と言い、理解されましたが、今日使用されている意味で「文字列」をむき出しの単語として使用できませんでした。

速記は、おそらくPerlis and Smithの論文によってコンピューティングの主流に導入されました。広く引用されているわけではありませんが、1960年4月にジョセフ・W・スミスが書いたALGOLへの構文的および意味的拡張があります(マッカーシーのLISPの記述と同じCMCM)。その論文から:

このホワイトペーパーの目的は、ALGOLの構文および意味の拡張セットを提案することです。提案されている拡張機能は、その言語での「文字列」操作の説明を容易にするように設計されています。それらは、シンボル操作のための包括的な言語を構成しません。

私にとって、これは、学術用語集で確認されている記号計算のデータ型を意味する「文字列」の証拠を構成し、商業計算に使用されるツールに重要に導入されました。

ちなみに、Jean Sammet(1972)の「プログラミング言語:歴史と未来」では、COMITとSNOBOLが文字列操作の先駆者であったことが示唆されているため、以前の例はないと確信しています。


2
ワオ。素晴らしい考古学があります。
sclv

4
これは、列車がウェディングドレスの列車のように使用されていた「車の列車」を、輸送手段としての「列車」に変えたプロセスを思い出させます。「文字列」から「文字列」への移行が重要です
ケイトグレゴリー

2
OEDはすでにこの作業を行っています。文字列のエントリ(paywall、ただし英国の図書館員はおそらくアクセスできる)には、「1954 Jrnl。Assoc。Computing Machinery 1 120/2アルファベットの有限の、場合によってはヌルのメンバーのシーケンスは、文字列と呼ばれます。」まさに現代の使用法に思えます。
AakashM

1
@AakashMはそのリファレンスに感謝します。1954年の結果は、1950年代に見つけた他の結果と一致しています。「文字列」という言葉は、その意味が説明されている場合にのみ「文字列」という意味で使用されます。著者が説明なしで「文字列」を使用できるようになったのは1960年頃であり、質問で使用されるより具体的な意味を持つ専門用語になりました。

1
@AakashM 1954年の数学などのOEDクラス。明確な順序の記号または言語要素のシーケンス。1932年のシンボリックロジックの本の最初の例。コンピューティング用に個別のエントリがあります。レコードまたはデータの線形シーケンス、私は最初の1956年の例を私の答えに加えました。
ヒューゴ

14

完全な答えではありませんが、「1列に並べられた多数のオブジェクト」を意味する文字列の使用は、1400年代後半にすでに存在していました。ソース

これは基本的に同じ使用法です。


5

コンピューティングで最初に見つけた参考文献は、1963年 3月のMETEOR: MITのAI LabsのDaniel G. Bobrowによる文字列変換のためのLISPインタープリターです

オックスフォード英語辞典はから以前の計算例がある1956の問題計算機学会誌を

完全にソートされたシーケンスが取得されるまで、制御フィールドの文字列を往復するための領域が確保されます。

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