Dicționarul New Hacker are o intrare foarte bună în acest sens – și consider că este o resursă mai bună pentru acest gen de lucruri decât Wikipedia:
variabila metasintactică /n./
Un nume folosit în exemple și înțeles să reprezinte orice lucru este în discuție sau orice membru aleatoriu al unei clase de lucruri în discuție. Cuvântul foo este exemplul canonic. Pentru a evita confuzia, hackerii nu folosesc niciodată (bine, aproape niciodată) „foo” sau alte cuvinte de genul acesta ca nume permanente pentru orice. În numele fișierelor, o convenție obișnuită este că orice nume de fișier care începe cu un nume variabil metasintactic este un fișier zero care poate să fie șterse în orice moment.
Într-o anumită măsură, lista variabilelor metasintactice preferate este o semnătură culturală. Acestea apar atât în serie (utilizate pentru grupuri conexe de variabile sau obiecte), cât și ca singletoni. Iată câteva semnături comune:
foo, bar, baz, quux, quuux, quuuux …:
Utilizarea MIT / Stanford, acum găsită peste tot (datorită în mare parte versiunilor timpurii ale acestui lexicon!) ). La MIT (dar nu la Stanford), baz a renunțat la utilizare pentru o vreme în anii 70 și 80. O mutație recentă obișnuită a acestei secvențe introduce qux înainte de quux.
bazola, ztesch:
Stanford (de la mijlocul anilor 70).
foo, bar, bubuit, mormăit:
Această serie a fost populară la CMU. Alte variabile asociate CMU includ gorp.
foo, bar, fum:
Această serie este raportată ca fiind frecventă la XEROX PARC.
fred, barney:
Consultați intrarea pentru fred. Acestea tind să fie britanisme.
corge, grault, flarp:
Popular la Universitatea Rutgers și printre hackerii GOSMACS.
zxc, spqr, wombat:
Universitatea Cambridge (Anglia).
shme
Berkeley, GeoWorks, Ingres. Pronunțat / shme / cu un scurt / e /.
snork
Universitatea Brown, la începutul anilor 1970.
foo, bar, zot
Universitatea de Tehnologie din Helsinki, Finlanda.
blarg, wibble
Noua Zeelandă.
toto, titi, tata, tutu
Franța.
pippo, pluto, paperino
Italia. Pippo / pee „po / și Paperino / pa-per-ee” -no / sunt numele italiene pentru Goofy și Donald Duck.
aap, noot, mies
Olanda. Acestea sunt primele cuvinte pe care un copil obișnuia să le învețe să scrie pe o tablă de ortografie olandeză.
Dintre toate acestea, doar „foo” și „bara” sunt universale (și aproape cam așa). Compușii foobar și „foobaz” se bucură, de asemenea, de o valută foarte largă.
Unii termeni de jargon sunt folosiți și ca nume metasintactice; barf și mumble, de exemplu. A se vedea, de asemenea, Commonwealth Hackish pentru a discuta numeroase variabile metasintactice găsite în Great Marea Britanie și Commonwealth.
Comentarii
Wikipedia oferă această definiție a variabilei metasintactice :
În informatică, programatorii folosesc variabile metasintactice pentru a descrie un nume de substituent sau un termen alias folosit în mod obișnuit pentru a desemna subiectul în discuție sau un membru arbitrar al o clasă de lucruri în discuție. Utilizarea unei variabile metasintactice este utilă pentru a elibera un programator de a crea o variabilă denumită logic, care este adesea utilă atunci când creează sau predă exemple de algoritm. Cuvântul foo este exemplul principal.
Termenul „variabilă metasintactică” se găsește în primul rând în literatura informală. Uneori este folosit și ca sinonim pentru metavariabilă.
Orice simbol sau cuvânt care nu încalcă regulile limbii poate fi folosit ca variabilă metasintactică, dar cuvintele fără sens sunt frecvent utilizate. Același concept este utilizat în alte domenii în care este exprimat prin termeni precum variabila schematică (vezi formă logică ).
Prin analogie matematică: o variabilă metasintactică este un cuvânt care este o variabilă pentru alte cuvinte, la fel ca în algebră literele sunt folosite ca variabile pentru numere.
Articolul oferă, de asemenea, exemple comune de astfel de cuvinte variabile în diferite limbaje de programare:
C
În exemplul următor al limbajului de programare C, numele funcției foo și bara de nume a variabilei sunt ambele variabile metasintactice. Liniile care încep cu // sunt comentarii.
// The function named foo int foo(void) { // Declare the variable bar and set the value to 1 int bar = 1; return bar; }
Python
Spam, șuncă și ouă sunt principalele variabile metasintactice utilizate în limbajul de programare Python . [5] Aceasta este o referință la faimoasa schiță de comedie, Spam, de Monty Python, eponimul limbii. [6] În exemplul următor spamul, șunca și ouăle sunt variabile metasintactice, iar liniile care încep cu # sunt comentarii.
# Define a function named spam def spam(): # define the variable ham ham = "Hello World!" #define the variable eggs eggs = 1 return
Ruby
În exemplul următor baz, foo și bara sunt variabile metasintactice și liniile care încep cu # sunt comentarii.
# 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
tl; dr
-
„Foo „și„ bar ”ca variabile metasintactice au fost popularizate de MIT și DEC, primele referințe sunt în lucru pe LISP și PDP-1 și Project MAC începând cu 1964.
-
Mulți dintre acești oameni se aflau în Clubul feroviar de model tehnic al MIT, unde găsim prima utilizare documentată a „foo” în cercurile tehnologice din 1959 (și o variantă în 1958 ).
-
Atât „foo”, cât și „bar” (și chiar „baz”) erau bine cunoscute în cultura populară, în special din benzile desenate Smokey Stover și Pogo, care vor fi fost citit de mulți membri TMRC.
-
De asemenea, se pare că FUBAR-ul militar a contribuit la popularitatea lor.
Utilizarea „foo” singuratic ca cuvânt aiurea este destul de bine documentată în cultura populară la începutul secolului al XX-lea, la fel ca și FUBAR-ul militar. (Câteva lecturi de fond: FOLDOC FOLDOC Fișier jargon Fișier jargon Wikipedia RFC3092 )
OK, deci să găsim câteva referințe.
STOP PRESS! După ce am postat acest răspuns, am descoperit acest articol perfect despre „foo” în vinerea 14 ianuarie 1938 ediția The Tech (cel mai vechi și mai mare ziar „MIT” & primul ziar publicat pe web „), volumul LVII. Nr. 57, preț trei cenți:
Pe Foo-ism
Șezlongul crede că această afacere a Foo-ismului a fost purtat prea departe de susținătorii săi înșelați și, prin prezenta și imediat, își ia poziția împotriva abuzurilor sale. S-ar putea să nu existe un foo ca un foo bătrân, iar noi suntem, dar oricum, un foo și banii lui sunt o petrecere. (Vocea din gradați – „Nu fi prost!”)
Ca explicativ, desigur, „foo!” Are o poziție certă și probabil de neînlocuit în limba noastră, deși ne temem că utilizarea excesivă la care este supus în prezent poate avea ca rezultat căderea într-o uitare timpurie (și, din păcate, într-o întunecată). Spunem, din păcate, deoarece utilizarea corectă a cuvântului poate duce la astfel de incidente fericite precum următoarele.
A fost o prelegere de termodinamică de 8,50 de către profesorul Slater în camera 6-120. Profesorul, după ce a acoperit partea din față a tabelei, a pus mânerul care acționează mecanismul de ridicare, în timp ce se întoarce către clasă pentru a continua discuția. Tabla frontală se ridică încet, maiestuos, dezvăluind tabla din spatele ei, iar pe tabla aceea, scrie mari, simbolurile care scriau „FOO”!
Ziarul Tech , cu un an mai devreme, Scrisoarea către editor, septembrie 1937 :
Până când trenul a ajuns la gară, neofiții sunt atât de plini de poveștile gloriei lui Phi Omicron Omicron, denumit de obicei Foo , că sunt o pradă ușoară.
…
Nu mă gândesc că mi-am pierdut primii patru fii în fața Frăției Mari și Universale a lui Phi Omicron Omicron, dar o fac doresc ca cel de-al cincilea fiu al meu, bebelușul meu, să fie cel puțin avertizat în prealabil.
Sperăm că al tău,
Mama Indignată a Cinci.
Și Tehnologia din decembrie 1938 :
Tendința generală a gândirii ar putea fi interpretată cel mai bine din observațiile făcute la sfârșitul buletinelor de vot. Un vot a spus: „„ Nu cred că ceea ce fac este o treabă a lui Pulver ”, în timp ce un altul a adăugat doar un„ Foo ”.
Primul „foo” documentat în cercurile tehnologice este probabil 1959 „s Dicționar al limbii TMRC :
FOO: silaba sacră (FOO MANI PADME HUM); să fie vorbit numai atunci când este inspirat să comunice cu Zeitatea.Prima noastră obligație este să menținem contoarele Foo rotind.
Acestea sunt explicate la FOLDOC . Compilatorul dicționarului Pete Samson spunea în 2005:
Folosirea acestui cuvânt la TMRC antedatează venirea mea acolo. Un contor foo ar putea avea pur și simplu lumini intermitente aleatorii , sau ar putea fi un contor real cu o intrare obscură.
Și din 1996 „s Jargon File 4.0.0 :
Versiunile anterioare ale acestui lexicon au derivat „baz” ca o corupție Stan din bar. Cu toate acestea, Pete Samson (compilatorul lexiconului TMRC) raportează că era deja actual când s-a alăturat TMRC în 1958. El spune „Venea din„ Pogo ”. Albert Aligatorul, când era supărat sau revoltat, ar striga„ Bazz Fazz! ”Sau „Rowrbazzle!” S-a spus că structura clubului modelează județele (mitice) din New England, Rowrfolk și Bassex (Rowrbazzle amestecate cu (Norfolk / Suffolk / Middlesex / Essex). „
Cu un an înainte de dicționarul TMRC, 1958 „s MIT Voo Doo Gazette (” Humor suplement of the MIT Deans „office”) (PDF) menționează Foocom, în „The Laws of Murphy and Finagle” de John Banzhaf (un student în inginerie electrică):
Cercetările ulterioare în cadrul unei subvenții comune Foocom și Anarcom au extins legea pentru a fi cuprinzătoare și universal aplicabilă: dacă ceva poate merge prost, va fi!
De asemenea, 1964 ” s MIT Voo Doo (PDF) face referire la utilizarea TMRC:
Da! Vreau să fiu un succes instantaneu și să renunț la clienți. Trimite-mi o diplomă în: …
Dar să ne amintim că această întrebare este despre exemple de cod, așa că să găsim „foo”, „bar” și „foobar” publicate în cod.
Deci, Fișierul jargon 4.4.7 spune despre „foobar”:
Probabil propagat inițial prin manuale DECsystem de către Digital Equipment Corporation (DEC) în anii 1960 și începutul anilor 1970; observațiile confirmate acolo se întorc în 1972.
Prima referință publicată pe care o pot găsi este din februarie 1964 , dar scris în iunie 1963, Limbajul de programare LISP: funcționarea și aplicațiile sale de către Information International, Inc. , cu mulți autori, dar inclusiv Timothy P. Hart și Michael Levin:
Astfel, deoarece „FOO” este un nume pentru sine, „COMITRIN” va tratați atât „FOO”, cât și „(FOO)” în același mod.
De asemenea, include alte variabile metasintactice, cum ar fi: FOO CROCK GLITCH / POOT TOOR / ON YOU / SNAP CRACKLE POP / XYZ
Mă aștept să fie la fel ca următoarea referință a „foo” din proiectul MAC al MIT în ianuarie 1964 „AIM-064, sau Exerciții LISP de Timothy P. Hart și Michael Levin:
car [((FOO. CROCK). GLITCH)]
Acesta împărtășește multe alte variabile metasintactice cum ar fi: CHI / BOSTON NEW YORK / SPINACH BUTTER STEAK / FOO CROCK GLITCH / POOT TOOP / TOOT TOOT / ISTHISATRIVIALEXCERCISE / PLOOP FLOT TOP / SNAP CRACKLE POP / ONE DOO THREE / PLANE SUB THRESHER
Atât pentru „foo”, cât și pentru „bar” împreună, cea mai veche referință pe care am putut-o găsi este din proiectul MAC al MIT în iunie 1966 „s AIM-098, sau PDP-6 LISP de nimeni altul decât Peter Samson:
EXPLODA, ca PRIN1, inserează bare, deci (EXPLODĂ (CITARE FOO / BAR)) PRIN1 „s ca (FOO // / BAR) sau PRINC „s ca (FOO / BAR).
Mai multe amintiri.
@Walter Mitty amintit pe acest site în 2008:
Eu secundez jargonul dosar privind Foo Bar. Îl pot urmări cel puțin până în 1963 și PDP-1 numărul de serie 2, care se afla la etajul al doilea al clădirii 26 de la MIT. Foo și Foo Bar au fost folosite acolo, iar după 1964 la sala PDP-6 la proiectul MAC.
John V. Everett își amintește în 1996:
Când m-am alăturat DEC în 1966, foobar era deja folosit în mod obișnuit ca aruncare- numele fișierului. Cred că fubar a devenit foobar deoarece PDP-6 a acceptat șase nume de caractere, deși am presupus întotdeauna că termenul a migrat la DEC de la MIT. În acele zile existau multe tipuri de MIT la DEC, dintre care unii lucraseră cu CTSS 7090/7094.Deoarece 709x a fost, de asemenea, o mașină de 36 de biți, foobar ar fi putut fi folosit ca nume de fișier comun acolo.
Foo și bara au fost de asemenea utilizate în mod obișnuit ca extensii de fișiere. Deoarece editorii de text ai zilei operau pe un fișier de intrare și produceau un fișier de ieșire, era obișnuit să editați dintr-un fișier .foo într-un fișier .bar și să reveniți.
utilizați foo pentru a umple un tampon atunci când editați cu TECO. Șirul de text pentru a umple exact un bloc de disc a fost IFOO $ HXA127GA $$. Aproape toți programatorii PDP-6/10 cu care am lucrat au folosit același șir de comenzi.
Daniel PB Smith în 1998:
Dick Gruen avea un dispozitiv în camera sa de dormitor, ansamblul obișnuit de baterii B, rezistențe, condensatori și tuburi de neon NE-2, pe care le-a numit„ contor foo ”. Acesta ar fi fost în jurul anului 1964 sau cam asa ceva.
Robert Schuldenfrei în 1996:
Utilizarea FOO și BAR ca exemple de nume de variabile se întoarce cel puțin în 1964 și IBM 7070. Și aceasta poate fi mai veche, dar acolo am văzut-o prima dată. A fost în Assembler. Care ar fi echivalentul întreg FORTRAN? IFOO și IBAR?
Paul M. Wexelblat în 1992:
Cel mai vechi ansamblu PDP-1 a folosit două caractere pentru simboluri (mașină de 18 biți) programatorii au lăsat întotdeauna câteva cuvinte ca spațiu de corecție pentru a remedia problemele. (Salt la spațiul de corecție, faceți un cod nou, săriți înapoi) Spațiul respectiv a fost denumit în mod convențional FU: care a reprezentat Fxxx Up, locul în care ați reparat Fxxx Ups. Când a fost vorbit, a fost cunoscut sub numele de spațiu FU. Mai târziu Assemblers (de exemplu, MIDAS a permis trei tag-uri de caracter, astfel încât FU a devenit FOO și așa cum TOȚI programatorii PDP-1 vă vor spune că a fost spațiu FOO.
Bruce B. Reynolds în 1996:
Pe partea IBM a FOO (FU) BAR este utilizarea laturii BAR ca registru de adrese de bază; la mijlocul anilor 1970, programatorii CICS au trebuit să-și îngrijoreze diferitele xxxBAR-uri … Cred că unul dintre acestea a fost FRACTBAR …
Aici” este drept IBM „BAR” din 1955.
Alte referințe timpurii:
Nu am reușit să găsesc referințe la bara foo ca „semnal foo inversat” „așa cum este sugerat în RFC3092 și în alte părți.
Iată câteva dintre F00-urile chiar mai vechi, dar cred că acestea sunt„ coincidențe / fals pozitive:
folosind cuvinte precum „foo” și „bar” te determină să te concentrezi pe conceptul nu pe ceea ce puteți înțelege pe baza termenilor pe care îi cunoașteți. De exemplu:
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"); } }
Codul de mai sus vă permite să vă bazați pe cunoștințele dvs. despre lucrurile din lumea reală.
Dacă încercați să explicați un concept în care partea importantă nu este ceea ce se face (tipărirea miau sau scoarță, de exemplu), ci despre modul în care se face, atunci eliminați părțile care vă sunt familiare, ajutați:
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"); } }
Acum trebuie să vă concentrați asupra a ceea ce se întâmplă cu adevărat, nu mai puteți să ghiciți ce se va întâmpla.
Deci, versiunea scurtă este că foo, bar și altele asemenea sunt folosite pentru a sublinia conceptele în care conținutul nu contează cu adevărat, dar ideea contează.
Comentarii
- ah, un răspuns real!
- Da, dar de ce Foo și Bar specific? De ce nu Lorum și Ipsum?
- en.wikipedia.org/wiki/Foo ar putea fi corectă …
- @TofuBeer Da, ele ' re " variabile metasintactice ". @masher vede răspunsul meu cu o mulțime de referințe cu privire la motivele pentru care Foo și Bar și nu Lorem și Ipsum. programmers.stackexchange.com/questions/69788/… De fapt, există o mulțime de variabile metasintactice diferite care au a fost folosit de-a lungul anilor și în diferite locuri.