평소에 생각해둔 것들을 정리해본다.
1. C++, 병렬 프로그래밍 공부 -- 고난도의 스킬이 요구된다.
C++은 객체지향 언어로서 병렬 프로그래밍(CUDA, OpenCL)에서 많이 활용된다. 더이상 CPU만으로 성능 향상을 기대하기 어렵다는 것은 모두가 안다. 단순히 클럭을 높이는 것만으로는 발열과 전력을 잡을 수 없다. 이것이 전력 장벽이다. 이에 병렬 프로그래밍을 공부한다. ARM의 NEON, SIMD 기법이 될 수도 있고, CUDA를 공부할 수도 있을 것 같다. 하지만, 컴파일러의 성능이 막강하기 때문에, 얕게 배운다면 되려 마이너스가 될 것같다. 조금 나중의 일로 미뤄야 할 듯 싶다.
2.임베디드
나의 본질을 잊으면 안된다. 내가 다루었던 여러 하드웨어의 경험을 살리는 것이 좋다. AVR, STM32을 비롯한 하드웨어 제어를 공부해야겠다. -> 최근에는 조금 다른 생각이 든다. 오히려 시스템 프로그래밍 능력을 강화해야 할 것이다. 임베디드의 보드는 내가 가진 소프트웨어 능력을 하드웨어에 녹이는 것이다. 소프트웨어를 잘할 수 있을 때, 나의 전자공학 지식이 빛을 발할 것이다. 결국, 내가 목표하는 기업에 따라 방향이 다를 것 같다. 지금은 보드를 다룰 때 필요한 지식은 기본적인 것만 복습하고, 추후에 해야겠다. 현재의 나는 메모리반도체-SW나 SoC-SW와 관련된 일을 하고 싶다. 특히 그 중에서도 Architecture에 따른 발열, 전력관리를 SW단에서 하고 싶다. 이는 System level에서 소프트웨어와 반도체 지식, 회로 지식이 전반적으로 필요할 것으로 정말 재미있을 것 같다. 나는 서로 다른 과목에서 배운 것들이 연결 될 때, 배우는 재미를 느낀다. 누구나 그럴려나ㅎㅎ
3.리눅스 커널, 시스템 프로그래밍, 컴퓨터 구조
추가적으로 공부하면 좋을 것들. 내게 부족한 소프트웨어 능력을 향상 시킬 필요가 있다. 운영체제와 그 중 하나인 리눅스의 커널을 잘 이해하면 안드로이드를 비롯한 전반적인 컴퓨터 구조에 공부가 될 것 같다. 이러한 능력은 시스템 프로그래밍이 기본적으로 필요할 것이다.
good~~~:) 항상 응원합니다(●'◡'●)(●'◡'●)(●'◡'●)