Lịch sử của việc sử dụng các tiêu đề của Foo và và bar Thanh trong các ví dụ về mã nguồn là gì?


60

Tại sao nhiều ví dụ mã, đặc biệt là hướng dẫn, sử dụng tên "Foo" và "Bar" thường xuyên như vậy? Nó gần như là một tiêu chuẩn.

Ví dụ:

void foo(char* bar) {
  printf("%s", bar);
}

2
Có vẻ như không có bài đăng nào của fmsf an toàn trước sự bắt nạt của RichB.

Yup anh ấy thích thay đổi những gì tôi viết, tôi bắt đầu nghĩ rằng anh ấy bị ám ảnh bởi nó

4
"tại sao thanh foo?" tiêu đề không hay lắm, IMHO
Jeff Atwood

1
Tôi đã thêm một câu trả lời với từ nguyên chính xác (nó là từ phổ biến nhất trong một họ các thuật ngữ tiếng lóng của Quân đội Hoa Kỳ Thế chiến thứ hai) và nguồn của tôi.

Đó là một meme - một ý tưởng truyền thông. Đó là sự biện minh của riêng nó.
Mike Dunlavey

Câu trả lời:


65

Foobar đến từ chữ viết tắt FUBAR của Quân đội Hoa Kỳ WWII, "F-ed Up Beyond All Recognition". Cả một gia đình của các điều khoản này đã được sử dụng rộng rãi trong các chiến dịch Bắc Phi và Sicilia (1942-43). Ngày chiến đấu xuất sắc của Rick Atkinson : Cuộc chiến ở Sicily và Ý, 1943-1944 đưa ra một danh sách về những điều này. Ví dụ, một JANFU là một "Hải quân lục quân chung", chẳng hạn như sự cố vào ngày 11 tháng 7 năm 1943 khi hạm đội xâm lược cho Chiến dịch Husky bắn hạ 23 chiếc vận tải C-47 của Không quân Lục quân chở lính dù để tăng cường cho bãi biển.

Cập nhật: Wikipedia có một danh sách các từ viết tắt liên quan bao gồm một số từ gốc WWII được liệt kê bởi Atkinson.

Bất kỳ lập trình viên nào cũng sẽ hiểu động lực của việc sử dụng foobar để đặt tên cho các biến. Họ chắc chắn đã là một phần của văn hóa C / UNIX ngay từ đầu và như @Walter Mitty chỉ ra, đã có trước nó.

Cập nhật (10/5/2009): Đây là mô tả của Atkinson:

Sự "văn minh" lan tỏa của họ khiến họ cảnh giác với sự nhiệt thành. John Mason Brown, một trung úy của Cục Dự trữ Hải quân đứng đầu Sicily, viết: "Chúng tôi không phải là những người lãng mạn chứa đầy dây chằng mũi kiếm". "Cuộc chiến cuối cùng đã quá gần với điều đó." Cuộc sống quân sự làm tăng sự nhạy cảm mỉa mai và sự hoài nghi của họ. Một từ viết tắt thô thiển đã thu hút được những kỳ vọng hạ thấp của người lính - SNAFU, "tình hình bình thường, tất cả đều bị phá hỏng" - đã mở rộng thành một từ vựng về hoài nghi GI: SUSFU (tình huống không thay đổi, vẫn bị chọc cười); FUMTU (đụ nhiều hơn bình thường); JANFU (Liên quân-Hải quân chết tiệt); JAAFU (chung Anh-Mỹ chết tiệt); FUAFUP (fucked lên và fucked lên thích hợp); và FUBAR (vượt lên trên tất cả sự công nhận) [Atkinson, p. 36].

Cập nhật (23/11/2011): @Hugo có một danh sách tuyệt vời về các tiền đề phi quân sự.


3
Để thêm vào từ nguyên: "FUBAR có thể đã bị ảnh hưởng bởi từ furchtbar của Đức, có nghĩa là khủng khiếp. Nó được phát âm bằng một cht mềm, và có lẽ đã thực hiện quá trình chuyển đổi trong Thế chiến II"
Mark

4
@Mark, Wikipedia tiếng Đức (de.wikipedia.org/wiki/Fubar), cho thấy đây có thể là một giả khoa học. Nó cũng chỉ ra những tiền đề như dấu hiệu "Silence IS FOO" trong phim hoạt hình năm 1938 của Warner Brother "The Daffy Doc".

4
@Jim Ferrans: Mặc dù FUBAR có thể ảnh hưởng đến việc sử dụng "thanh" với "foo", nhưng có bằng chứng mạnh mẽ rằng "foo" tự nó có trước WWII, với các tài liệu tham khảo ít nhất là từ những năm 1930, như nhận xét của bạn. Nó có thể là tốt để đề cập rằng trong cơ thể của câu trả lời của bạn.
Daniel Pryden

