Bs (programmalastırıw tili)

**bs** — bul UNIX sistemalarındaǵı kishi kólemli programmalar ushın arnalǵan programmalastırıw tili hám kompilyator/interpretator. bs buyrıǵın interaktiv programmalastırıw ushın da, ya bolmasa programması bar fayl menen de shaqırıwǵa boladı, qosımsha túrde argumentler alıp, mısalı, Shebang (Unix) `#!/usr/bin/bs` paydalanıp, Unix qabıǵı arqalı shaqırıwǵa boladı.

Dáslepki qollanbada bılay delingen: «[bs] Basic [sic] hám SNOBOL4 tilleriniń uzaq áwladı bolıp, oǵan azǵana C qosılǵan.»

## Tariyxı
bs buyrıǵı UNIX System III Release 3.0 (1980) versiyasında payda bolǵan hám birinshi ret Bell Labs-tan tıs 1982-jılı shıǵarılǵan. Onı shama menen 1978-jılı Dik Xayt (Richard C. Haight) jazǵan hám ol bunı bılay eske aladı:

Release 3.0 qollanbası bs-ti 9-bette ayrıqsha atap ótedi (ayrıqsha belgilengen):

System III-ten aldın sırtqa shıǵarılmaǵan bolsa da, bs buyrıǵı UNIX/TS 1.0 (1978-jıl noyabr), PWB/UNIX 2.0 (1979-jıl iyun), hám CB UNIX basılımları 2.1 (1979-jıl noyabr), hám 2.3 (1981)-de ishki qollanıwda bolǵan.
bs buyrıǵı ayırım dáslepki ishki relizlerde, mısalı, UNIX Qollap-quwatlaw Toparınıń 1977-jıl marttaǵı relizinde, sonday-aq 1977-jıl, may ayına tiyisli PWB/UNIX qollanbasında ushıraspaydı, bul onıń shama menen 1978-jılı jaratılǵanın kórsetedi. Ol Research Unix yamasa Berkeley Software Distribution-nıń hesh qaysı versiyasında ushıraspaydı.

Keyinirek hám 1990-jıllarǵa shekem, bs System III-ten kelip shıqqan yamasa System V-ten kelip shıqqan hár túrli kommerciyalıq operaciyalıq sistemalarǵa kirgizildi, sonıń ishinde: PC/IX; UNIX System V Releases 2 & 3: SVR2, SVR3, SVR3.2 (1986); HP-UX; AIX; hám A/UX.
(AT&T UNIX PC (3B1) ushın Paydalanıwshı Qollanbası bs buyrıǵınıń joq ekenin arnawlı atap ótedi, biraq onıń SVR3.2-de bar ekenin bildiredi.)

Geyde bs UNIX astında islep shıǵıw ushın tiykarǵı programmalastırıw tilleriniń biri retinde maqtalǵan. Degen menen, bs POSIX.1 buyrıqları hám utilitaları (Unix buyrıqlarınıń standart dizimi) quramına kirmeydi, sonday-aq Birlesken UNIX Specifikaciyasına da kirmeydi hám kópshilik zamanagóy operaciyalıq sistemalar menen támiyinlenbeydi. Mısalı, Linux-ta uqsas sintaksis hám funkcional imkaniyatlardı bc, Perl hám POSIX shell támiyinleydi.

XXI ásirde bs keminde HP-UX Release 11i (2000), sonday-aq AIX 6.1 (2007) hám 7.2 (2018) versiyalarında bar, bul olardıń UNIX System V miyrasına baylanıslı bolıwı múmkin.

## Dizaynı hám ózgeshelikleri
bs qollanbası, kórinip turǵanınday programmalastırıw tiliniń jalǵız specifikaciyası, onı bılay sıpatlaydı:

bs programması sol waqıttaǵı basqa tiykarǵı Unix programmalastırıw tillerinde: C, FORTRAN hám assembler tilinde jazılǵan programmalardan ózgeshe kompilyaciya etiledi hám orınlanadı, olardıń sáykes buyrıqları programma derek kodın orınlanatuǵın assembler shıǵıwına (a.out) kompilyaciya etedi. Onıń ornına, bs programması dáslep bs buyrıǵı arqalı ishki keri polyak (RPN) aralıq kórinisine aylandırıladı hám keyin buyrıqtıń ishki virtual stek mashinası tárepinen orınlanadı. Solay etip, bs tili — bul gibrid interpretator hám kompilyator hám Áyyemgi Unix-ten baslap Unix programmalastırıwındaǵı bir ayırmashılıq.

bs tili BASIC, SNOBOL hám C menen ayırım ózgeshelikler hám sintaksisti bólisedi, aldınǵı ekewi onıń atına ilham bergen. BASIC sıyaqlı, onı interaktiv qollanıwǵa boladı, operatorlardı dárhal orınlaw yamasa olardı keyinirek orınlanatuǵın programmaǵa jıynaw. SNOBOL4-tegi sıyaqlı, menshiklew operatorı (=) I/O ushın qollanıladı hám bs óziniń eval funkciyasın qollanıp, qatarlardaǵı kodtı orınlay aladı. Ol sonday-aq ańlatpanıń bahalanıwı tabıslı yamasa tabıssız bolǵanın tekseriw ushın qollanılatuǵın SNOBOLdıń soraw operatorın (?) óz ishine aladı. Bir argument penen sheklengen ornatılǵan format funkciyası C-diń printf format túrlendiriw specifikatorlarınıń bir bólimin qollap-quwatlaydı, mısalı, «%f».

Tildiń geypara kózge túsetuǵın elementleri bar. Mısalı, onıń programma funkciyaları fun ... nuf sintaksisi járdeminde anıqlanadı hám onıń funkciyalarınıń lokal ózgeriwshilerge iye bola aladı. Sonday-aq, bs eki rejimde isley aladı, operatorlar menen programmalardı interpretaciyalaw (hám orınlaw) yamasa olardı kompilyaciyalaw hám compile hám stop buyrıqları arqalı ekewiniń arasında almasıw. Basqa jaǵdaylarda, onıń funkcional imkaniyatları tek jıynaqta (bir tilde) unikal, sebebi jeke ózgeshelikleri Unix Shell sıyaqlı birge bar bolǵan qurallar menen, mısalı, fayl I/O hám cikller, hám AWK menen, mısalı, associativ massivler hám Regulyar ańlatpa sáykesligi, artıqsha.

bs tili kishi, modulli programmalardı qolaylı islep shıǵıw hám sazlaw ushın arnalǵan. Onda aldınǵı, ataqlı tillerden alınǵan sintaksis hám ózgeshelikler toplamı bar, biraq ol Shell skriptinen ayırmashılıǵı, ishki kompilyaciyalanadı. Usılayınsha, maqseti, dizaynı hám funkciyası boyınsha bs Perl hám Python sıyaqlı gibrid interpretaciyalanatuǵın/kompilyaciyalanatuǵın tillerdiń kópshilikke belgisiz, kishi aldınǵısı bolıp tabıladı.

## Sintaksis mısalları
*Tómendegi mısallar A/UX bs(1) qollanbasınan alınǵan.*

Bul mısal bs-ti kalkulyator retinde paydalanadı:

## Derekler

__BÖLİDİMÖNDEMEW__