BCPL

BCPL
BCPL
패러다임절차, 필수, 구조화
설계자마틴 리처드
처음 등장한1967년; 55년 전 (재설정)[1]
타이핑 분야typeless (모든 것이 단어)
영향을 받다
CPL
영향받은
B, C, Go[2]

BCPL(Basic Combined Programming Language)은 절차적, 필수적, 구조화프로그래밍 언어입니다.원래 다른 언어용 컴파일러를 쓰기 위한 것이었지만 BCPL은 더 이상 일반적으로 사용되지 않습니다.그러나 B라고 불리는 BCPL의 구문적으로 변경된 버전이 C 프로그래밍 언어의 기초가 된 언어였기 때문에 그 영향은 여전히 느껴집니다.BCPL은 코드 [3]블록을 구분하기 위해 곱슬괄호를 사용하는 것을 포함하여 많은 현대 프로그래밍 언어의 몇 가지 기능을 도입했습니다.BCPL은 1967년 [1]캠브리지 대학의 마틴 리차드에 의해 처음 시행되었다.

설계.

BCPL은 작고 단순한 컴파일러를 쓸 수 있도록 설계되어 있습니다.일부 컴파일러는 16킬로바이트로 실행할 수 있습니다.게다가 원래의 컴파일러는, BCPL로 쓰여져 휴대하기 쉬웠다.따라서 BCPL은 시스템 [citation needed]부트스트랩에 널리 사용되는 선택이었습니다.컴파일러의 휴대성의 주된 이유는 컴파일러의 구조에 있습니다.프론트 엔드는 소스를 해석하고 중간 언어인 O-코드를 생성하는 두 부분으로 분할되었습니다.백엔드는 O-코드를 취득하여 타깃 머신의 머신 코드로 변환했습니다.오직.컴파일러 코드의 1/5는 새로운 머신을 지원하기 위해 재작성되어야 했습니다. 작업은 보통 2에서 5의 수동 작업이 필요했습니다.이 접근법은 나중에 일반적인 관행(: Pascal, Java)이 되었습니다.

이 언어는 단 하나데이터 유형, 즉 보통 아키텍처의 머신 워드와 일치하도록 선택되고 모든 유효한 스토리지 주소를 나타낼 수 있는 충분한 용량을 가진 단어, 고정 비트 수만을 갖는다는 점에서 특이합니다.당시의 많은 기계에서 이 데이터 유형은 16비트 단어였습니다.이 선택은 나중에 BCPL이 가장 작은 어드레싱 가능한 항목이 단어가 아닌 바이트인 머신이나 32비트나 [citation needed]64비트 등 더 큰 워드 크기를 가진 머신에서 사용되었을 때 큰 문제가 되는 것으로 판명되었습니다.

모든 값의 해석은 값을 처리하는 데 사용되는 연산자에 의해 결정됩니다(예:+두 값을 합산하여 정수로 취급한다.!값을 통해 간접적으로 표현되어 효과적으로 포인터로 취급됩니다.)이것이 동작하기 위해서, 실장에서는 타입 체크가 제공되지 않았습니다.헝가리 표기법은 프로그래머가 의도하지 않은 유형의 [citation needed]오류를 피하기 위해 개발되었습니다.

BCPL의 단어 방향바이트 지향 하드웨어 간의 불일치는 여러 가지 방법으로 해결되었습니다.하나는 단어를 바이트 문자열로 패킹 및 언팩하기 위한 표준 라이브러리 루틴을 제공하는 것입니다.나중에 비트필드 선택 연산자와 infix 바이트 간접 연산자(에 의해 표시됨)의 두 가지 언어 기능이 추가되었습니다.%를 참조해 주세요.[citation needed]

BCPL은 개별 컴파일 유닛에 걸친 바인딩을 독특한 방법으로 처리합니다.사용자가 선언할 수 있는 글로벌 변수는 없습니다.대신 Fortran의 "공통"과 유사한 글로벌 벡터가 있습니다.서로 다른 컴파일 유닛 간에 공유되는 모든 데이터는 스칼라와 글로벌 벡터 내의 미리 정해진 장소에 기억된 벡터에 대한 포인터를 포함한다.따라서 헤더 파일('GET' 디렉티브를 사용하여 컴파일 중에 포함된 파일)은 컴파일 유닛 간에 글로벌 데이터를 동기화하는 주요 수단이 됩니다.이 방법에는 기호 이름의 목록을 표시하는 "GLOBAL" 디렉티브가 포함되어 있으며, 각각 글로벌하게 대응하는 숫자에 대응하는 어드레싱된 단어와 조합되어 있습니다.벡터글로벌 벡터에는 변수와 함께 외부 프로시저를 위한 바인딩이 포함됩니다.이를 통해 컴파일 유닛의 동적 로딩이 매우 쉬워집니다.기본 구현의 링크 로더에 의존하는 대신, BCPL은 효과적으로 프로그래머에게 링크 [citation needed]프로세스의 제어를 제공합니다.