Vâng, foo chắc chắn có trước WWII. Trên thực tế, tôi đã tìm thấy một tờ báo của MIT từ năm 1938 cho chúng ta biết mức độ phổ biến của nó: "Như một khám phá, tất nhiên," foo! "Có một vị trí nhất định và có thể không thể thay thế trong ngôn ngữ của chúng ta, mặc dù chúng ta sợ rằng quá mức sử dụng mà hiện tại nó có thể dẫn đến việc nó rơi vào một sự lãng quên sớm (và, than ôi, một bóng tối). " Xem câu trả lời của tôi để biết thêm và một tài liệu tham khảo năm 1937 trên cùng một tờ báo: lập trình
Hugo

59

Tôi nghĩ đó là cách phát âm theo ngữ âm của fubar.

Viết tắt của:

  • F * cked
  • Lên
  • Vượt ra ngoài
  • Tất cả
  • Sửa

18
Sửa chữa hoặc công nhận; P

10
"Fouled" thường được sử dụng khi cần phải lịch sự.

30
sửa? không .. công nhận
hasen

6
Đó là "sự công nhận". Xem trích dẫn từ Ngày chiến đấu của Rick Atkinson tại đây: stackoverflow.com/questions/262271/iêu

7
Chỉ cần lưu ý rằng có bằng chứng mạnh mẽ (xem RFC 3092, Tệp Jargon và các câu trả lời khác ở đây) rằng "foo" đã được sử dụng như một từ vô nghĩa giữ chỗ trong những năm 1930, trước khi FUBAR đi vào tiếng lóng quân sự trong thời đại Thế chiến II.
Daniel Pryden

41

Các từ điển của Hacker mới có một mục rất tốt về vấn đề này - và tôi coi nó là một nguồn lực tốt hơn cho loại điều hơn Wikipedia:

biến số metasyntactic /n./

Một tên được sử dụng trong các ví dụ và được hiểu là đại diện cho bất cứ điều gì đang được thảo luận, hoặc bất kỳ thành viên ngẫu nhiên nào của một nhóm các điều đang thảo luận. Từ foo là ví dụ điển hình. Để tránh nhầm lẫn, tin tặc không bao giờ (tốt, hầu như không bao giờ) sử dụng 'foo' hoặc các từ khác giống như nó là tên vĩnh viễn cho bất cứ điều gì. Trong tên tệp, một quy ước chung là bất kỳ tên tệp nào bắt đầu bằng tên biến metasyntactic là một tệp cào có thể bị xóa bất cứ lúc nào.

Ở một mức độ nào đó, danh sách các biến số siêu hình ưa thích của một người là một chữ ký văn hóa. Chúng xảy ra cả trong chuỗi (được sử dụng cho các nhóm biến hoặc đối tượng liên quan) và dưới dạng singletons. Dưới đây là một vài chữ ký phổ biến:

foo, bar, baz, quux, quuux, quuuux ...:
Việc sử dụng MIT / Stanford, hiện được tìm thấy ở mọi nơi (phần lớn nhờ các phiên bản đầu của từ vựng này!). Tại MIT (nhưng không phải tại Stanford), baz đã ngừng sử dụng một thời gian trong những năm 1970 và 1980. Một đột biến phổ biến gần đây của chuỗi này chèn qux trước quux.

bazola, ztesch:
Stanford (từ giữa thập niên 70 trở đi).

foo, bar, thud, grunt:
Series này đã phổ biến tại CMU. Các biến liên quan đến CMU khác bao gồm gorp.

foo, bar, fum:
Loạt bài này được báo cáo là phổ biến tại XEROX PARC.

fred, barney:
Xem mục cho fred. Đây có xu hướng là chủ nghĩa Anh.

corge, grault, flarp:
Phổ biến tại Đại học Rutgers và trong số các tin tặc GOSMACS.

zxc, spqr, wombat:
Đại học Cambridge (Anh).

shme
Berkeley, GeoWorks, Ingres. Phát âm / shme / với một từ ngắn / e /.


Đại học snork Brown, đầu những năm 1970.

foo, bar, zot
Đại học Công nghệ Helsinki, Phần Lan.

blarg, wibble
New Zealand.

toto, Titi, tata, tutu
Pháp.

pippo, pluto, paperino
Ý. Pippo / pee'po / và Paperino / pa-per-ee'-no / là tên tiếng Ý của Goofy và Donald Duck.

