Foobar

Thuật ngữ **foobar** (), **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 *[[Sư tử đá Trung Quốc|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:

*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:

```c
#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:

```scheme
(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.
```python3
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.

```c#
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*:
```java
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

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

## Tham khảo

## Liên kết ngoài

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