상세 컨텐츠

본문 제목

로우레벨,하이레벨?저급언어,고급언어?대체 기준이 뭔가요?

노베이스도 이해하는 공학이야기

by Tabris4547 2022. 1. 26. 22:25

본문

728x90

제품이나 SW을 개발할 때

어느 단계에서 개발을 하는지에 따라서

하는 일이 조금씩 차이가 생깁니다.

종종 사람들 중에

'나 로우레벨쪽 한다'

'나는 하이레벨하는데?'

라고 말하는 사람들 보신 적 있나요?

아마 SW쪽 전공자들 중에서

이런 말을 하시는 분들을 종종 보실 겁니다.

그런데 저런 말만 딱 들어보면

로우레벨?저급언어?

쉬운거 아닌가?

하이레벨?고급언어?

엄청 어려운 건가?

이렇게 착각하실 수 있습니다.

이 로우레벨과 하이레벨.

대체 어떤 차이로 나누는지

차근차근 설명 드리겠습니다.

로우레벨과 하이레벨의 차이는

로봇에 가깝냐

사람의 가깝냐의 차이입니다.

로봇에 가까울수록 저급언어고

사람에 가까울 수록 고급언어입니다.

시기적으로 보면

저급언어가 먼저 등장했고

그 다음에 차차 고급언어들이 등장했습니다.

쉽게 스토리를 생각해보면

처음에는 기계를 돌려야하니

기계랑 소통해야했습니다.

그런데 그 당시에는

OS고 SW고 제대로 갖춰지지 않았습니다.

그러니 우선 기계랑 1:1로 소통해야하니

그에 맞는 기계어가 생겨났습니다.

그러다가 점차 발전에 발전을 거듭하면서

이제는 다른 사람들.

심지어는 비 전문가들도

기계를 써야하는 시기로 접어들었습니다.

그러니 그 사람들도 이해하기 쉽게

고급언어가 점차 발전해왔습니다.

대략적으로 단계를 그려봤습니다.

일반적으로

HW쪽이 Low level

SW쪽이 High level입니다.

그리고 그 안에서도

상대적인 레벨차이가 존재합니다.

저 그림은 제가 이해를 쉽게 위해

대략적으로 나타냈으니

참고용으로 부탁드립니다.

대게 Low level로 갈수록

지식이 많이 요구되는 편입니다.

어려운 수학이나 공학지식은 필수적이죠.

High level은 저런 지식이 '상대적'으로는

덜 요구가 되지만

대신에 그걸 활용하는 창의력이 있어야하죠.

모든지 일장일단이니

뭐가 좋고 나쁘다

이렇게 말하기보다는

각자의 역할이 다르다고 보시면 됩니다.

가장 low level인

원자의 단계.

그림만봐도 머리가 아프시다고요?

원자가 어떻게 구성되어있고

전자는 어떤 성질이며...

자~~여기까지!

이 원자단계급은

정말로 지식이 많이 요구되는 단계입니다.

그 다음 단계는 소자입니다.

원자단계에서

이런 이런 일들이 생기는 구나

정도의 지식을 바탕으로

소자를 다루는 영역입니다.

원자단계에서는

'원자가 왜 이렇게 움직일까?

어떻게하면 다르게 움직일 수 있을까?

만약 이렇게하면 어떻게 움직일까?'

등을 연구한다면

소자단계에서는

'원자는 이렇게 움직이는 성질이 있으니

소자로는 이를 활용해서 어떻게 만들까?'

하는 부분을 연구합니다.

다음단계는 회로에 대한 부분.

마찬가지로 소자에 대한

어느정도의 지식을 바탕으로

회로를 구성합니다.

그 윗단계는 신호.

사실상 요즘에는

회로랑 거의 붙어있어서

경계가 희미해지고 있습니다.

신호는 회로도를 보고

결과값을 추출한 다음

왜 저런 신호가 나왔는지

그래서 저런 신호를 어떻게 써먹을지

등을 다루는 단계입니다.

그 다음 단계인 기계어.

친절(?)하게도

기계어를 이해하기 위해서는

디지털 신호만 이해하면 됩니다.

(물론 상위단계에서는

아날로그 신호도 이해해야한다고 들었지만

기본적인 단계에서는 디지털만 알아도 됩니다.)

디지털 단계의 신호는

0 1 로 구성되어있습니다.

그래서 기계가 언제 0 1을 보내는지 분석해서

이를 코드화시키는 단계라고 보시면 됩니다.

물론 이 단계에서 작업을 할 때

위에서 보신

원자부터 신호처리까지의

모든 과정을 이해한다면 더 편하겠죠?

하지만 현실적으로 그게 어렵기 때문에

0 1의 디지털신호 정도를 먼저 이해하고 작업하는 편입니다.

다음은 C언어입니다.

프로그래밍을 대학에서 전공하신 분들이라면

한 번쯤 배워보셨을 언어입니다.

과거에는 프로그래밍 입문하면

무조건 C로 하던 시절도 있었다고 하네요.

C는 0 1 로 이루어진 기계를 보완하여

사람도 어느정도 이해하기 쉽게 만들어졌습니다.

그리고 기계랑 친화적인 부분이

메모리를 건들 수 있는

'포인터'라는 것이 있습니다.

이 포인터가 있어서

'C언어는 파이썬 자바보다

C배가 어렵다'

라는 우스게 소리가 생겨났죠.

C배우실 때 메모리 잘못 참조했다가

프로그램이 자꾸 죽어나가고

심지어 왜 죽는지도 모를 때

키보드로 샷건 친 분들, 공감가시나요?

가장 상위단계는

요즘 핫한 언어

파이썬 자바가 있는 단계입니다.

이 단계를 고급언어단계로

C보다 훨씬 이해도 쉽고 다루기도 쉽습니다.

C도 기계어에 비하면

상당히 사람이 이해하기 좋지만

파이썬은 거의 일상 문법을 그대로 가져온 수준.

이런 특징이 있어서

로우레벨이 지식이 많이 요구되고

하이레벨이 창의력이 많이 요구되는

그런 면이 있습니다.

당연히 원자니 소자니 회로니,

기계어를 다루더라도 기계 특성을 이해해야하니

당연히 해당 영역의 지식을 많이 알아야합니다.

반면 고급언어 쪽은 이런 지식을

알면 물론 좋겠지만

모른다고 해도 크게 문제되지 않습니다.

여러분들이 스마트폰 어플 만들 때

'난 스마트폰 회로까지 분석해서

어플을 만들어보겠어!'

라고 생각하여 최적화된 어플을 만들어도

결국에는 사람들이 써야 의미가 있습니다.

즉, 고급언어 쪽으로 갈수록

아이디어 싸움이 심해집니다.

그래서 저급언어쪽은

지식때문에 진입장벽이 높지만

그만큼 경쟁자들이 들어가기 쉽지 않아서

한번 잘 배우면 오래 살아남을 수 있습니다.

반면 고급언어쪽은

요구지식이 상대적으로 적어

진입장벽은 낮은 편이지만

그렇기 때문에 아이디어 싸움이 치열하다

이런 차이가 있습니다.

 

로우레벨 하이레벨

어디라고 결코 만만한 부분이 없습니다.

본인이 원하는 영역

본인이 잘하는 영역

잘 선택해서 준비하시길 응원합니다^^

728x90

관련글 더보기

댓글 영역