aap, noot, mies
Hà Lan. Đây là những từ đầu tiên một đứa trẻ sử dụng để đánh vần trên bảng chính tả tiếng Hà Lan.

Trong số này, chỉ có 'foo' và 'bar' là phổ quát (và gần như vậy). Các hợp chất foobar và 'foobaz' cũng được hưởng tiền rất rộng.

Một số thuật ngữ biệt ngữ cũng được sử dụng làm tên metasyntactic; barf và lẩm bẩm, ví dụ. Xem thêm Commonwealth Hackish để thảo luận về nhiều biến số siêu hình được tìm thấy ở Vương quốc Anh và Khối thịnh vượng chung.


Phải nói rằng, tôi đến từ New Zealand và tôi chưa bao giờ nghe nói về 'blarg' HOẶC 'wibble'.

Đó là một trong những khá tốt. Thật công phu. Cảm ơn anh bạn.
Tarik

OMG, tài khoản QL của tôi là qux. Bị sốc ...

@Colin - Tôi đã thay đổi liên kết đến một trang web khác, vì trang hiện có đang ngoại tuyến.
từ đó

Tôi đã tìm thấy một số biến số siêu thực thú vị khác từ một bài báo của MIT 1964 về LISP (tất nhiên cũng có foo): chi / boston new york / spinach butter steak / foo crock glitch / poot toop / toot toot / isthisatrivialexcercise crackle pop / một hai ba / máy bay phụ thresher. Xem câu trả lời của tôi để biết thêm thông tin: lập trình
Hugo

25

Wikipedia đưa ra định nghĩa về Biến số Metasyntactic :

Trong khoa học máy tính, các lập trình viên sử dụng các biến số siêu hình để mô tả tên giữ chỗ hoặc thuật ngữ bí danh thường được sử dụng để biểu thị vấn đề đang thảo luận hoặc một thành viên tùy ý của một lớp các vấn đề đang thảo luận. Việc sử dụng biến metasyntactic rất hữu ích trong việc giải phóng lập trình viên khỏi việc tạo một biến có tên logic, thường hữu ích khi tạo hoặc dạy các ví dụ về thuật toán. Từ foo là ví dụ chính.
Thuật ngữ "biến metasyntactic" chủ yếu được tìm thấy trong văn học không chính thức. Nó đôi khi cũng được sử dụng như một từ đồng nghĩa với biến thái.
Bất kỳ ký hiệu hoặc từ nào không vi phạm các quy tắc của ngôn ngữ đều có thể được sử dụng như một biến số siêu hình, nhưng các từ vô nghĩa thường được sử dụng. Khái niệm tương tự được sử dụng trong các lĩnh vực khác, nơi nó được thể hiện bằng các thuật ngữ như biến sơ đồ (xem hình thức logic ).
Bằng cách tương tự toán học: Biến metasyntactic là một từ là biến của các từ khác, giống như trong các chữ cái đại số được sử dụng làm biến cho các số.

Bài viết cũng đưa ra các ví dụ phổ biến về các biến như vậy trong các ngôn ngữ lập trình khác nhau:

C
Trong ví dụ sau về ngôn ngữ lập trình C, tên hàm foo và thanh tên biến là cả hai biến siêu hình. Các dòng bắt đầu bằng // là các bình luận.

// The function named foo
int foo(void)
{
   // Declare the variable bar and set the value to 1
   int bar = 1;

   return bar;
}

Con trăn

Spam, ham và trứng là các biến số siêu hình chính được sử dụng trong ngôn ngữ lập trình Python. [5] Đây là một tham chiếu đến bản phác thảo hài kịch nổi tiếng, Spam, của Monty Python, tên viết tắt của ngôn ngữ. [6] Trong ví dụ sau đây, thư rác, ham và trứng là các biến số và dòng bắt đầu bằng # là các bình luận.

# Define a function named spam
def spam():

    # define the variable ham
    ham = "Hello World!"

    #define the variable eggs
    eggs = 1

    return

Hồng ngọc

Trong ví dụ sau, baz, foo và bar là các biến và dòng biến đổi bắt đầu bằng # là các nhận xét.

# 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

19

Đây là câu trả lời của wikipedia:

