저수준 언어란 사람보다 기계에 좀 더 친화적이라는 말로 해석될 수 있다. 이는 프로그래밍언어와 컴파일러를 먼저 알 필요가 있다.
프로그래밍 언어는 컴퓨터와 대화할 수 있게 해주는 도구다. 하지만 프로그래밍 언어로는 컴퓨터와 대화를 할 수 없다. 한국인과 미국인이 있는데 각자 자기의 언어만 사용할 수 있다고 가정하면, 그 중간에 통역사가 필요하다. 그것을 우리는 특성에따라 컴파일러
혹은 인터프리터
라고 한다.
기계는 단순하다. 그래서 전압이 있다, 없다만 파악할 수 있고 이는 0과 1로 표현될 수 있다. 컴파일러와 인터프리터는 우리가 알아볼 수 있는 언어로 작성한 것을 기계가 읽을 수 있는 기계어로 번역한다. 이를 컴파일
이라 한다.
컴파일러는 단순히 기계어로 번역해주는 작업만 하는것은 아니지만, 나머지 내용은 넘어가도록 하자.
프로그래밍 언어는 수백가지의 종류와 각각의 용도가 있다. 기억나는 용도는 다음과 같다.
여기서는 앞의 2개를, 시스템 프로그래밍
과 임베디드 시스템
을 개발하는 C/C++에 대해 주로 다룬다.
다시 본론으로 돌아가서, 저수준 언어는 조금 더 기계어와 가깝다는 뜻으로 해석이 된다. 즉 기계의 특정 부분을 조작하여 정보를 바꾸거나 연산을 시키는 등 기계적으로 좀 더 세부적인 컨트롤이 가능하다는 말이다. 그리고 이것이 가능한 언어가 대표적으로 기계어로 컴파일하는 C
, C++
, JVM위에서 바이트코드로 변환하여 실행하는 Java
정도이다.
C는 UNIX를 작성하기 위해 데니스 리치가 고안한 언어이다. 이는 아직까지, 특히 시스템이나 임베디드 프로그래밍에 널리 사용된다. 그래서 인터넷 레퍼런스와 책이 굉장히 많다. 전체 개발자 중 시스템 프로그래밍이나 임베디드를 사용하는 사람의 수가 적지만 오랫동안 쌓여온 지식이 존재한다.
하지만 때로는 루즈한 언어이기도 하다. 다음의 이유 때문이다.
아직까지 하드웨어 관련 고수준 언어는 C와 C++을 대적할 수 있는 언어가 많지 않다. 메모리 이슈를 잘 처리한다면 C와 C++만큼 퍼포먼스가 좋은 언어는 없다고들 말한다. 방대한 커뮤니티와 레퍼런스, 또한 C++의 경우 C++20에서 비동기 프로그래밍 지원, 컴파일 속도 향상을 위한 소스파일 모듈화, 구조화된 바인딩 등 모던 프로그래밍에서 중요한 요소들을 계속해서 추가하고있다.그래서 더 복잡해지고 있다.
웹 브라우저 파이어폭스를 개발하는 모질라 재단은 2015년에 Rust
라는 언어를 정식으로 릴리즈했다.(발표는 2010년에 했다.) 다음과 같은 특징을 갖는다.
소유권
이라는 개념을 통해 구현된다. Rust Cpython
을 사용한 예이다. https://developers.redhat.com/blog/2017/11/16/speed-python-using-rust/ 를 참조하면 된다.Cargo
라고 한다. 즉 커뮤니티 및 프레임워크, 라이브러리가 커지는 속도가 빠르다.러스트는 아래의 큼직한 프로젝트에서 사용된다.
Cloudflare(CDN서비스와 DNS서비스를 제공하는 세계적 기업), AWS Lambda, npm(node package manager), libra(페이스북의 암호화폐), Servo(모질라의 병렬 웹프라우저 엔진. 삼성과 통합개발 중) ... 참고로 Cloudflare와 npm은
C를 Rust로 대체했다.
그리고 memory safety로 인해 이러한 곳에서 사용될 수 있다. 즉 절대로 실패해선 안되는 곳들에서 사용된다.
과학계산, 금융거래, 자동차 에어백이나 비행기 산소호흡기같은 안전관련 등...
단점도 존재한다.
C/C++은 검증된 언어이다. 다른언어들의 장점을 흡수하여 명세서가 추가되고 있고, 모던 프로그래밍을 위한 C++의 노력도 찾아볼 수 있다.단 C lang 5의 것을 지금 추가할 뿐이다. 무엇보다도 여태까지 사용해왔고 앞으로도 사용될 것이라는 점에서 믿을만하다.
하지만 Rust는 모던 개발스트림에서 태어났고, 개발되고있다. 적지 않은 프로젝트, memory safety, 빌드타임, 동시성과 병렬성, 그리고 패키지 매니저에 강력한 퍼포먼스까지 갖추었다. 개발자 커뮤니티인 스택 오버플로우
에서 파이썬과 자바스크립트를 제치고 83.5퍼센트의로 "개발자에게 가장 사랑받는 언어" 1위를 차지, 구글 트렌드나 각종 랭킹 사이트에서 수치가 증가하고 있는 점을 고려하면 미래가 밝은 언어라고 할 수 있다.
https://www.youtube.com/watch?v=S-01KjUJ3_Q
https://www.reddit.com/r/rust/comments/bya8k6/programming_with_rust_vs_c_c/