시스템 프로그래밍 언어
"오늘의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 60 | MCP |
PL/I | IBM, SHARE | 1964년 | ALGOL, FORTRAN, 일부 COBOL | Multics |
PL360 | 니클라우스 비르트 | 1968년 | ALGOL 60 | ALGOL W |
PL/S | IBM | 1960년대 | PL/I | OS/360 및 후속 버전 |
파스칼 | 니클라우스 비르트 | 1970년 | ALGOL W | 아폴로 컴퓨터 Aegis, 애플 MacApp, UCSD p-System |
BLISS | 카네기 멜론 대학교 | 1970년 | ALGOL-PL/I[5][18] | VMS (일부) |
LSD | R. Daniel Bergeron 외 (브라운 대학교) | 1971년 | PL/I | |
C | 데니스 리치 | 1972년 | BCPL, B | 대부분의 운영 체제 커널, 유닉스 계열 시스템 포함 |
SPL | 휴렛 팩커드 | 1972년 | ALGOL 60, ESPOL | HP 3000 시스템 소프트웨어, MPE 포함 |
NEWP | 버로스 | 1970년대 | ESPOL, ALGOL | MCP |
PL.8 | IBM | 1970년대 | PL/I | 컴파일러 개발, AIX, IBM 메인프레임 펌웨어 |
PL-6 | 허니웰 | 1970년대 | PL/I | CP-6 |
SYMPL | CDC | 1970년대 | JOVIAL | NOS 하위 시스템, 대부분의 컴파일러, FSE 편집기 |
C++ | 비야네 스트롭스트루프 | 1979년 | C, Simula | GUI 애플리케이션 (Qt, Windows 등), 게임 (언리얼 엔진)[19] |
S3 | ICL | 1980년대 | ALGOL 68 | ICL 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 Pascal | OS 커널, 컴파일러, 게임 |
Go | 구글 | 2009년 | 오베론, C, 파스칼 | 쿠버네티스, 도커 |
러스트 | 모질라 리서치[13][20] | 2010년 | C++, Haskell, Erlang, 루비 | Servo 레이아웃 엔진, Redox OS, 리눅스 커널 |
스위프트 | 애플 | 2014년 | C, Objective-C, D, Rust | macOS, iOS, watchOS, 및 tvOS 앱 개발 |
Zig | 앤드류 켈리 | 2016 | C, C++, LLVM IR, Go, Rust | |
Mojo | 모듈러사[12] | 2023 | C, 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