Các thuật ngữ foobar, foo, bar và baz, là các tên giữ chỗ phổ biến (còn được gọi là các biến số metasyntactic) được sử dụng trong lập trình máy tính hoặc tài liệu liên quan đến máy tính. Chúng thường được sử dụng để biểu diễn các giá trị không xác định, thông thường khi mô tả một kịch bản trong đó mục đích của các giá trị chưa biết được hiểu, nhưng các giá trị chính xác của chúng là tùy ý và không quan trọng. Các thuật ngữ có thể được sử dụng để đại diện cho bất kỳ phần nào của một hệ thống hoặc ý tưởng phức tạp, bao gồm dữ liệu, biến, hàm và lệnh. Các từ này không có ý nghĩa trong cách sử dụng này và chỉ là các biểu diễn logic, giống như các chữ x và y được sử dụng trong đại số. Foobar thường được sử dụng một mình; foo, bar và baz thường được sử dụng theo thứ tự đó, khi cần nhiều thực thể.

Foo đã sử dụng ngôn ngữ tiếng Anh như một chủ nghĩa thần kinh và được nhiều người coi là ví dụ điển hình của biến siêu hình. [Cần dẫn nguồn] Nó được sử dụng rộng rãi trong các ví dụ lập trình máy tính (đôi khi được biểu thị là "chỉ một lần duy nhất") và mã giả. Eric S. Raymond đã gọi nó là một "chủ nghĩa tin tặc quan trọng" bên cạnh bùn và tàu. [1]

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

Và từ RFC 3092:

Khi được sử dụng liên quan đến 'thanh', nó thường được truy nguyên từ tiếng lóng của Quân đội thời kỳ Thế chiến II FUBAR ('fucked lên trên tất cả sửa chữa'), sau đó được sửa đổi thành foobar. Các phiên bản ban đầu của Tệp Jargon [JARGON] đã giải thích sự thay đổi này là sự cung cấp sau chiến tranh, nhưng dường như nhiều khả năng FUBAR là một dẫn xuất của 'foo' có lẽ bị ảnh hưởng bởi 'furchtbar' (khủng khiếp) - 'foobar' của Đức thực sự đã là hình thức ban đầu.

Đối với, có vẻ như, từ 'foo' đã có một lịch sử trước chiến tranh ngay lập tức trong các truyện tranh và phim hoạt hình. Trong bộ phim hoạt hình Warner Brothers năm 1938 của đạo diễn Robert Kẹpett, "The Daffy Doc", một phiên bản rất sớm của Daffy Duck giữ một dấu hiệu cho biết "Silence IS FOO!" ... (snip)

http://www.faqs.org/rfcs/rfc3092.html


6
hoặc bạn có thể thừa nhận nó đến từ fubar = '"f" vượt quá mọi sự công nhận'
Jonathan Fingerland

4
@Jonathan Fingerland: Không, không. (Trên thực tế, "foo" có thể có trước cả "foobar" và "FUBAR".) Xem RFC 3092 và mục nhập tệp Jargon cho "foo".
Daniel Pryden

@Daniel, Tài liệu tham khảo tuyệt vời. Đã thêm
Jonathan Fingerland

19

tl; dr

  • "Foo" và "bar" là các biến siêu hình được phổ biến bởi MIT và DEC, các tài liệu tham khảo đầu tiên đang hoạt động trên LISP và PDP-1 và Project MAC từ năm 1964 trở đi.

  • Nhiều người trong số họ đã ở trong Câu lạc bộ Đường sắt Mô hình Công nghệ của MIT, nơi chúng tôi tìm thấy việc sử dụng "foo" đầu tiên trong giới công nghệ vào năm 1959 (và một biến thể vào năm 1958).

  • Cả "foo" và "bar" (và thậm chí "baz") đều nổi tiếng trong văn hóa đại chúng, đặc biệt là từ truyện tranh Smokey Stover và Pogo, sẽ được nhiều thành viên TMRC đọc.

  • Ngoài ra, có vẻ như FUBAR quân sự đã góp phần vào sự nổi tiếng của họ.


Việc sử dụng "foo" đơn độc như một từ vô nghĩa được ghi lại khá rõ trong văn hóa đại chúng vào đầu thế kỷ 20, cũng như FUBAR quân sự. (Một số nền đọc: FOLDOC FOLDOC Jargon File Jargon File Wikipedia RFC3092 )


OK, vì vậy hãy tìm một số tài liệu tham khảo.

DỪNG ÁP LỰC! Sau khi đăng câu trả lời này, tôi phát hiện ra bài viết hoàn hảo này về "foo" trong ấn bản thứ sáu ngày 14 tháng 1 năm 1938 của The Tech ("tờ báo lâu đời nhất và lớn nhất của MIT và tờ báo đầu tiên được xuất bản trên web"), Tập LVII. Số 57, Giá ba lon:

Trên Foo-ism

