Ha Junsoo (河 俊 秀)

프로그래밍 언어와 커뮤니티

2016-11-23

개발자들의 수준, 라이브러리 생태계의 규모, 그리고 개발 프로세스 고도화 수준은 해당 언어 커뮤니티의 수준과 성숙도를 나타내는 지표다. 높은 수준과 성숙한 커뮤니티를 가진 언어는 그렇지 않은 언어에 비해 조잡한 문제해결이 현저히 적다. 여러가지 원인이 있겠으나, 그 중 가장 큰 것은 아마 구성원들 각자가 스스로 겪었던 문제들을 이미 훌륭한 방식으로 해결해 놓았기 때문일 것이다.

간단한 예를 들어보자. PHP의 경우 라이브러리 생태계 규모는 충분하지만, 개발자들의 수준이 낮기 때문에 좋은 커뮤니티를 가지고 있다고 할 수 없다. 그래서인지 다른 언어였다면 레딧이나 해커뉴스에서 수 차례 조롱당하고 묻혔을 조악한 문제해결 방식들이 PHP에선 판을 친다. 훌륭한 방식으로 해결된 문제 레퍼런스가 충분하지 않기 때문이다.

반대로 Haskell은 똑똑한 개발자들이 커뮤니티의 주류를 이룬다. 그리고 그들이 작성하는 라이브러리는 매번 놀라운 수준의 퀄리티를 뽐낸다. 그러나 프로덕션 환경에서 사용하기엔 그 규모가 부족하기 때문에 성숙한 커뮤니티를 가지고 있다고 할 수 없다. stack이 도입되기 이전에 cabal을 사용하며 겪던 난감한 의존성 관리방식도 커뮤니티의 규모부족에서 기인한다. 제 아무리 똑똑한 개발자들이라도 그 수가 적으면 많은 문제들을 해결할 수 없다.

반면에 Python이나 JavaScript의 경우 평균적인 개발자들의 수준이 Haskell 개발자들만큼 높진 않지만, PHP 개발자들만큼 허접하진 않다. 라이브러리 생태계의 규모는 Github 통계자료를 통해 알 수 있듯이 다른 언어들에 비해 압도적이다. babel과 webpack의 HMR을 위시한 프론트엔드 개발 프로세스 또한 어떤 언어보다도 고도화 되어있다. 위 기준에 따르면 Python과 JavaScript는 성숙한 커뮤니티를 가지고 있는 것이다. 그래서인지 두 언어는 다른 언어들에 비해 조잡한 문제해결이 눈에 띄게 적다.