Ken Thompson หมายความว่าอย่างไรเมื่อเขาพูดว่า“ ฉันสะกดคำว่า creat ด้วย 'e' "


57

1
ที่จริงแล้วเขามักจะไม่ได้หมายความว่าเขาพูดว่า: เขาอาจหมายถึงว่าเขาสะกดcreatด้วยสองอี - หลังจากทั้งหมดหนึ่งมีอยู่แล้ว แน่นอนข้อความที่บอกเป็นนัยถึงการที่ UNIX แสดงให้เห็นถึงวิธีที่มันควรจะเป็นโดยไม่มีการเปลี่ยนแปลงที่สำคัญใด ๆ เพียงแค่ต้องการแก้ไขข้อผิดพลาด [หนึ่ง] นี้
Dietmar Kühl

คำตอบ:


54

เป็นการเรียกระบบ Unix ที่สร้างไฟล์: ที่พร้อมต์ Unix shell ให้พิมพ์man 2 creatเพื่อเรียนรู้เพิ่มเติม

หน้าคนยังมีให้บริการออนไลน์ในวันนี้:


21
BTW ในที่สุดเขาก็ทำได้: github.com/golang/go/commit/…
myaut

32

ไม่เพียง แต่เขาหมายถึงการman 2 creatเรียกของระบบ นอกจากนี้เขายังอ้างถึงแนวโน้มที่ล้าสมัยในการบันทึกตัวละครเล็ก ๆ ทุกตัวที่เป็นไปได้บางครั้งสิ่งนี้ทำให้เกิดความสับสนโดยเฉพาะอย่างยิ่งตอนนี้เมื่อการพิมพ์และการจัดเก็บตัวละครอื่นนั้นไม่ค่อยเป็นอุปสรรค


14
ฉันคิดว่าในบริบทของคำถามที่เขาอ้างถึง creat () จุดที่เขาทำคือไม่มีอะไรเกี่ยวกับ Unix ที่เขาจะทำแตกต่างกันยกเว้นข้อผิดพลาดการสะกดเล็ก ๆ นี้ในการเรียกของระบบเพื่อสร้างไฟล์

13
@jmucchiello ไม่ใช่ข้อผิดพลาดการสะกด มันเป็นตัวย่อ (แม้ว่าจะไม่ได้มาตรฐาน) มันพอดีกับการใช้งานหนักของตัวย่อเช่นfcntl, ls, mvฯลฯ โดยทั่วไป
Matthew Flaschen

6
เห็นด้วย แต่ฉันรัก abbrvtns เหล่านั้นแม้ในขณะที่เรามี TBs เพื่อเก็บ :)
tgkprog

1
ปุ่มโทรพิมพ์กดยาก มันเป็นประโยชน์ในการบันทึกจดหมายสองสามฉบับ สิ่งแรกที่สามารถกำจัดได้คือสระและพยัญชนะที่ซ้ำซ้อน
Erkin Alp Güney

24

มันหมายถึงการเรียกระบบ UNIX เพื่อสร้างไฟล์ใหม่ ตัวเชื่อมโยงในเครื่องบางเครื่องถูก จำกัด ที่ตัวระบุไม่เกิน 6 ตัวอักษร เห็นได้ชัดว่า Ken ต้องทำงานร่วมกับตัวเชื่อมโยงดังกล่าวและด้วยเหตุนี้การสร้างระบบจึงถูกทำให้สั้นลงไปที่creatเพื่อให้ตรงกับข้อ จำกัด นี้ ประชดคือการสร้างก็เช่นกัน

ดูเพิ่มเติม: พระบัญญัติข้อที่ 9 หมายความว่าอย่างไร


15
ความยาวสูงสุด 6 อักขระถูกแปลเป็น 5 ในฐานะคอมไพเลอร์ (เพื่อหลีกเลี่ยงสัญลักษณ์ผู้ใช้ที่ถูกคอมไพล์ด้วยตัวสร้างที่คอมไพเลอร์) เสริม'_'ก่อนชื่อตัวแปร / ฟังก์ชั่นของผู้ใช้และระวังอย่าใช้'_'เมื่อสร้างสัญลักษณ์
vonbrand

3
@vonbrand: นั่นดูเหมือนจะไม่อธิบายวิธีการunlinkหรือumountสามารถอยู่ creatแต่ที่ผมจะคิดว่ามีความร่วมสมัยกับ
Dolda2000

@ Dolda2000 เอ่อมันเป็นไปได้มากที่ linker มีข้อ จำกัด นี้ในขณะที่คอมไพเลอร์ไม่ได้ ดังนั้นumountจะปะทะกับumounหรือumounxอะไรก็ตาม แต่ชื่อจะได้รับอนุญาต แต่นั่นคือการเก็งกำไรบริสุทธิ์ :)
Luaan

21

ฉันมาสายหกปีแล้ว แต่ฉันเชื่อว่าคำตอบที่ยังหลงเหลืออยู่จะพลาดจุดอ้างอิงของ Thompson

ฉันสะกด creat ด้วย 'e'

Ken Thompson ไม่ได้คร่ำครวญถึงชื่อของฟังก์ชั่นที่ใช้ในการเปิดและอาจสร้างไฟล์ แต่เขาแสดงให้เห็นว่ายูนิกซ์ได้ทำอย่างถูกต้องนั่นคือไม่มีอะไรสำคัญที่ควรจะทำแตกต่างกัน

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


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