블리스.

BLISS
블리스.
패러다임구조화, 필수(절차적)
설계자W. A. 울프, D. B. 러셀, A. N. 하버만
개발자카네기 멜론 대학교
처음 등장한1970년; 52년 전(1970년)
안정된 릴리스
블리스-64
타이핑 분야타입리스
범위어휘
플랫폼PDP-10, PDP-11, VAX, PRISM, MIPS, DEC Alpha, IA-32, IA-64, x86-64
OS크로스 플랫폼
웹 사이트pdp-10.trailing-edge.com/bb-m836d-bm/
사투리
공통의 BLISS
영향을 받다
인식하다

BLISS는 1970년경 W. A. Wulf, D. B. Russell 및 A. N. Habermann의해 Carnegie Mellon University(CMU)에서 개발된 시스템 프로그래밍 언어입니다.몇 년 후 C가 데뷔하기 까지 가장 잘 알려진 시스템 언어였을 것입니다.그 후, C는 인기가 많아져, BLISS는 유명무실해졌다.C가 초기 단계에 있을 때 Bell Labs 의 몇몇 프로젝트는 BLIS와 C.[citation needed]의 장점을 논의했습니다.

BLIS는 스테이트먼트가 아닌 식을 기반으로 하는 타입리스 블록 구조 프로그래밍 언어이며 예외 처리, 코루틴매크로를 위한 구성을 포함합니다.goto 문장은 포함되어 있지 않습니다.

이 이름은 Basic Language for Implement of System Software 또는 System Software Implementation Language, Backwards의 약자로 다양하게 알려져 있습니다.Bill Wulf의 이름을 따서 "시스템 소프트웨어 구현을 위한 Bill's Language"라고 불리기도 했습니다.

최초의 카네기 멜론 컴파일러는 최적화의 광범위한 사용으로 유명했고, 고전 책인 최적화 컴파일러의 설계(The Design of Optimizing Compiler)의 기초를 형성했습니다.

디지털 이큅먼트 코퍼레이션고 유지되는 PDP-10,[1]PDP-11,[1]VAX,[1]DECPRISM,[2]MIPS,[1]DECAlpha,[1]과 인텔 IA-32,[1]언어는 고객들 사이에서, 몇몇은 compiler,[3]지만 DEC는 사내의 1980년대로;인기를 끌지 않은 것으로 BLISS 컴파일러 개발되(DEC)은 DECope의 유틸리티 프로그램의 대부분.등급 시스템 writt다BLIS-32에 있습니다.DEC BLIS 컴파일러는 [1][4]이러한 플랫폼에 대한 OpenVMS 포트의 일부로 IA-64x86-64 아키텍처로 이식되었습니다.x86-64 BLIS 컴파일러는 Alpha 및 IA-64 전용 GEM 백엔드를 대체하는 백엔드 코드 생성기로 LLVM을 사용합니다.

언어 설명

[인용어]

BLISS는 다른 현대 고급 언어의 많은 특징을 가지고 있습니다.블록 구조, 자동 스택 및 재귀 루틴을 정의하고 호출하는 메커니즘이 있습니다. 다양한 사전 정의된 데이터 구조를 제공합니다.테스트 및 반복을 위한 설비...

한편, BLISS는 다른 고급 언어의 특징을 생략하고 있습니다.시스템 소프트웨어 프로젝트는 보통 자체 입력/출력을 개발하거나 기본 모니터 I/O 또는 화면 관리 서비스를 기반으로 구축되기 때문에 입출력 기능이 내장되어 있지 않습니다.시스템 소프트웨어에서 이 기능이 필요한 경우가 많기 때문에 머신 고유의 기능에 액세스 할 수 있습니다.BLISS는 고급 언어 중 특이한 특성을 가지고 있습니다.이름 ...은 세그먼트의 값이 아니라 해당 세그먼트의 주소로 동일하게 해석됩니다.또한 BLIS는 "표현 언어"가 아니라 "표현 언어"입니다.

이것은 선언이 아닌 언어의 모든 구성이 표현이라는 것을 의미합니다.표현식은 값을 생성할 뿐만 아니라 저장소의 변경, 제어의 이전 또는 프로그램 루프의 실행과 같은 작업을 일으킬 수 있습니다.예를 들어, BLIS에서 할당 "스테이트먼트"의 대응 부분은 엄밀히 말하면 그 자체로 가치가 있는 표현입니다.표현식의 값은 BLIS에서 사용하거나 폐기할 수 있습니다.마지막으로, BLIS에는 매크로 어셈블러에서만 볼 수 있는 수준의 기능을 제공하는 매크로 설비가 포함되어 있습니다.

--

