Sử dụng các biến siêu cú pháp trong lập trình máy tính
Đừng nhầm lẫn với FUBAR hoặc Foobar2000.
"Foo" đổi hướng tới đây. Đối với định nghĩa khác, xem Foo (định hướng).
Thuật ngữ **foobar** (/ˈfuːbɑːr/), **foo**, **bar**, **baz** và các thuật ngữ khác được sử dụng làm biến siêu cú pháp và tên giữ chỗ 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 đã được sử dụng để đặt tên cho các thực thể như các biến, các hàm và các lệnh mà đặc tính chính xác của chúng là không quan trọng và chỉ được dùng để đại diện cho một khái niệm.

Lịch sử và từ nguyên
--------------------

Có thể *foobar* được sử dụng như một sự ám chỉ hài hước từ lóng quân sự thời Thế chiến II là FUBAR (*Fucked Up Beyond All Repair)*.

Theo Nhóm đặc nhiệm kỹ thuật Internet RFC thì từ FOO có nguồn gốc là một từ vô nghĩa được sử dụng đầu tiên trong truyện *Smokey Stover* của Bill Holman. Holman nói rằng ông đã sử dụng từ này do đã nhìn thấy nó ở dưới cùng của một bức tượng nhỏ bằng ngọc bích của Trung Quốc ở Phố người Hoa ở San Francisco với ý nghĩa là "chúc may mắn". Nếu đúng, nó có lẽ liên quan đến từ tiếng Trung là *fu* ("福", tiếng Việt đọc là *phúc*, đôi khi được phiên âm là *foo* như trong *foo dog*), nghĩa là *hạnh phúc* hoặc *phước lành.*

Việc sử dụng các thuật ngữ đầu tiên được biết đến trong bản in trong ngữ cảnh lập trình xuất hiện trong ấn bản *Tech Engineering News* năm 1965 của MIT. Việc sử dụng *foo* trong môi trường lập trình được ghi nhận trong Câu lạc bộ đường sắt mô hình công nghệ (TMRC) của MIT từ khoảng năm 1960. Trong một hệ thống mô hình đường sắt phức tạp ở đó có các công tắc bị xáo trộn nằm ở nhiều vị trí xung quanh phòng tàu, nó có thể xuất hiện lỗi nếu có điều gì đó không được mong đợi xảy ra, chẳng hạn như một đoàn tàu đang lao thẳng vào một chướng ngại vật. Một tính năng khác của hệ thống là nó có một chiếc đồng hồ kỹ thuật số nằm trên bảng điều phối. Khi ai đó nhấn công tắc scram thì ngay lập tức đồng hồ sẽ dừng lại và màn hình hiển thị được thay thế bằng từ "FOO"; tại TMRC, các công tắc scram còn được gọi là "công tắc Foo". Vì việc này, đã có một mục trong *Dictionary of the TMRC Language* năm 1959 viết như sau: "FOO: Âm tiết đầu tiên của cụm từ thánh ca đã bị trích dẫn sai, nó phải là 'foo mane padme hum.' Nghĩa vụ của chúng ta là phải giữ cho mạch đếm foo quay." Một cuốn sách mô tả phòng tàu MIT trong đó có hai nút của cánh cửa được gắn nhãn là "foo" và "bar". Đây là những nút có chung mục đích và thường được sử dụng lại cho bất kỳ ý tưởng thú vị nào mà các tin tặc MIT có vào thời điểm đó, từ đó foo và bar thường được sử dụng làm tên biến dành cho các mục đích chung. Một mục trong *Abridged Dictionary of the TMRC Language* có nói rằng:

> Multiflush: nút dừng tất-cả-tàu. Điều tuyệt vời sẽ xảy ra sau khi sử dụng nút cửa đỏ, hay còn được gọi là FOO. Nó sẽ hiện chữ "FOO" trên đồng hồ trong khi đang sử dụng.
> 
> 
> 

*Foobar* được sử dụng làm tên biến trong mã Fortran của *Colossal Cave Adventure* (phiên bản Crowther and Woods năm 1977). Biến FOOBAR được sử dụng để chứa tiến trình của người chơi trong việc sử dụng cụm từ ma thuật "Fee Fie Foe Foo". Intel cũng sử dụng thuật ngữ *foo* trong tài liệu lập trình của họ vào năm 1978.

Ví dụ sử dụng trong mã
----------------------

Trong đoạn mã ví dụ một chương trình *Hello, World!* bằng ngôn ngữ C, *foo* và *bar* ở đây được áp dụng để minh hoạ việc thay thế chuỗi:

