BLUE-NOTE 생각2011. 6. 23. 23:27

 
 개발자들에게는 너무나 익숙한 High-level과 Low-level이란 단어들이, 일반인이나 디자이너, 협력사, 혹은 몇몇 분들의 오해를 사는 경우가 있습니다.

 그것은- low라는 단어가 '낮은' 뿐만 아니라, '천한', '약한' 등의 뜻을 가지고 있기 때문이죠.. 심지어 많은 사람들이,
"그건 너무 low한데" 혹은 "기분이 참 low해" 등의 표현을 쓰기도 하지요. ㅋ


 하지만 아시다시피, 개발자들의 업무를 정의하는 'Low' 는 architecture상에서 verticallow 영역을 의미합니다.


Wikipedia 를 볼까요...


High- and low-level

High-level and low-level are terms used in classifying levels of description and goals in many fields where systems could be described from different perspectives.

A high-level description is one that describes "top-level" goals, overall systemic features, is more abstracted, and is typically more concerned with the system as a whole, and its goals.

A low-level description is one that describes individual components, detail rather than overview, rudimentary functions rather than complex overall ones, and is typically more concerned with individual components within the system and how they operate. Low and high level are relative; for example the graphics engine that drives a computer game and works at the level of entities in the game, is high level compared to the video subsystem DirectX that works on the level of renderable objects, which itself is high level compared to a vertex shader within that system.


 
 마침 여기서도 Graphics를 예로 들고 있군요. 컴퓨터 게임을 본다면 Direct X API로 구현하는 게임 렌더러 부분이 High-level, 그 아래 시스템 영역의 Vertex Shader를 비롯한 GPU 동작 영역까지 Low-level 로 이해할 수 있겠네요.
 
 다만, 그 영역의 구분이 모호한 것은 있습니다. 수직적 아키텍처에서 어느정도의 레이어까지를 대상으로 하는지와, 어떤 아키텍처를 가지고 있는지가, High 및 Low level 구분에 영향을 주게 됩니다.




위 그림은  ATLAS라는 Secure Hardware Abstraction Layer의 소개 그림입니다. Graphics의 예와는 다르지만 High-level과 Low-level을 껑둥 잘 잘라놨네요..




 자 이제 결론입니다. 왜 이 이야기를 시작하게 되었냐면...
Low-level field는 결코 저급한 개발 분야가 아니라는 것입니다. 모든 시스템은 H/W부터 S/W까지 모든 레이어가 다 같이 중요한거죠. 


 Graphics 적으로 말하자면,
편의성이 잘 녹아있는 UI, 뛰어난 알고리즘과 디자인을 가진 Application과 Render Engine,
그리고 그들이 호출하는 API를 관장하는 라이브러리 및 인터페이스들,
또 그들의 환경이 되고 통로가 되는 시스템 및 플랫폼과,
이들에게 다양한 연산과 가속을 지원하는 GPU 및 H/W IP, Device들 모두가  
환상적인 하모니를 이루어서 멋진 scene을 연출하는 것이죠.


 개인적으로 Steve Jobs의 혁신적인 창조는 철저하게 Low-level 개발자였던 그의 과거에서 시작되었다고 생각하는 바입니다...

 
 어린시절부터 전자공학 키트를 만지며 자란 Jobs는, 직접 개인용 컴퓨터를 만들어 팔기도 하였죠. (물론 워즈니악과 함께..) 이후에 Apple을 설립하고 많은 제품을 출시했고, 말년에는 픽사에서 감성적인 능력을 보여주었고, 최고 경영자로 Apple에 돌아왔을때는 우리가 익히 아는 엄청난 걸작들을 만들어 냈죠.

 H/W적인 흐름을 꿰뚫어 보는 그이기에, 자신의 감성과 상상력을 완벽한 구현체로 이끌어 낼 수 있었던 것이지요. 


 저 또한 Architect를 꿈꾸며 공부하는 한사람의 개발자로서, Low부터 High에 이르는 안목과 설계 능력을 가진 Graphics 전문가가 되기를 소망합니다.


Fin.










 
Posted by BLUE-NOTE