'สวัสดีชาวโลก' มาจากไหน?


109

' hello, world' มักจะเป็นตัวอย่างแรกสำหรับภาษาโปรแกรมใด ๆ ฉันสงสัยมาตลอดว่าประโยคนี้มาจากไหนและถูกใช้ครั้งแรกที่ไหน

ฉันเคยได้รับแจ้งว่าเป็นประโยคแรกที่ปรากฏบนหน้าจอคอมพิวเตอร์ แต่ฉันไม่พบข้อมูลอ้างอิงใด ๆ เกี่ยวกับเรื่องนี้

คำถามของฉันคือ
การฝึกฝนการใช้ ' hello, world' เป็นตัวอย่างแรกสำหรับภาษาคอมพิวเตอร์มาจากไหน?
ถูกใช้ครั้งแรกที่ไหน?

อัปเดต
แม้ว่าคำตอบจะค่อนข้างน่าสนใจ แต่ฉันควรสังเกตว่าฉันได้อ่านบทความ Wikipedia แล้ว ตอบคำถามเกี่ยวกับการใช้ครั้งแรกในวรรณกรรม แต่ไม่ตอบhello worldว่าใช้ครั้งแรกเมื่อใด
ดังนั้นฉันคิดว่ามันปลอดภัยที่จะสรุปว่ามันไม่ใช่ประโยคแรกที่เคยปรากฏบนหน้าจอคอมพิวเตอร์และไม่มีการบันทึกเกี่ยวกับเวลาที่ใช้ครั้งแรก?

คำตอบ:


97

Brian Kernighan เขียนโปรแกรม "hello, world" โปรแกรมแรกซึ่งเป็นส่วนหนึ่งของเอกสารสำหรับภาษาโปรแกรม BCPL ที่พัฒนาโดย Martin Richards BCPL ถูกใช้ในขณะที่ C กำลังได้รับการพัฒนาที่ Bell Labs ไม่กี่ปีก่อนที่จะมีการตีพิมพ์หนังสือ C ของ Kernighan และ Ritchie's ในปีพ. ศ. 2515

ในการค้นคว้าหนังสือเล่มหนึ่งที่ฉันเขียนเกี่ยวกับสภาพแวดล้อมการเขียนโปรแกรมของ Alice ฉันได้ติดต่อกับศาสตราจารย์ Kernighan ที่ Princeton และ Martin Richards ที่ Cambridge (ตอนที่ฉันสอนการสัมมนาที่นั่นในปี 1990) พวกเขาช่วยฉันติดตามการใช้รหัสครั้งแรกในเอกสารเพื่อพิมพ์ข้อความ "Hello, World!" Brian Kernighan จำได้ว่าเขียนโค้ดเป็นส่วนหนึ่งของส่วน I / O ของคู่มือ BCPL มาร์ตินริชาร์ด - ผู้ซึ่งดูเหมือนจะมีขุมทรัพย์ของโน้ตเอกสารเก่า ฯลฯ - พบคู่มือและยืนยันว่านี่คือต้นฉบับ ลักษณะของโปรแกรมรหัสนี้ใช้สำหรับการทดสอบคอมไพเลอร์ C ในช่วงต้นและเข้าสู่หนังสือของ Kernighan และ Ritchie ต่อมาเป็นหนึ่งในโปรแกรมแรกที่ใช้ทดสอบคอมไพเลอร์ C ++ ของ Bjarne Stroustrup

มันกลายเป็นมาตรฐานสำหรับโปรแกรมเมอร์หน้าใหม่หลังจากปรากฏตัวใน Kernighan และ Ritchie ซึ่งน่าจะเป็นบทนำเกี่ยวกับการเขียนโปรแกรมที่ขายดีที่สุดตลอดกาล


ดูที่ (the?) BCPL manual cm.bell-labs.com/cm/cs/who/dmr/bcpl.pdf ฉันไม่เห็น
barlop

1
หนังสือ C ไม่ได้อยู่ในปี 1972 หนังสือ B คือปี 1972 หนังสือ C ฉบับพิมพ์ครั้งแรกตีพิมพ์ในปี 1978 en.wikipedia.org/wiki/The_C_Programming_Language_(book) มี "บันทึกข้อตกลงภายในของ Bell Laboratories ปี 1974 โดย Brian Kernighan การเขียนโปรแกรมใน C: A Tutorial " en.wikipedia.org/wiki/Hello_world_program
barlop

1
มีส่วน I / O สำหรับบทช่วยสอน C ปี 1974 ของเขาแม้ว่า lysator.liu.se/c/bwk-tutor.html printf ("สวัสดีชาวโลก \ n"); และเหนือสิ่งนั้นในส่วนที่ 2 โดยไม่มี \ n และในโปรแกรม main( ) { printf("hello, world"); }น่าสนใจที่จะเห็นบางสิ่งจาก B และ BCPL
barlop

3
ทำได้ดีมากสำหรับการพูดคุยกับตัวผู้ชายเองและ "ยืนยัน" รูปลักษณ์ที่พบใน "บันทึกขุมทรัพย์" แต่คุณสามารถนำเสนอโปรแกรมจริงในคำตอบของคุณได้หรือไม่?
barlop

1
ฉันพบรูปภาพในวิกิพีเดียรูปภาพ - th.wikipedia.org/wiki/Computer_program#/media/… . ที่มาหน้า - en.wikipedia.org/wiki/Computer_program
Daryn

48

ตามวิกิพีเดีย :

