BCPL

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
BCPL
Pojawienie się 1966
Paradygmat wieloparadygmatowy (strukturalny, imperatywny, proceduralny)
Pochodne CPL
Twórca Martin Richards

BCPL (Basic Combined Programming Language) to język programowania komputerów zaprojektowany przez Martina Richardsa na Uniwersytecie w Cambridge (1966) jako wynik problemów z jego poprzednikiem - językiem CPL - w latach sześćdziesiątych. Pierwszy kompilator BCPL Richards napisał w czasie pobytu w MIT (wiosną 1967). Język został opisany w artykule zaprezentownym na Spring Joint Computer Conference (1969). Na podstawie BCPL Dennis Ritchie później zaprojektował język programowania C.

Pierwotnie napisany jako język do pisania kompilatorów, BCPL nie jest już powszechnie stosowany. Wpływ tego języka jest jednak nadal odczuwalny, ponieważ zmodyfikowana wersja tego języka - już pod postacią języka B - była bazą dla języka C.

Język ten był elegancki, a zarazem potężny i przenośny. Kompilator był mały i prosty, co czyniło go częstym wyborem przy pisaniu startowego kodu ładującego (ang. bootstrap) systemu. Podobno niektóre kompilatory wymagały tylko 16 kilobajtów pamięci. Przyczyną jego przenośności była budowa kompilatora składająca się z dwóch części. W pierwszym etapie kod był parsowany i tłumaczony na tzw. O-code dla maszyny wirtualnej. W drugiej fazie O-code był tłumaczony na asembler maszyny docelowej. W niedługim czasie technika ta stała się powszechna także przy budowie kompilatorów innych języków programowania (jak Pascal czy Java).

Niezwykłą cechą tego języka było to, że posiadał tylko jeden typ danych - słowo (stała liczba bitów, zwykle dobierana do konkretnej architektury). Interpretacja wartości zależała od operatorów użytych do jej przetworzenia (+ dodawał dwie wartości, traktując je jako liczby całkowite; ! traktował wartość jako wskaźnik). W związku z taką mechaniką operatorów, kompilator nie mógł zapewniać kontroli typów. Zamiast tego, aby zminimalizować liczbę błędów, często stosowano notację węgierską.

BCPL był pierwszym językiem 'nawiasowym' i nawiasy te przetrwały zmiany w gramatyce języka, a także stały się jedną z podstawowych metod oznaczania elementów kodu źródłowego. W praktyce na ograniczonych klawiaturach tamtych czasów często stosowano sekwencje $( i )$ zamaist { oraz }. Jednoliniowe komentarze oznaczane przez '//' - pierwotnie nieistniejące w C - powróciły w C++, a później w C99.

Wykorzystanie i implementacje[edytuj]

To właśnie w BCPL napisano oryginalny program Hello world. Pierwszy MUD także powstał w BCPL.[1]

Kilka z systemów operacyjnych zostało napisanych częściowo lub w całości w BCPL (dla przykładu TRIPOS i wczesne wersje AmigaDOS - fragment AmigaOS). Był to także język używany jako pierwszy w projekcie Xerox PARC Alto - projekcie pierwszego współczesnego komputera osobistego. System obróbki dokumentów "Bravo" to kolejny przykład aplikacji napisanej w BCPL.

Wczesny kompilator, uruchomiony w 1969 roku poprzez puszczenie w obieg taśmy papierowej z O-kodem kompilatora Atlas 2, zaprojektowany był dla ICT 1900. Maszyny różniły się długością słowa (48 a 24 bity), kodowaniem znaków i różnymi reprezentacjami spakowanych ciągów znaków. Udany rozruch zikszył w wiarę praktyczność takiego zastosowania.

W późnych latach 70. istniały implementacje dla Honeywell 635, Honeywell 645, IBM 360, PDP-10, TX-2, CDC-6400, UNIVAC 1108, PDP-9, KDF 9 i Atlas 2. W 1974 roku w BBN przygotowano dialekt BCPL, który nie wykorzystywał O-kodu. Wstępna implementacja była cross-kompilowana na PDP-10 należących do BBN i służyć miała wykorzystaniu na PDP-11, wykorzystywanych w BBN-owskiej implementacji drugiej generacji IMP obsługujących ARPANET.

Istniała także wersja dla BBC Micro opracowana w połowie lat 80. przez Richards Computer Products, firmę pod dyrektorstwem Johna Richardsa, brata dr. Martina Richardsa. Projekt BBC Domesday oparty był na BCPL. Pewne warianty BCPL dla Amstrad CPC oraz Amstrad PCW ujrzały światło dzienne w 1986 roku poprzez Arnor Ltd. MacBCPL został wydany dla Apple Macintosh w 1985 przez Topexpress Ltd.

W 1979 istniały implementacje BCPL dla 25 architektur, ale obecnie się go już nie używa. Jego następca, C, jest językiem, w którym tworzy się systemy operacyjne.

Budowa BCPL mocno wpłynęła na język B, który następnie wpłynął na język C.

Przypisy

Bibliografia[edytuj]

  • BCPL, the language and its compiler, Richards, M and Whitby-Stevens, C. Cambridge University Press, 1980. (ISBN 0-521-28681-6)
  • BCPL - a tool for compiler writing and systems programming, Richards, M. Proceedings of the Spring Joint Computer Conference, vol 34, pp 557-566, 1969.

Linki zewnętrzne[edytuj]