B (Programmiersprache)
| {{#if: B | B | {{#invoke:WLink|getArticleBase}} }} | |||
|---|---|---|---|
colspan="2" class="notheme" style="text-align:center; background-color:#Vorlage:Standardfarbe;" | {{{Logo}}} |
{{#if: {{#invoke:Wikidata|claim|P154}} |
|
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
}} }} | ||
| {{{Screenshot}}}{{#if: | {{{Beschreibung}}} }}| }} | |||
| Basisdaten | |||
| Paradigmen: | imperativ, strukturiert
}} | ||
| Erscheinungsjahr: |
{{#if: {{#invoke:Wikidata|claim|P571}} |
|
Erscheinungsjahr: | claim|P571|references=ja}}
}} }} |
| Designer: |
{{#if: {{#invoke:Wikidata|claim|P287}} |
|
Designer: | claim|P287|parameter=link|references=ja|list=, }}
}} }} |
| Entwickler: | Ken Thompson, Dennis Ritchie |
{{#if: {{#invoke:Wikidata|claim|P178}} |
|
Entwickler: | claim|P178|parameter=link|references=ja|list=, }}
}} }} |
| Aktuelle Version: | {{{AktuelleVersion}}} ({{{AktuelleVersionFreigabeDatum}}}) |
{{#if: {{#invoke:Wikidata|claim|P348}} | |
Aktuelle Version | {{#invoke:Wikidata|claim|P348|references=ja}}{{#if: {{#invoke:Wikidata|claim|Version|qualifier=P577}} | ({{#invoke:Wikidata|claim|Version|qualifier=P577}})}}}}
}} |
| Aktuelle Vorabversion: | {{{AktuelleVorabVersion}}} ({{{AktuelleVorabVersionFreigabeDatum}}})
}} | ||
| Typisierung: | typenlos (alles ist ein Datenwort)
}} | ||
| Wichtige Implementierungen: |
}} | ||
| Dialekte: |
}} | ||
| Standardisierungen: | {{{Standardisierungen}}}
}} | ||
| Beeinflusst von: | BCPL, PL/I |
{{#if: {{#invoke:Wikidata|claim|P737}} |
|
Beeinflusst von: | claim|P737|parameter=link|references=ja|list=, }}
}} }} |
| Beeinflusste: | C
}} | ||
| Betriebssystem: |
{{#if: {{#invoke:Wikidata|claim|P306}} |
|
Betriebssystem: | claim|P306|parameter=link|references=ja|list=, }}
}} }} |
| Lizenz: |
{{#if: {{#invoke:Wikidata|claim|P275}} |
|
Lizenz: | claim|P275|parameter=link|references=ja|list=, }}
}} }} |
{{{Website}}} |
{{#if: {{#invoke:Wikidata|claim|P856}} |
| |||
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link}}}}
}} }} | |||
Die Programmiersprache B wurde 1969 von Ken Thompson und Dennis Ritchie entwickelt. B ist stark beeinflusst von BCPL und ist Vorgänger der Programmiersprache C.
B ist vor allem aus sprachhistorischen Gründen interessant, da es die Entwicklung von BCPL zu C genauer dokumentiert. Es wurde für die Übersetzung auf einer DEC PDP-7 mit 8 kB RAM entwickelt. Später wurde es auf PDP-11-Maschinen und Honeywell-Großrechner portiert, wo es zum Beispiel für das bekannte AberMUD von Alan Cox bis in die 1990er-Jahre benutzt wurde.
Aufgrund der eingeschränkten Hardware-Ressourcen auf der Zielmaschine PDP-7 fehlen B einige BCPL-Merkmale, die die Übersetzung aufwendiger machen würden. Beispielsweise sind keine verschachtelten Funktionsdefinitionen möglich. Ebenso wegen der eingeschränkten Ressourcen erzeugte der B-Compiler auf der PDP-7 einen einfachen Zwischencode, der von einem Interpreter zur Laufzeit interpretiert werden muss.<ref>D. Ritchie, The Development of the C Language in History of Programming Languages, ACM Press and Addison-Wesley, 1996, ISBN 0-201-89502-1</ref>
In B gab es wie in BCPL oder Forth nur einen Datentyp, dessen Bedeutung sich erst durch die benutzten Operatoren und Funktionen ergab. B ist also typlos. Es gab bereits viele Spracheigenschaften, die man in C finden kann. Einige Programme sind noch mit heutigen C-Compilern übersetzbar.
Bei B wurde der Zuweisungsoperator wieder zu = wie in Heinz Rutishausers ursprünglicher Sprache Superplan, welche Algol 58 beeinflusst hatte, wobei Algol 58 mit := einen Doppelpunkt hinzufügte.
Code-Beispiel
Nachfolgend ein Beispiel aus dem B-Benutzerhandbuch:<ref>{{#invoke:Vorlage:Literatur|f}}</ref> <syntaxhighlight lang="c"> /* 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');
} </syntaxhighlight>
Einzelnachweise
<references/>
Weblinks
- Die originale Sprachspezifikation (auch als PDF) (englisch)
- bell-labs.com B-Tutorial (englisch)
{{#ifeq: s | p | | {{#if: 4414683-8sh85010695 | |
}} }}{{#ifeq:||{{#if: | [[Kategorie:Wikipedia:GND fehlt {{#invoke:Str|left|{{{GNDCheck}}}|7}}]] }}{{#if: | {{#if: | | }} }} }}{{#if: | {{#ifeq: 0 | 2 | | }} }}{{#if: | {{#ifeq: 0 | 2 | | }} }}{{#ifeq: s | p | {{#if: 4414683-8 | | {{#if: {{#statements:P227}} | | }} }} }}{{#ifeq: s | p | {{#if: 4414683-8 | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P227}} | | }} }} }} }}{{#ifeq: s | p | {{#if: sh85010695 | | {{#if: {{#statements:P244}} | | }} }} }}{{#ifeq: s | p | {{#if: sh85010695 | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P244}} | | }} }} }} }}{{#ifeq: s | p | {{#if: | | {{#if: {{#statements:P214}} | | }} }} }}{{#ifeq: s | p | {{#if: | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P214}} | | }} }} }} }}Vorlage:Wikidata-Registrierung
- Wikipedia:GND fehlt
- Wikipedia:Normdaten-TYP falsch oder fehlend
- Wikipedia:GND in Wikipedia fehlt, in Wikidata vorhanden
- Wikipedia:GND in Wikipedia vorhanden, fehlt jedoch in Wikidata
- Wikipedia:LCCN in Wikipedia fehlt, in Wikidata vorhanden
- Wikipedia:LCCN in Wikipedia vorhanden, fehlt jedoch in Wikidata
- Wikipedia:VIAF in Wikipedia fehlt, in Wikidata vorhanden
- Wikipedia:VIAF in Wikipedia vorhanden, fehlt jedoch in Wikidata
- Programmiersprache