또한 글로벌 벡터는 표준 라이브러리 루틴을 대체하거나 증강하는 것을 매우 쉽게 만들었습니다.프로그램은 글로벌 벡터에서 원래 루틴으로 포인터를 저장하고 대체 버전에 대한 포인터로 대체할 수 있습니다.대체 수단에서는 처리의 일부로서 원본을 호출할 수 있습니다.이는 빠른 애드혹디버깅 [citation needed]지원으로 사용할 수 있습니다.

BCPL은 최초의 브레이스 프로그래밍 언어이며, 브레이스는 구문 변경에도 살아남아 프로그램 소스 코드 문을 나타내는 일반적인 수단이 되었습니다.실제로, 오늘날의 제한된 키보드에서는 소스 프로그램이 종종 시퀀스를 사용했습니다.$(그리고.$)기호 대신{그리고.}. 외줄// C의해 채택되지 않은 BCPL의 의견은 C++에 다시 나타났고 이후 C99에 다시 나타났다.

BCPL: 언어와 그 컴파일러라는 책에서는 BCPL의 철학에 대해 다음과 같이 설명하고 있습니다.

BCPL의 철학은 자신이 가장 잘 안다고 생각하고 무엇이 허용되고 무엇이 허용되지 않는지에 대한 법을 정하는 폭군 중 하나가 아니다; 오히려 BCPL은 명백한 헛소리에 직면했을 때조차도 불평 없이 그의 능력을 최대한으로 제공하는 하인으로서 더 행동한다.프로그래머는 항상 자신이 무엇을 하고 있는지 알고 있으며 사소한 [4]제한에 얽매이지 않는다고 가정합니다.

역사

BCPL은 1967년 [1]캠브리지 대학의 마틴 리차드에 의해 처음 시행되었다.BCPL은 1960년대 초에 설계된 Cambridge Programming Language(Combined Programming Language, CPL)라는 이름의 이전 버전인 Cambridge Programming Language와의 문제에 대한 대응이었습니다.Richards는 "컴파일을 어렵게 만드는 완전한 언어의 특징을 제거"하여 BCPL을 만들었다.IBM 7094대한번째 컴파일러 구현은 1967년 봄 Richards가 MIT(Massachusetts Institute of Technology)의 프로젝트 MAC를 방문했을 때 작성되었습니다.이 언어는 1969년 춘계합동컴퓨터회의에서 [citation needed]발표된 논문에서 처음 기술되었다.

BCPL은 원래 "Bootstrap Cambridge Programming Language"의 약자로 소문이 났지만, 개발이 BCPL에서 중단된 이후 CPL이 만들어지지 않았고, 나중에 BCPL [clarification needed][citation needed]책을 위해 약어가 재해석되었습니다.

BCPL은 원래 hello world 프로그램이 [5]작성된 언어입니다. 번째 MUD는 BCPL(MUD1)로도 작성되었습니다.

일부 운영체제는 부분적으로 또는 전체적으로 BCPL로 작성되었습니다(를 들어 TRIPOS 및 AmigaDOS의 초기 버전).BCPL은 최초의 현대 PCXerox PARC Alto 프로젝트에 사용된 초기 언어이기도 합니다.Bravo 문서 준비 시스템은 BCPL로 작성되었습니다.

1969년에 부트스트랩된 초기 컴파일러는 Martin Richards의 Atlas 2 컴파일러의 O-code 종이테이프로 시작하여 ICT 1900 시리즈를 대상으로 했습니다.두 머신은 워드 길이(48비트 대 24비트), 문자 인코딩 및 패킹된 문자열 표현이 서로 달랐습니다. 부트스트래핑이 성공하여 메서드의 실용성에 대한 확신이 높아졌습니다.

1970년 후반에는 Honeywell 635Honeywell 645, IBM 360, PDP-10, TX-2, CDC 6400, UNIVAC 1108, PDP-9, KDF 9 및 Atlas 2에 대한 구현이 있었습니다.1974년에 BCPL의 사투리가 중간 O-코드를 사용하지 않고 BBN에서 구현되었습니다.최초의 실장은 BBN의 TENEX PDP-10s에서 호스트되는 크로스 컴파일러로, ARPANET에서 사용되는 2세대 IMP의 BBN 실장에 사용되는 PDP-11을 직접 대상으로 했습니다.

1980년대 중반, 마틴 [6]리차드 박사의 동생인 존 리처즈가 시작한 회사인 리차드 컴퓨터 프로덕츠에 의해 BBC 마이크로용으로 제작된 버전도 있었다.BBC 돔스데이 프로젝트는 그 언어를 사용했다.Amstrad CPC 및 Amstrad PCW 컴퓨터용 BCPL 버전도 1986년 영국 소프트웨어 회사인 Arnor Ltd에 의해 출시되었습니다.MacBCPL은 1985년 영국 켄싱턴의 Topexpress Ltd에 의해 Apple Macintosh용으로 출시되었습니다.