Lounger nghĩ rằng hoạt động kinh doanh này của Foo-ism đã được thực hiện quá xa bởi những người đề xuất sai lầm của nó, và từ đây trở đi sẽ đứng lên chống lại sự lạm dụng của nó. Có thể là không có foo như một foo cũ, và chúng ta là nó, nhưng dù sao, một foo và tiền của anh ta là một bữa tiệc. (Tiếng nói từ những người tẩy trắng - "Đừng giận dữ!")

Như một khám phá, tất nhiên, "foo!" có một vị trí nhất định và có thể không thể thay thế trong ngôn ngữ của chúng ta, mặc dù chúng ta sợ rằng việc sử dụng quá mức mà nó hiện đang có thể dẫn đến việc nó rơi vào một sự lãng quên sớm (và, than ôi, tối tăm). Chúng tôi nói than ôi vì việc sử dụng từ này đúng cách có thể dẫn đến những sự cố hạnh phúc như sau.

Đó là một bài giảng Nhiệt động 8,50 của Giáo sư Slater trong Phòng 6-120. Giáo sư, đã che mặt trước của bảng đen, đặt tay cầm vận hành cơ chế nâng, chuyển sang lớp để tiếp tục thảo luận. Bảng trước chậm rãi, uy nghi, tự nhấc lên, để lộ bảng phía sau nó, và trên bảng đó, viết lớn, các ký hiệu đánh vần "FOO"!

Tờ báo Tech , một năm trước đó, Thư gửi biên tập viên, tháng 9 năm 1937 :

Vào thời điểm tàu ​​đến ga, các tân sinh viên tràn ngập những câu chuyện về vinh quang của Phi Omicron Omicron, thường được gọi là Foo, rằng họ là con mồi dễ dàng.

...

Không phải là tôi bận tâm về việc mất bốn đứa con trai đầu tiên của mình cho Hội anh em vĩ đại và toàn cầu của Phi Omicron Omicron, nhưng tôi ước rằng con trai thứ năm của tôi, con tôi, ít nhất nên được cảnh báo trước.

Hy vọng là của bạn

Mẹ phẫn nộ của Năm.

Công nghệ vào tháng 12 năm 1938 :

Xu hướng chung của tư tưởng có thể được giải thích tốt nhất từ ​​những nhận xét được đưa ra ở cuối các lá phiếu. Một phiếu bầu cho biết, "" Tôi không nghĩ những gì tôi làm là bất kỳ hoạt động kinh doanh nào của Pulver ", trong khi một người khác chỉ thêm một câu" Foo ".


Tài liệu "foo" đầu tiên trong giới công nghệ có lẽ là Từ điển của ngôn ngữ TMRC năm 1959 :

FOO: âm tiết thiêng liêng (FOO MANI PADME HUM); chỉ được nói khi được truyền cảm hứng đến công xã với Thần. Nghĩa vụ đầu tiên của chúng tôi là giữ cho Foo Counters quay.

Những điều này được giải thích tại FOLDOC . Trình biên dịch từ điển Pete Samson cho biết vào năm 2005:

Sử dụng từ này tại TMRC chống lại tôi đến đó. Một bộ đếm foo có thể chỉ đơn giản là có đèn nhấp nháy ngẫu nhiên, hoặc có thể là một bộ đếm thực với đầu vào tối nghĩa.

Và từ Jargon File 4.0.0 năm 1996 :

Các phiên bản trước của từ vựng này có nguồn gốc 'baz' là một tham nhũng của Stanford. Tuy nhiên, Pete Samson (biên dịch của từ vựng TMRC) báo cáo rằng nó đã có mặt khi anh ấy tham gia TMRC năm 1958. Anh ấy nói "Nó đến từ" Pogo ". Albert the Alligator, khi bị làm phiền hoặc phẫn nộ, sẽ hét lên 'Bazz Fazz!' hoặc 'Rowrbazzle!' Cách bố trí câu lạc bộ được cho là mô hình hóa các quận New England (huyền thoại) của Rowrfolk và Bassex (Rowrbazzle hòa lẫn với (Norfolk / Suffolk / Middlesex / Essex). "

Một năm trước từ điển TMRC, MIT Voo Doo Gazette năm 1958 ("Sự hài hước của văn phòng MIT Deans") (PDF) đã đề cập đến foocom, trong "The Laws of Murphy and Finagle" của John Banzhaf (một sinh viên kỹ thuật điện) :

Nghiên cứu sâu hơn dưới một khoản trợ cấp chung của foocom và Anarcom đã mở rộng luật pháp để được chấp nhận và áp dụng phổ biến: Nếu bất cứ điều gì có thể sai, nó sẽ!

Ngoài ra , MIT Voo Doo (PDF) năm 1964 cũng tham khảo cách sử dụng TMRC:

