Kontentke ótiw

Bs (programmalastırıw tili)

Wikipedia — erkin enciklopediya
bs
Dúziwshi Richard S. Xayt
Birinshi payda bolıwı 1980-jıl
Operaciyalıq sistema Unix

bs — bul UNIX sistemalarındaǵı kishi kólemli programmalar ushın arnalǵan programmalastırıw tili hám kompilyator/interpretator[1]. 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ı:

Men bs-ti Unix (V 3?) hám barlıq buyrıqlar assembler tilinen C-ge ótkerilip atırǵan waqıtta jazdım. Sonlıqtan [Ken Tompsonnıń] bas programması meniń bs-ime aylandı — shamalı dárejede.

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

Programma jazıw. Derek programma tekstin UNIX faylına kirgiziw ushın ed(1)-di paydalanıń. UNIX astındaǵı tórt tiykarǵı til: C (qarań cc(1)), Fortran (qarań f77(1)), bs (Basic ruwxındaǵı kompilyator/interpretator, qarań bs(1)) hám assembler tili (qarań as(1)).

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),[2] hám 2.3 (1981)-de ishki qollanıwda bolǵan[3]. 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,[4] 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;[5] UNIX System V Releases 2 & 3: SVR2,[6] SVR3, SVR3.2 (1986);[7] HP-UX;[8] AIX;[9] hám A/UX.[10] (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 programma islep shıǵıw waqtı nátiyjedegi orınlanıw tezligi sıyaqlı áhmiyetli bolǵan programmalastırıw wazıypaları ushın proektlestirilgen. Maǵlıwmatlardı járiyalaw hám fayl/process manipulyaciyasınıń formallıqları minimallastırılǵan. Qatar boyınsha sazlaw, trace hám dump operatorları hám paydalı orınlanıw waqtındaǵı qáte xabarları programma testlewin ápiwayılastıradı. Bunnan tısqarı, tolıq emes programmalardı da sazlawǵa boladı; ishki funkciyalardı sırtqı funkciyalar jazılmastan aldın hám kerisinshe testlew múmkin.

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

$ bs
# Bir nanosekundta jaqtılıqtıń ótetuǵın aralıǵı (dyuymlerde).
186000 * 5280 * 12 / 1e9
11.78496
...
# Quramalı procent
# ($1,000 ǵa 5 jıl dawamında 6%).
int = .06 / 4
bal = 1000
for i = 1 54 bal = bal + balint
bal - 1000
346.855007
...
exit

Derekler

  1. UNIX User's Manual, Release 3.0, Bell Telephone Laboratories, Incorporated, 1980 95 bet. 
  2. Personal conversation with John R. Mashey, 9 September 2019.
  3. CB-UNIX Programmer's Manual, Edition 2.3 J. D. Doan: . Columbus, OH: Bell Telephone Laboratories, May 1981 iii bet. 
  4. PWB UNIX Programmer's Manual, Edition 1 T. A. Dolotta: . Piscataway, New Jersey: Bell Telephone Laboratories, May 1977. 
  5. „IBM Goes UNIX“. PC Magazine. June 12, 1984. 218-bet.
  6. AT&T UNIX PC UNIX System V User's Manual. AT&T, 1986 8 bet. 
  7. UNIX Programmer's Manual. AT&T, 1986 41 bet. 
  8. HP-UX Reference Release 11i User Commands, 1, Hewlett-Packard Company., 2000 93 bet. 
  9. AIX Version 6.1 Commands Reference, First, International Business Machines Corporation., 2007 251 bet. 
  10. A/UX Command Reference, 2.0, Apple Computer, Inc., 1990 93 bet.