2009-11-04 14 views
3

純粹想知道...因爲他們仍然在周圍,並在今天在C#中使用...字符串轉義碼( n, t ...)來自哪裏?

在哪裏使用字符串轉義碼的模式來自?它首先出現在什麼語言?什麼語言,如果有的話,以不同的方式解決了這個問題?

+7

謝謝谷歌:http://www.bobbemer.com/ESCAPE.HTM – 2009-11-04 18:13:24

+1

這是在談論ASCII ESC字符,以及基於它的序列。它並沒有真正談論在字符串中使用引入字符('\')以允許插入其他不可打印的ASCII字符的想法。 – 2009-11-04 18:49:07

+0

這就是爲什麼它是一個評論,而不是一個答案.... – 2009-11-04 20:05:53

回答

3

我懷疑這些轉義代碼源於B,一種用於霍尼韋爾6000 GCOS操作系統的高級彙編語言。該語言是在貝爾實驗室基於英國語言BCPL開發的。由於BCPL相當羅嗦,B開發人員簡化了語法並添加了大括號來代替BEGIN和END。這就是B的名字來源,因爲它是BCPL的縮寫形式。

稍後,貝爾實驗室的一些人創建了一種語言,它是B的繼承者,主要是通過添加鍵入和標準I/O庫。因爲這是B的繼任者,他們選擇了BCPL這個名字中的下一個字母。

我不記得在B之前看到反斜線符號,並且由於C和UNIX從B繼承它,所以我認爲B是這種表示法的起源,或者更具體地說,貝爾實驗室是起源。在B之前的其他貝爾實驗室軟件中使用這種符號是完全可能的,因爲它們是軟件的多產生產者,其中許多軟件是免費分發給大學的,比如我在1970年代中期參加的大學。

順便說一句,轉義序列的想法早在那之前就存在了,可以追溯到19世紀的Baudot代碼,它是一個固定長度的5位二進制代碼,旨在代替可變長度莫爾斯電碼。 Baudot的SI(Shift In)和SO(Shift Out)代碼將字母轉換爲大寫字母,就像打字機上的Shift鍵一樣。

+0

反斜槓符號是C開發,B使用星號('* n')。 http://cm.bell-labs.com/cm/cs/who/dmr/btut.html – jbcreix 2009-11-16 03:27:15

+0

Err,BCPL沒有'begin'或'end'。從內存來看,它是'$('和'$)'。我也不記得它特別羅嗦(除非你正在談論它所基於的CPL)。 – paxdiablo 2011-01-06 13:27:44