นิรุกติศาสตร์ของ "String"


58

ดังนั้นจึงเห็นได้ชัดว่าสตริงของสิ่งต่าง ๆ เป็นลำดับของสิ่งต่าง ๆ และลำดับของอักขระ / ไบต์ / ฯลฯ อาจจะเรียกว่าสตริงเช่นกัน แต่ใครเป็นคนแรกที่เรียกพวกเขาว่าสตริง? และเมื่อ? และในบริบทใดที่มันติดอยู่ ฉันสงสัยเกี่ยวกับเรื่องนี้เสมอ


10
ถามไปแล้วเกี่ยวกับ stackoverflow
Alb

1
@ Mark ขออภัยไม่ทราบว่าเป็นแบบแผน มีเหตุผล.
Alb

1
@ ไม่มีปัญหา สำหรับการอ้างอิงของคุณและของคนอื่น (คำถามนี้ถูกตั้งค่าสถานะว่าซ้ำซ้อน) คำถามที่มีอยู่ใน Stack Overflow ไม่ส่งผลกระทบต่อสถานะของคำถามนี้ แต่เป็นประโยชน์อย่างมากในการแสดงความคิดเห็นและจดบันทึกคำถามอื่น ๆ บนเครือข่าย ที่สามารถช่วยตอบคำถามได้

1
Alb ด้วยคำตอบที่ยอดเยี่ยมของผู้ใช้ 4051 ฉันขอแนะนำให้ลบความคิดเห็นของคุณที่อ้างอิงคำถามสแต็คโอเวอร์โฟลว์และวางลิงก์กลับไปที่คำถามนี้
Tyler Collier

1
โปรดทราบว่าในขณะที่ฉันโหวตให้ปิดฉันคิดว่าเราควรเก็บคำถามนี้ไว้เป็นป้ายบอกทาง คำตอบของคำถามนี้ละเอียดกว่าและครบถ้วนกว่าคำตอบของคำถามที่คล้ายกันอื่น ๆ ใน Programmers.SE หรือใน Stack Overflow นี่เป็นคำถามที่น่าสนใจที่ตอบได้อย่างเป็นกลาง

คำตอบ:


47

เราจะได้รับการอ้างอิงที่แท้จริงก่อนที่จะอ้างอิงของ Hugo ในปี 1963 หรือไม่? ใช่. John McCarthy ใช้คำว่า "string" ในฟังก์ชั่น Recursive ของการแสดงออกเชิงสัญลักษณ์และการคำนวณโดยใช้เครื่อง Part Iตั้งแต่เมษายน 1960

สำหรับสัญลักษณ์อะตอมเราจะใช้สตริงตัวอักษรและตัวเลขละตินตัวพิมพ์ใหญ่ ...

แต่มีประโยชน์มากกว่าสำหรับคำถามนี้การอ้างอิงถึงสตริงเป็นประเภทข้อมูล:

สตริงของอักขระที่ยอมรับ [คือ] นิพจน์ L

นั่นไม่ใช่ตัวอย่างที่ดี โดยการพูดว่า "สตริงอักขระ" McCarthy ไม่ได้ใช้ "string" ในโปรแกรมเมอร์ที่มีความหมายเฉพาะในปัจจุบัน คุณสามารถพูดว่า "สตริง" กับโปรแกรมเมอร์ Java ได้อย่างง่ายดายและพวกเขาจะรู้ว่าส่วน "ของตัวละคร" นั้นโดยนัย: การใช้งานของ McCarthy ไม่ได้แสดงให้เห็นถึงคุณลักษณะนี้ เราลองย้อนกลับไปในช่วงทศวรรษ 1950 เพื่อดูว่า McCarthy เล่นปลอดภัยหรือไม่ LISP อาจจะไม่ช่วยอะไรมากที่นี่เนื่องจากมันใช้แคลคูลัสเชิงคณิตศาสตร์ดังนั้นฟังก์ชันสตริงของ McCarthy อาจเป็นแอปพลิเคชั่นแรกของแนวคิดในการประมวลผลสตริง

ที่สำคัญระบบสตริงการประมวลผลของปี 1960 เป็น 1964 ของSNOBOL สตริงภาษาการจัดการ เอกสารนี้อ้างถึงบทความของ McCarthy ข้างต้น แต่ยังกล่าวถึง COMIT และ SCL งานที่พวกเขาอ้างถึงใน SCL นั้นไม่ได้ถูกตีพิมพ์นั่นคือจุดจบที่โชคร้าย