BLIS 언어에는 다음과 같은 특징이 있습니다.

  • 모든 상수는 사용되는 머신의 완전한 워드입니다.예를 들어 PDP-11과 같은 16비트 머신에서는 정수는 16비트, VAX 컴퓨터에서는 정수는 32비트, PDP-10에서는 36비트입니다.
  • 변수에 대한 참조는 항상 해당 변수의 주소에 대한 참조입니다.예를 들어, 명령어는Z+8는 Z의 주소에 8을 더하는 것을 의미하며 Z의 에 8을 더하는 것을 의미하지 않습니다.Z 에 8을 더해야 하는 경우 변수 앞에 마침표를 붙여야 합니다. 따라서 다음과 같이 입력합니다..Z+8Z의 내용에 8을 추가하는 이 기능을 수행합니다.
  • 할당은 표준에 따라 이루어집니다.=기호(예:Z=8– 8을 포함하는 전체 워드 상수를 생성하여 주소가 Z에 해당하는 위치에 저장합니다.그렇게Z+12=14(또는 다른 방법으로)12+Z=14)는 상수 14를 Z의 주소 뒤에 12단어 있는 위치에 배치합니다(이는[by whom?] 잘못된 관행으로 간주됩니다).
  • block 은 ALGOL의 문과 유사합니다.블록은 ALGOL로 시작됩니다.BEGIN스테이트먼트 및 종료ENDALGOL과 마찬가지로 문은 세미콜론(";")으로 끝납니다.값이 계산되면 다음 스테이트먼트 터미네이터까지 저장됩니다.즉, 값을 계산하여 변수에 할당하고 필요에 따라 다음 스테이트먼트로 전송할 수 있습니다.또는 열린 괄호를 사용하여 블록을 시작하고 닫힌 괄호를 사용하여 블록을 닫을 수도 있습니다.괄호가 식에 포함되어 있는 경우 표준 우선순위 규칙이 사용됩니다.이 규칙에서는 괄호 안의 식이 먼저 계산됩니다.
  • 조건부 실행에서는IFexpression: true-false 조건을 테스트하고 대체 액션을 수행하여 결과를 반환합니다.
  • 비교에서는 다음과 같은 키워드를 사용합니다.EQL(동일한 목적으로 = 기호를 과부하하는 것이 아니라),GTR다음보다 클 경우NEQ동등하지 않다.예를 들어, 다음 코드는 Z의 절대값을 Q가 나타내는 주소에 할당합니다.
Q = (IF .Z GTR 0 THEN .Z ELSE -.Z);
  • 식별자(변수 및 상수)는 사용하기 전에 선언해야 합니다.일반적으로OWN키워드를 지정합니다.변수를 선언하면 보통 컴파일러가 해당 변수를 위한 공간을 할당합니다.필요에 따라 변수는 를 통해 고정 머신주소를 할당할 수 있습니다.BIND선언.이 기능은 주로 기계 레지스터 또는 특정 특수 주소에 액세스하기 위해 사용됩니다.
  • 언어 내의 서브루틴은 루틴이라고 불리며 키워드를 사용하여 선언됩니다.ROUTINE.
  • 텍스트 치환을 허용하는 매크로는 키워드를 사용하여 선언됩니다.MACRO.
  • 이 언어는 구조체라고 불리는 배열을 지원하며 키워드로 선언합니다.VECTOR.
  • 이 언어는 다음과 같은 고급 프로그래밍 언어 구조를 지원합니다.
    • 경유하는 대체 실행 경로CASE표현
    • 의 사용을 통한 루프INCRALGOL의 FOR 문과 유사한 식입니다.
    • 내장 문자열 함수
    • 특정 자동 데이터 변환(숫자에서 문자열로 등)

소스 예시

다음 예는 블리스 언어 매뉴얼에서 [5]발췌한 것입니다.

모듈 E1(메인 = CTRL) = BEGIN FORWARD RINE CTRL, STEP; ROTENAL CTRL = !+! 이 루틴은 값을 입력하고, 작동한 다음, 결과를 출력합니다. !- BEGIN EXTERNAL RINE GETNUM, ! 터미널에서 로컬 V로 숫자를 출력하여 저장합니다.alue Y;! 출력 값 GETNUM(X); Y = STEP(.X); PUTNUM(.Y) END; ROTENAL STEP(A) = !+! 이 루틴은 지정된 값에 1을 추가합니다.

[인용어]

버전

  • 블리스-10
  • BLIS-11 - PDP-11용 크로스 컴파일러
  • 블리스-16
  • BLIS-16C - BLIS-11의 DEC 버전
  • 블리스-32
  • 블리스-36
  • 블리스-64
  • 공통 BLIS - 휴대용 서브셋

메모들

  1. ^ a b c d e f g Brender, Ronald F. (2002). "The BLISS programming language: a history" (PDF). Software: Practice and Experience. 32 (10): 955–981. doi:10.1002/spe.470. S2CID 45466625.
  2. ^ MacLaren, Don (August 27, 1987). "DECWest Compiler Project, Description, and Plan" (PDF). Bitsavers.org.
  3. ^ da Cruz, Frank (16 September 1987). "News about Kermit Programs for VAX/VMS". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 5 May 2019. Kermit-32 is written in the Bliss language, DEC's "corporate implementation language" (originally developed at CMU). Bliss never gained popularity among DEC's customers; few sites have Bliss compilers.
  4. ^ "2017 LLVM Developers' Meeting: J. Reagan "Porting OpenVMS using LLVM"". YouTube. 31 October 2017. Archived from the original on 2021-12-21.
  5. ^ a b 디지털 기기 주식회사 블리스 언어 매뉴얼(1987년)

레퍼런스

외부 링크

다운로드