ทำไมตัวอย่างโค้ดจำนวนมากโดยเฉพาะบทช่วยสอนใช้ชื่อ "Foo" และ "Bar" บ่อยครั้ง มันเกือบจะเป็นมาตรฐาน
ตัวอย่างเช่น:
void foo(char* bar) {
printf("%s", bar);
}
ทำไมตัวอย่างโค้ดจำนวนมากโดยเฉพาะบทช่วยสอนใช้ชื่อ "Foo" และ "Bar" บ่อยครั้ง มันเกือบจะเป็นมาตรฐาน
ตัวอย่างเช่น:
void foo(char* bar) {
printf("%s", bar);
}
คำตอบ:
Fooและbarมาจากตัวย่อกองทัพสหรัฐฯสงครามโลกครั้งที่สอง FUBAR, "F-ed Up Beyond All Recognition" คำศัพท์เหล่านี้ใช้กันอย่างแพร่หลายทั้งครอบครัวในแอฟริกาเหนือและซิซิลี (1942-43-43) วันแห่งการต่อสู้ที่ยอดเยี่ยมของ Rick Atkinson : สงครามในซิซิลีและอิตาลีในปี 1943-1944แสดงรายการเหล่านี้ ยกตัวอย่างเช่น JANFU คือ "กองทัพเรือร่วมกองทัพเรือเอฟขึ้น" เช่นเหตุการณ์เมื่อวันที่ 11 กรกฎาคม พ.ศ. 2486 เมื่อกองเรือบุกโจมตีกิจการฮัสกี้ ยิงลง 23 กองทัพอากาศ C-47 ลำเลียงพลร่มเพื่อหนุนหัวหาด
อัปเดต: Wikipedia มีรายการคำย่อที่เกี่ยวข้องซึ่งรวมถึง WWII ดั้งเดิมบางรายการที่ระบุโดย Atkinson
โปรแกรมเมอร์ทุกคนจะเข้าใจถึงแรงจูงใจในการใช้ตัวแปรfooและbarเพื่อตั้งชื่อตัวแปร แน่นอนว่าพวกเขาเป็นส่วนหนึ่งของวัฒนธรรม C / UNIX ตั้งแต่เริ่มต้นและเมื่อ @Walter Mitty ชี้ให้เห็น
Update (10/5/2009): นี่คือคำอธิบายของ Atkinson:
"พลเรือน" ที่แพร่หลายของพวกเขาทำให้พวกเขาระวังความกระตือรือร้นในการต่อสู้ “ เราไม่ใช่คนรักโรแมนติกที่เต็มไปด้วยเสื้อคลุมแหลมและดาบ” จอห์นเมสันบราวน์ผู้พันนาวิกโยธินกองหนุนมุ่งหน้าสู่ซิซิลี "สงครามครั้งสุดท้ายใกล้เกินไปแล้ว" ชีวิตทหารทำให้พวกเขามีความรู้สึกอ่อนไหวและหวาดระแวง คำย่อหยาบที่จับความคาดหวังที่ลดลงของทหาร - SNAFU, "สถานการณ์ปกติ, ทั้งหมดระยำ" - ได้ขยายเข้าไปในคำศัพท์ของความเห็นเยาะเย้ย GI: SUSFU (สถานการณ์ไม่เปลี่ยนแปลงยังคงขึ้น); FUMTU (ระยำมากกว่าปกติ); JANFU (การมีเพศสัมพันธ์กับกองทัพเรือร่วม); JAAFU (การร่วมเพศสัมพันธ์ระหว่างแองโกล - อเมริกัน); FUAFUP (ระยำและระยำเหมาะสม); และ FUBAR (ระยำเกินการจดจำ) [Atkinson, p. 36]
Update (23/11/2554): @Hugo มีรายการที่ยอดเยี่ยมของบุคคลที่ไม่ใช่ทหาร
ฉันคิดว่ามันเป็นการออกเสียงออกเสียงของ fubar
ซึ่งย่อมาจาก:
พจนานุกรม Hacker ใหม่มีรายการที่ดีมากเกี่ยวกับเรื่องนี้ - และฉันคิดว่ามันจะเป็นทรัพยากรที่ดีกว่าสำหรับชนิดของสิ่งกว่าวิกิพีเดียนี้:
ตัวแปร metasyntactic /n./
ชื่อที่ใช้ในตัวอย่างและเข้าใจว่าเป็นสิ่งใดก็ตามที่อยู่ภายใต้การสนทนาหรือสมาชิกสุ่มของกลุ่มสิ่งต่าง ๆ ภายใต้การสนทนา คำว่า foo เป็นตัวอย่างที่ยอมรับได้ เพื่อหลีกเลี่ยงความสับสนแฮกเกอร์ไม่เคยใช้คำว่า "foo" หรือคำอื่น ๆ เช่นมันเป็นชื่อถาวรสำหรับทุกสิ่ง ในชื่อไฟล์การประชุมทั่วไปคือชื่อไฟล์ใด ๆ ที่เริ่มต้นด้วยชื่อ metasyntactic-variable เป็นไฟล์เริ่มต้นที่อาจถูกลบได้ตลอดเวลา
รายชื่อตัวแปร metasyntactic ที่ต้องการคือลายเซ็นทางวัฒนธรรม พวกเขาเกิดขึ้นทั้งในซีรีส์ (ใช้สำหรับกลุ่มของตัวแปรหรือวัตถุที่เกี่ยวข้อง) และเป็นซิงเกิล นี่คือลายเซ็นทั่วไปบางประการ:
foo, bar, baz, quux, quuuux, quuuux ... :
การใช้งาน MIT / Stanford ตอนนี้พบได้ทุกที่ ที่ MIT (แต่ไม่ใช่ที่สแตนฟอร์ด) baz ออกจากการใช้งานไประยะหนึ่งในช่วงทศวรรษ 1970 และ 80 การกลายพันธุ์ล่าสุดของลำดับนี้แทรก qux ก่อน quuxbazola, ztesch:
Stanford (จากช่วงกลางยุค 70 เป็นต้นไป)foo, บาร์, thud, grunt:
ซีรีย์นี้ได้รับความนิยมที่ CMU ตัวแปรที่เกี่ยวข้องกับ CMU อื่น ๆ ได้แก่ gorpfoo, bar, fum:
ซีรี่ส์นี้มีรายงานว่าใช้กันทั่วไปที่ XEROX PARCfred, barney:
ดูรายการสำหรับ fred สิ่งเหล่านี้มีแนวโน้มที่จะเป็นชาวอังกฤษcorge, grault, flarp: ได้
รับความนิยมจากมหาวิทยาลัยรัตเกอร์สและในหมู่แฮ็กเกอร์ GOSMACSzxc, spqr, wombat:
มหาวิทยาลัยเคมบริดจ์ (อังกฤษ)shme
Berkeley, GeoWorks, Ingres ออกเสียง / shme / ด้วยคำย่อ / e /
มหาวิทยาลัยSnork Brown ในช่วงต้นทศวรรษ 1970foo, bar, zot
มหาวิทยาลัยเทคโนโลยีแห่งเฮลซิงกิฟินแลนด์พูดจาโผงผาง wibble
นิวซีแลนด์toto, titi, tata, tutu
ประเทศฝรั่งเศสpippo, พลูโต, paperino
อิตาลี Pippo / pee'po / และ Paperino / pa-per-ee'-no / เป็นชื่อภาษาอิตาลีสำหรับ Goofy และ Donald Duckaap, noot, mies
เนเธอร์แลนด์ นี่เป็นคำแรกที่เด็กใช้เพื่อเรียนรู้การสะกดบนกระดานสะกดคำภาษาดัตช์จากทั้งหมดนี้มีเพียง 'foo' และ 'bar' เท่านั้นที่เป็นสากล (และ baz เกือบเป็นเช่นนั้น) สารประกอบ foobar และ `foobaz 'ก็เพลิดเพลินไปกับสกุลเงินที่กว้างมาก
ศัพท์แสงบางคำยังใช้เป็นชื่อ metasyntactic ยกตัวอย่างเช่น barf and mumble ดูที่ Commonwealth Hackish เพื่ออภิปรายเกี่ยวกับตัวแปร metasyntactic จำนวนมากที่พบในบริเตนใหญ่และเครือจักรภพ
Wikipedia ให้นิยามของตัวแปร Metasyntactic นี้ :
ในวิทยาการคอมพิวเตอร์โปรแกรมเมอร์ใช้ตัวแปร metasyntactic เพื่ออธิบายชื่อตัวแทนหรือคำนามแฝงที่ใช้กันทั่วไปเพื่อแสดงถึงหัวข้อภายใต้การสนทนาหรือสมาชิกโดยพลการของชั้นเรียนของสิ่งต่าง ๆ ภายใต้การสนทนา การใช้ตัวแปร metasyntactic มีประโยชน์ในการช่วยให้โปรแกรมเมอร์ไม่ต้องสร้างตัวแปรที่มีชื่อตามหลักเหตุผลซึ่งมักจะมีประโยชน์เมื่อสร้างหรือสอนตัวอย่างของอัลกอริทึม คำว่า foo เป็นตัวอย่างหลัก
คำว่า "ตัวแปร metasyntactic" ส่วนใหญ่จะพบในวรรณกรรมไม่เป็นทางการ บางครั้งมันก็ใช้เป็นคำพ้องความหมายสำหรับ metavariable
สัญลักษณ์หรือคำใด ๆ ที่ไม่ละเมิดกฎของภาษาสามารถใช้เป็นตัวแปร metasyntactic แต่คำที่ไร้สาระมักใช้กันทั่วไป แนวคิดเดียวกันนี้ใช้ในสาขาอื่นที่แสดงด้วยคำเช่นตัวแปรแผนผัง (ดูรูปแบบตรรกะ )
โดยการเปรียบเทียบทางคณิตศาสตร์: ตัวแปร metasyntactic เป็นคำที่เป็นตัวแปรสำหรับคำอื่น ๆ เช่นเดียวกับในตัวอักษรพีชคณิตจะใช้เป็นตัวแปรสำหรับตัวเลข
บทความนี้ยังให้ตัวอย่างทั่วไปของตัวแปรดังกล่าวในภาษาการเขียนโปรแกรมที่แตกต่างกัน:
C
ในตัวอย่างต่อไปนี้ของภาษาการเขียนโปรแกรม C ชื่อฟังก์ชั่น foo และแถบชื่อตัวแปรเป็นทั้งตัวแปร metasyntactic บรรทัดที่ขึ้นต้นด้วย // คือความคิดเห็น
// The function named foo
int foo(void)
{
// Declare the variable bar and set the value to 1
int bar = 1;
return bar;
}
หลาม
สแปมแฮมและไข่เป็นตัวแปรหลักที่ใช้ในภาษาโปรแกรมภาษาไพ ธ อน [5] นี่คือการอ้างอิงถึงภาพร่างตลกที่มีชื่อเสียงสแปมโดย Monty Python, คำพ้องของภาษา [6] ในตัวอย่างต่อไปนี้สแปมแฮมและไข่เป็นตัวแปร metasyntactic และบรรทัดที่ขึ้นต้นด้วย # คือความคิดเห็น
# Define a function named spam
def spam():
# define the variable ham
ham = "Hello World!"
#define the variable eggs
eggs = 1
return
ทับทิม
ในตัวอย่างต่อไปนี้ baz, foo และ bar เป็นตัวแปร metasyntactic และบรรทัดที่ขึ้นต้นด้วย # คือความคิดเห็น
# Declare the variable foo and set equal to 1
foo = 1
# Declare the variable bar and set equal to 2
bar = 2
# Declare the method (function) named baz, which prints the text 'Hello world'
def baz
puts 'Hello world'
end
นี่คือคำตอบของวิกิพีเดีย:
คำว่า foobar, foo, bar และ baz เป็นชื่อตัวแทนทั่วไป (หรือที่เรียกว่าตัวแปร metasyntactic) ที่ใช้ในการเขียนโปรแกรมคอมพิวเตอร์หรือเอกสารที่เกี่ยวข้องกับคอมพิวเตอร์ โดยทั่วไปจะใช้เพื่อแสดงค่าที่ไม่รู้จักโดยทั่วไปเมื่ออธิบายสถานการณ์ที่เข้าใจถึงวัตถุประสงค์ของค่าที่ไม่รู้จัก แต่ค่าที่แม่นยำของพวกเขานั้นเป็นแบบสุ่มและไม่สำคัญ สามารถใช้คำศัพท์เพื่อแสดงส่วนใดส่วนหนึ่งของระบบหรือแนวคิดที่ซับซ้อนรวมถึงข้อมูลตัวแปรฟังก์ชันและคำสั่ง คำเหล่านี้ไม่มีความหมายในการใช้งานนี้และเป็นเพียงการแสดงเชิงตรรกะเช่นตัวอักษร x และ y ที่ใช้ในพีชคณิต มักใช้ Foobar เพียงอย่างเดียว โดยทั่วไปจะใช้ foo, bar และ baz ตามลำดับนั้นเมื่อต้องการหลายเอนทิตี
ฟูเข้ามาในภาษาอังกฤษในฐานะที่เป็นคนใหม่และเป็นที่ยอมรับว่าเป็น neologism ตัวอย่างของตัวแปร metasyntactic ซึ่งเป็นที่ยอมรับมันถูกนำมาใช้อย่างกว้างขวางในตัวอย่างการเขียนโปรแกรมคอมพิวเตอร์ (บางครั้งก็แสดงว่า เอริคเอส. เรย์มอนด์เรียกมันว่า "การแฮ็กข้อมูลสำคัญ" ข้าง kludge และ cruft [1]
http://en.wikipedia.org/wiki/Foo
และจาก RFC 3092:
เมื่อนำมาใช้ในการเชื่อมต่อกับ 'บาร์' มันมักจะโยงไปถึงยุค WW II กองทัพสแลงสแลงย่อคำย่อ FUBAR ('Fucked Up Beyond All All Repair') ภายหลังถูกดัดแปลงเป็น foobar รุ่นแรกของไฟล์ศัพท์แสง [JARGON] ตีความการเปลี่ยนแปลงนี้ว่าเป็นสงครามหลังสงคราม แต่ตอนนี้ดูเหมือนว่า FUBAR จะกลายเป็นอนุพันธ์ของ 'foo' ซึ่งอาจได้รับอิทธิพลจาก 'furchtbar' ของเยอรมัน (แย่มาก) - 'foobar' จริงแล้วเป็นรูปแบบดั้งเดิม
สำหรับดูเหมือนว่าคำว่า 'foo' นั้นมีประวัติสงครามทันทีในแถบการ์ตูนและการ์ตูน ในปี 1938 การ์ตูน Warner Brothers กำกับโดย Robert Clampett, "The Daffy Doc", รุ่นแรก ๆ ของ Daffy Duck ถือป้ายบอกว่า "SILENCE IS FOO!" ... (snip)
TL; DR
"Foo" และ "bar" เป็นตัวแปร metasyntactic ได้รับความนิยมจาก MIT และ DEC การอ้างอิงครั้งแรกทำงานใน LISP และ PDP-1 และ Project MAC ตั้งแต่ปี 1964 เป็นต้นไป
คนเหล่านี้หลายคนอยู่ใน Tech Model Railroad Club ซึ่งเราพบว่ามีการใช้ "foo" เป็นครั้งแรกในแวดวงเทคโนโลยีในปี 1959 (และตัวแปรในปี 1958)
ทั้ง "foo" และ "bar" (และแม้แต่ "baz") เป็นที่รู้จักกันดีในวัฒนธรรมสมัยนิยมโดยเฉพาะอย่างยิ่งจาก Smokey Stover และ Pogo comics ซึ่งสมาชิก TMRC จำนวนมากจะถูกอ่าน
ดูเหมือนว่า FUBAR ทางทหารจะมีส่วนทำให้ความนิยมของพวกเขา
การใช้คำว่า "foo" เพียงคำเดียวนั้นเป็นคำที่ไร้สาระในวัฒนธรรมสมัยนิยมในต้นศตวรรษที่ 20 เช่นเดียวกับ FUBAR ทางทหาร (การอ่านพื้นหลังบางส่วน: FOLDOC ไฟล์FOLDOC ไฟล์ ศัพท์แสงไฟล์ศัพท์แสง Wikipedia RFC3092 )
ตกลงดังนั้นเรามาค้นหาการอ้างอิงบางอย่าง
กดหยุด! หลังจากโพสต์คำตอบนี้ฉันค้นพบบทความที่สมบูรณ์แบบเกี่ยวกับ "foo" ในวันศุกร์ที่ 14 มกราคม พ.ศ. 2481ฉบับThe Tech ("หนังสือพิมพ์ที่เก่าแก่และใหญ่ที่สุดของ MIT และหนังสือพิมพ์ฉบับแรกที่เผยแพร่ทางเว็บ") เล่ม LVII ฉบับที่ 57, ราคาสามเซ็นต์:
บน Foo-ism
Lounger คิดว่าธุรกิจของ Foo-ism นี้ดำเนินไปไกลเกินกว่าที่จะมีผู้สนับสนุนที่เข้าใจผิด อาจเป็นได้ว่าไม่มี foo เหมือน foo เก่าและเราก็ แต่ foo และเงินของเขาเป็นปาร์ตี้ (เสียงจากอัฒจันทร์ - "อย่าเป็นคนโง่!")
แน่นอนว่า "foo!" มีตำแหน่งที่แน่นอนและไม่สามารถถูกแทนที่ได้ในภาษาของเราแม้ว่าเราจะกลัวว่าการใช้งานมากเกินไปซึ่งมันถูกควบคุมอยู่ในปัจจุบันอาจส่งผลให้เกิดการตกหล่นในช่วงต้น (และอนิจจามืด) เราพูดว่าอนิจจาเพราะการใช้คำอย่างเหมาะสมอาจส่งผลให้เกิดเหตุการณ์ที่มีความสุขดังต่อไปนี้
มันเป็นการบรรยายอุณหพลศาสตร์ 8.50 โดยศาสตราจารย์สเลเตอร์ในห้อง 6-120 ศาสตราจารย์ที่ปกคลุมด้านหน้าของกระดานดำได้ตั้งมือจับที่ใช้กลไกยกขณะเดียวกันก็หันไปที่ชั้นเรียนเพื่ออภิปรายต่อไป กระดานด้านหน้าช้าอย่างสง่าผ่าเผยยกตัวขึ้นเผยให้เห็นกระดานด้านหลังและบนกระดานเขียนสัญลักษณ์ขนาดใหญ่ที่สะกดว่า "FOO" ไว้บนกระดาน
หนังสือพิมพ์ The Techเมื่อปีที่แล้วจดหมายถึงบรรณาธิการ, กันยายน1937 :
ตามเวลาที่รถไฟมาถึงสถานีนีโอไฟท์จะเต็มไปด้วยเรื่องราวแห่งความรุ่งโรจน์ของพี่โอมิคอนไมครอนไมครอนซึ่งมักเรียกกันว่าฟูพวกเขาเป็นเหยื่อที่ง่าย
...
ไม่ใช่ว่าฉันจะสูญเสียลูกชายสี่คนแรกของฉันไปสู่ภราดรภาพที่ยิ่งใหญ่และเป็นสากลของพี่โอไมครอนโอไมครอน แต่ฉันหวังว่าลูกชายของฉันคนที่ห้าซึ่งเป็นลูกของฉันควรได้รับการเตือนล่วงหน้าอย่างน้อย
หวังว่าคุณจะ
แม่แห่งห้าไม่พอใจ
และเทคโนโลยีในเดือนธันวาคม1938 :
แนวโน้มความคิดทั่วไปอาจตีความได้ดีที่สุดจากคำพูดที่เกิดขึ้นในตอนท้ายของบัตรลงคะแนน หนึ่งเสียงกล่าวว่า '"ฉันไม่คิดว่าสิ่งที่ฉันทำคือธุรกิจของ Pulver" ในขณะที่อีกคนหนึ่งเพิ่งเพิ่มคำว่า "Foo"
เอกสารแรก "foo" ในแวดวงเทคโนโลยีน่าจะเป็นพจนานุกรมของ TMRC ในปี 1959 :
FOO: พยางค์ศักดิ์สิทธิ์ (FOO MANI PADME HUM); ที่จะพูดเมื่ออยู่ภายใต้แรงบันดาลใจในการสื่อสารกับเทพ ภาระผูกพันแรกของเราคือการทำให้ Foo Counters หมุนต่อไป
เหล่านี้มีการอธิบายที่FOLDOC คอมไพเลอร์ของพจนานุกรม Pete Samson กล่าวในปี 2005:
การใช้คำนี้ที่ TMRC ทำให้เสียการมาที่นี่ของฉัน ตัวนับ foo สามารถมีแสงกระพริบแบบสุ่มหรืออาจเป็นตัวนับจริงที่มีอินพุตที่ไม่ชัดเจน
และจากJargonของปี 1996 ไฟล์ 4.0.0 :
รุ่นก่อนหน้าของพจนานุกรมนี้ได้รับ 'baz' เป็นความเสียหายของบาร์ Stanford อย่างไรก็ตาม Pete Samson (คอมไพเลอร์ของพจนานุกรม TMRC) รายงานว่าเป็นปัจจุบันแล้วเมื่อเขาเข้าร่วม TMRC ในปี 1958 เขากล่าวว่า "มันมาจาก" Pogo "Albert the Alligator เมื่อเดือดร้อนหรือเดือดดาลจะตะโกน 'Bazz Fazz!' หรือ 'Rowrbazzle!' รูปแบบของสโมสรได้รับการกล่าวถึงในการจำลอง (ตำนาน) มณฑลนิวอิงแลนด์ของ Rowrfolk และ Bassex (Rowrbazzle ผสมกับ (Norfolk / Suffolk / Middlesex / Essex) "
หนึ่งปีก่อนหน้าพจนานุกรม TMRC, MIT Voo Doo Gazette ของ1958 ("อารมณ์ขันเกี่ยวกับสำนักงานของ MIT Deans") (PDF)กล่าวถึง Foocom ใน "The Laws of Murphy and Finagle" โดย John Banzhaf (นักศึกษาวิศวกรรมไฟฟ้า) :
การวิจัยเพิ่มเติมภายใต้ข้อตกลงร่วมทุน Foocom และ Anarcom ได้ขยายกฎหมายให้ครอบคลุมและครอบคลุมทั่วโลก: หากมีสิ่งใดผิดพลาดได้ก็จะเกิดขึ้น!
นอกจากนี้ในปี 1964 MIT Voo Doo (PDF) ก็อ้างถึงการใช้ TMRC:
ใช่ ฉันต้องการที่จะประสบความสำเร็จและลูกค้าหิมะทันที ส่งปริญญามาให้ฉัน: ...
ฟูเคาน์เตอร์
ฟูจุง
แต่ขอให้จำไว้ว่าคำถามนี้เกี่ยวกับตัวอย่างโค้ดดังนั้นหา "foo", "bar" และ "foobar" ที่เผยแพร่ในโค้ด
ดังนั้นไฟล์ศัพท์แสง 4.4.7พูดถึง "foobar":
อาจเผยแพร่ครั้งแรกผ่านคู่มือ DECsystem โดย Digital Equipment Corporation (DEC) ในปี 1960 และต้นปี 1970; การพบเห็นที่ยืนยันแล้วกลับไปที่ปี 1972
การอ้างอิงที่ตีพิมพ์ครั้งแรกที่ฉันสามารถหาได้คือตั้งแต่เดือนกุมภาพันธ์2507แต่เขียนในเดือนมิถุนายน 2506 ภาษาการเขียนโปรแกรม LISP: การใช้งานและการใช้งานโดย Information International, Inc. กับผู้เขียนหลายคน แต่รวมถึง Timothy P. Hart และ Michael Levin
ดังนั้นเนื่องจาก "FOO" เป็นชื่อของตัวเอง "COMITRIN" จะถือว่าทั้ง "FOO" และ "(FOO)" ด้วยวิธีเดียวกัน
รวมถึงตัวแปร metasyntactic อื่น ๆ เช่น: FOO CROCK GLITCH / POOT TOOR / ON You / SNAP CRACKLE POP / XYZ
ฉันคาดหวังว่านี่จะเหมือนกับการอ้างอิง "foo" ต่อไปนี้จาก Project MAC ของ MIT ในAIM-064 ในเดือนมกราคม1964หรือLISP Exercisesโดย Timothy P. Hart และ Michael Levin:
รถยนต์ [((FOO. CROCK). GLITCH)]
มันแบ่งตัวแปร metasyntactic อื่น ๆ อีกมากมายเช่น: CHI / BOSTON นิวยอร์ก / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / ตุ๊ดตุ๊ด / ISTHISATRIVIALEXCERCISE / PLOPP CRACKLE POP / หนึ่งสองสาม / แพลตฟอร์สไตรค์
สำหรับทั้ง "foo" และ "bar" ด้วยกันการอ้างอิงที่เร็วที่สุดที่ฉันสามารถหาได้คือจาก MAC Project ของ MIT ในAIM-098 ของมิถุนายน1966หรือPDP-6 LISPโดย Peter Samson:
EXPLODE เช่น PRIN1 แทรกเครื่องหมายทับดังนั้น (EXPLODE (QUOTE FOO / BAR)) PRIN1 เป็น (FOO // / BAR) หรือ PRINC's as (FOO / BAR)
การเรียกคืนบางอย่างเพิ่มเติม
@Walter Mittyจำได้ว่าเว็บไซต์นี้ในปี 2008:
ฉันสองไฟล์ศัพท์แสงเกี่ยวกับ Foo Bar ฉันสามารถย้อนกลับไปอย่างน้อยถึงปี 1963 และ PDP-1 หมายเลขซีเรียล 2 ซึ่งอยู่บนชั้นสองของอาคาร 26 ที่ MIT Foo and Foo Bar ถูกใช้ที่นั่นและหลังปี 1964 ที่ห้อง PDP-6 ที่ MAC Project
John V. Everettจำได้ว่าในปี 1996:
เมื่อฉันเข้าร่วม DEC ในปี 1966 foobar นั้นถูกใช้โดยทั่วไปแล้วเป็นชื่อไฟล์ที่ถูกทิ้ง ฉันเชื่อว่า fubar กลายเป็น foobar เพราะ PDP-6 รองรับชื่อตัวละครหกชื่อแม้ว่าฉันจะสันนิษฐานเสมอว่าคำศัพท์ที่ย้ายไป DEC จาก MIT ในวันนั้นมี MIT หลายประเภทที่บางคนเคยทำงานกับ 7090/7094 CTSS เนื่องจาก 709x เป็นเครื่องจักรขนาด 36 บิต foobar อาจถูกใช้เป็นชื่อไฟล์ทั่วไปที่นั่น
โดยทั่วไปแล้ว Foo และ bar นั้นถูกใช้เป็นนามสกุลไฟล์ เนื่องจากตัวแก้ไขข้อความของวันนั้นดำเนินการกับไฟล์อินพุตและสร้างไฟล์เอาต์พุตมันเป็นเรื่องธรรมดาที่จะแก้ไขจากไฟล์. foo เป็นไฟล์. bar และกลับมาอีกครั้ง
เป็นเรื่องปกติที่จะใช้ foo เพื่อเติมบัฟเฟอร์เมื่อแก้ไขด้วย TECO สตริงข้อความที่เติมดิสก์บล็อกหนึ่งอันคือ IFOO $ HXA127GA $$ โปรแกรมเมอร์ PDP-6/10 เกือบทั้งหมดที่ฉันทำงานด้วยใช้สตริงคำสั่งเดียวกันนี้
Daniel PB Smithในปี 1998:
Dick Gruen มีอุปกรณ์ในห้องพักหอพักของเขาซึ่งเป็นที่รวมตัวกันของ B-battery ตัวต้านทานตัวเก็บประจุและหลอดนีออน NE-2 ซึ่งเขาเรียกว่า "foo counter" นี่น่าจะประมาณ 2507 หรือมากกว่านั้น
Robert Schuldenfreiในปี 1996:
การใช้ FOO และ BAR เป็นตัวอย่างชื่อตัวแปรย้อนกลับไปอย่างน้อยปี 1964 และ IBM 7070 สิ่งนี้อาจเก่ากว่า แต่นั่นคือที่ฉันเห็นครั้งแรก นี่คือในแอสเซมเบลอร์ สิ่งที่จะเป็นจำนวนเต็ม FORTRAN เทียบเท่า? IFOO และ IBAR?
Paul M. Wexelblatในปี 1992:
แอสเซมเบลอร์ PDP-1 ที่เก่าที่สุดใช้อักขระสองตัวสำหรับสัญลักษณ์ (เครื่อง 18 บิต) โปรแกรมเมอร์มักจะทิ้งคำสองสามคำไว้เป็นพื้นที่แพตช์เพื่อแก้ไขปัญหา (ข้ามไปที่พื้นที่ปะแก้ทำโค้ดใหม่กระโดดกลับ) พื้นที่นั้นตามอัตภาพชื่อ FU: ซึ่งย่อมาจาก Fxxx Up สถานที่ที่คุณแก้ไข Fxxx Ups เมื่อพูดแล้วมันถูกเรียกว่า FU space Assemblers ที่ใหม่กว่า (เช่น MIDAS อนุญาตแท็กถ่านสามตัวเพื่อให้ FU กลายเป็น FOO และในขณะที่โปรแกรมเมอร์ PDP-1 ทั้งหมดจะบอกคุณว่าเป็นพื้นที่ FOO
Bruce B. Reynoldsในปี 1996:
ในฝั่ง IBM ของ FOO (FU) BAR คือการใช้ด้าน BAR เป็นการลงทะเบียนที่อยู่ฐาน; ในโปรแกรมเมอร์ของ CICS ช่วงกลางปี 1970 ต้องกังวลกับ xxxBARs ที่หลากหลาย ... ฉันคิดว่าหนึ่งในนั้นคือ FRACTBAR ...
นี่คือIBM "BAR" ตรงจากปี 1955
การอ้างอิงก่อนอื่น:
ฉันไม่สามารถค้นหาการอ้างอิงใด ๆ ไปยัง foo bar เป็น "inverted foo signal" ตามที่แนะนำใน RFC3092 และที่อื่น ๆ
นี่คือ F00s ก่อนหน้านี้บางส่วน แต่ฉันคิดว่ามันเป็นเรื่องบังเอิญ / เป็นบวก:
การใช้คำเช่น "foo" และ "bar" ทำให้คุณมุ่งความสนใจไปที่แนวคิดไม่ใช่สิ่งที่คุณสามารถเข้าใจได้โดยยึดตามคำศัพท์ที่คุณรู้ ตัวอย่างเช่น:
public abstract class Animal
{
public abstract void speak();
}
public class Cat
extends Animal
{
public abstract void speak()
{
System.out.println("meow");
}
}
public class Dog
extends Animal
{
public abstract void speak()
{
System.out.println("bark");
}
}
โค้ดด้านบนช่วยให้คุณย้อนกลับไปเรียนรู้สิ่งต่าง ๆ ในโลกแห่งความเป็นจริง
หากคุณกำลังพยายามอธิบายแนวคิดที่ส่วนที่สำคัญไม่ใช่สิ่งที่กำลังทำอยู่ (ตัวอย่างการพิมพ์ meow หรือ bark) แต่เกี่ยวกับวิธีการทำแล้วให้ถอดชิ้นส่วนที่คุณคุ้นเคยช่วยออก:
public abstract class Foo
{
public abstract void star();
}
public class Bar
extends Foo
{
public abstract void star()
{
System.out.println("A");
}
}
public class Car
extends Foo
{
public abstract void star()
{
System.out.println("b");
}
}
ตอนนี้คุณต้องมุ่งเน้นไปที่สิ่งที่เกิดขึ้นจริงคุณไม่สามารถเดาได้ว่าอะไรจะเกิดขึ้น
ดังนั้นเวอร์ชั่นสั้นคือ foo, bar, and like ใช้เพื่อเน้นแนวคิดที่เนื้อหาไม่สำคัญ แต่เป็นแนวคิด
จากhttp://en.wikipedia.org/wiki/Foobar
ในด้านเทคโนโลยีคำนี้อาจถูกเผยแพร่ผ่านคู่มือระบบโดย Digital Equipment Corporation ในปี 1960 และต้นปี 1970 ความเป็นไปได้อีกประการหนึ่งคือ foobar วิวัฒนาการมาจากอุปกรณ์อิเล็กทรอนิกส์ นี่เป็นเพราะหากสัญญาณดิจิตอลมีการใช้งานต่ำ (ดังนั้นเงื่อนไขเชิงลบหรือแรงดันศูนย์เป็นตัวแทนของ "1") จากนั้นแถบแนวนอนมักจะอยู่เหนือป้ายสัญญาณ ไฟล์ Jargon สร้างกรณีที่ foo นำหน้า FUBAR
จากไฟล์ Jargon http://www.catb.org/jargon/html/F/foo.html
foo: / foo /
บาร์: / bar /, n.
อ้างอิงจากhttp://en.wikipedia.org/wiki/Foo :
ต้นกำเนิดของข้อกำหนดนั้นไม่เป็นที่ทราบแน่ชัดและมีหลายทฤษฎีที่มีความสำคัญในการระบุ Foobar อาจมาจากคำย่อ FUBAR ทางทหารที่หยาบคายหรืออาจได้รับความนิยมเนื่องจากข้อเท็จจริงที่ว่ามันเด่นชัดเหมือนกัน
ฉันสองไฟล์ศัพท์แสงเกี่ยวกับ Foo Bar
ฉันสามารถย้อนกลับไปอย่างน้อยถึงปี 1963 และ PDP-1 หมายเลขซีเรียล 2 ซึ่งอยู่บนชั้นสองของอาคาร 26 ที่ MIT Foo and Foo Bar ถูกใช้ที่นั่นและหลังปี 1964 ที่ห้อง PDP-6 ที่ MAC Project
เท่าที่ผมรู้มาจาก foo foobar ซึ่งเป็นการเปลี่ยนแปลงของ "fubar" จับ phraase ทหารที่ยืนสำหรับ " F ***เอ็ดยูพีข eyond LL R ecognition."
จากนั้นอีกครั้งอาจมีแหล่งอื่น
Foo and Bar (หรือที่รู้จักกันในชื่อ FUBAR ... F *** ed Up Beyond All Recognition) เพิ่งถูกใช้เป็นชื่อสามัญมาตรฐานสำหรับสิ่งต่าง ๆ เช่นคลาสคุณสมบัติคุณสมบัติชื่อเมธอด ฯลฯ
โดยพื้นฐานแล้วความคิดคือการถ่ายทอดรหัสของคุณโดยไม่มีข้อมูลที่ไม่เกี่ยวข้องซึ่งอาจจะอยู่ห่างจากวิธีการทำงานของรหัส (เช่นเราไม่จำเป็นต้องรู้ว่าฟังก์ชั่นของคุณชื่อ AddUser เพื่อดูรหัสและเข้าใจว่ามันทำอะไรถ้าเราเปลี่ยนชื่อ ถึง Foo ())
เหล่านี้เป็นคำที่ไร้สาระที่ในกรณีส่วนใหญ่สามารถทดแทนด้วยคำตัวอย่างที่เกี่ยวข้องมากขึ้น คำว่า "foo" และ "bar" มักใช้ในการเขียนโปรแกรมเมื่อมีคนไม่สามารถนึกถึงตัวอย่างที่ดีได้
หาก "foo" และ "bar" มาจาก FUBAR ทำไมพวกเขาถึงถูกใช้โดยมืออาชีพจำนวนมากในตัวอย่างการสอนเมื่อตัวอย่างไม่เหมือนอะไรที่เกินกว่าการจดจำ?
สำหรับฉันแล้วการใช้คำเหล่านี้อย่างไม่เหมาะสมคือสิ่งที่เกินกว่าจะจำได้