COMIT ง่ายต่อการติดตาม The Art of Computer Programming (เล่มที่ 1 ฉบับที่สามหน้า 44) บอกเราว่า VH Yngve เขียนบทความ 1963 CACM แต่ฉันกำลังมองหาการใช้ "สตริง" ที่เร็วที่สุดดังนั้นฉันจะทำการค้นหาผู้เขียนสำหรับสิ่งพิมพ์ก่อนหน้า

สิ่งแรกที่ฉันสามารถหาได้คือภาษาการเขียนโปรแกรมสำหรับการแปลเชิงกลตั้งแต่เดือนกรกฎาคม 2501 ซึ่งมีเพียงการใช้คำว่า "string" เท่านั้น:

แต่ละสตริงของตัวอักษรต่อเนื่องระหว่างเครื่องหมายวรรคตอนหรือช่องว่างจะค้นหาในพจนานุกรม

อีกครั้งการใช้งานนี้ก็เหมือนของ McCarthy นี่ไม่ใช่หลักฐานสำหรับ "สตริง" ที่ใช้ในความหมายปัจจุบัน เมื่อดูรายละเอียดในกระดาษเราจะเห็นว่าโครงสร้างข้อมูลเป็น "เส้น" บนการ์ด (เพื่อให้สามารถต่อเนื่อง "เส้น" อีกต่อไป)

ตกลงเราจะเดินหน้าต่อไปในประวัติของ COMIT และดูว่าเราจะได้อะไร การอ้างอิงที่มีประโยชน์ครั้งแรกคือระบบ COMIT สำหรับการแปลเชิงกลจากการดำเนินการประชุมมิถุนายน 1959

หากเราต้องการแทนที่ D SIN (F) ด้วย COS (F) D (F) โดยที่ F ไม่ จำกัด และอาจเป็นลำดับขององค์ประกอบใด ๆ โดยพลการเราใช้สัญกรณ์ $ เพื่อใช้แทนสตริงนี้

ดูเหมือนว่าจะคล้ายกับวิธีที่เราใช้ในปัจจุบันมากขึ้น: "สตริง" ยืนอยู่คนเดียวและโบนัสมีสัญลักษณ์พิเศษที่เป็นที่รู้จัก: เครื่องหมายดอลลาร์ยังคงใช้ในรสชาติพื้นฐานบางอย่างเพื่อแสดงถึงตัวแปรสตริง

จากช่วงเวลานี้คำว่า "string" ก็ปรากฏขึ้นหลายครั้งในภาษาคำสั่งสำหรับจัดการสตริงของสัญลักษณ์โดย Perlis และ Smith จาก ACM '58 Proceedings และอีกครั้งในระบบ Share 709: การใช้งานเครื่องของการเขียนโปรแกรมสัญลักษณ์โดย Boehm และ เหล็ก.

การค้นหาไลบรารีดิจิทัล ACM สำหรับ 'string' ในต้นปี 1960 ให้ผลลัพธ์ 62 รายการรวมถึงชื่อเรื่อง "การจัดการสตริงใน ALGOL", "การจัดการสตริงในภาษาใหม่" และ "เทคนิคการจัดเก็บรายการข้อมูลสำหรับตัวอักษรและตัวเลข" ดูเหมือนว่าความคิดจะกลายเป็นที่ยึดที่มั่นแล้ว

ฉันจะยืนยันว่า "สตริง" ในความหมายของศัพท์แสงวิทยาศาสตร์คอมพิวเตอร์เป็นรายการตัวอักษรที่สั่งเป็นเรื่องธรรมดาในช่วงสองสามปีประมาณ 2503 ก่อนหน้านั้นผู้เขียนเช่น Yngwe และ McCarthy สามารถพูดว่า "สตริงของอักขระ" และต้องแน่ใจว่าพวกเขา เข้าใจแล้ว แต่ไม่สามารถใช้ "สตริง" เป็นคำเปล่าได้ในความหมายที่ใช้ในปัจจุบัน

