software.wikisort.org - Linguaggio

Search / Calendar

Il BCPL (Basic Combined Programming Language) è un linguaggio di programmazione sviluppato da Martin Richards dell'Università di Cambridge nel 1966.

BCPL
linguaggio di programmazione
AutoreMartin Richards
Data di origine1966
ParadigmiProcedurale, imperativo, strutturato
TipizzazioneSenza tipo (basata sul word)
Influenzato daCPL
Ha influenzatoB, C, Go[1]

Storia


Richards sviluppò il linguaggio in seguito alle difficoltà che aveva incontrato nell'utilizzo del suo predecessore, il Combined Programming Language. Il primo compilatore del nuovo linguaggio di programmazione venne implementato mentre lo studioso si trovava al MIT, nella primavera del 1967. Il linguaggio venne presentato per la prima volta alla Spring Joint Computer Conference nel al 1969. L'architettura del BCPL influenzò pesantemente il linguaggio B, da cui Dennis Ritchie in seguito sviluppò il C.

Nel 1979 esistevano implementazioni di BCPL per almeno 25 diverse architetture, venendo progressivamente soppiantato dal linguaggio C.


Caratteristiche


Le caratteristiche di pulizia, potenza e portabilità rendono semplice la realizzazione di compilatori compatti. Alcuni sistemi operativi vennero scritti, completamente o in parte, utilizzando BCPL (ad esempio il TripOS o l'AmigaOS). La principale caratteristica che rendeva il compilatore particolarmente portabile risiedeva nel fatto che esso era logicamente diviso in due parti: la prima parte (front end) si occupava di analizzare il codice sorgente e di generare un codice intermedio (O-code) per una macchina virtuale, la seconda (back end) traduceva l'O-code nel codice per la CPU bersaglio, su cui il programma doveva girare. In questo modo, quando era necessario scrivere un compilatore per una nuova CPU, era sufficiente riscrivere il backend. Questa tecnica divenne in seguito molto comune (ad esempio in Pascal o Java), ma il BCPL fu il primo linguaggio a specificare una macchina virtuale a questo scopo.

Il linguaggio si caratterizza per avere un unico tipo di dati, il tipo word (un numero fisso di byte, di solito scelto per allinearsi con la parola della macchina). L'interpretazione del dato veniva fatta in base al tipo di operatori utilizzati: ad esempio, utilizzando il segno di addizione +, i dati venivano sommati come se si trattasse di numeri interi, mentre l'operatore ! di dereferenziazione trattava i dati come puntatori. Allo scopo di rendere la cosa possibile, l'implementazione del BCPL non prevedeva il type checking.

La filosofia del BCPL può essere riassunta in queste righe, liberamente tradotte dal libro "BCPL, the language and its compiler":

La filosofia del BCPL non è quella del tiranno che pensa di sapere come vanno fatte le cose e detta ciò che è permesso e ciò che non lo è: piuttosto il BCPL è un servo che offre i suoi servigi al meglio delle sue possibilità, senza lamentarsi, anche quando si trova di fronte ad un'apparente contraddizione. Si assume che il programmatore sappia sempre quello che stia facendo: egli non è costretto a sottostare a rigidi vincoli.

Esempi


Questi esempi completi e compilabili sono presi dalla distribuzione del BCPL di Martin Richards.

Stampa del fattoriale:

GET "libhdr"

LET start() = VALOF
{ FOR i = 1 TO 5 DO writef("fact(%n) = %i4*n", i, fact(i))
  RESULTIS 0
}

AND fact(n) = n=0 -> 1, n*fact(n-1)

Soluzioni del rompicapo delle otto regine:

GET "libhdr"
 
GLOBAL { count:200; all:201  }
 
LET try(ld, row, rd) BE TEST row=all

                        THEN count := count + 1

                        ELSE { LET poss = all & ~(ld | row | rd)
                               UNTIL poss=0 DO
                               { LET p = poss & -poss
                                 poss := poss - p
                                 try(ld+p « 1, row+p, rd+p » 1)
                               }
                             }

LET start() = VALOF
{ all := 1
  
  FOR i = 1 TO 12 DO
  { count := 0
    try(0, 0, 0)
    writef("Number of solutions to %i2-queens is %i5*n", i, count)
    all := 2*all + 1
  }

  RESULTIS 0
}

Note


  1. Rob Pike, Hello Gophers, su talks.golang.org, 24 aprile 2014. URL consultato l'11 marzo 2016.

Bibliografia



Voci correlate



Collegamenti esterni


Controllo di autoritàLCCN (EN) sh85012591 · J9U (EN, HE) 987007282416805171 (topic)
Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

На других языках


[fr] BCPL

BCPL (Basic Combined Programming Language) est un langage de programmation créé par Martin Richards (en) de l'université de Cambridge (1966) et une réponse aux difficultés rencontrées avec son prédécesseur le Combined Programming Language (CPL) durant les années 1960. Le premier compilateur fonctionnel fut écrit pendant sa visite du Massachusetts Institute of Technology (MIT) au printemps 1967. Ce langage fut décrit la première fois dans un journal au 1969 Spring Joint Computer Conference. Dennis Ritchie développa plus tard le C à partir du BCPL.
- [it] BCPL

[ru] BCPL

BCPL (Basic Combined Programming Language) — язык программирования, разработанный Мартином Ричардсом в 1966 году в Кембриджском университете. Изначально он предназначался для написания компиляторов для других языков.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии