1 คะแนน โดย GN⁺ 2024-07-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บทสัมภาษณ์สั้น ๆ กับ Dr. Brian Kernighan ผู้ให้กำเนิด AWK

    • แนะนำ Dr. Brian Kernighan

      • Dr. Brian Kernighan เป็นนักวิทยาการคอมพิวเตอร์ชาวแคนาดา ผู้มีส่วนร่วมในการพัฒนา UNIX ที่ Bell Labs
      • ร่วมเขียนหนังสือพื้นฐานเกี่ยวกับภาษาโปรแกรม C ชื่อ "The C Programming Language" กับ Dennis Richie
      • ตั้งแต่ปี 2000 เป็นต้นมา ได้สอนและบ่มเพาะโปรแกรมเมอร์รุ่นใหม่ที่ Princeton University
      • เป็นที่รู้จักจากการเขียนโปรแกรม "Hello World!" โปรแกรมแรก
    • แนวคิดใหม่ของ AWK

      • แนวคิดหลักของ AWK คือ associative arrays
      • ในเวลานั้นถือเป็นแนวคิดใหม่ แต่ปัจจุบันถูกใช้ในภาษาส่วนใหญ่ทั้งในรูปฟังก์ชันไลบรารี (hashmaps in Java or C++) หรือเป็นส่วนหนึ่งของภาษาเอง (dictionaries in Perl and Python)
      • associative arrays เป็นโครงสร้างที่ทรงพลังมาก และสามารถใช้จำลองโครงสร้างข้อมูลได้หลากหลาย
      • กระบวนทัศน์ pattern-action ก็ยังไม่แพร่หลายนักในเวลานั้น แต่เป็นวิธีที่มีประสิทธิภาพในการจัดระเบียบการคำนวณบางประเภท
    • แหล่งอ้างอิงที่ใช้ตอนสร้างภาษาโปรแกรม

      • Dr. Kernighan: "ไม่มี"
      • ในช่วงทศวรรษ 1970 มีภาษาเฉพาะทางใหม่ ๆ จำนวนมาก และแทบไม่มีงานก่อนหน้าที่ใช้อ้างอิงได้
      • Yacc เป็นเครื่องมือสำคัญที่ช่วยให้สร้างและทดลองไวยากรณ์ได้ง่าย
      • Lex ทำหน้าที่แบบเดียวกันในระดับการวิเคราะห์คำศัพท์ โดยแทนที่โค้ดน่าเบื่อจำนวนมากด้วยชุดกฎ
      • Lex และ Yacc เป็นตัวอย่างของภาษาแบบ pattern-action และส่งเสริมกันเป็นวงจรเชิงบวก
    • คำแนะนำสำหรับคนรุ่นใหม่ที่สนใจการออกแบบภาษาโปรแกรม

      • เขาแนะนำให้ลองออกแบบและพัฒนาภาษาเฉพาะทางขนาดเล็ก
      • สิ่งนี้ทั้งสนุกและมีประโยชน์มาก และง่ายกว่าการสร้างภาษามาแทน Rust หรือ C++ มาก
      • แนะนำให้มองหางานที่สามารถทำให้เป็นอัตโนมัติได้ แล้วสร้างคอมไพเลอร์และรันไทม์อย่างง่าย
      • บทความที่ Jon Bentley เขียนไว้นานแล้วในเรื่องนี้ยังคงใช้ได้อยู่
    • ที่มาของภาพ

      • Wikimedia Commons

สรุปโดย GN⁺

  • Dr. Brian Kernighan เป็นบุคคลสำคัญที่มีส่วนร่วมในการพัฒนา UNIX และภาษา C และเป็นผู้ให้กำเนิดภาษา AWK ที่นำเสนอ associative arrays และกระบวนทัศน์ pattern-action
  • associative arrays เป็นโครงสร้างข้อมูลอันทรงพลังที่ปัจจุบันถูกใช้ในภาษาโปรแกรมส่วนใหญ่
  • สำหรับโปรแกรมเมอร์รุ่นใหม่ การลองออกแบบและพัฒนาภาษาเฉพาะทางขนาดเล็กเป็นสิ่งที่มีประโยชน์
  • Yacc และ Lex เป็นเครื่องมือที่ช่วยให้การวิเคราะห์ไวยากรณ์และคำศัพท์ทำได้ง่ายขึ้น และเป็นตัวอย่างที่ดีของภาษาแบบ pattern-action

1 ความคิดเห็น

 
GN⁺ 2024-07-19
ความคิดเห็นจาก Hacker News
  • Brian Kernighan เข้าร่วมภาควิชา CS ของ Princeton ในปี 2000 แต่เคยสอนหนึ่งวิชามาแล้วตั้งแต่ตอนอยู่ Bell Labs Research ในปี 1993
  • นักศึกษาคนหนึ่งนำโน้ตบุ๊ก 386sx (ที่รัน Linux ยุคแรก) มาในชั้นเรียนและให้คำตอบสำหรับคำถามเกี่ยวกับ awk ทำให้ Brian ได้สัมผัสกับ Linux ค่อนข้างเร็ว
  • มีบทความของ Brian เกี่ยวกับการนำสมุดรายชื่อโทรศัพท์ฟรีของ AT&T ขึ้นอินเทอร์เน็ตในฤดูใบไม้ร่วงปี 1994
  • Lex Fridman สัมภาษณ์ Brian Kernighan เป็นเวลาหนึ่งชั่วโมงครึ่ง
  • มีบทสัมภาษณ์ที่ครอบคลุมกว่านี้ร่วมกับ Aho และ Weinberger อยู่ในหนังสือ "Masterminds of Programming" แนะนำอย่างมาก
  • เคยมีคนเขียนไว้ในลายเซ็น Usenet ว่า "perl คือมาการีน ส่วน awk คือเนย" หลังจากได้รู้จัก Perl ก็ใช้ awk น้อยลง
  • กำลังอ่านหนังสือ "The Unix Programming Environment" อยู่ awk มีหลายส่วนที่คล้ายกับภาษายอดนิยมปัจจุบัน (js, lua, python, perl, tcl)
  • awk ใน Unix รุ่นฉบับที่ 7 ปี 1979 มีซอร์สโค้ด 2680 บรรทัด และไฟล์รันได้มีขนาด 46k โดยทำงานอยู่ใน address space 64k ของ pdp-11 ตอนนั้นยังไม่มีฟังก์ชันที่ผู้ใช้กำหนดเอง
  • bc มีฟังก์ชันที่ผู้ใช้กำหนดเอง
  • มีหนังสือ K&R ที่ Dr Kernighan เซ็นชื่อให้จากงานประชุม Unix ในออสเตรเลียช่วงทศวรรษ 80 เป็นของสะสมล้ำค่า
  • หนังสือเล่มนั้น หนังสือ "The Practice of Programming" และนิตยสาร Byte เคยทำหน้าที่เหมือน "Stack Overflow" ของยุค 1980
  • น่าสนใจที่มีการพูดถึง associative arrays ว่าเป็นของ "ค่อนข้างใหม่" ทั้งที่ใน Lisp มีมาตั้งแต่เกือบ 20 ปีก่อนแล้ว
  • ลำดับพัฒนาจาก regex ไปสู่ lex, yacc, awk ให้ความรู้สึกว่าน่าเชื่อถือมาก
  • กระชับมาก
  • ผู้สร้าง Awk: สนุกดี