Home Forums Job & Work Life cs석사에서 compile을 공부한다는게 구체적으로 뭘 한다는 건가요..? 실제 현업에서 하게되는 일은 뭘까요? cs석사에서 compile을 공부한다는게 구체적으로 뭘 한다는 건가요..? 실제 현업에서 하게되는 일은 뭘까요? Name * Password * Email 간략히 컴파일러 백엔드에서 무슨 연구를 하는지 풀어서 말씀드리죠. 그렇게 다 연구가 saturate 되어서 할게 없고, 수학천재들만 하고 그런 분야는 전혀 아닙니다. 어떤 일을 하고자 하는 시스템 요구사항이 있다고 하면, 대부분의 소프트웨어 전공자들은, 어떠한 프로그래밍 언어를 사용해서, 그 요구사항을 잘 구현하는 프로그램을 작성하는데에서 끝나지요. 그 프로그램은 컴파일러를 통해 어떤 아키텍쳐를 가진 시스템 위에서 돌아갈 수 있도록 변환되어 실행되게 되구요. 여기에 OS가 함께 돌아가기도 하고, 아니기도 하지요. 지난 십수년 이상 cs, ee, 더 나아가서 재료공학, 화학/기계 공학등 컴퓨터를 다루는 거의 모든 연구의 최종 목표는 대~체로 이 중 하나입니다: 성능 향상 (프로그램 수행시간 단축), 단가 절감 (간략한 코드, 또는 간단하고 싼 하드웨어), 온도 저하, 배터리 성능 향상, 내구성 향상 (수명 연장 또는 에러 저항성 향상) 등등. 여기서 아키텍쳐 연구와 컴파일러 백엔드는 밀접히 연관되어 있는데요. 주로 아키텍쳐를 조금 바꾸거나, 새로운 기능을 하드웨어에 집어넣어서, 배터리가 좀 더 오래가면서도 핸드폰은덜 뜨거워지고, 성능은 더 향상되는 방법을 찾았다고 합시다. 이런 연구는 cs, ce, ee에서 모두 할 수 있구요. 문제는 그 기능을 소프트웨어가 얼마나 잘 사용하느냐이지요. 프로그래머들이 프로그램 짜기도 바쁜데, 언제 발전하는 하드웨어 스펙까지 다 공부하고 따로 최적화를 하겠습니까. 그래서 컴파일러가 중간에서 알아서 최적화를 하는거에요. 아~ 이런 일을 하고자 하는 프로그램이로구나 (이건 대체로 프론트엔드가 해주는 일이고요) 아~ 프로세서가 이런 구조를 가지고 있네? 그럼 이 기능을 잘 사용해서 변환해보자 (이건 백엔드지요). 이렇게요. 컴파일러 프론트 엔드는 대체로 꽤 수학적이거나 이론적인 반면, 백엔드는 좀 intuitive하고 아이디어 중심인 경우도 많습니다. 보통 우리가 쓰는 하드웨어는 x86, x86_64등의 인스트럭션 셋을 가진 인텔 또는 amd의 cpu들이거나, 아니면 arm 인스트럭션 셋을 사용하는 모바일 SoC들 정도겠지요? 이런 제품들만 보면 아키텍쳐의 큰 변화는 거의 없겠지만, 임베디드 환경의 마이크로프로세서나, 수퍼컴퓨터 환경의 프로세서들을 보면, 상당히 다양한 시도들이 가능하고, 컴파일러가 해줄 부분이 꽤 많다고 보시면 되요. 학교에서의 연구도 주로 이런 부분입니다...만, 현실은 이렇습니다. 칩 만드는 회사는 이런이런 기능을 사용하면 xx% 빨라져! 하고 제품 발표를 하지만, 정작 그 기능을 잘 사용하는 것은 사용자 몫이지요. 그 기능을 잘 사용하게끔 회사가 도와줄 의무는 없고, 위에 쓴 것 같은 역할을 컴파일러가 기가 막히게 잘 하게 만드는데는 시간과 노력이 많이 들기에, 작은 마이크로프로세서 만드는 회사들에서 컴파일러 개발에 큰 노력을 들일 역량이 많지 않습니다. 컴파일러 개발자들을 많이 고용할 만한 큰 회사에서는 칩의 변화나, 컴파일러의 성숙도 모두 어느 정도 saturate되어 있는게 맞구요. 아키텍쳐를 떼어내고, 컴파일러만 보면 프론트엔드 연구에서는, 요즘 주로 소스코드 정적 분석을 해서 보안 취약점을 미리 파악하거나, 버그를 미리 발견해내는 일 등을 많이 하는 것 같네요. 실제로 돌려보기도 전에 문제를 파악할 수 있으니, 당연히 굉장히 의미 있고 가치가 있는 일이고, 사람도 꽤 뽑습니다만, 어렵고 한계가 있고, 좀 더 이론적/수학적 이고, 원글님이 생각하시는 분야와는 많이 다른 쪽입니다. 컴퓨터가 어떻게 동작하는지 abstraction level 을 전체적으로 이해하시면 큰 도움이 될 겁니다. 요구사항에서부터, 프로그램, os, 컴파일러, 아키텍쳐, rtl, 로직, 회로, 배선, 배치, 반도체, 물질 등 쭉 내려가는 추상화 단계를 이해하고 있으면 여러모로 큰 도움이 될 겁니다. I agree to the terms of service Comment