일본산업뉴스요약

챗GPT 시대에 진정으로 배워야 할 언어 -- 과연 ‘AI 개발에는 파이썬(Python)'일까?
  • 카테고리AI/ 로봇·드론/ VR
  • 기사일자 2023.5.8
  • 신문사 Nikkei X-TECH
  • 게재면 online
  • 작성자hjtic
  • 날짜2023-05-16 19:57:45
  • 조회수830

Nikkei X-TECH_2023.5.8

챗GPT 시대에 진정으로 배워야 할 언어
과연 ‘AI 개발에는 파이썬(Python)'일까?

필자는 생성 AI(인공지능)의 진화로 인해 장기적으로는 프로그래밍 언어나 프로그래밍 자체가 불필요해질 것이라는 주제의 칼럼을 쓰면서 프로그래밍을 배우는 것에 대한 의의에 대해 생각하고 있다. 단기적으로도 ‘챗GPT'나 'GitHub Copilot X'와 같은 AI에 의한 프로그램 코드의 자동 생성은 지시를 받아 작업으로 코드를 작성하는 프로그래머에게는 위협이 될 것이다.

그렇다고 해도 아직까지는 소프트웨어를 만들려면 프로그래밍 지식이 필요하기 때문에 지금 당장 프로그래밍을 배우는 것이 불필요해지는 일은 없을 것이다. AI가 생성한 코드라고 해도 그대로는 동작하지 않는 경우도 있어 수정 시 사람에게 프로그래밍 지식이 필요하다.

그렇다면 생성 AI의 전성시대, 이른바 '챗GPT 시대'에서 배워야 할 프로그래밍 언어는 무엇일까?

‘AI라고 하면 역시 파이썬(Python)이다’. 이렇게 생각하는 사람이 많을 것이다. 나도 이것을 부정할 생각은 없다. 실제로 AI 개발에는 파이썬이 자주 사용되고 있지만, 왜 사용되는지를 좀 더 깊이 생각해보면 ‘정말 파이썬만 있으면 되는가?’라는 의문도 생긴다.

파이썬이 AI 개발에 자주 사용되는 이유는 AI 구현에 필요한 라이브러리와 프레임워크가 충실하기 때문이다. 즉, 에코시스템이 있다. 파이썬의 언어 사양이 특별히 AI에 적합한 것은 아니다.

파이썬의 언어처리계는 수많은 프로그램 언어 중에서도 처리 성능이 상당히 낮은 부류에 속한다. 반면, AI는 내부에서 방대한 정보를 처리해야 하기 때문에 실용적인 AI를 구현하려면 높은 처리 성능이 필요하다. 그렇다면 왜 이러한 모순이 존재할까?

정답은 ‘AI의 핵심이 되는 처리는 파이썬으로는 기술되지 않는다’라는 것이다. 파이썬은 다양한 라이브러리나 프레임워크를 호출하거나 연결하는 데 사용될 뿐이다. 이런 언어를 글루 언어라고 부른다. 글루는 접착제를 말한다.

그렇다면 AI의 핵심 처리는 어떤 언어로 되어 있을까?
예를 들어 파이썬에는 AI를 포함한 데이터 사이언스 분야에서 많이 사용되는 '넘파이(NumPy)'라는 라이브러리가 있다. 다차원 배열의 연산을 고속으로 실행하는 것이다. 넘파이의 연산처리는 파이썬이 아닌 ‘C언어’로 기술되어 있다. 즉, C로 작성된 고속 연산 기능을 파이썬을 통해 사용할 수 있도록 되어 있는 것이다.

또한 AI 개발에는 텐서플로우(TensorFlow)나 파이토치(PyTorch)와 같은 딥러닝(심층학습) 프레임워크도 자주 사용된다. 이것들은 파이썬으로 기술되어 있지만, 처리 성능이 필요한 부분에는 'C++'라는 언어가 사용되고 있다.

즉, AI는 표면적으로는 파이썬으로 개발되고 있는 것처럼 보이지만 AI의 성능을 담보하고 있는 것은 파이썬이 아니라 C나 C++인 것이다.

프로그래밍을 배우는 가장 큰 장점은 지금까지 세상에 없던 소프트웨어를 자신의 힘으로 만들어낼 수 있다는 것이다. 파이썬은 범용 프로그래밍 언어이기 때문에 그것이 불가능한 것은 아니지만 성능 면에서는 분명히 불리하다.

물론 프로그래밍을 전혀 모르는 사람이 파이썬을 통해 입문하는 것은 바람직하다고 생각한다. 그러나 파이썬이 실제로 적합한 것은 기존의 라이브러리나 프레임워크를 이용하는 것이다. 파이썬밖에 모르면 언제까지나 기성품을 사용하는 입장에서 벗어나지 못하고 스스로 처음부터 새로운 것을 만들어내는 마인드는 길러지지 않는다고 생각한다.

즉, 진심으로 프로그래밍에 임하고 싶다면 C나 C++를 배워야 한다는 것이 필자의 생각이다.

-- 러스트(Rust)의 장점을 이해할 수 없어--
그렇다면 C와 C++ 중 어느 쪽을 선택해야 할까? 개인적으로는 지금부터 배운다면 C++가 좋을 것 같다. C++를 간략하게 표현한다면 C에 오브젝트 지향 기능을 추가한 것이다. 이 때문에 C++는 C의 거의 상위 호환이 되고 있다. C밖에 모르는 프로그래머는 C++를 잘 다루지 못하지만, C++를 알면 C도 문제없이 사용할 수 있다.