Đúng! Tôi muốn trở thành một khách hàng thành công và tuyết ngay lập tức. Gửi cho tôi một văn bằng: ...

  • Bộ đếm Foo

  • Foo Jung


Nhưng hãy nhớ câu hỏi này là về các ví dụ mã, vì vậy hãy tìm "foo", "bar" và "foobar" được xuất bản theo mã.

Vì vậy, Jargon File 4.4.7 nói về "foobar":

Có lẽ ban đầu được tuyên truyền thông qua các hướng dẫn sử dụng hệ thống DECs của Tập đoàn thiết bị kỹ thuật số (DEC) vào những năm 1960 và đầu những năm 1970; nhìn thấy xác nhận ở đó trở lại năm 1972.

Tài liệu tham khảo được xuất bản đầu tiên tôi có thể tìm thấy là từ tháng 2 năm 1964 , nhưng được viết vào tháng 6 năm 1963, Ngôn ngữ lập trình LISP: Hoạt động và ứng dụng của Information International, Inc., với nhiều tác giả, nhưng bao gồm Timothy P. Hart và Michael Levin:

Do đó, vì "FOO" là tên của chính nó, "COMITRIN" sẽ đối xử với cả "FOO" và "(FOO)" theo cùng một cách.

Cũng bao gồm các biến số siêu hình khác như: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ

Tôi hy vọng điều này cũng giống như tài liệu tham khảo tiếp theo của "foo" từ Dự án MAC của MIT vào tháng 1 năm 1964 , AIM-064, hoặc Bài tập LISP của Timothy P. Hart và Michael Levin:

xe hơi [((FOO. CROCK). GLITCH)]

Nó chia sẻ nhiều biến số siêu thực khác như: CHI / BO thịnh hành YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TUYỆT ĐỐI / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACK

Đối với cả "foo" và "bar" cùng nhau, tài liệu tham khảo sớm nhất tôi có thể tìm thấy là từ Dự án MAC của MIT vào tháng 6 năm 1966 của AIM-098, hoặc PDP-6 LISP bởi không ai khác ngoài Peter Samson:

EXPLODE, như PRIN1, chèn dấu gạch chéo, vì vậy (EXPLODE (QUOTE FOO / BAR)) PRIN1 là (FOO // / BAR) hoặc PRINC là (FOO / BAR).


Một số nhớ lại.

@Walter Mitty nhớ lại trên trang web này trong năm 2008:

Tôi thứ hai tập tin biệt ngữ liên quan đến Foo Bar. Tôi có thể theo dõi nó ít nhất là vào năm 1963 và PDP-1 số 2, ở tầng hai của Tòa nhà 26 tại MIT. Foo và Foo Bar đã được sử dụng ở đó, và sau năm 1964 tại phòng PDP-6 tại dự án MAC.

John V. Everett nhớ lại vào năm 1996:

Khi tôi tham gia DEC năm 1966, foobar đã được sử dụng phổ biến như một tên tệp vứt đi. Tôi tin rằng fubar đã trở thành foobar vì PDP-6 hỗ trợ sáu tên nhân vật, mặc dù tôi luôn giả sử thuật ngữ được chuyển sang DEC từ MIT. Có nhiều loại MIT tại DEC trong những ngày đó, một số người đã làm việc với CTSS 7090/7094. Vì 709x cũng là một máy 36 bit, foobar có thể đã được sử dụng làm tên tệp phổ biến ở đó.

Foo và thanh cũng thường được sử dụng làm phần mở rộng tập tin. Do các trình soạn thảo văn bản trong ngày hoạt động trên một tệp đầu vào và tạo ra một tệp đầu ra, nên thường chỉnh sửa từ tệp .foo thành tệp .bar và quay lại.

Nó cũng phổ biến để sử dụng foo để điền vào bộ đệm khi chỉnh sửa với TECO. Chuỗi văn bản để điền chính xác một khối đĩa là IFOO $ HXA127GA $$. Hầu như tất cả các lập trình viên PDP-6/10 mà tôi đã làm việc đã sử dụng cùng chuỗi lệnh này.

Daniel PB Smith năm 1998:

Dick Gruen có một thiết bị trong phòng ký túc xá, bộ lắp ráp thông thường gồm pin B, điện trở, tụ điện và ống neon NE-2, mà ông gọi là "bộ đếm foo". Điều này sẽ có được vào khoảng năm 1964 hoặc lâu hơn.

Robert Schuldenfrei năm 1996:

Việc sử dụng FOO và BAR làm tên biến ví dụ trở lại ít nhất là vào năm 1964 và IBM 7070. Điều này cũng có thể cũ hơn, nhưng đó là nơi lần đầu tiên tôi nhìn thấy nó. Đây là trong Trình biên dịch. Số nguyên FORTRAN tương đương là gì? IFOO và IBAR?

Paul M. Wexelblat năm 1992:

Trình biên dịch PDP-1 sớm nhất đã sử dụng hai ký tự cho các lập trình viên (máy 18 bit) luôn để lại một vài từ làm không gian vá để khắc phục sự cố. (Nhảy để vá không gian, thực hiện mã mới, nhảy trở lại) Không gian đó theo quy ước được đặt tên là FU: viết tắt của Fxxx Up, nơi bạn đã sửa lỗi Fxxx Ups. Khi nói, nó được gọi là không gian FU. Các Trình biên dịch sau này (ví dụ: MIDAS cho phép ba thẻ char để FU trở thành FOO và vì các lập trình viên TẤT CẢ PDP-1 sẽ cho bạn biết đó là không gian FOO.

Bruce B. Reynold năm 1996:

Về phía IBM của FOO (FU) BAR là việc sử dụng phía BAR làm Đăng ký địa chỉ cơ sở; vào giữa những năm 1970, các lập trình viên CICS đã phải lo lắng về các xxxxx khác nhau ... Tôi nghĩ rằng một trong số đó là FRACTebar ...

Đây là một "BAR" thẳng của IBM từ năm 1955.


Tài liệu tham khảo ban đầu khác:


Tôi chưa thể tìm thấy bất kỳ tài liệu tham khảo nào cho thanh foo là "tín hiệu foo đảo ngược" như được đề xuất trong RFC3092 và các nơi khác.

Dưới đây là một số F00 thậm chí sớm hơn nhưng tôi nghĩ chúng là sự trùng hợp / dương tính giả:


13

sử dụng các từ như "foo" và "bar" khiến bạn tập trung vào khái niệm không dựa trên những gì bạn có thể nắm bắt dựa trên các thuật ngữ bạn biết. Ví dụ:

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");
    }
}

