Bs (programovací jazyk) - Bs (programming language)

bs
NavrhlRichard C. Haight
Poprvé se objevil1980; Před 40 lety (1980)
OSUnix
Ovlivněno
ZÁKLADNÍ, SNOBOL4, C

bs je programovací jazyk a překladač / tlumočník pro programy o malé velikosti UNIX systémy.[1] The bs příkaz lze vyvolat buď pro interaktivní programování, nebo se souborem obsahujícím program, volitelně přijímající argumenty, pomocí a Unix shell např. pomocí a Shebang (Unix) #! / usr / bin / bs.

Brzy manuálová stránka uvádí, „[bs] je vzdálený potomek Základní [sic] a SNOBOL4, s trochou C hodil dovnitř. “[1]

Dějiny

The bs příkaz se objeví v Systém UNIX III Release 3.0 (1980), poprvé vydané mimo Bell Labs v roce 1982.[1] Napsal jej Dick Haight (Richard C. Haight) kolem roku 1978, který jej líčí následovně:[2]

napsal jsem bs v té době byly Unix (V 3?) a všechny příkazy převedeny z assembleru na C. Takže [ Ken Thompson Je] baz se stal mým bs - tak nějak.

Manuál k vydání 3.0 zmiňuje bs prominentně na straně 9 (zvýraznění přidáno):[3]

Psaní programu. Chcete-li zadat text zdrojového programu do souboru UNIX, použijte ed (1). Čtyři hlavní jazyky dostupné v systému UNIX jsou C (viz cc (1)), Fortran (viz f77 (1)), bs (překladač / tlumočník v duchu Basic, viz bs (1))a montážní jazyk (viz jako (1)).

Ačkoli nebyl vydán venku před systémem III, bs příkaz byl interně přítomen v UNIX / TS 1.0 (listopad 1978),[4] PWB / UNIX 2.0 (červen 1979),[4] a CB UNIX vydání 2.1 (listopad 1979)[5][6] a 2.3 (1981).[7]The bs příkaz se neobjevuje v některých dřívějších interních verzích, např. vydání UNIX Support Group z března 1977,[4] ani manuál PWB / UNIX z května 1977,[8] což naznačuje jeho vytvoření kolem roku 1978. Neobjevuje se v žádné verzi Výzkum Unixu ani Distribuce softwaru Berkeley.

Následně a do 90. let bs byl zahrnut v různých komerčních operačních systémech odvozených ze systému III nebo ze systému V, mimo jiné včetně: PC / IX;[9] Systém UNIX V Vydání 2 a 3: SVR2,[10] SVR3 SVR3.2 (1986);[11] HP-UX;[12] AIX;[13] a A / UX.[14](Uživatelská příručka k AT&T UNIX PC (3B1) konkrétně uvádí, že bs příkaz není k dispozici, ale je k dispozici na SVR3.2.[10])

Občas, bs byl nabízen jako jeden z primárních programovacích jazyků pro vývoj v systému UNIX.[3][9][15] Nicméně, bs není součástí POSIX.1 příkazy a obslužné programy (standard Seznam unixových příkazů ) ani v Single UNIX Specification a není k dispozici u většiny současných operačních systémů. Například v Linux, podobnou syntaxi a funkčnost poskytuje před naším letopočtem, Perl, a Shell POSIX.

V 21. století bs je přítomen alespoň v HP-UX Release 11i (2000),[12] stejně jako AIX verze 6.1 (2007)[13] a 7.2 (2018),[16] pravděpodobně kvůli jejich Systém UNIX V dědictví.

Design a funkce

The bs[1] manuálová stránka, zdánlivě jediná specifikace programovacího jazyka, ji charakterizuje takto:

Bs je určen pro programovací úkoly, kde je doba vývoje programu stejně důležitá jako výsledná rychlost provádění. Formality deklarace dat a manipulace se soubory / procesy jsou minimalizovány. Line-at-a-time ladění, stopa a skládka prohlášení a užitečné chybové zprávy za běhu zjednodušují testování programu. Dále lze ladit neúplné programy; vnitřní funkce lze otestovat dříve vnější byly napsány funkce a naopak.

A bs program je kompilován a prováděn odlišně od programů napsaných v jiných hlavních unixových programovacích jazycích té doby: C, FORTRAN, a montážní jazyk, jehož příslušné příkazy kompilují zdrojový kód programu na výstup spustitelného assembleru (a.out ). Místo toho bs program je nejprve převeden do bs povel k interní reverzní polštině (RPN ) mezilehlé zastoupení a poté provedeno interním virtuálním příkazu stohovací stroj.[17] The bs jazyk je tedy hybrid tlumočník a překladač a divergence v Unix programování od Starověký Unix.

The bs jazyk sdílí některé funkce a syntaxi s ZÁKLADNÍ, SNOBOL, a C, dva bývalí pravděpodobně inspirující jeho jméno. Stejně jako BASIC jej lze používat interaktivně, a to buď okamžitým prováděním příkazů, nebo jejich shromažďováním do programu, který má být proveden následně. Stejně jako v SNOBOL4, operátor přiřazení (=) se používá pro I / O a bs může spustit kód v řetězcích pomocí jeho eval funkce. Zahrnuje také operátor dotazování SNOBOL (?) slouží k testování, zda je vyhodnocení výrazu úspěšné nebo ne. Integrovaný formát funkce, omezená na jeden argument, podporuje podmnožinu C printf specifikátory převodu formátu, např. "% f".

