시스템 프로그래밍 언어

System programming language

시스템 프로그래밍 언어는 시스템 프로그래밍에 사용되는 프로그래밍 언어입니다. 이러한 언어는 시스템 소프트웨어를 작성하기 위해 설계되었으며, 일반적으로 애플리케이션 소프트웨어와 비교할 때 다른 개발 접근 방식이 필요합니다.Edsger Dijkstra는 이러한 언어를 기계 지향 상위 언어(mohol)[1]라고 부릅니다.

범용 프로그래밍 언어는 해당 언어로 작성된 프로그램이 다른 플랫폼에서 동일한 코드를 사용할 수 있도록 일반적인 기능에 초점을 맞추는 경향이 있습니다.이러한 언어의 예로는 ALGOL과 Pascal이 있습니다.이러한 일반적인 품질은 일반적으로 기계 내부 작동에 대한 직접 액세스를 거부하기 때문에 종종 성능에 부정적인 영향을 미칩니다.

반면 시스템 언어는 호환성이 아니라 기본 하드웨어에 대한 성능 및 접근 용이성을 고려하여 설계되었으며 구조화된 프로그래밍과 같은 고급 프로그래밍 개념을 제공합니다.예를 들어 SPL과 ESPOL구문 면에서 ALGOL과 비슷하지만 각각의 플랫폼에 맞춰 조정됩니다.다른 제품은 크로스 플랫폼이지만 BLISS, JOVICALBCPL같이 하드웨어에 가깝게 작동하도록 설계되었습니다.

일부 언어는 시스템과 응용 프로그램 도메인에 걸쳐 있으며, 이러한 사용 간의 격차를 해소합니다.시스템 프로그래밍과 애플리케이션 프로그래밍 모두에서 널리 사용되는 C가 표준 입니다.Rust나 Swift와 같은 몇몇 현대 언어들도 이것을 한다.

특징들

응용 프로그램 언어와는 달리 시스템 프로그래밍 언어는 일반적으로 기계의 물리적 하드웨어에 보다 직접 액세스할 수 있습니다.이러한 의미에서 전형적인 시스템 프로그래밍 언어는 BCPL이었습니다.시스템 프로그래밍 언어에는 임베디드 입출력(I/O) 기능이 없는 경우가 많습니다.이는 시스템 소프트웨어 프로젝트가 보통 자체 I/O 메커니즘을 개발하거나 기본 모니터 I/O 또는 화면 관리 기능을 기반으로 구축되기 때문입니다.PL/I, C Pascal이 널리 보급되면서 시스템 프로그래밍과 애플리케이션 프로그래밍에 사용되는 언어 간의 차이는 시간이 지나면서 모호해졌습니다.

역사

최초의 시스템 소프트웨어는 대체 방법이 없었기 때문에 어셈블리 언어로 작성되었지만 오브젝트 코드의 효율성, 컴파일 시간, 디버깅 용이성 등의 이유로 작성되었습니다.FORTRAN과 같은 애플리케이션 언어는 시스템 프로그래밍을 위해 사용되었지만, 일반적으로 [2]어셈블리 언어로 작성해야 하는 루틴이 필요했습니다.

중급 언어

미드레벨 언어에는 고급 언어의 구문과 기능이 많이 있지만 기계 [2]기능에 대한 언어(어셈블리 언어 제공)로 직접 액세스할 수도 있습니다.그 중 가장 초기의 것은 1960년 버로우즈 메인프레임의 ESPOL이었고, 니클라우스 워스의 PL360(크로스 컴파일러로서 버로우즈 시스템에 처음 쓰여짐)은 ALGOL 60의 일반적인 구문을 가지고 있었지만, 그 문장이 CPU 레지스터와 메모리를 직접 조작했다.이 카테고리의 다른 언어로는 MOL-360과 PL/S가 있습니다.

예를 들어 일반적인 PL360 문은 다음과 같습니다.R9 := R8 and R7 shll 8 or R6레지스터 8과 레지스터 7을 함께 배치하고, 그 결과를 레지스터 6의 내용과 함께 왼쪽으로 이동시키고, 최종 결과를 레지스터 [3]9에 배치하는 것을 나타냅니다.

고급 언어

PL360이 어셈블리 언어의 시맨틱 레벨에 있는 반면, 다른 종류의 시스템 프로그래밍 언어는 보다 높은 시맨틱 레벨로 동작하지만, 언어를 시스템 프로그래밍에 적합하도록 설계된 특정 확장을 가지고 있습니다.이러한 종류의 언어의 초기 예는 LRLTRAN으로,[4] 문자 및 비트 조작, 포인터 및 직접 주소 지정 점프 테이블을 위한 기능으로 Fortran을 확장했습니다.

