회사에서 그룹장님과 개발자 기본기에 대해 대화를 나누었고,
그룹장님이 ‘시스템 프로그래밍’을 공부해보라 조언해주셨습니다.
그래서! ‘시스템 프로그래밍’이 무엇이기에 그런 말씀을 하신건지 알아보았습니다!!!!!!!
우리의 친긔 Google에 System programming을 치니까 역시나 Wikipedia가 뜨길래 제일 먼저 확인해보았습니다.
- 시스템 프로그래밍은 컴퓨터 시스템 소프트웨어를 프로그래밍하는 것이다.
- 사용자에세 직접적인 서비스를 제공하는 소프트웨어를 만드는 애플리케이션 프로그래밍과 달리,
다른 소프트웨어 서비스를 제공하거나, 성능이 제한되거나 혹은 둘 다인 소프트웨어를 만드는 것이다.
음 .. 시스템 프로그래밍은 ‘시스템 소프트웨어’ 를 만드는 것이라는 것은 알겠는데, 아직 이해가 부족해 더 찾아보았습니다.
시스템 소프트웨어
- 크게 Windows, UNIX와 같은 운영체제가 있으며, 하드웨어를 쉽게 사용할 수 있도록 도와주는 프로그램이다.
- OS를 포함해, Linker, Compiler, Text Editor, Debugger 등도 포함된다.
제가 이해한 바는 이렇습니다.
우리는 커널을 직접 호출하거나, 메모리를 직접 할당하지 않습니다.
커널은 추상화가 많이 되어있지 않는 저수준의 인터페이스이므로, 직접 사용하기엔 다소 어려움이 있습니다.
메모리나 CPU 역시 마찬가지죠.
이 모든것을 보다 쉽게 사용할 수 있도록 추상화한 인터페이스를 제공해주는 것이 시스템 프로그램이고, 그것을 만드는게 시스템 프로그래밍이다 !!!!

시스템 프로그래밍에 대한 공부를 통해 얻은 결과는 이렇습니다.
우리는 컴퓨터를 사용할 때 프로세스, 스레드, 메모리와 같은 것들을 몰라도 충분히 사용할 수 있습니다.
컴퓨터가 추상화를 통해 복잡하고 어려운 것들을 숨기고, 단순한 기능으로 제공해주기 때문이죠.
이처럼 실제론 사용하기 어려운 것들도 추상화를 통하면 아주 쉽게 사용할 수 있게됩니다.
근데 쉬운사용 이면에는 원리를 정확히 알지 못해도 된다는 게 있지 않을까요?
시스템 프로그래밍을 하기 위해선 커널과 하드웨어에 대한 이해가 필요합니다.
그러다보면 자연스레 더 효율적인 프로그래밍을 하게되고, 알 수 없던 에러들의 원인을 알게 될 수도 있을 것 같아요.
개념을 공부한 후에 생각해보니
내가 만든 소프트웨어가 하드웨어랑 어떻게 통신하는지 정확한 원리조차 모른체 프로그래밍을 하고있다는 게 참 아이러니하게 느껴졌습니다.
그러면서 성능을 높이고 좋은 소프트웨어를 만들고 싶다는 마음을 갖고있던 것두요.
그룹장님의 말씀이 이제야 온전히 이해가 됐고, 차근차근 학습해보기로 하였습니다.
시스템 프로그래밍을 통해 새롭게 알게될 것들이 너무도 많을 것 같아 기대가 됩니다 ㅎ,,ㅎ
아직은 얕게 개념만 파보았기에, 시스템 프로그래밍에 관해 함께 나누고 싶거나 기록하고 싶은 주제들이 생기면 하나씩 추가해보겠습니다.
단순 코더가 되지 않기위해 ㅃㅇㅌ .. ~!
ps. 학습중이라 정확하지 않은 정보가 있을 수 있습니다 !
알려주시면 참 감사하겠습니당 ~~! 🙇♀️🙇♀️
좋은 글 잘 읽었습니다! 단순 코더에서 벗어나기 위해선 필수가 아닐까 생각이 드네요. 혹시 공부 시작하신 내용이 있으시다면 추천해 주실 서적이나 강의가 있으신가요?