Đoạn mã trên cho phép bạn rút lại kiến ​​thức về những điều trong thế giới thực.

Nếu bạn đang cố gắng giải thích một khái niệm trong đó phần quan trọng không phải là những gì đang được thực hiện (ví dụ như in meo hoặc vỏ cây) mà là cách nó được thực hiện sau đó loại bỏ những phần mà bạn quen thuộc:

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");
    }
}

Bây giờ bạn phải tập trung vào những gì đang thực sự xảy ra, bạn không còn có thể đoán được chuyện gì sẽ xảy ra.

Vì vậy, phiên bản ngắn là, foo, bar và tương tự, được sử dụng để nhấn mạnh các khái niệm trong đó nội dung không thực sự quan trọng nhưng ý tưởng thì có.


ah, một câu trả lời thực sự!
nickf

1
Có, nhưng tại sao Foo và Bar cụ thể? Tại sao không phải là Lorum và Ipsum?

vi.wikipedia.org/wiki/Foo có thể chính xác ...

@TofuBeer Yep, chúng là "biến số siêu hình". @masher xem câu trả lời của tôi với vô số tài liệu tham khảo về lý do tại sao Foo và Bar chứ không phải Lorem và Ipsum. programmers.stackexchange.com/questions/69788/... Trong thực tế, có vô số các biến metasyntactic khác nhau đã được sử dụng trong những năm qua, và ở những nơi khác nhau.
Hugo

7

Từ http://en.wikipedia.org/wiki/Foobar

Trong công nghệ, từ này có lẽ ban đầu được truyền bá qua các hướng dẫn sử dụng hệ thống của Digital Equipment Corporation vào những năm 1960 và đầu những năm 1970. Một khả năng khác là foobar phát triển từ thiết bị điện tử, như một tín hiệu foo ngược. Điều này là do nếu tín hiệu số hoạt động ở mức thấp (vì vậy điều kiện điện áp âm hoặc bằng 0 biểu thị cho "1") thì thanh ngang thường được đặt trên nhãn tín hiệu. Tệp Jargon tạo ra một trường hợp mà foo có thể có trước FUBAR


điều này không giải thích lý do tại sao

Tôi đã tìm thấy rất nhiều tài liệu tham khảo về "foo" đầu tiên và sau đó là "thanh" từ MIT và cả DEC (cả ở Massachusetts), trong công việc của họ về LISP và PDP-1 và Project MAC từ năm 1964 trở đi. Đó là một ý tưởng hay, nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về "tín hiệu foo ngược". Xem thêm tại đây: lập trình
Hugo

7

Từ các tệp Jargon http://www.catb.org/jargon/html/F/foo.html

