AI 보조 코딩의 시대에도 프로그래밍 언어의 핵심 개념이 왜 여전히 중요한지, 그리고 언어가 담고 있는 아이디어가 문제 해결과 시스템 설계에 어떤 차이를 만드는지 살펴본다.
AI 보조 코딩의 시대에는 프로그래밍 언어에 대한 깊은 지식이 이제는 쓸모없어졌다고 느끼기 쉽습니다. AI가 요구만 하면 어떤 언어로든 코드를 생성할 수 있는데, 왜 언어의 미묘한 부분을 익히는 데 여러 해를 써야 할까요? 저는 최근 동료 개발자의 질문에서 이런 생각을 접했습니다:
프로그래밍 언어 같은 것을 신경 쓰는 일은 사실 굉장히 쓸모없다고 느껴집니다. … 제가 너무 극단적인 걸까요?
저는 그 우려를 이해하지만, 거기에는 근본적인 무언가가 빠져 있다고 생각합니다. 프로그래밍 언어의 가치는 단지 문법이나 도구에서 나오는 것이 아니라, 그 언어가 구현하고 있는 아이디어에서 나옵니다. 사고를 구조화하는 방법, 복잡성을 관리하는 방법, 문제를 해결하는 방법에 대한 이러한 아이디어들은 누가, 혹은 무엇이 코드를 작성하든 여전히 핵심적입니다.
다음은 프로그래밍 언어에서 얻을 수 있는 깊은 아이디어에 대한 제 예시 목록입니다:
이 개념들 각각은 계산에 대해 생각하는 서로 다른 방식을 나타냅니다. 이것들을 배우면 문제 해결을 위한 정신적 도구 상자가 확장됩니다. borrow checker를 이해하면 어디서든 자원 관리에 대해 다르게 생각하게 됩니다. algebraic data types를 이해하면 도메인을 더 정밀하게 모델링하게 됩니다. first-class functions를 내면화하면 다른 사람들이 놓치는 추상화의 기회를 보게 됩니다.
이러한 아이디어들은 특정 언어나 도구를 초월합니다. 이것들은 AI가 생성한 코드를 평가하고, 적절한 추상화를 선택하며, 성장하면서도 유지보수 가능성을 잃지 않는 시스템을 설계하게 해 주는 개념적 토대입니다. AI 시대에는 이러한 개념에 대한 이해가 덜 중요해지는 것이 아니라, 오히려 더 중요해집니다. 진정한 엔지니어링을 하는 사람과 그저 프롬프트만 입력하는 사람을 가르는 것이 바로 이것들이기 때문입니다.

Figure 1: 1972년 7월 6일 베트남 꽝찌시 남쪽의 마을 La Vang에 있는 파괴된 가톨릭 교회에서 기도하는 한 남자