일단, 요즘 대세는 한 개 프로젝트를 한 개 언어를 주력으로 삼는 경향도 예전에 비해 줄었을 뿐더러, 주력 언어가 있다 해도 예전에 비해서 그 비율이 낮다.


한때 C++이 프로그래밍 언어의 답이던 시절이 있었다(사실 지금도 개발자들이 어떤 언어가 좋네 마네 하는 경향도 이 당시 상황의 유산이라고 보는 편이다). 하지만 지금 와서 '어떤 프로그래밍 언어가 정답이에요?' 라고 물으면 미친 사람 취급 받을거라고 장담할 수 있다.


지금에 와서는 용도에 맞게 상황별로 언어를 잘 골라쓰는 사람이 가장 뛰어나다고 생각한다. Kotlin은 많은 경우에 좋은 언어다. 하지만 웹 CMS를 개발해야 하는데 코틀린으로 만들자고 하는 사람은 미친 사람이라고 장담할 수 있다. 많은 이들에게 혐오를 받지만 이런 경우에는 PHP가 정말 제격이다.


운영체제 커널을 개발하는데 JavaScript를 들이대는 사람도 마찬가지로 정상은 아니다. 반대로 웹에서 DOM 트리 몇 개 건드리면 되는데 그걸 C++과 웹 어셈블리를 들이대는 사람도 정상이 아니다.


지금에 와서 대부분의 언어는 자기 자리를 딱 찾았다고 보는 게 맞는 편이다. 인정해야 한다. 범용 프로그래밍 언어라는 개념은 점점 옅어지고 있다. 여전히 입문 개발자들은 한 개 언어로 최대한 많은 영역을 커버하길 기대하지만, 실상은 모든 유즈 케이스에 맞는 언어를 따로 배우는 게 나은 상황이다. 한때 세계를 호령하던 C/C++은 점차 트리플 A 타이틀 게임(이마저도 최근에는 점점 전통적 개발의 벽을 넘는 시도가 많이 나오고 있다), 운영체제 커널, 반응성 제약이 '매우' 까다로운 서버 등으로 용처가 줄었다. Python은 한때 C/C++이 최적화 된 영역을 제외한 거의 모든 영역에 쓰이는 언어였지만, 지금 와서는 기계 학습/데이터 처리에 한정해서 쓰이는 경향이 강하다.


과거의 언어들이 그렇다고 쉽게 사라질까? 그 또한 그렇지 않다고 본다. 많은 사람들이 C++/C를 Rust로 대체해야 한다고 주장하지만(그리고 그러길 정말 바라지만), 아직 경로 의존성, 레거시 코드, 과한 복잡성 등의 이유로 운영체제 커널, 펌웨어, 임베디드 환경 등에서 Rust로 프로젝트를 마이그레이션 하기는 힘든 상황이다. Java의 상황별 대체제가 많지만, Java로 짜여진 모든 소스를 대규모 환경이라고 무작정 Scala로 이전하거나, Kotlin으로 이전하기도 쉽지 않다(여기에는 개발 뿐 아니라 상업적인 이유도 포함된다).


그럼 신규 언어라고 회사에서 사용하는 것이 무조건 잘못된 것일까? 그것도 아니다. 대규모 I/O를 비동기적으로 처리할 때 Go 만한 것이 없다. 이게 주가 되는 응용에서 해당 부분을 C로 개발하는 것이 오히려 더 바보같을 떄가 상당히 많다. Rust는 아직은 실험적인 언어지만, 특별한 상황이 아니라면 병렬 처리가 중요할 때는 이만한 것이 없다(thread 기반 병렬 처리를 하다 보면 무슨 말인지 쉽게 깨달을 것이다).


제발, 도구에 인격을 투영하거나 '하나가 정답이고 다른 하나는 쓰레기다' 라는 흑백 논리에 안 빠졌으면 좋겠다. '아이폰 쓰는 사람은 감성에 미친 호구 병신이라서 안드로이드를 쓰는게 무조건 이성적이고 답이다' 라는 삼엽충이나, '안드로이드는 아이폰 카피고 모든 면에서 애플이 우월하기 때문에 안드로이드 쓰는 사람들은 삼성의 농간에 빠진 애국보수 병신들이다' 라고 주장하는 앱등이랑 다를 바가 없어보인다.


왜 이런 걸 썼냐고 하면

오늘도 회사 서버를 러스트로 만들어야 한다는 주장을 2시간동안 반박했기 때문이다.


우리 유즈케이스에 안 맞다고