나는 최근 AI와 함께 코딩을 하면서 Go 언어의 유용함을 새삼 느끼고 있다. 이른바 '바이브 코딩’을 할 때 정적 언어가 주는 안정감이 동적 언어보다 훨씬 뛰어나다는 생각이다. 현재 나는 타입스크립트, Rust, 그리고 Go를 주로 사용하고 있는데, 이 언어들은 AI가 코드를 생성할 때 발생할 수 있는 여러 실수를 컴파일 단계에서 차단해주는 훌륭한 도구가 된다.
Read more
나는 최근 AI와 함께 코딩을 하면서 Go 언어의 유용함을 새삼 느끼고 있다. 이른바 '바이브 코딩’을 할 때 정적 언어가 주는 안정감이 동적 언어보다 훨씬 뛰어나다는 생각이다. 현재 나는 타입스크립트, Rust, 그리고 Go를 주로 사용하고 있는데, 이 언어들은 AI가 코드를 생성할 때 발생할 수 있는 여러 실수를 컴파일 단계에서 차단해주는 훌륭한 도구가 된다.
최근 개발자 커뮤니티에서 LLM이 생성하는 코드의 품질을 두고 매우 흥미로운 논쟁이 벌어졌다. '너의 LLM은 정확한 코드가 아니라 그럴듯한 코드를 쓴다’는 제목의 글이 큰 화제가 되었는데, 한 개발자가 Rust로 SQLite를 처음부터 끝까지 재구현한 프로젝트를 분석한 내용이다. 겉으로 보기에는 수십만 줄의 방대한 코드가 완벽한 구조를 갖추고 테스트를 통과하며 실제 SQLite 파일 포맷을 읽고 쓰는 것처럼 보이지만, 성능 면에서는 원본 SQLite보다 2만 배나 느리다는 충격적인 결과가 나왔다. 이는 LLM이 아키텍처나 모듈의 이름 같은 외형은 그럴듯하게 흉내 내지만, 성능을 결정짓는 핵심적인 최적화 로직이나 불변식은 놓치기 쉽다는 점을 시사한다.