Vyšlo v týdeníku Computerworld č. 8/93 v roce 1993
Vytištěno z adresy: http://www.earchiv.cz/a93/a308c120.php3

Wildcard

Je těžké říci "to", když přesně nevím "co". Vlastně to ani dost dobře nejde - pojmenovat něco, o čem nevím, zda to vůbec existuje, a pokud ano, kolik toho existuje. Jestliže tedy nedokáži stanovit přesný výčet objektů, které mám na mysli, musím je vymezit nepřímo. Například pomocí určité podmínky: ty objekty, které mám na mysli, jsou právě a pouze ty, které onu podmínku splňují.

Spíše technickým problémem je pak vlastní formulace vymezující podmínky. Nejlépe je na tom asi přirozený jazyk, který neklade žádná větší syntaktická omezení na konstrukce typu "všechny takové soubory, které mají příponu TXT". Jinak je tomu ale při komunikaci s počítačem, kdy je třeba se vyjádřit přesně a nedvojznačně. Navíc pouze v rámci syntaktických pravidel, které si operační systém či konkrétní aplikační program předepisuje. Jak potom řešit případ, kdy se od uživatele očekává zadání jednoho konkrétního objektu, ale ve skutečnosti uživatel potřebuje zadat spíše podmínku, která vymezuje celou skupinu objektů? Jak například postupovat u příkazu pro mazání souborů, který jako svůj parametr očekává jméno konkrétního souboru, který má smazat? Co má dělat uživatel, který má k dispozici pouze tento příkaz a potřebuje smazat "všechny soubory, které ..."?

Obvyklým řešením případů tohoto typu je použití takových jmen, která mají stejný formální tvar (syntax) jako skutečná jména konkrétních objektů, ale ve skutečnosti jsou "univerzálními" jmény, která mohou zastupovat různá konkrétní jména, či dokonce více různých konkrétních jmen. Určitou analogií by mohl být žolík v karetní hře - ten můžeme použít místo karty té hodnoty a barvy, která nám právě chybí. Potřebujeme-li vyjádřit jméno nějakého objektu, můžeme v roli "žolíka" obvykle použít znak "?", který reprezentuje kterékoli písmeno či číslici (případně i další speciální znak). Jde-li například o jména (a přípony) souborů a napíšeme-li DOPIS?.TXT, může toto univerzální jméno zastupovat například soubory SOUBOR1.TXT, SOUBORY.TXT, SOUBORX.TXT apod. Je zde však jedna zásadní odlišnost oproti karetním hrám: zatímco žolík nahrazuje vždy právě jednu kartu, znak "?" ve jménu souboru zastupuje všechny možné znaky současně! Použijeme-li například jméno SOUBOR?.TXT jako parametr příkazu pro mazání souborů (tedy v MS DOSu: DEL SOUBOR?.TXT), říkáme tím operačnímu systému, že má smazat všechny soubory, jejichž jména lze získat dosazením libovolného znaku za znak "?".

Podobný význam jako "?" má obvykle i znak "*" (hvězdička). Zatímco ale otazník zastupuje vždy právě jeden znak, hvězdička zastupuje libovolný počet libovolných znaků! Tedy jeden, dva, tři atd., nebo také žádný znak. Napíšeme-li například DEL *.TXT, říkáme tím, že mají být smazány všechny soubory s příponou TXT (tj. s libovolným jménem a s příponou TXT). Příkaz D*.DOC pak zase požaduje smazání všech souborů s příponou DOC a se jménem, které začíná písmenem D.

Znakům "?" a "*" s právě naznačeným významem se v angličtině říká wildcards (případně: wildcard characters), což v doslovném překladu znamená "divoké karty". Jak jim ale říkat v češtině?

Možností je hned několik: "expanzní znaky" naznačují, že je možné je expandovat za jeden, resp. více konkrétních znaků. Podobně i termín "zástupné znaky" dává tušit, že jde o znaky, které ve skutečnosti zastupují jiné znaky či skupiny jiných znaků. Stejně tak je zřejmě možné použít i označení "univerzální znaky". Nejvýstižnější je však označovat celý mechanismus jako tzv. "hvězdičkovou notaci" či "hvězdičkovou konvenci".