การจดชวเลขอาจแนะนำให้รู้จักกับการคำนวณหลักโดยกระดาษ Perlis และ Smith มันยังไม่ได้รับการกล่าวถึงอย่างกว้างขวาง แต่มีการอ้างอิงที่สำคัญอย่างหนึ่งคือโจทย์ดับบลิวดับบลิวสมิ ธ ในเดือนเมษายนปี 1960 โดยโจเซฟดับบลิวสมิ ธ (ในฉบับเดียวกันของ CACM จากกระดาษนั้น:

วัตถุประสงค์ของบทความนี้เพื่อเสนอชุดของการเสริมประโยคและความหมายของ ALGOL ส่วนขยายที่เสนอถูกออกแบบมาเพื่ออำนวยความสะดวกในรายละเอียดของการจัดการ "สตริง" ในภาษานั้น พวกเขาไม่ได้เป็นภาษาที่ครอบคลุมสำหรับการจัดการสัญลักษณ์

สำหรับฉันแล้วนี่ถือเป็นหลักฐานของ "สตริง" หมายถึงประเภทข้อมูลสำหรับการคำนวณเชิงสัญลักษณ์ที่ได้รับการยืนยันในพจนานุกรมทางวิชาการและแนะนำให้รู้จักกับเครื่องมือที่ใช้สำหรับการคำนวณเชิงพาณิชย์

อนึ่งภาษาโปรแกรม: ประวัติศาสตร์และอนาคตโดย Jean Sammet (1972) แสดงให้เห็นว่า COMIT และ SNOBOL เป็นต้นกำเนิดของการจัดการสตริงดังนั้นฉันค่อนข้างมั่นใจว่าจะไม่มีตัวอย่างก่อนหน้านี้


2
ว้าว. โบราณคดีที่ดีที่นั่น
sclv

4
สิ่งนี้ทำให้ฉันนึกถึงกระบวนการที่เปลี่ยน "รถไฟรถยนต์" ซึ่งรถไฟถูกนำมาใช้เช่นรถไฟของชุดแต่งงานกลายเป็น "รถไฟ" เป็นรูปแบบการขนส่ง การเปลี่ยนจาก "สตริงของอักขระ" เป็นเพียง "สตริง" คือคีย์
Kate Gregory

2
OED ได้ทำงานนี้แล้ว รายการสำหรับสตริง (paywall แต่สมาชิกห้องสมุดในสหราชอาณาจักรอาจสามารถเข้าถึงได้) มี "1954 Jrnl รศ. การคำนวณเครื่องจักร 1 120/2 จำกัด แน่นอนอาจเป็นโมฆะลำดับของสมาชิกของตัวอักษรเรียกว่าสตริง" ซึ่งดูเหมือนว่าฉันจะใช้งานที่ทันสมัย
AakashM

1
@AakashM ขอบคุณสำหรับการอ้างอิงนั้นผลที่ได้ในปี 1954 นั้นสอดคล้องกับผลการค้นหาอื่น ๆ ที่ฉันพบในปี 1950 คำว่า "สตริง" จะใช้เฉพาะใน "สายอักขระ" รู้สึกเมื่อความหมายของมันในแง่ที่ว่าจะมีการอธิบาย จนกระทั่งเมื่อราวปี 1960 ผู้เขียนสามารถใช้ "string" โดยไม่มีคำอธิบายและมันกลายเป็นศัพท์แสงที่มีความหมายเฉพาะมากกว่าที่ใช้ในคำถาม

1
@AakashM คลาส OED ที่ 1954 ภายใต้คณิตศาสตร์ ฯลฯ ลำดับของสัญลักษณ์หรือองค์ประกอบทางภาษาตามลำดับที่แน่นอนพร้อมด้วยตัวอย่างแรกจากหนังสือSymbolic Logic 2475 พวกเขามีรายการแยกต่างหากสำหรับการคำนวณ ลำดับเชิงเส้นของระเบียนหรือข้อมูลที่ผมได้เพิ่มตัวอย่าง 1,956 คนแรกที่คำตอบของฉัน
Hugo

14

ไม่ใช่คำตอบที่สมบูรณ์ แต่การใช้สตริงเพื่อหมายถึง "จำนวนวัตถุที่จัดเรียงในบรรทัด" นั้นมีอยู่ราว ๆ ปลายทศวรรษที่ 1400 แหล่ง

นี่คือการใช้งานเดียวกันเป็นหลัก


5

การอ้างอิงที่เร็วที่สุดที่ฉันสามารถหาได้ในการคำนวณคือจากMeteorของมีนาคม1963 : LISP Interpreter สำหรับการแปลงสตริงโดย Daniel G. Bobrow ที่ AI Labs ของ MIT

Oxford อังกฤษมีตัวอย่างการคำนวณก่อนหน้านี้จาก1956ปัญหาของวารสารของสมาคมเพื่อการคำนวณ :

พื้นที่ถูกตั้งค่าไว้สำหรับผูกสายของเขตข้อมูลการควบคุมกลับไปกลับมาจนกว่าจะได้รับการเรียงลำดับอย่างสมบูรณ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.