BCPL의 설계와 철학은 모두 B에 강한 영향을 미쳤고, 이는 다시 [7]C에 영향을 미쳤다.그 당시 프로그래머들은 C의 최종 후계자가 알파벳의 다음 문자인 "D" 또는 모어 이름의 다음 문자인 "P"로 불릴지에 대해 논의했다.C의 후계 언어로서 가장 받아들여지고 있는 언어는 C++입니다.++D 프로그래밍 언어도 존재하지만 C의 증분 [8]연산자가 됩니다.

1979년, 최소 25개의 아키텍처에 대한 BCPL의 구현이 존재하였다. C가 비 Unix 시스템에서 인기를 끌면서 이 언어는 점차 인기를 잃어가고 있다.

Martin Richards는 웹사이트에 최신 버전의 BCPL을 유지하고 있으며, 2018년에 마지막으로 업데이트되었습니다.Linux, FreeBSD 및 Mac OS X를 포함한 다양한 시스템에서 실행되도록 설정할 수 있습니다.최신 배포판에는 그래픽스 및 사운드 라이브러리가 포함되어 있으며 포괄적인 매뉴얼이 있습니다.그는 음악 자동 악보에 대한 연구를 포함하여 계속해서 그 안에 프로그램을 짜고 있다.

BCPL의 일반적인 비공식 MIME 유형은 다음과 같습니다.text/x-bcpl.

이러한 프로그램을 Martin Richards의 Cintsys의 현재 버전(2018년 12월)을 사용하여 실행하는 경우 오류를 피하기 위해 LIBHDR, START 및 WRITEF를 소문자로 변경해야 합니다.

인자 인자:

"LIBHDR" LET START() = VALOF $(I = 1 to 5 DO WRITEF("%N!" = %I4*N), I, Fact(I) RESUCTIS 0 $) 및 FACT(N) = 0 - 1 팩트(N)를 가져옵니다.

N Queens 문제에 대한 솔루션 카운트

=ALL다면 COUNT:)카운트+1ELSE달러();~(LDROW RDPOSS 모든 아는 것과 레트)POSS 때=0DO달러(LETP)POSS&-POSS POSS:)POSS-PTRY(LD+P<><>1, ROW+P, RD+P>>1)달러)달러)LETSTART())VALOF(모든:=1을 위한 나는 12독자 1초기 조향 순간"LIBHDR"글로벌달러(계수:200모든:201달러)LETTRY(LD, ROW, RD)생물학적 동등성 시험 ROW달러를 잡아라. DO달러(계수:=0시행(0, 0, 0) WRITEF("%I2-QUENS 문제에 %I5 솔루션*N", I, 카운트) ALL : = 2 * ALL + 1 $ ) RESUCTIS 0 $ )

레퍼런스

  1. ^ a b c "Martin Richards (2003 Computer Pioneer Award)". IEEE Computer Society. Archived from the original on 24 November 2017. Retrieved 24 November 2017.
  2. ^ Pike, Rob (24 April 2014). "Hello Gophers". Retrieved 11 March 2016.
  3. ^ https://www.cl.cam.ac.uk/~mr10/bcplman.pdf BCPL Cintsys and Cintpos User Guide, 2.1.4 섹션브래킷
  4. ^ Richards, Martin; Whitby-Strevens, Colin (1980). BCPL: The Language and its Compiler. Cambridge University Press. p. 5. ISBN 978-0521785433.
  5. ^ BCPL, 전문 용어 파일
  6. ^ "Reuters technical development: Glossary - THE BARON". www.thebaron.info.
  7. ^ Kernighan, Brian W. and Dennis M. Ritchie (1978). The C Programming Language. Bell Telephone Laboratories. p. 2. ISBN 0-13-110163-3.{{cite book}}: CS1 maint: 작성자 파라미터 사용(링크)
  8. ^ 2017년 12월 12일 회수된 C++의 역사

추가 정보

  • Martin Richards, The BCPL Reference Manual (Memorature M-352, Project MAC, Cambridge, MA, USA, 1967년 7월)
  • Martin Richards, BCPL - 컴파일러 쓰기시스템 프로그래밍용 도구 (스프링 조인트 컴퓨터 컨퍼런스, Vol 34, 페이지 557-566, 1969년)
  • 마틴 리처드, 아서 에반스, 로버트 F.Mabee, BCPL 참조 매뉴얼(MAC TR-141, Project MAC, Cambridge, MA, USA, 1974년)
  • Martin Richards, Colin Whitby-Strevens, BCPL, 언어와 컴파일러 (Cambridge University Press, 1980) ISBN 0-521-28681-6

외부 링크