Jazyk má několik nápadných prvků. Například jeho programové funkce jsou definovány pomocí zábava ... č syntaxe a její funkce mohou mít lokální proměnné. Taky, bs může pracovat ve dvou režimech, buď interpretovat (a vykonávat) příkazy a programy nebo je kompilovat a přepínat mezi nimi pomocí kompilovat a stop. Jinak je jeho funkčnost jedinečná pouze kolektivně (v jednom jazyce), protože jednotlivé funkce jsou nadbytečné oproti funkcím koexistujících nástrojů, například Unix Shell např. soubor I / O a smyčky a AWK, např. asociativní pole a Regulární výraz vhodný.

The bs jazyk byl určen pro pohodlný vývoj a ladění malých, modulárních programů. Má sbírku syntaxe a funkcí z předchozích populárních jazyků, ale je interně kompilován, na rozdíl od Shell skript. Účelem, designem a funkcí jsou bs je do značné míry neznámý, skromný předchůdce hybridních interpretovaných / kompilovaných jazyků, jako je Perl a Krajta.

Příklady syntaxe

Následující příklady jsou odvozeny z A / UX bs (1) manuálová stránka.[18]

Tento příklad používá bs jako kalkulačka:

$ bs # Vzdálenost (palce), kterou světlo prochází za nanosekundu. 186000 * 5280 * 12 / 1e9 11.78496...# Složený úrok # (6% po dobu 5 let na 1 000 $). int = .06 / 4 bal = 1000 pro i = 1 5*4 bal = bal + bal * int bal - 1000 346.855007 ... výstup

Tento příklad je obrys typického bs program:

# inicializovat věci: var1 = 1 otevřeno("číst", "infile", „r“) ... # výpočet: zatímco ?(str = číst) ... další # vyčištění: zavřít("číst") ... # poslední provedený příkaz (ukončení nebo zastavení): výstup # poslední vstupní řádek: běh

Tento příklad ukazuje I / O:

# Zkopírujte „starý soubor“ do „nového souboru“. otevřeno("číst", "oldfile", „r“) otevřeno("psát si", "nový soubor", "w")... zatímco ?(psát si = číst) ... # zavřít „číst“ a „psát“: zavřít("číst") zavřít("psát si")# Potrubí mezi příkazy. otevřeno("ls", „! ls *“, „r“) otevřeno(„pr“, „! pr -2 -h‘ Seznam ‘“, "w") zatímco ?(pr = je) ... ... # nezapomeňte zavřít (počkat) na tyto: zavřít("ls") zavřít(„pr“)

Ukázkový program

Následuje ukázka bs program, který vydává slova k písni 99 lahví piva použitím / usr / bin / bs.[19]

zábava zpívat(n, konec) s   s = („s“, "")[ zápas(n, "^1$") ]   dát = formát(formát(formát(„% s láhev %% s piva %%%% s“, n), s), konec)čpro n = 99, n, dát = ""   zpívat(formát("% -0.0f", n), " na zdi,")   zpívat(formát("% -0.0f", n), ",")   dát = „sundej jeden, projdi kolem,“   --n   zpívat((formát("% -0.0f", n), "Ne")[ 0 == n ], " na zdi.")další

Viz také

Reference

  1. ^ A b C d Uživatelská příručka k systému UNIX (Vydání 3.0 ed.). Bell Telephone Laboratories, Incorporated. 1980. s. 95.
  2. ^ Osobní komunikace od Dicka Haighta, 10. září 2019.
  3. ^ A b Uživatelská příručka k systému UNIX (PDF) (Vydání 3.0 ed.). Bell Telephone Laboratories, Incorporated. 1980. s. 9.
  4. ^ A b C Osobní rozhovor s John R. Mashey, 9. září 2019.
  5. ^ "CB / UNIX man 7", Unix Heritage Society, Listopad 1979. Citováno dne 9. září 2019.
  6. ^ „CB / UNIX man 1“, Unix Heritage Society, Listopad 1979. Citováno dne 9. září 2019.
  7. ^ J. D. Doan, ed. (Květen 1981). Příručka programátora CB-UNIX, vydání 2.3 (PDF). Columbus, OH: Bell Telephone Laboratories. p. iii.
  8. ^ T. A. Dolotta; R. C. Haight; E. M. Piskorik, eds. (Květen 1977). "Sekce 1". PWB UNIX Programmer's Manual, Edition 1. Piscataway, New Jersey: Bell Telephone Laboratories.
  9. ^ A b "IBM Goes UNIX". PC Magazine. 12. června 1984. str. 218.
  10. ^ A b "Hlasitost 1". AT&T UNIX PC UNIX System V Uživatelská příručka (PDF). AT&T. 1986. str. 8.
  11. ^ "Příkazy a nástroje svazku 1". UNIX Programmer's Manual (PDF). AT&T. 1986. str. 41.
  12. ^ A b „Oddíl 1 (A-M)“. Uživatelské příkazy HP-UX Reference Release 11i (PDF) (1. vyd.). Společnost Hewlett-Packard Company. 2000. str. 93.
  13. ^ A b „Oddíl 1 písm. A-c)“. Referenční příručka k AIX verze 6.1 (PDF) (První vydání). International Business Machines Corporation. 2007. str. 251.
  14. ^ „Oddíl 1 (A-L)“. Reference příkazu A / UX (PDF) (2.0 ed.). Apple Computer, Inc. 1990. str. 93.
  15. ^ „A / UX: Vývojové nástroje“, Apple, Inc., 18. února 2012. Citováno dne 9. září 2019.
  16. ^ „Oddíl 1 písm. A-c)“. Referenční příručka k příkazům AIX verze 7.2. IBM Corporation. 2018. str. 282.
  17. ^ Osobní rozhovor s Dickem Haightem, 12. září 2019.
  18. ^ The / SOUBORY soubor, instalační médium A / UX 3.0.1, Apple Inc. (1993)
  19. ^ „Jazyk BS“, 99 lahví piva, 8. srpna 1996. Citováno dne 9. září 2019.