본문 바로가기
미국 개발자/HOOTips

[HOO's Q&A] 어셈블리 언어는 시스템 프로그래밍할 때 자주 사용하는 언어인가요?

by Henry Cho 2021. 7. 11.
728x90

Q: 어셈블리 언어는 시스템 프로그래밍할 때 자주 사용하는 언어인가요?


최근 IoT를 통한 무선 인터넷이 연결된 초소형 기기들 사용이 증가하고 다양한 분야에서 사용이 되다 보니 어셈블리 언어가 인기가 많아진 건 사실이다. 일부 통계 분석 전문 웹사이트에 따르면, 어셈블리 언어가 작년 14위에서 8위로 랭킹 순위가 급상승을 한 것만 보아도 과거에 비해 많은 사람들이 사용하고 있다고 볼 수 있다. 하지만 사실 어셈블리 언어를 전문적으로 사용하는 분야가 아니라면 사용하지 않기 때문에 자주 사용한다고 말하기도 애매하다.

임베디드 시스템 분야나 디바이스 드라이버 관련 시스템 개발 또는 어셈블리 언어의 큰 특징인 실행속도, 프로그램 크기, 모든 HW 시스템 개발 등이 필요한 특정 프로그램의 최적화 과정에서는 어셈블리 언어를 사용하여 프로그램 개발이 이루어진다. 하지만 다른 분야를 제외하고 임베디드 시스템 쪽에서도 어셈블리 언어를 직접적으로 사용하여 개발하지 않고 C나 C++ 또는 최근에는 자바나 파이썬을 기반으로 프로그램 개발이 이루어지는 이유는 편리하기 때문이다. 어셈블리 언어나 기계어의 경우 개발자의 편의성을 중점적으로 고려해서 만들어진 언어가 아닌 기계에서 프로그램이 작동할 때의 기준에서 만들어진 언어이다. 반면에 High Level language의 경우에는 개발자의 효율적인 프로그래밍 개발을 위해 만들어진 언어이다 보니 결국 개발자 입장에서는 어셈블리 언어를 꼭 사용하지 않아도 된다면 굳이 사용할 필요가 없다는 것이다.

또한 점차적으로 다양한 프로그래밍 툴과 프로그래밍 언어의 발전은 Low Level Language와 High Level Language의 장단점을 모호하게 만들고 있다. 이러한 SW 발전과 동시에 HW도 발달되다보니 프로그래밍 언어에 맞춰서 프로그램 개발이 이루어지는 게 아니라 개발자 입장에서 프로그램 개발이 이루어질 수 있게 된 것이다. 물론 앞서 말한 바와 같이 기계 시스템을 직접적으로 다루는 분야에서는 어셈블리 언어를 사용한다. 다만 다른 언어들을 통해서 어셈블리 언어로 변환을 한다거나 바이트코드와 같이 소스코드와 기계어도 아닌 중간 단계 코드를 활용해서 프로그램 개발이 이루어지고 있다.

결과적으로 해당 질문을 준 Bro에게 필자가 하고 싶은 얘기는 4차 산업 시대에 따라 프로그래밍된 다양한 초소형 기계 시스템이 많은 분야에서 사용되다보니 어셈블리 언어 사용 비중이 증가한 건 사실이다. 다만 어셈블리 언어를 직접적으로 사용하는 것이 아니라 다른 언어를 통해서 어셈블리 언어를 사용할 수 있다. 기계 시스템을 다루는 프로그래밍 분야라면 어셈블리 언어에 대해서 잘 알아둬야 하지만 질문을 한 Bro처럼 웹/앱 프로그래머를 준비한다면 어셈블리 부분보다 웹/앱 프로그래밍 공부를 우선적으로 하는 것을 권장한다.

728x90

댓글