C++를 ‘부가기능이 있는 C’로써 사용하는 것도 가능하다. 예를 들어, C++에는 데이터를 표시하는 데 편리한 '표준 입출력 스트림'이라는 기능이 있다. 이 기능은 C에는 없기 때문에 C++를 ‘입출력 스트림이 있는 C’로써 간편하게 사용할 것을 권장하는 의견도 많다.

무엇보다 C++는 언어 사양이 거대해 제대로 배우기 힘들다. C++의 유명 교과서는 두꺼운 것들이 많다. 다행히 현재는 전자책이 있기 때문에 물리적 불편함은 줄었다.

기업의 IT 시스템 개발이라면 현재는 자바(Java)의 이미지가 강하지만, 금융계에서는 C++도 꽤 많이 사용되고 있다. 궁극적으로 고속의 동작이 필요한 시스템이라면 자바보다 C++가 성능 면에서 유리하기 때문이다. 금융계 시스템을 개발할 때  C++ 프로그래머를 모집하는 것은 흔히 볼 수 있다.

‘선택지로는 ‘러스트’도 있지 않을까?’라고 생각하는 사람도 있을지 모른다. 확실히 처리 성능이 필요한 용도라면 지금은 C++보다 러스트가 좋을 것이다 .C++는 기량이 부족한 프로그래머의 경우 치명적인 버그를 만들어내기 쉽지만, 러스크는 처리 성능을 희생하지 않고 안전하게 소프트웨어를 기술할 수 있다.

하지만 러스트 프로그래머는 아직 그 수가 절대적으로 적다. 높은 기량을 가진 러스트 프로그래머를 찾아내기란 하늘의 별 따기이다. C++는 역사가 길기 때문에 숙련 프로그래머가 상당히 있다.

또한 개인이 배우는 경우에도 러스트보다는 C++라고 생각한다. 러스트로는 위험한 프로그램을 작성하기 어렵다. 다시 말해 러스트로 할 수 있는 일이 제한되어 있는 것이다. 위험한 프로그램을 작성한 적이 없다면 이를 막는 것에 대한 진정한 의의나 장점을 이해할 수 없다.

개인적으로도 C++를 제대로 배우고 싶다. C++의 문법을 전혀 모르는 것은 아니지만, 체계적으로 학습한 적이 없어 C++를 안다고 말할 수 없다.

사실 과거에 C++를 배우려다 좌절한 적이 있다. ‘앞으로 세상은 오브젝트 지향이다’라고 생각해 큰맘 먹고 C++를 배워보려 했지만, 컨스트럭터와 디스트럭터가 무엇인지 도대체 이해할 수 없어 포기했다.

컨스트럭터는 오브젝트를 생성할 때 초기화 처리를 기술하는 것이고, 디스트럭터는 오브젝트를 파기할 때 종료 처리를 기술하는 것이다. 지금은 '이 정도도 이해하지 못했나' 싶지만 오브젝트가 무엇인지 모르는 단계에서는 너무 어려웠다. 이후 자바를 알게 되고 나서야 오브젝트 지향의 이미지를 이해할 수 있었다.

여전히 C++는 서투르지만 도전해야 한다고 생각하기 시작했다. 거기에는 두 가지 이유가 있다.

첫 번째는 경기 프로그래밍에 본격적으로 도전하고 싶기 때문이다. 경기 프로그래밍 서비스는 많은 프로그래밍 언어에 대응하고 있어, 실제로 원하는 언어를 선택할 수 있지만 성능을 높일 수 있는 C++가 주류이다.

경기 프로그래밍 문제에 대한 해설에도 C++가 사용되는 경우가 많다. 다른 언어를 사용하다 보면 일일이 자신의 언어로 대체해 생각해야 하는 번거로움이 있는 등, C++를 쓰는 것이 여러모로 편리하다.

두 번째는 한 엔지니어의 존재 때문이다. 도예가이면서도 높은 C++ 실력을 가졌던 무라카미(村上) 씨이다.

무라카미씨가 만든 조몬토기(繩文土器)는 아마추어인 필자가 보기에도 한눈에 박진감과 훌륭함이 전해지는 대단한 작품이다.

또한 C++ 분야에서 그는 직업 프로그래머가 아님에도 불구하고 상급 엔지니어로부터 크게 인정 받았다. 과거에는 C++표준화위원회의 일본워킹그룹에 참여했다고 한다. 필자는 그가 집필한 C++ 라이브러리에 대한 해설 기사를 닛케이소프트웨어라는 프로그래밍 잡지에 게재했다.

그러던 그가 2020년 2월, 32세의 젊은 나이로 급사하고 말았다. 그의 죽음은 조몬 문화 커뮤니티뿐만 아니라 C++ 커뮤니티에도 엄청난 충격을 주었다.

무라카미(村上) 씨는 아직도 자주 생각난다. 그는 왜 C++에 그렇게까지 빠져든 것일까? 그 이유를 알기 위해서라도 C++에 대해 제대로 이해하고 싶다고 생각하고 있다.

 -- 끝 --

Copyright © 2020 [Nikkei XTECH] / Nikkei Business Publications, Inc. All rights reserved.

목록