B (programspråk)

Från Wikipedia
Hoppa till: navigering, sök

B är ett programspråk som utvecklades vid Bell Labs och som i princip utdött då det ersattes med programspråket C. Det utvecklades huvudsakligen av Ken Thompson med bidrag av Dennis Ritchie, och dök upp omkring 1969.

Historia[redigera | redigera wikitext]

Ken Thompson skrev B i huvudsak baserat på BCPL som han hade använt i Multics projektet. B var i sin essens BCPL med alla komponenter som Thompson kände att han kunde vara utan, för att få plats med det inom den minneskapacitet som minidatorerna för den tiden hade. Programspråket inkluderade också en del ändringar som gjordes för att passa Thompson:s preferenser (mestadels för att minska antalet icke-blanktecken i ett typiskt program).[källa behövs]

Precis som BCPL och FORTH, har B bara en datatyp: datorns ord. De flesta operatorer (t.ex., +, -, *, /) behandlar detta som ett heltal, men andra behandlade det som en minnesaddress som skulle derefereras. I många andra avseenden såg det ut som en tidig version av C. Några biblioteksfunktioner existerade, inklusive några som vagt påminde om funktioner från standard I/O biblioteket i C.

Tidiga implementationer gjordes för minidatorer som DEC PDP-7 och PDP-11 som använde en tidig Unix, och Honeywell GE 645[1] 36-bit stordatorer som körde operativsystemet GCOS. De tidigaste PDP-7 implementationerna kompilerade till trådad kod, och när ritchie skrev en kompilator som använde TMG som producerade maskinkod.[2][3] 1970 blev en PDP-11 inköpt och trådad kod användes för porteringen. En tidig version av yacc producerades med denna PDP-11 konfiguration. Ritchie tog över underhållet under denna period.

Den typlösa egenskapen hos B var vettig på Honeywell, PDP-7 och många andra äldre datorer, men var ett problem på PDP-11 för att det var svårt att elegant få åtkomst till tecken datatypen som PDP-11 och de flesta moderna datorer stödde fullt. Med start år 1971 gjorde Ritche ändringar till språket när han konverterade dess kompilator till att producera maskinkod, de mest märkbara var tiläggen för datatypning för variabler. Under 1971 och 1972 förändrades B till "Nya B" och sedan C, där preprocessorn lades till 1972 och tidigt 1973 på uppmaning av Alan Snyder. Insatsen var tillräckligt komplett så att under sommaren 1973 vart Unixkärnan för PDP-11 omskriven i C. Under perioden 1972-1973 fanns det ett behov att portera till Honeywell 635 och IBM 360/370 maskiner, so Mike Lesk skrev det "portabla I/O paketet" som skulle bli C "standard I/O" rutinerna.

B fortsatte att användas så sent som på 1990-talet på Honeywell stordatorer, och vissa inbyggda system för en mängd olika skäl, inklusive begränsad hårdvara på små system; omfattande bibliotek, verktyg, licenskostnadsfrågor; och för att helt enkelt vara bra nog för jobbet på andra. Det mycket inflytelserika AberMUD var ursprungligen skrivet i B.

B påverkades mycket av BCPL, och dess namn är mest sannolikt en kontraktion av BCPL. Det är möjligt att dess namn är baserat på Bon, en tidigare men orelaterad, och ganska olikt programspråk som Thompson designade för användning på Multics.[4]

Exempel[redigera | redigera wikitext]

Följande exempel är från Users' Reference to B av Ken Thompson:

/* The following function will print a non-negative number, n, to
  the base b, where 2<=b<=10,  This routine uses the fact that
  in the ASCII character set, the digits 0 to 9 have sequential
  code values.  */
 
printn(n,b) {
        extrn putchar;
        auto a;
 
        if(a=n/b) /* assignment, not test for equality */
                printn(a, b); /* recursive */
        putchar(n%b + '0');
}

Se även[redigera | redigera wikitext]

Referenser[redigera | redigera wikitext]

  1. ^ bell-labs.com - Early Unix history and evolution, 2004-04-09
  2. ^ ”TMG”. multicians.org. http://www.multicians.org/tmg.html. 
  3. ^ Ritchie, Dennis M.. ”The Development of the C Language”. Bell Labs/Lucent Technologies. http://cm.bell-labs.com/cm/cs/who/dmr/chist.html. 
  4. ^ Ritchie, Dennis M. (March 1993). ”The Development of the C Language”. ACM SIGPLAN Notices "28" (3): sid. 201–208. doi:10.1145/155360.155580. http://cm.bell-labs.com/cm/cs/who/dmr/chist.html. ”Its name most probably represents a contraction of BCPL, though an alternate theory holds that it derives from Bon [Thompson 69], an unrelated language created by Thompson during the Multics days. Bon in turn was named either after his wife Bonnie, or (according to an encyclopedia quotation in its manual), after a religion whose rituals involve the murmuring of magic formulas.”. 
Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia