맨위로가기

시스템 프로그래밍 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

시스템 프로그래밍 언어는 컴퓨터의 하드웨어에 직접 접근하여 시스템 소프트웨어를 개발하는 데 사용되는 프로그래밍 언어를 의미한다. 최초의 시스템 소프트웨어는 어셈블리어로 작성되었으며, 이후 중급 언어, 고급 언어가 등장했다. C, C++과 같은 언어가 널리 사용되었으며, 최근에는 Go, Rust와 같은 현대적인 언어의 사용이 증가하고 있다.

더 읽어볼만한 페이지

  • 프로그래밍 언어 주제 - 프로그래밍 패러다임
    프로그래밍 패러다임은 프로그래머에게 프로그램 작성 방식을 제시하는 관점 또는 스타일이며, 구조적 프로그래밍을 시작으로 절차적, 객체 지향, 선언형 등으로 발전해 명령형, 선언형, 멀티 패러다임 프로그래밍 언어로 분류된다.
  • 프로그래밍 언어 주제 - 프로그램 최적화
    프로그램 최적화는 컴퓨터 프로그램의 효율성을 높이는 과정으로, 더 효율적인 구현 방식을 선택하거나 불필요한 기능을 제거하여 문제 해결에 집중하며, 다양한 수준에서 플랫폼 의존적이거나 독립적인 기술을 활용하여 수행되지만, 특정한 품질 지표를 개선하기 위해 다른 측면을 희생하는 트레이드오프가 발생할 수 있다.
  • 시스템 프로그래밍 언어 - C (프로그래밍 언어)
    C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다.
  • 시스템 프로그래밍 언어 - 스위프트 (프로그래밍 언어)
    2014년 애플 세계 개발자 컨퍼런스에서 처음 공개된 스위프트는 크리스 래트너가 개발한 애플의 범용 프로그래밍 언어로서, Objective-C를 대체하며 다양한 플랫폼 지원, 모던 문법, 안정성, 인터랙티브한 개발 환경, SwiftUI 등의 특징을 가진다.
  • 시스템 소프트웨어 - 유틸리티 소프트웨어
    유틸리티 소프트웨어는 컴퓨터의 운영 체제, 하드웨어, 응용 소프트웨어를 관리하고 성능을 향상시키거나 특정 작업을 수행하는 프로그램으로, 시스템 관리, 파일 관리, 데이터 복구, 보안 등의 기능을 제공하며 백업 소프트웨어, 바이러스 백신 등이 대표적이다.
  • 시스템 소프트웨어 - 가상 사설 서버
    가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
시스템 프로그래밍 언어

2. 역사

시스템 프로그래밍 언어의 역사는 컴퓨터의 발전과 밀접하게 연관되어 있다. 초기에는 주로 어셈블리어가 사용되었으나, 점차 중급 언어와 고급 언어가 등장하면서 시스템 개발 환경이 변화해왔다.[21][2]

2. 1. 초창기 (어셈블리 언어)

컴퓨터 초창기의 시스템 소프트웨어는 주로 어셈블리어로 작성되었다. 이는 당시 마땅한 대안이 없었기 때문이기도 하지만, 어셈블리어가 생성하는 오브젝트 코드의 효율성이 높고 컴파일 시간이 짧으며 디버깅이 비교적 용이하다는 장점도 있었다.[21][2] 포트란과 같은 응용 프로그램 언어가 시스템 프로그래밍 목적으로 사용되기도 했으나, 일부 기능 구현을 위한 루틴은 여전히 어셈블리어로 작성해야 했다.[21][2]

2. 2. 중급 언어 (Mid-level languages)

중급 언어(Mid-level language)는 고급 언어의 구문과 기능을 가지면서도, 어셈블리 언어처럼 기계의 기능에 직접 접근할 수 있도록 설계된 언어이다.[2]

최초의 중급 언어 중 하나는 1960년경 벌로스 메인프레임에서 사용된 ESPOL이다. 이후 니클라우스 비르트(Niklaus Wirth)가 PL360을 개발했다. PL360은 원래 벌로스 시스템에서 크로스 컴파일러로 작성되었으며, ALGOL 60의 일반적인 문법을 따르면서도 CPU 레지스터나 메모리를 직접 조작하는 기능을 제공했다. 이 범주에 속하는 다른 언어로는 MOL-360과 PL/S가 있다.

예를 들어, PL360의 R9 := R8 and R7 shll 8 or R6 문장은 레지스터 8과 7을 AND 연산하고, 그 결과를 8비트 왼쪽으로 시프트(shift)한 뒤, 레지스터 6의 내용과 OR 연산을 수행하여 최종 결과를 레지스터 9에 저장하라는 의미이다.[3]

2. 3. 고급 언어 (Higher-level languages)

초기 시스템 소프트웨어는 주로 어셈블리어로 작성되었다. 이는 당시 다른 대안이 없었을 뿐만 아니라, 오브젝트 코드의 효율성, 컴파일 시간 단축, 디버깅의 용이성 등 여러 이유 때문이었다. 포트란과 같은 응용 프로그램 언어가 시스템 프로그래밍 목적으로 사용되기도 했지만, 특정 기능 구현을 위해서는 여전히 어셈블리어로 작성된 루틴이 필요했다.[21]

이후 어셈블리어보다 더 높은 의미 수준에서 작동하면서 시스템 프로그래밍에 적합하도록 특정 기능이 확장된 고급 언어들이 등장했다. 이러한 언어들은 초기 시스템 프로그래밍 언어인 PL360 등이 어셈블리어의 의미 수준에 머물렀던 것과는 차이가 있다. 대표적인 초기 고급 시스템 프로그래밍 언어로는 LRLTRAN[4][16]을 들 수 있다. LRLTRAN은 포트란을 기반으로 문자 및 비트 조작 기능, 포인터, 그리고 주소를 직접 지정하여 사용하는 점프 테이블 기능 등을 추가하여 확장한 언어이다.

그 후 C와 같은 언어들이 개발되면서 시스템 소프트웨어를 작성하기에 충분한 기능 조합을 갖추게 되었고, 컴파일러 기술의 발전으로 적당한 하드웨어에서도 효율적인 오브젝트 코드를 생성할 수 있게 되었다. 이러한 고급 시스템 프로그래밍 언어들은 일반적으로 효율적으로 구현하기 어려운 기능은 생략하는 대신, 특정 하드웨어 기능에 접근하는 데 필요한 소수의 기계 종속적인 기능을 추가하는 방식으로 설계되었다. 예를 들어, 하드웨어의 특정 기능에 접근하기 위해 인라인 어셈블리 코드를 사용하는 경우가 많은데, C 언어의 ''asm'' 문 등이 이러한 목적으로 사용된다.[1] 유사한 목적의 언어들이 많이 개발되었지만,[17] 현재까지 가장 널리 사용되며 살아남은 언어는 C와 C++이다.

한편, HP 3000 컴퓨터 시리즈를 위해 특별히 개발된 ''System Programming Language''(SPL)라는 이름의 프로그래밍 언어도 존재했다. 이 언어는 해당 컴퓨터의 운영 체제인 HP Multi-Programming Executive를 비롯한 여러 시스템 소프트웨어 구성 요소를 개발하는 데 사용되었다.

3. 특징

응용 프로그래밍 언어와 대조적으로, 시스템 프로그래밍 언어는 일반적으로 컴퓨터의 물리적 하드웨어에 더 직접적인 접근을 제공한다. 이러한 의미에서 전형적인 시스템 프로그래밍 언어는 BCPL이었다. 시스템 프로그래밍 언어는 자체적인 I/O 메커니즘을 개발하거나 기본 모니터 I/O 또는 화면 관리 기능을 기반으로 구축하기 때문에, 내장된 입출력 (I/O) 기능을 갖추지 않은 경우가 많다. PL/I, C, 파스칼의 광범위한 인기로 인해 시스템 프로그래밍과 응용 프로그래밍에 사용되는 언어의 구분은 시간이 지남에 따라 모호해졌다.

4. 주요 시스템 프로그래밍 언어

wikitext

언어개발자출시일영향을 받은 언어사용 분야
JOVIAL시스템 개발 공사1960년ALGOL 58다수의 시스템, 주로 군사용
ESPOL버로스사1961년ALGOL 60MCP
PL/IIBM, SHARE1964년ALGOL, FORTRAN, 일부 COBOLMultics
PL360니클라우스 비르트1968년ALGOL 60ALGOL W
PL/SIBM1960년대PL/IOS/360 및 후속 버전
파스칼니클라우스 비르트1970년ALGOL W아폴로 컴퓨터 Aegis, 애플 MacApp, UCSD p-System
BLISS카네기 멜론 대학교1970년ALGOL-PL/I[5][18]VMS (일부)
LSDR. Daniel Bergeron 외 (브라운 대학교)1971년PL/I
C데니스 리치1972년BCPL, B대부분의 운영 체제 커널, 유닉스 계열 시스템 포함
SPL휴렛 팩커드1972년ALGOL 60, ESPOLHP 3000 시스템 소프트웨어, MPE 포함
NEWP버로스1970년대ESPOL, ALGOLMCP
PL.8IBM1970년대PL/I컴파일러 개발, AIX, IBM 메인프레임 펌웨어
PL-6허니웰1970년대PL/ICP-6
SYMPLCDC1970년대JOVIALNOS 하위 시스템, 대부분의 컴파일러, FSE 편집기
C++비야네 스트롭스트루프1979년C, SimulaGUI 애플리케이션 (Qt, Windows 등), 게임 (언리얼 엔진)[19]
S3ICL1980년대ALGOL 68ICL VME
에이다장 익비아, S. 터커 태프트1983년ALGOL 68, 파스칼, C++, Eiffel군사,[6] 항공우주,[7] 대중 교통,[8] 고도의 무결성을 요구하는 계산, 운영 체제 커널,[9][10][11] 임베디드 시스템, 컴파일러, 게임, 시뮬레이션, 큐브위성, 항공 교통 관제, 항공 전자 공학
D디지털 마스2001년C++https://dlang.org/orgs-using-d.html 여러 분야
안드레아스 럼프2008년파이썬, 에이다, Lisp, 오베론, C++, Modula-3, Object PascalOS 커널, 컴파일러, 게임
Go구글2009년오베론, C, 파스칼쿠버네티스, 도커
러스트모질라 리서치[13][20]2010년C++, Haskell, Erlang, 루비Servo 레이아웃 엔진, Redox OS, 리눅스 커널
스위프트애플2014년C, Objective-C, D, RustmacOS, iOS, watchOS, 및 tvOS 앱 개발
Zig앤드류 켈리2016C, C++, LLVM IR, Go, Rust
Mojo모듈러사[12]2023C, C++, 파이썬, Rust, Swift, Zig


참조

[1] 간행물 Machine oriented higher level languages International Federation for Information Processing 1973-08-27
[2] 논문 Brief Survey of Languages Used for Systems Implementation 1971-10
[3] 논문 PL360, A Programming Language for the 360 Computers 1968
[4] 논문 The LRLTRAN Compiler 1968
[5] 논문 BLISS: A Language for Systems Programming 1971-12
[6] 웹사이트 Case Study, BAE Systems Eurofighter Typhoon https://www.adacore.[...]
[7] 웹사이트 What programming languages are used for equipment onboard aircraft? https://aviation.sta[...]
[8] 웹사이트 TGVweb - the TGV Signaling System http://www.railfaneu[...]
[9] 웹사이트 Ironclad https://ironclad.non[...]
[10] 웹사이트 M2OS. RTOS with simple tasking support for small microcontrollers https://m2os.unican.[...]
[11] 웹사이트 Jgrivera67/HiRTOS https://github.com/j[...]
[12] 웹사이트 Modular Inc. https://www.modular.[...] 2024-03-25
[13] 웹사이트 Mozilla Research Projects https://www.mozilla.[...]
[14] 논문 Brief Survey of Languages Used for Systems Implementation http://dl.acm.org/ci[...] 1971-10
[15] 서적 PL360, A Programming Language for the 360 Computers
[16] 서적 The LRLTRAN Compiler
[17] 서적 Machine oriented higher level languages: proceedings of the IFIP Working Conference on Machine Oriented Higher Level Languages, Trondheim, Norway, August 27–31, 1973 International Federation for Information Processing 1974
[18] 논문 BLISS: A Language for Systems Programming http://dl.acm.org/ci[...] 2014-01-11
[19] 웹사이트 C++ Applications http://www.stroustru[...] 2018-10-02
[20] 웹사이트 Mozilla Research https://www.mozilla.[...] 2020-06-02
[21] 논문 Brief Survey of Languages Used for Systems Implementation http://dl.acm.org/ci[...] 1971-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com