그 후, C와 같은 언어가 개발되었고, 여기서 기능들의 조합은 시스템 소프트웨어를 작성하기에 충분했으며, 컴파일러는 적당한 하드웨어에서 효율적인 객체 프로그램을 생성하는 것을 개발할 수 있었다.이러한 언어는 일반적으로 효율적으로 구현할 수 없는 기능을 생략하고 특정 하드웨어 기능에 액세스하는 데 필요한 소수의 기계 의존적 기능(C와 같은 인라인 어셈블리 코드)을 추가합니다.asm스테이트먼트(statement)는 이러한 목적으로 자주 사용됩니다.그러한 언어들이 많이 [1]개발되었지만, C와 C++가 살아남았다.

SPL(System Programming Language)은 HP 3000 컴퓨터 시리즈의 특정 언어의 이름으로, 운영 체제인 HP Multi-Programming Executive(MPE) 및 시스템 소프트웨어의 기타 부분에 사용됩니다.

주요 언어

언어 발신자 생년월일 영향을 받다 사용처
ESPOL 버로우즈 1961 알골 60 MCP
PL/I IBM, 공유 1964 ALGOL, FORTRAN, 일부 COBOL 멀티틱스
PL/S IBM 1960년대 PL/I OS/360
PL360 니클라우스 워스 1968 알골 60 알골 W
파스칼 니클라우스 워스 1970 알골 W Apollo Computer Aegis, Apple MacApp, UCSD p-System
블리스. 카네기 멜론 대학교 1970 알골 PL/I[5] VMS(포트)
시스템 개발 언어(LSD) R. Daniel Bergeron, et.al (브라운 대학교) 1971 PL/I
C 데니스 리치 1972 BCPL, B(프로그래밍 언어) Unix 계열 시스템을 포함한 대부분의 운영 체제 커널
새로운 기능 버로우즈 1970년대 ESPOL, ALGOL MCP
PL/8 IBM 1970년대 PL/I AIX
PL-6 허니웰 주식회사 1970년대 PL/I CP-6
심플 CDC 1970년대 즐겁다 NOS 서브시스템, 대부분의 컴파일러, FSE 에디터
C++ 비야른 스트루스트럽 1979 C, Simula GUI 애플리케이션(QT, Windows 등), 게임(비실제 엔진)
아다 장 이치비아, S터커 태프트 1983 ALGOL 68, 파스칼, C++, 에펠 임베디드 시스템, OS 커널, 컴파일러, 게임, 시뮬레이션, CubeSat, 항공 교통 관제, 항전
D 디지털 마스 2001 C++ 복수 도메인
안드레아스 럼프 2006 Python, Ada, Lisp, Oberon, C++, Modula-3, 객체 파스칼 게임, 컴파일러, OS 커널, 앱 개발, 임베디드 시스템 등
가세요 구글 2009 Python, C++를 싫어하며 Pascal에서 일부 구문 사용 도커, 포드만
모질라 리서치[6] 2010 C++, Haskell, Erlang, Ruby 서보, Redox OS
재빠르다 애플사 2014 C, Objective-C, D, Rust macOS, iOS, watchOStvOS 앱 개발

참고 항목

메모들

  1. ^ Swift는 자동 참조 카운트를 사용합니다.

레퍼런스

  1. ^ a b van der Poel, W. L.; Maarssen, L. A., eds. (27–31 August 1973). Machine oriented higher level languages. IFIP Working Conference on Machine Oriented Higher Level Languages (MOHL). Trondheim, Norway: International Federation for Information Processing. 1974년 발행된 의사록.
  2. ^ a b Sammet, Jean (October 1971). "Brief Survey of Languages Used for Systems Implementation". ACM SIGPLAN Notices. 6 (9): 1–19. doi:10.1145/942596.807055.
  3. ^ Wirth, Niklaus. "PL360, A Programming Language for the 360 Computers". Journal of the ACM. 15 (1): 37–74.
  4. ^ Mendicino, Sam F.; Hughes, Robert A.; Martin, Jeanne T.; McMahon, Frank H.; Ranelletti, John E.; Zwakenberg, Richard G. "The LRLTRAN Compiler". Communications of the ACM. 11 (11): 747–755.
  5. ^ Wulf, W. A.; Russell, D. B.; Haberman, A. N. (December 1971). "BLISS: A Language for Systems Programming". Communications of the ACM. 14 (12): 780–790. CiteSeerX 10.1.1.691.9765. doi:10.1145/362919.362936.
  6. ^ "Mozilla Research". 1 January 2014.

외부 링크