質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

2318閲覧

エスケープシーケンスの語源

kai20000803

総合スコア29

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

2クリップ

投稿2021/04/23 13:20

エスケープシーケンスの語源について
どうしてエスケープシーケンスというのですか?
要素としては、エスケープとシーケンスがあると思うのですが
どうしてエスケープなのか、どうしてシーケンスなのかが知りたいです。よろしくお願い致します!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/04/23 13:35

どういう局面でいうところのものが知りたいの?
guest

回答2

0

ベストアンサー

エスケープシーケンスの語源は、キーボードにあるエスケープキーによって生成されるエスケープコードを使った文字列ということのようです。以下をご覧ください。

Esc key
Escape character

エスケープキーの始まりは

The name of the equivalent key on some early Teletype Model 33 keyboards was labeled Alt Mode..., the alternative mode of operation causing the escapement to treat the following one character in a special way.

また、シーケンス(列)である理由は、以下のように書かれています。
An escape character may not have its own meaning, so all escape sequences are of two or more characters.
つまり単独ではなく常に エスケープ文字+ひとつ以上の文字 なので列と呼ぶということです。

と書かれています。
alternative key(代替キー)と呼ばれていたものがエスケープキーになったようです。

escapeという言葉の語源は「外套を脱ぐ」です。つまり、見映えが変わるというような意味です。sequenceという言葉の語源は「追いかける」です。
詳しくはescapesequenceを見てください。

ここからは推測ですが、見映えを変えるという意味で作られたキーを使って別の文字コードを入れるようになったという使い方が最初にあったのでしょう。

投稿2021/04/23 22:47

編集2021/04/23 22:55
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikadzuchi

2021/04/24 16:09

> つまり、見映えが変わるというような意味です。 初耳です。出典はありますか?
guest

0

まず簡単な方で、シーケンスというのは並びです。文字の並びですね。

エスケープというのは脱出で、通常の状態の意味から離れて(脱出して)別の状態の意味に移行すると言うことです。

例1:プログラミング言語の文字列でのエスケープシーケンス
文字列"ABC"は、A B Cという英字そのままの意味を持ちます。
"ABC\n"は、\をエスケープ文字(エスケープシーケンスの開始文字)として、次の一文字nを英字のnじゃなくて改行の意味に変えます。エスケープ状態(脱出状態)からいつ元の文字列の状態に戻るかはものに依ります。\010だと3文字続きますね。

例2:ANSIの画面制御シーケンス
ESC [ 2 J」という文字の並びを出力すると、[Jなどは画面に表示されず画面がクリアされます。これらの文字が通常の文字の意味ではなくなっているからです。ESCで通常の文字表示の意味から脱出して、Jで戻ってきます。

似て異なる概念に「クォート」(引用)があります。
これはエスケープと逆に、「特別な意味を持たされている文字を、見たままの文字の意味に戻す」ということです。

例:
*は、正規表現の中では「*という文字」の意味を失い(*という文字にはマッチしない)、「直前の0回以上の繰り返し」という特別な意味を持たされています。*とクォートすると元の「*という文字」に戻り、*という文字にマッチするようになります。

多くのプログラミング言語では、同じ\という文字がエスケープしたりクォートしたりするので、混同されていることがほとんどです。

見たままの文字の意味と違う意味を与える・・・脱出させる・・・エスケープ
見たままの文字の意味に戻す・・・引用する・・・クォート

投稿2021/04/23 13:49

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

68user

2021/04/23 15:28

「クォートとは、特別な意味を持たされている文字を、見たままの文字の意味に戻すこと」「正規表現の * はクォート」というのは初めて聞きました。これって一般的な定義でしょうか? 原典・一次資料等ございましたらお教えください。
otn

2021/04/23 16:09

\だから混同があると思うのですが、「クォートとは、特別な意味を持たされている文字を、見たままの文字の意味に戻すこと」は、シェルだと引用符でも可能ですね。 echo '*' echo * は同じ意味です。どちらも、引用、クォート。 引用符だと、「クォートとは、特別な意味を持たされている文字を、見たままの文字の意味に戻すこと」は直感的に理解できると思います。 * はそれを別の記号で実現しているだけです。
otn

2021/04/24 03:23

身近な資料だと、 man bashのクォートの節に、下記の記述が。 クォート (quoting) を使うと、 特定の文字や単語が持つシェルに対する特別 な意味をなくせます。 クォートを用いると、特殊文字の特殊な扱いを無効にし たり、 予約語が予約語として識別されることを防いだり、 パラメータの展開 を防いだりできます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問