IT업계를 중심으로 최근의 트렌드를 살펴보면 AI가 대세입니다.
AI, 특히 딥러닝과 같은 신경망 기반의 모델에 대한 인기는 외국에 비하여 국내에선 크게 주목받지 못하고 있었지만 2016년 이세돌과 알파고의 대국 이후로 우리나라에서도 큰 흐름이 시작되었죠.
정부기관, 산업계, 학계를 포함하여 수많은 이들이 AI에 관심을 가지게 되었고 또 AI와 딥러닝을 배우고 연구하기 시작했습니다.
그런데 우리가 접하는 대다수의 자료는 파이썬으로 설명되고 또 구현되고 있습니다.
왜 파이썬일까요?
파이썬은 1991년에 네덜란드 출신의 Guido van Rossum에 의해 발표된 고급 프로그래밍 언어이며 해외에서는 꾸준히 인기가 높아지고 있었지만 국내에서는 그다지 주목받지 못했던 언어입니다.
AI와 딥러닝, 그리고 데이터 과학이라는 분야가 인기를 끌면서 국내에서도 그 주가가 높아지고 있는 언어죠.
왜 이 분야들에서는 파이썬을 많이 사용하고 있을까요?
당연하겠지만 파이썬이 특히 이 분야에서 많이 사용되는 이유는 해당분야에서 사용하기 편하고 그 성능이 강력하기 때문이겠죠.
파이썬은 배우기 쉽다.. 라거나 무료.. 라거나 하는 장점 외에도 표준 라이브러리와 기타 수많은 응용 라이브러리를 제공함으로써 그 영향력을 키우고 있습니다.
일단 파이썬은 기본적으로 과학과 공학 분야에서 필요로 하는 많은 기능들을 언어 자체에서, 그리고 다양한 라이브러리 형태로 제공합니다.
그리고 언어 자체적으로 64비트를 넘어가는 매우 큰 정수를 지원하고 있습니다.
우리가 일반적으로 사용하는 애플리케이션들은 그렇게 큰 수를 지원할 필요가 없지만 수학, 과학, 공학과 같은 영역에서는 매우 거대한 수, 또는 매우 작은 수에 대한 지원이 필요한 경우가 많습니다.
그래서 파이썬은 수학, 과학, 공학과 같은 분야에서 많이 사용되고 있죠.
파이썬은 매우 큰 정수만이 아니라 허수 또한 기본적으로 지원하고 표준 라이브러리의 decimal, fractions 모듈을 사용하면 소숫점과 유리수도 매우 정밀하게 다룰 수 있습니다.
이 때문에 대규모의 수치 데이터를 다루어야 하는 암호학, 통계학 분야에서도 크게 활약하고 있습니다.
또한 파이썬이 제공하는 다양한 라이브러리들 중에서도 이공학 분야에서 요구하는 성능과 기능을 만족하는 라이브러리가 매우 많습니다.
NumPy + SciPy + matplotlib 조합이 과학 공학 계산용으로 자주 사용되고 있습니다.
데이터 과학의 중요성이 강조되는 요즘은 위의 조합에 Pandas와 같은 라이브러리도 추가되었죠.
NumPy, SciPy, Pandas와 같은 라이브러리는 복잡한 수치와 큰 데이터를 다루기는 연산에 알맞으며, Matplotlib 라이브러리는 데이터를 그래프로 시각화하는데 큰 도움이 되는 라이브러리입니다.
또 다른 이유는 무엇이 있을까요?
이공학 분야에서는 수많은 데이터를 기반으로 특정한 모델을 만들고 연구하며 계속적인 실험을 통하여 그 성능을 증명해야 합니다.
이러한 방식으로 개발 언어, 개발 도구를 사용하기 위해서는 실제 상용화되는 애플리케이션과 달리 짧은 코드로 간단하게 실험하고 그 실험 결과를 바로 눈으로 확인하는 과정을 반복해야 하는데 C/C++, Java와 같은 완성된 애플리케이션을 만들어 내야 하는 컴파일형 언어보다는 각 계산 단계 별로 바로 확인하고 넘어갈 수 있는 스크립트형 언어, 또는 인터프리트형 언어가 연구 과정에서 필요한 노력을 많이 줄여줄 수 있습니다.
특히 파이썬의 경우 Jupyter Notebook과 같은 강력하고 편리한 도구를 지원하므로 이 또한 파이썬이 이공학 분야에서 인기를 끄는 이유가 되고 있습니다.
이러한 이유들로 이공학 분야에서는 파이썬을 많이 사용하고 있으며, 이런 인기에 편승하여 최근에 가장 주목받는 AI, 딥러닝, 데이터 분석 및 데이터 과학 등의 분야에서 만들어지는 대다수의 자료가 파이썬을 기반으로 하게 되었습니다.
그러면 다른 언어들은 이제 사라질 일만 남은걸까요?
아닙니다.
데이터 분석과 같은 분야에서는 전통적으로 R이라는 언어도 많이 사용되어 왔습니다.
R도 파이썬과 마찬가지로 이공학 분야, AI, 딥러닝 등에서 요구하는, 위와 같은 특징들을 가지고 있습니다.
그래서 파이썬 외의 관련 자료들 중에는 R을 사용하는 경우도 자주 찾아볼 수 있습니다.
다만 R은 통계학 분야 중심의 학계에서 좀 더 많이 사용해 왔고 파이썬은 학계뿐만 아니라 산업계에서도 많이 활용되어 왔기 때문에 파이썬이 더 커졌다고 보시는게 이해하기 쉬울 것 같네요.
또한 비유가 잘 어울릴지는 모르겠지만 진화론의 이론 중에 수렴진화라는 이론이 있습니다.
동일한 자연환경 속에서 계통적으로 관련이 없는 각 개체들이 환경에 적응하며 진화를 하게 되면 최종적으로는 그 진화의 방향이 한 가지의 형태로 수렴하게 된다.. 라는 이론인데요.
이것과 비슷하게 다양한 개발용 언어의 최근 행보를 살펴보면 모두 유사한 특징을 가지는 쪽으로 흘러가고 있습니다.
컴파일형 언어에 테스트나 중간 과정을 인터프리터처럼 적용해 볼 수 있는 기능을 제공한다거나, 인터프리터형 언어가 그 성능을 위하여 컴파일을 할 수 있는 도구를 제공한다거나.. 하는 노력이 증가하고 있습니다.
그리고 다양한 언어들이 풍부한 라이브러리를 제공하여 개발자의 편의를 돕고 그 성능을 강화시키는데에 많은 투자를 하고 있고, Jupyter Notebook처럼 자체적인 개발 도구, IDE 등을 제공하고 있습니다.
이처럼 선택할 수 있는 길은 파이썬만은 아닙니다.
다양한 언어와 환경도 충분한 장점을 가지고 있죠.
그러나 파이썬이 그 위치를 선점한 것이 현재의 파이썬의 인기를 가지고 온 가장 큰 이유가 됩니다.
개발 시장을 선점했다는 것은 그만큼 많은 개발자를 먼저 확보했다는 것이고, 그 많은 개발자들의 경험과 노력이 쌓인 커뮤니티가 성장하면서 더 많은 새로운 개발자를 끌어들이고 있는 것입니다.
거대하고 활발한 커뮤니티가 존재한다는 것은 우리가 필요한 정보를 얻기가 그만큼 쉽다는 말이니까요.
이 글을 읽으시는 독자분들은 어떤 환경을 선택하는 것이 자신에게, 그리고 자기가 속한 조직에게 더 도움이 될 것인지를 기준으로 환경을 선택하시면 됩니다.
또는 어떤 환경이 내게 가장 재미있는지.. 를 기준으로 선택할 수도 있겠죠.
스스로가 가장 즐겁게 사용할 수 있는 환경을 선택하시기 바랍니다.
'AI 관련 기술들 > AI' 카테고리의 다른 글
우리 몸에서의 시냅스의 동작(1) (0) | 2020.05.28 |
---|---|
설명가능한 인공지능 (Explainable Artificial Intelligence, XAI) (0) | 2020.05.19 |
[파이썬 입문] 파이썬은 배우기 쉽다고 하는데 정말 쉬운 언어일까? (0) | 2020.05.03 |
[파이썬 입문] 파이썬에 대한 포스팅 시작 (0) | 2020.05.02 |
시계열 데이터와 순환신경망 (0) | 2020.04.03 |