B (programsprå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 
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 på den tiden hade. Programspråket inkluderade också en del ändringar som gjordes för att passa Thompsons preferenser (mestadels för att minska antalet icke-blanktecken i ett typiskt program).

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 minnesadress 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  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.  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 tillä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 blev 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, så Mike Lesk skrev det "portabla I/O paketet" som skulle bli C "standard I/O" rutinerna.

B användes så sent som på 1990-talet fortsättningsvis på Honeywell stordatorer, och vissa inbyggda system av 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, ett tidigare, men orelaterat och ganska olikt programspråk som Thompson designade för användning på Multics.

Exempel 
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 
 TMG (programspråk)

Referenser 

Programspråk