```
#include <stdio.h>

int main() {
 const char \*foo = "Hello";
 const char \*bar = "World!";
 fprintf(stdout, "%s %s\n", foo, bar);

 return 0;
}

```

Trong mẫu sử dụng ngôn ngữ Scheme, *foobar* được sử dụng để minh họa tên của một hàm:

```
(define foobar
 (lambda (x)
 (display x)))
(foobar "Hello World!")

```

Trong đoạn mã ví dụ một chương trình *Hello, World!* bằng Python, *foo* và *bar* được dùng để minh họa tên của các chuỗi được in ra STDOUT.

```
foo = "Hello"
bar = "World"
print(foo, bar)

```

Trong đoạn mã ví dụ một chương trình *Hello, World!* bằng C#, *foo* và *bar* được sử dụng để minh họa tên của các chuỗi.

```
string foo = "Hello";
string bar = "World";
Console.WriteLine(foo + bar);

```

Trong mã mẫu sử dụng ngôn ngữ Java, *foobar* được sử dụng để minh họa tên của một phương thức trả về một chuỗi có tên *bar*:

```
private String bar;

public String foo() {
 return bar;
}

```

Ví dụ trong ngôn ngữ
--------------------

* Foo Camp là một hội nghị thường niên dành cho hacker.
* BarCamp, một mạng lưới hội nghị quốc tế do người dùng tạo
* Trong phiên tòa xét xử vụ *Hoa Kỳ đối đầu Microsoft*, một số bằng chứng đã được đưa ra cho thấy Microsoft đã cố gắng sử dụng tổ chức Web Services Interoperability (WS-I) như một phương tiện để kìm hãm sự cạnh tranh, bao gồm cả các email mà các giám đốc điều hành hàng đầu trong đó có Bill Gates đã đề cập tới WS-I bằng cách sử dụng tên mã là "foo".
* foobar2000 là một trình phát âm thanh.
* Google sử dụng một công cụ web có tên "foobar" để tuyển dụng nhân viên mới.

Xem thêm
--------

* iconCổng thông tin Lập trình máy tính

* Foo fighter
* Foo was here
* xyzzy
* Thể loại:Biến (khoa học máy tính)

Tham khảo
---------

1. 1 2  RFC 3092 - Etymology of "Foo"
2. 1 2  "What does foo mean?". Dictionary.com. Truy cập ngày 17 tháng 8 năm 2019.
3. ↑  Eastlake, D; Manros, C; Raymond, E. "Etymology of "Foo"". *The Internet Engineering Task Force*. Truy cập ngày 17 tháng 4 năm 2016.
4. ↑  "The History of Bill Holman". Smokey Stover. 13 tháng 6 năm 2007. Truy cập ngày 17 tháng 8 năm 2019.
5. ↑  Mieke Matthyssen, "Chinese happiness: A proverbial approach ot popular philosophies of life", p. 190, ch. 9 in, Gerda Wielander, Derek Hird (eds), *Chinese Discourses on Happiness*, Hong Kong University Press, 2018 ISBN 9888455729.
6. ↑  *Tech Engineering News*. **47**. Massachusetts Institute of Technology. 1965. tr. 63. Further, it is possible to search for an effective address; e.g. if an instruction such as "add 1 foo" were used, specifying indirect addressing thru location "foo", and location "foo" contained the address of location "foobar", then an effective word search for "foobar" would find location "foo" and the location containing the "add" instruction as well.
7. ↑  "Computer Dictionary Online". computer-dictionary-online.org
8. ↑  "Abridged Dictionary of the TMRC Language". Tech Model Railroad Club of MIT. Bản gốc lưu trữ ngày 2 tháng 1 năm 2018. Truy cập ngày 12 tháng 3 năm 2013.
9. ↑  *MCS-86 Assembler Operating Instructions For ISIS-II Users*. Santa Clara, California, USA: Intel Corporation. 1978. Manual Order No. 9800641A. Truy cập ngày 29 tháng 2 năm 2020.
10. ↑  Mike Ricciuti (4 tháng 7 năm 2002). "Microsoft ploy to block Sun exposed". CNET. Truy cập ngày 17 tháng 8 năm 2019.
11. ↑  Alistair Charlton (27 tháng 8 năm 2015). "Google Foobar: How searching the web earned a software graduate a job at Google". *International Business Times*. Truy cập ngày 17 tháng 8 năm 2019.

Liên kết ngoài
--------------

|  |  |
| --- | --- |
|  | Tra ***foobar***, ***foo***, hoặc ***bar*** trong từ điển mở tiếng Việt Wiktionary |

* The Jargon File entry on "foobar", catb.org
* RFC 1639 – FTP Operation Over Big Address Records (FOOBAR)