ผู้เขียนบทความ ดักลาส แมคอิลรอย เป็นนักคณิตศาสตร์ วิศวกร และโปรแกรมเมอร์ชาวอเมริกัน เขาเป็นที่รู้จักกันดีที่สุดในการพัฒนาไปป์ไลน์ในระบบปฏิบัติการยูนิกซ์ หลักการของการเขียนโปรแกรมเชิงคอมโพเนนต์ และโปรแกรมอรรถประโยชน์ดั้งเดิมหลายอย่าง: สะกด แตกต่าง เรียงลำดับ เข้าร่วม พูด tr
บางครั้งคุณเจอโปรแกรมที่ยอดเยี่ยมจริงๆ หลังจากค้นหาความทรงจำของฉัน ฉันได้รวบรวมรายชื่ออัญมณี Unix ที่แท้จริงในช่วงหลายปีที่ผ่านมา โดยพื้นฐานแล้วโปรแกรมเหล่านี้ค่อนข้างหายากและไม่จำเป็น แต่สิ่งที่ทำให้พวกเขาโดดเด่นคือความคิดริเริ่มของพวกเขา ฉันนึกไม่ออกด้วยซ้ำว่าตัวฉันเองเป็นคนคิดขึ้นมาเอง
แชร์โปรแกรมไหนที่คุณยังประทับใจ?
PDP-7 ยูนิกซ์
สำหรับผู้เริ่มต้น ระบบ PDP-7 Unix เอง ความเรียบง่ายและพลังของมันทำให้ฉันเปลี่ยนจากเครื่องเมนเฟรมที่มีประสิทธิภาพไปสู่เครื่องขนาดเล็ก เป็นระบบไฟล์ลำดับชั้นที่เป็นแก่นสาร เชลล์แยกต่างหาก และการควบคุมกระบวนการระดับผู้ใช้ที่ Multics บนเมนเฟรมไม่สามารถทำได้หลังจากการพัฒนาเป็นเวลาหลายร้อยปี ข้อบกพร่องของ Unix (เช่น โครงสร้างเรกคอร์ดของระบบไฟล์) เป็นเพียงคำแนะนำและปลดปล่อยเท่าๆ กับนวัตกรรม (เช่น การเปลี่ยนทิศทาง I/O ของเชลล์)
dc
ห้องสมุดคณิตศาสตร์เครื่องคิดเลขตั้งโต๊ะความแม่นยำตัวแปรของ Robert Morris ใช้การวิเคราะห์ข้อผิดพลาดผกผันเพื่อกำหนดความแม่นยำที่จำเป็นในแต่ละขั้นตอนเพื่อให้ได้ผลลัพธ์ที่แม่นยำโดยผู้ใช้ ในการประชุมวิศวกรรมซอฟต์แวร์ของ NATO ปี 1968 ในรายงานของฉันเกี่ยวกับส่วนประกอบของซอฟต์แวร์ ฉันได้เสนอขั้นตอนอ้างอิงที่สามารถสร้างความแม่นยำที่ต้องการได้ แต่ฉันไม่รู้ว่าจะนำส่วนประกอบเหล่านั้นไปปฏิบัติอย่างไร dc ยังคงเป็นโปรแกรมเดียวที่ฉันรู้ว่าสามารถทำได้
พิมพ์ผิด
Typo จัดเรียงคำในข้อความตามความคล้ายคลึงกับข้อความที่เหลือ การสะกดผิด เช่น 'hte' มักจะอยู่ท้ายรายการ Robert Morris กล่าวอย่างภาคภูมิใจว่าโปรแกรมนี้จะทำงานได้ดีเท่าเทียมกันสำหรับทุกภาษา แม้ว่าการพิมพ์ผิดจะไม่ช่วยให้คุณพบข้อผิดพลาดด้านการออกเสียง แต่ก็เป็นประโยชน์อย่างยิ่งสำหรับนักเรียงพิมพ์ทุกคน และทำได้ดีมากก่อนที่จะมีเครื่องมือตรวจสอบการสะกดคำในพจนานุกรมที่น่าสนใจน้อยกว่าแต่แม่นยำกว่า
การพิมพ์ผิดเป็นสิ่งที่คาดไม่ถึงจากภายในพอๆ กับภายนอก อัลกอริทึมการวัดความคล้ายคลึงกันขึ้นอยู่กับความถี่ของการเกิดไตรแกรม ซึ่งนับในอาร์เรย์ 26×26×26 หน่วยความจำขนาดเล็กแทบจะไม่มีพื้นที่เพียงพอสำหรับตัวนับแบบหนึ่งไบต์ ดังนั้นจึงมีการใช้รูปแบบเพื่อบีบอัดตัวเลขจำนวนมากให้เป็นตัวนับขนาดเล็ก เพื่อหลีกเลี่ยงการโอเวอร์โฟลว์ ตัวนับได้รับการปรับปรุงบนพื้นฐานความน่าจะเป็น โดยรักษาค่าประมาณของลอการิทึมของค่าตัวนับ
อีคิว
ด้วยการถือกำเนิดของการตั้งค่าโฟโตไทป์ การพิมพ์สัญกรณ์ทางคณิตศาสตร์แบบคลาสสิกจึงเป็นไปได้ แต่น่าเบื่อมาก Lorinda Cherry ตัดสินใจพัฒนาภาษาคำอธิบายระดับที่สูงขึ้น และในไม่ช้า Brian Kernigan ก็เข้าร่วมกับเธอ การเคลื่อนไหวที่ยอดเยี่ยมของพวกเขาคือการใส่ประเพณีปากเปล่าลงในงานเขียน ดังนั้น eqn จึงเรียนรู้ได้ง่ายอย่างน่าทึ่ง ตัวประมวลผลล่วงหน้าภาษานิพจน์ทางคณิตศาสตร์ตัวแรกในประเภทนี้ eqn ไม่ได้รับการปรับปรุงมากนักตั้งแต่นั้นมา
โครงสร้าง
Brenda Baker เริ่มพัฒนาตัวแปลง Fortan เป็น Ratfor ตามคำแนะนำของเจ้านายของเธอ ฉันเอง ฉันคิดว่าสิ่งนี้อาจนำไปสู่การจัดลำดับข้อความต้นฉบับใหม่เป็นพิเศษ จะไม่มีหมายเลขใบแจ้งยอด แต่อย่างอื่นไม่สามารถอ่านได้มากไปกว่ารหัส Fortran ที่มีโครงสร้างดี เบรนด้าพิสูจน์ว่าฉันคิดผิด เธอค้นพบว่าทุกโปรแกรมของ Fortran มีรูปแบบที่มีโครงสร้างแบบบัญญัติ โปรแกรมเมอร์ชอบรูปแบบมาตรฐานมากกว่าสิ่งที่พวกเขาเขียนขึ้นเอง
ปาสคาล
การวินิจฉัยไวยากรณ์ในคอมไพเลอร์ที่สร้างโดยกลุ่มของ Sue Graham ที่ Berkeley นั้นมีประโยชน์มากที่สุดเท่าที่ฉันเคยเห็นมา—และดำเนินการโดยอัตโนมัติ เมื่อเกิดข้อผิดพลาดทางไวยากรณ์ คอมไพลเลอร์จะแจ้งให้คุณแทรกโทเค็นเพื่อดำเนินการแยกวิเคราะห์ต่อไป ไม่พยายามที่จะอธิบายว่าอะไรผิด ด้วยคอมไพเลอร์นี้ ฉันได้เรียนรู้ภาษาปาสคาลในเย็นวันหนึ่งโดยไม่ต้องใช้คู่มือใดๆ
ส่วน
ซ่อนอยู่ในโมดูล WWB (Writer's Workbench) parts
Lorinda Cherry กำหนดส่วนของคำพูดสำหรับคำในข้อความภาษาอังกฤษโดยยึดตามกฎพจนานุกรม การสะกดคำ และไวยากรณ์เพียงเล็กน้อยเท่านั้น จากคำอธิบายประกอบนี้ โปรแกรม WWB จะแสดงตัวบ่งชี้สไตล์ของข้อความ เช่น ความแพร่หลายของคำคุณศัพท์ อนุประโยครอง และประโยคที่ซับซ้อน เมื่อ Lorinda ถูกสัมภาษณ์ในรายการ NBC's Today และพูดคุยเกี่ยวกับนวัตกรรมการตรวจสอบไวยากรณ์ในข้อความ WWB นี่เป็นการกล่าวถึง Unix เป็นครั้งแรกทางโทรทัศน์
นกกระยาง
Al Aho คาดหวังให้รีโซลเวอร์นิพจน์ทั่วไปเชิงกำหนดของเขาจะแซงหน้ารีโซลเวอร์แบบไม่กำหนดระดับแบบคลาสสิกของ Ken น่าเสียดายที่อันหลังเสร็จสิ้นการส่งผ่านนิพจน์ทั่วไปที่ซับซ้อนแล้วในขณะที่ egrep
สร้างระบบอัตโนมัติที่กำหนดขึ้นเอง เพื่อให้ยังคงชนะการแข่งขันนี้ Al Aho หลีกเลี่ยงคำสาปของการเติบโตแบบทวีคูณของตารางสถานะของหุ่นยนต์โดยคิดค้นวิธีการสร้างได้ทันทีเฉพาะรายการในตารางที่มีการเข้าชมจริงในระหว่างการรับรู้
ปู
เมตาโปรแกรมที่มีเสน่ห์ของ Luca Cardelli สำหรับระบบหน้าต่าง Blit ได้ปล่อยปูเสมือนที่สัญจรไปมาในพื้นที่ว่างของหน้าจอ กัดขอบหน้าต่างที่ใช้งานอยู่มากขึ้นเรื่อยๆ
ความคิดทั่วไปบางอย่าง
แม้ว่าจะมองไม่เห็นจากภายนอก แต่ทฤษฎีและอัลกอริธึมก็มีบทบาทสำคัญในการสร้างโปรแกรมส่วนใหญ่เหล่านี้: typo, dc, struct, pascal, egrep ในความเป็นจริงมันเป็นการประยุกต์ใช้ทฤษฎีที่ผิดปกติซึ่งน่าประหลาดใจที่สุด
เกือบครึ่งหนึ่งของรายการ — pascal, struct, parts, eqn — เดิมเขียนโดยผู้หญิง ซึ่งมากกว่าจำนวนประชากรศาสตร์ของผู้หญิงในวิทยาการคอมพิวเตอร์อย่างมาก
ดักลาส แม็คอิลรอย
มีนาคม 2020
ที่มา: will.com