ในขณะที่โปรแกรมทดสอบขนาดเล็กมีมาตั้งแต่การพัฒนาคอมพิวเตอร์ที่ตั้งโปรแกรมได้ แต่ประเพณีการใช้วลี "Hello world!" เนื่องจากข้อความทดสอบได้รับอิทธิพลจากโปรแกรมตัวอย่างในหนังสือเรียนภาษา C Programming Language โปรแกรมตัวอย่างจากหนังสือเล่มนั้นพิมพ์ "สวัสดีชาวโลก" (โดยไม่มีตัวพิมพ์ใหญ่หรือเครื่องหมายอัศเจรีย์) และได้รับการสืบทอดมาจากบันทึกข้อตกลงภายในของ Bell Laboratories ปี 1974 โดย Brian Kernighan การเขียนโปรแกรมในบทช่วยสอน C: A ซึ่งมีเวอร์ชันแรกที่รู้จัก:

 main() {
        printf("hello, world");
 }

ตัวอย่างแรกที่รู้จักกันดีของการใช้คำว่า "สวัสดี" และ "โลก" ร่วมกันในวรรณคดีคอมพิวเตอร์เกิดขึ้นก่อนหน้านี้ในบทแนะนำเกี่ยวกับภาษา B [1] ของ Kernighan ในปี 1972 โดยมีรหัสต่อไปนี้:

main( ) {
  extrn a, b, c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';

ดูเหมือนบทช่วยสอน C ปี 1974 อยู่ที่นี่cprogramming.com/cgi-bin/cdir/… ซึ่งชี้ไปที่lysator.liu.se/c/bwk-tutor.html ฉันสังเกตว่าที่คุณเขียนmain()อยู่ในหน้า html ที่ฉันพูดถึงอยู่ในรายการmain( )เช่น ช่องว่างระหว่าง().
barlop

10

โปรแกรม C ตัวแรกในหนังสือ "The C Programming Language" คือการพิมพ์ "hello world!" บนหน้าจอ.

ตั้งแต่นั้นมาจึงถูกใช้เป็นโปรแกรมแรกในการแนะนำรายละเอียดพื้นฐานของภาษาโปรแกรม


7

จากhttp://en.wikipedia.org/wiki/Hello_world_program :

ตัวอย่างแรกที่รู้จักกันดีของการใช้คำว่า "สวัสดี" และ "โลก" ร่วมกันในวรรณคดีคอมพิวเตอร์เกิดขึ้นก่อนหน้านี้ในบทแนะนำเกี่ยวกับภาษา B [1] ของ Kernighan ในปี 1972 โดยมีรหัสต่อไปนี้:

main( ) {
  extrn a, b, c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';

5

ฉันควรระมัดระวังภาษามากขึ้นในโพสต์ต้นฉบับของฉันเกี่ยวกับเรื่องนี้ -

แน่นอนว่าBarlop พูดถูก K&R ตีพิมพ์ในปี 1978 อาการโคม่าหายไปในโพสต์ของฉัน ฉันหมายความว่าคู่มือ BCPL ที่มีรหัส Hello World ของ Dr. Kernighan เป็นวันที่ 2515 บันทึกที่มีการอ้างอิงถึงนี้มาจากปีพ. ศ. 2517

Martin Richards มีเอกสารเหล่านี้ ฉันมีสำเนาคู่มือและสำเนาบันทึกข้อตกลงที่ไม่ถูกต้อง

ฉันเชื่อว่าต้นฉบับไม่มีเครื่องหมายวรรคตอน

BCPL และรหัส B ปรากฏขึ้นเกือบในเวลาเดียวกัน ฉันมักจะคิดว่ารหัส B ที่อ้างถึงจากที่นั่นมาก่อน แต่ดูเหมือนว่ามาร์ตินริชาร์ดจะคิดว่ารหัส BCPL เป็นอันดับแรก ไม่ว่าในกรณีใด "สวัสดี Word!" มีมาก่อน K&R และการใช้งานในรหัสครั้งแรกดูเหมือนจะเขียนโดย Brian Kernighan ที่ Bell Labs


0

ครั้งแรกที่ฉันได้พบมันในฉบับพิมพ์คือ (ฉันคิดว่า) K&R ฉบับพิมพ์ครั้งแรกดังนั้นท่าจะประมาณปี 1982 แต่ฉันเขียนโปรแกรม "Hello world" ของตัวเองมานานก่อนหน้านั้นเช่นเดียวกับคนอื่น ๆ


0

จาก Wikipedia

ในขณะที่โปรแกรมทดสอบขนาดเล็กมีมาตั้งแต่การพัฒนาคอมพิวเตอร์ที่ตั้งโปรแกรมได้ แต่ประเพณีการใช้วลี "Hello world!" เนื่องจากข้อความทดสอบได้รับอิทธิพลจากโปรแกรมตัวอย่างในหนังสือเรียนภาษา C Programming Language โปรแกรมตัวอย่างจากหนังสือเล่มนั้นพิมพ์ "สวัสดีชาวโลก" (โดยไม่มีตัวพิมพ์ใหญ่หรือเครื่องหมายอัศเจรีย์) และได้รับการสืบทอดมาจากบันทึกข้อตกลงภายในของ Bell Laboratories ปี 1974 โดย Brian Kernighan การเขียนโปรแกรมในบทช่วยสอน C: A ซึ่งมีเวอร์ชันแรกที่รู้จัก:

http://en.wikipedia.org/wiki/Hello_world_program

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