foo: / foo /

  1. liên Thời hạn của sự ghê tởm.
  2. [rất phổ biến] Được sử dụng rất chung chung như một tên mẫu cho hoàn toàn mọi thứ, đặc biệt. chương trình và tập tin (đặc biệt là tập tin cào).
  3. Đầu tiên trên danh sách tiêu chuẩn của các biến số metasyntactic được sử dụng trong các ví dụ cú pháp. Xem thêm thanh, baz, qux, quux, garply, waldo, fred, plugh, xyzzy, thud.

thanh: / thanh /, n.

  1. [rất phổ biến] Biến số metasyntactic thứ hai, sau foo và trước baz. Giả sử chúng ta có hai chức năng: FOO và BAR. FOO gọi BAR ....
  2. Thường được gắn vào foo để sản xuất foobar.

5

Theo http://en.wikipedia.org/wiki/Foo :

Nguồn gốc của các thuật ngữ không được biết một cách chắc chắn và một số lý thuyết giai thoại đã được nâng cao để xác định chúng. Foobar có thể bắt nguồn từ chữ viết tắt quân sự thô tục FUBAR, hoặc nó có thể đã trở nên phổ biến do thực tế là nó được phát âm giống nhau.


4

Tôi thứ hai tập tin biệt ngữ liên quan đến Foo Bar.

Tôi có thể theo dõi nó ít nhất là vào năm 1963 và PDP-1 số 2, ở tầng hai của Tòa nhà 26 tại MIT. Foo và Foo Bar đã được sử dụng ở đó, và sau năm 1964 tại phòng PDP-6 tại dự án MAC.


+1 để chứng kiến ​​một trong những lần sử dụng Foo Bar sớm nhất :) Chính xác thì Foo và Foo Bar thực sự được sử dụng ở đó như thế nào?
Hugo

PS Tôi đã bao gồm báo giá của bạn trong câu trả lời lớn của tôi: programmers.stackexchange.com/questions/69788/...
Hugo

2

Theo như tôi biết, foo đến từ foobar, một sự thay đổi của "fubar", một phraase bắt quân sự là viết tắt của " F *** ed u p b eyond a ll r ecwarition."

Sau đó, một lần nữa, có thể có các nguồn khác.

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


0

Foo và Bar (còn được gọi là FUBAR ... F *** ed Up Beyond All Recognition) vừa được sử dụng làm tên chung tiêu chuẩn cho những thứ như lớp, thuộc tính, tên phương thức, v.v.

Về cơ bản, ý tưởng là truyền tải mã của bạn mà không có nhiều thông tin bên ngoài có thể thoát khỏi cách thức hoạt động của mã (nghĩa là chúng ta không cần biết chức năng của bạn có tên AddUser để xem mã và hiểu nó làm gì nếu chúng ta đổi tên nó đến Foo ()).


-3

Đây là những từ vô nghĩa mà trong hầu hết các trường hợp có thể được thay thế bằng các từ ví dụ phù hợp hơn. Các từ "foo" và "bar" thường được sử dụng trong lập trình khi ai đó không thể nghĩ ra một ví dụ hay.

Nếu "foo" và "bar" có nguồn gốc từ FUBAR, tại sao chúng lại được sử dụng bởi rất nhiều chuyên gia trong các ví dụ hướng dẫn khi các ví dụ giống như không có gì được đưa ra ngoài sự công nhận?

Đối với tôi, việc sử dụng phổ biến những từ này một cách không phù hợp là những gì được đưa ra ngoài sự công nhận.


2
Lưu ý rằng ngay bên dưới câu hỏi là một biểu ngữ: Chúng tôi đang tìm kiếm câu trả lời dài cung cấp một số giải thích và bối cảnh. Đừng chỉ đưa ra một câu trả lời một dòng; giải thích tại sao câu trả lời của bạn là đúng, lý tưởng với trích dẫn. Câu trả lời không bao gồm giải thích có thể được gỡ bỏ. Câu trả lời của bạn cung cấp rất ít theo cách giải thích; Hiện tại nó chỉ là một ý kiến.
Martijn Pieters

Có nhiều câu trả lời ngắn khác. Tại sao không cung cấp một đối số nếu bạn không đồng ý với những gì tôi đang nói thay vì chỉ ra một kỹ thuật không áp dụng?
Giăng

chỉnh sửa trong rev 2 làm cho câu trả lời này thậm chí còn tệ hơn so với trước đây (mặc dù thật khó để tưởng tượng điều gì có thể tồi tệ hơn): bây giờ nó chỉ là một câu trả lời lặp lại một câu trả lời đã được đăng 4 năm trước
gnat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.