1 điểm bởi GN⁺ 2024-07-19 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cuộc phỏng vấn ngắn với Tiến sĩ Brian Kernighan, người đồng sáng lập AWK

    • Giới thiệu về Tiến sĩ Brian Kernighan

      • Tiến sĩ Brian Kernighan là một nhà khoa học máy tính người Canada, đã đóng góp vào quá trình phát triển UNIX tại Bell Labs
      • Ông đồng tác giả cuốn sách nền tảng về ngôn ngữ lập trình C, "The C Programming Language", cùng với Dennis Richie
      • Từ năm 2000, ông đào tạo thế hệ lập trình viên tiếp theo tại Princeton University
      • Ông nổi tiếng là người viết chương trình "Hello World!" đầu tiên
    • Ý tưởng mới của AWK

      • Ý tưởng cốt lõi của AWK là mảng kết hợp (associative arrays)
      • Vào thời điểm đó đây là một khái niệm mới, nhưng hiện nay nó được dùng trong hầu hết các ngôn ngữ dưới dạng hàm thư viện (hashmaps trong Java hoặc C++) hoặc như một phần của chính ngôn ngữ (dictionaries trong Perl và Python)
      • Mảng kết hợp là một cấu trúc rất mạnh, có thể được dùng để mô phỏng nhiều kiểu cấu trúc dữ liệu khác nhau
      • Mô hình pattern-action khi đó cũng chưa được sử dụng rộng rãi, nhưng là một cách hiệu quả để tổ chức những phép tính cụ thể
    • Tài liệu tham khảo khi tạo ngôn ngữ lập trình

      • Tiến sĩ Kernighan: "Không có"
      • Vào thập niên 1970, có rất nhiều ngôn ngữ chuyên dụng mới xuất hiện và hầu như không có nhiều tài liệu đi trước đáng để tham khảo
      • Yacc là một công cụ quan trọng giúp tạo ngữ pháp và thử nghiệm một cách dễ dàng
      • Lex đóng vai trò tương tự ở mức từ vựng, thay thế nhiều đoạn mã nhàm chán bằng một tập quy tắc
      • Lex và Yacc là những ví dụ về ngôn ngữ pattern-action, và đã tạo nên một vòng lặp tích cực cho nhau
    • Lời khuyên cho những người trẻ quan tâm đến thiết kế ngôn ngữ lập trình

      • Ông khuyên hãy thử thiết kế và hiện thực một ngôn ngữ chuyên dụng nhỏ
      • Việc này rất thú vị, hữu ích và dễ hơn nhiều so với việc tạo ra một ngôn ngữ thay thế cho Rust hay C++
      • Ông khuyến nghị tìm những công việc có thể tự động hóa rồi tạo một trình biên dịch đơn giản cùng runtime cho chúng
      • Bài viết liên quan do Jon Bentley viết từ lâu vẫn còn nguyên giá trị đến nay
    • Nguồn ảnh

      • Wikimedia Commons

Tóm tắt của GN⁺

  • Tiến sĩ Brian Kernighan là một nhân vật quan trọng đã đóng góp cho sự phát triển của UNIX và ngôn ngữ C, đồng thời là người tạo ra ngôn ngữ AWK với mảng kết hợp và mô hình pattern-action
  • Mảng kết hợp là một cấu trúc dữ liệu mạnh hiện được sử dụng trong phần lớn các ngôn ngữ lập trình
  • Với các lập trình viên trẻ, việc thiết kế và hiện thực một ngôn ngữ chuyên dụng nhỏ là rất hữu ích
  • Yacc và Lex là những công cụ giúp đơn giản hóa việc phân tích ngữ pháp và từ vựng, đồng thời là các ví dụ tốt về ngôn ngữ pattern-action

1 bình luận

 
GN⁺ 2024-07-19
Ý kiến trên Hacker News
  • Brian Kernighan gia nhập khoa CS của Princeton vào năm 2000, nhưng ông đã từng giảng dạy một lớp từ khi còn ở Bell Labs Research vào năm 1993
  • Một sinh viên đã mang đến lớp một chiếc laptop 386sx (chạy Linux thời kỳ đầu) và cung cấp câu trả lời cho một câu hỏi về awk. Brian đã tiếp xúc với Linux từ khá sớm
  • Có một bài viết của Brian về việc đưa danh bạ điện thoại miễn phí của AT&T lên Internet vào mùa thu năm 1994
  • Lex Fridman đã thực hiện một cuộc phỏng vấn dài 1 tiếng rưỡi với Brian Kernighan
  • Một cuộc phỏng vấn toàn diện hơn cùng với Aho và Weinberger được đưa vào cuốn sách "Masterminds of Programming". Rất đáng đọc
  • Trước đây từng có người viết trong chữ ký Usenet rằng "perl là margarine, awk là bơ". Sau khi biết đến Perl, họ dùng awk ít hơn
  • Đang đọc cuốn "The Unix Programming Environment". awk có nhiều điểm tương đồng với các ngôn ngữ hiện nay (js, lua, python, perl, tcl)
  • awk trong Unix phiên bản Seventh Edition năm 1979 gồm 2680 dòng mã nguồn, và tệp thực thi có kích thước 46k, chạy trong không gian địa chỉ 64k của pdp-11. Khi đó chưa có hàm do người dùng định nghĩa
  • bc có các hàm do người dùng định nghĩa
  • Tôi sở hữu một cuốn K&R có chữ ký của Dr Kernighan từ một hội nghị Unix ở Úc vào thập niên 80. Đó là một món sưu tầm quý giá
  • Cuốn đó cùng với "The Practice of Programming" và tạp chí Byte từng đóng vai trò như "Stack Overflow" của thập niên 1980
  • Thật thú vị khi ông gọi mảng kết hợp là "newish". Trong Lisp, nó đã xuất hiện gần 20 năm trước đó
  • Trình tự phát triển từ regex sang lex, yacc rồi awk nghe rất thuyết phục
  • Rất súc tích
  • Nhà sáng tạo Awk: thú vị