Chúng ta có thể có được một trích dẫn thực sự trước khi tham khảo năm 1963 của Hugo không? Đúng. John McCarthy đã sử dụng từ "chuỗi" trong các hàm đệ quy của biểu thức tượng trưng và tính toán của chúng bằng máy, Phần I , từ tháng 4 năm 1960.
Đối với các ký hiệu nguyên tử, chúng ta sẽ sử dụng các chuỗi chữ cái và chữ cái Latinh viết hoa
nhưng hữu ích hơn cho câu hỏi này, một tham chiếu đến một chuỗi dưới dạng kiểu dữ liệu:
Bất kỳ chuỗi ký tự được thừa nhận [là] một biểu thức L.
Đó không phải là một ví dụ tuyệt vời. Bằng cách nói "một chuỗi ký tự", McCarthy không sử dụng "chuỗi" theo nghĩa các lập trình viên chuyên ngành nghĩa là ngày nay. Bạn có thể dễ dàng nói "một chuỗi" với một lập trình viên Java và họ sẽ biết rằng phần "của các ký tự" là ẩn: việc sử dụng McCarthy không thể hiện tính năng này. Chúng ta hãy cố gắng quay trở lại những năm 1950, để xem liệu McCarthy đã chơi nó an toàn hay liệu thuật ngữ này thực sự không tồn tại sau đó. LISP có lẽ sẽ không giúp được gì nhiều ở đây, vì nó dựa trên phép tính toán học nên các hàm chuỗi của McCarthy có thể là ứng dụng đầu tiên của ý tưởng để xử lý chuỗi.
Một hệ thống xử lý chuỗi quan trọng của thập niên 1960 là SNOBOL năm 1964 , Ngôn ngữ thao tác chuỗi . Điều này trích dẫn bài báo của McCarthy ở trên, nhưng cũng thảo luận về COMIT và SCL. Công việc họ trích dẫn trên SCL chưa được công bố: một ngõ cụt đáng tiếc.
COMIT dễ theo dõi hơn. Nghệ thuật lập trình máy tính (Tập 1, ấn bản thứ ba, tr.461) cho chúng ta biết VH Yngve đã viết một bài báo CACM năm 1963 về nó. Nhưng tôi đang tìm cách sử dụng "chuỗi" sớm nhất , vì vậy tôi sẽ tìm kiếm tác giả cho các ấn phẩm trước đó.
Cái đầu tiên tôi có thể tìm thấy là Ngôn ngữ lập trình cho dịch thuật cơ học , từ tháng 7 năm 1958. Điều này chỉ chứa một cách sử dụng từ "chuỗi":
Mỗi chuỗi chữ cái liên tục giữa các dấu chấm hoặc dấu cách được tra cứu trong từ điển.
Một lần nữa, cách sử dụng này giống như của McCarthy: đây không phải là bằng chứng cho "chuỗi" được sử dụng theo nghĩa ngày nay. Nhìn vào bài báo một cách chi tiết, chúng ta thấy rằng cấu trúc dữ liệu là một "dòng" trên thẻ (cho phép tiếp tục cho các "dòng" dài hơn).
OK, chúng ta sẽ tiến lên trong lịch sử của COMIT và xem những gì chúng ta có thể nhận được. Tài liệu tham khảo hữu ích đầu tiên là Hệ thống COMIT cho dịch cơ học , từ các thủ tục tố tụng của một hội nghị tháng 6 năm 1959.
Nếu chúng ta muốn thay thế D SIN (F) bằng COS (F) D (F), trong đó F không bị hạn chế và có thể là bất kỳ chuỗi thành phần tùy ý nào, chúng ta sử dụng ký hiệu $ để thay thế cho chuỗi này.
Điều này có vẻ giống với cách chúng ta sử dụng ngày nay: "chuỗi" đứng một mình và như một phần thưởng có một biểu tượng đặc biệt dễ nhận biết: ký hiệu đô la vẫn được sử dụng trong một số hương vị BASIC để biểu thị một biến chuỗi.
Từ khoảng thời gian này, từ "chuỗi" cũng xuất hiện nhiều lần trong ngôn ngữ lệnh A để xử lý các chuỗi ký hiệu của Perlis và Smith từ Kỷ yếu ACM '58, và một lần trong Hệ thống chia sẻ 709: Thực hiện lập trình biểu tượng bằng máy của Boehm và Thép.
Tìm kiếm thư viện kỹ thuật số ACM cho 'chuỗi' vào đầu những năm 1960 mang lại 62 kết quả, bao gồm các tiêu đề như "Xử lý chuỗi trong ALGOL", "Thao tác chuỗi trong ngôn ngữ mới" và "Kỹ thuật lưu trữ kiểu danh sách cho thông tin chữ và số". Có vẻ như ý tưởng đã trở nên cố thủ sau đó.
Tôi sẽ lập luận rằng "chuỗi" trong thuật ngữ khoa học máy tính của nó có nghĩa là một danh sách các nhân vật được sắp xếp trở nên phổ biến trong vài năm khoảng năm 1960. Trước đó, các tác giả như Yngwe và McCarthy có thể nói "chuỗi ký tự" và chắc chắn rằng họ là hiểu, nhưng không thể sử dụng "chuỗi" như một từ trần theo nghĩa nó được sử dụng ngày nay.
Tốc ký có lẽ đã được giới thiệu cho dòng máy tính chính bởi bài báo Perlis và Smith. Nó chưa được trích dẫn rộng rãi, nhưng một trích dẫn quan trọng là cú pháp ngữ pháp và ngữ nghĩa cho ALGOL của Joseph W. Smith vào tháng 4 năm 1960 (trong cùng một vấn đề về CACM như mô tả về LISP của McCarth). Từ tờ giấy đó:
Mục đích của bài viết này là đề xuất một tập hợp cú pháp cú pháp và ngữ nghĩa cho ALGOL. Các phần mở rộng được đề xuất được thiết kế để tạo điều kiện cho việc mô tả thao tác "chuỗi" trong ngôn ngữ đó; chúng không tạo thành một ngôn ngữ toàn diện cho thao tác biểu tượng.
Đối với tôi, điều này tạo thành bằng chứng của "chuỗi" có nghĩa là một kiểu dữ liệu cho tính toán tượng trưng được khẳng định trong từ vựng học thuật, và quan trọng là giới thiệu các công cụ được sử dụng cho tính toán thương mại.
Ngẫu nhiên, Ngôn ngữ lập trình: Lịch sử và Tương lai của Jean Sammet (1972) cho thấy COMIT và SNOBOL là những người khởi xướng thao tác chuỗi, vì vậy tôi khá tự tin rằng sẽ không có ví dụ nào trước đó.