아메리카노가 그렇게 맛있답니다 여러분

요즘 node.js, php7, python 등 이것저것 언어들을 뒤져보고 있다. 다름 아닌 개인적인 웹 프로젝트를 하나 하기 위해서인데, 이 키워드들을 찾으면서 알게 된 단어가 있다. 글루 언어라는 것인데 파이썬 특징에 대해 검색하다보니 자주 언급되는 단어다. 대략적인 의미가 아마 풀처럼 다른 언어와 잘 접착되는 언어를 지칭하는 것이 아닌가 싶다.


그런데 다른 언어와 잘 접착된다는 것이 무엇인가? 생각해보면 자바에서도 JNI를 쓰면 C 코드를 사용할 수 있고 php4j같이 php 코드도 자바에서 혼용되게끔 하는 등의 온갖 라이브러리로 대부분의 언어에서 다른 언어를 섞어쓰는 것이 가능하리라 믿고 있다. (자바의 라이브러리가 메이븐 저장소에 올라온 것만 2015년 12월 기준 약 9.5만개라고 하니 충분히 있을 것이다)


이곳저곳에서 글루 언어에 대해 찾아보고 공통적으로 서술하는 것이 무엇인지 살펴보니 유추한 의미와 크게 차이는 없었고 단지 그 기준점이 마치 '파이썬의 장점은 실용적인 라이브러리가 많다' 같은 문구와 똑같다고 생각됐다. 어차피 현존하는 대다수가 쓰는 언어(티오베 기준 10위 안에 드는 언어)는 적어도 라이브러리 부족으로 허덕이지 않으니까. 애매모호한 홍보 문구, 캐치 프레이즈의 느낌 밖에 볼 수 밖에 없었다.


그렇다고 파이썬이 글루 언어가 아니라는 것에 동의하는 것은 아니다. 파이썬은 분명히 글루 언어다. openGL, openCV, Flask(웹 프레임워크) 등의 검색어로 검색했을 때 없거나 몇 개 안 나오는 영문 밖에 없는 PHP와 달리 파이썬은 일단 첫 링크부터 한글로 반긴다.


글루 언어의 특징으로 문제 해결이 가능하고, 다른 소프트웨어의 컴포넌트들과 연결이 가능해야 함을 첫 번째로 들었다.

근데 이게 알고리즘 짤 수 있는 언어이고 open GL이 되며 http로 뭔가 할 수 있으면 기본적으로 통과되는 조건이다. (컴포넌트의 정의를 보니까 까다롭게 정의하면 조금 다를 수는 있는데, 그래도 각 언어가 가지는 특징에 의한 다소의 차이를 고려하면 용인할 수 있는 수준이다)


글루 언어로 코드를 작성하되, 그 코드가 컴포넌트에게 결정적인 행동에 영향을 미치지는 않게 해도 올바르게 작동함을 두 번째로 들었다. 이게 참 말이 이상하게 길어지고 두서가 없다고 느껴지는데, 요약하면 함수명, 리턴값, 그리고 필요하다면 쓰는 약간의 변수 외에 모든 것을 컴포넌트가 처리할 수 있는가를 묻는 것이다.


사실 글루 언어 특징에 빠르게 작성이 가능하다는 점도 있었지만 이 부분은 근거로 제시한 것이 다른 유틸리티들과 조화를 이루어 특정 프레임워크나 단일 언어로 짠 것보다도 빠르게 결과 제출이 가능하다는 점이었단 것에서 올바른 정의인가 고민하게 만든다. 좋은 풀은 칠했을 때 접합 부분이 단단하게 잘 붙으면 됐지, 빠르게 붙어야 하는 이유가 있을까? (물론 빠르면 좋긴 좋다만)