인터뷰 - 우리 학교 김유성(소프트) 교수

기자명 이가영 기자 (lvlygy@skkuw.com)

C언어의 프로그래밍 사진.
자연어와 인공어의 차이점은 무엇인가.
많은 경우에 유사하지만, 자연어와 달리 인공어의 의미는 상황에 따라 좌우되지 않는다. 동일한 문법을 쓰면 동일한 의도가 된다. 그러나 사람의 감정이 영향을 미치는 자연어에서는 표정이나 억양을 통해 언어가 담고 있는 의미를 파악해야 하기 때문에 똑같은 단어와 문법을 써도 전달하는 의미가 다를 수 있다. 그 점을 제외하고는 의사소통의 수단이라는 점에서 동일하다.

프로그래밍 언어란 무엇인가.
프로그래밍 언어란 원하는 결과를 얻어내기 위해서 컴퓨터가 수행해야 할 절차를 기술하는 언어를 뜻한다. 쉽게 말해 컴퓨터와 대화하기 위한 언어를 의미한다. 사람의 능력으로는 현실적으로 풀기 어려운 수준의 문제가 존재한다. 컴퓨터라는 자원을 활용하면 그런 문제를 짧은 시간 안에 매우 효율적으로 해결할 수 있다. 이를 위해 컴퓨터가 해야 할 일을 인간이 명확하게 지시해야 하는데, 이 과정에서 이용되는 것이 바로 프로그래밍 언어이다.

프로그래밍 언어 연구는 어떻게 시작됐나.
프로그래밍 언어를 최초로 만든 사람은 에이다 러브레이스(Ada Lovelace)다. 1800년대 영국에서는 기계적 컴퓨터라는 개념이 최초로 등장했다. 기계적 컴퓨터는 기계에 구멍이 뚫린 카드를 넣어주면 구멍을 숫자로, 또는 특정 명령으로 인식해 매우 큰 수에 대한 사칙연산이나 최대공약수, 최소공배수를 찾아주는 기능을 했다. 그는 기계적 컴퓨터에 적용되는 프로그래밍 언어를 처음 만들었다. 이것이 프로그래밍 언어 가운데 저급 언어의 토대가 되고, 여기서 발전된 것이 현재의 프로그래밍 언어다. 현대에서 사용되는 조건문이나 반복문과 같은 제어문에 대한 개념, 함수에 대한 개념들은 모두 이에 착안해 만들어진 것이다.

김유성 교수
함축된 명령어로 복잡한 문제 해결
명령어 전달과정에서 언어학의 역할 중요해

저급 언어와 고급 언어에 관해 설명해 달라.
저급 언어는 프로그래밍 언어의 가장 낮은 단계로, 0과 1로 이뤄진 이진수 형태다. 컴퓨터가 구분할 수 있는 것은 전기의 강도인데, 강한 전기신호는 1, 약한 전기신호는 0을 의미한다. 인간은 이런 0과 1을 이진수로 생각하고 이를 토대로 의미 있는 약속을 만들 수 있다. 0과 1의 특정 패턴은 덧셈을 하라는 명령이 될 수 있고, 또 다른 조합에는 곱셈을 하라는 의미를 부여할 수 있다. 그러나 이러한 저급 언어로 코딩을 하는 것은 매우 어렵다. 코드의 내용을 한눈에 보기 어렵고, 코드를 입력할 때에도 이진수를 사용해야 해서 번거롭기 때문이다. 이 문제를 해결하고자 인간이 접근하기 쉽도록 개발한 것이 고급 언어다. 고급 언어는 △C언어 △Java △파이썬 △엔트리의 순서로 존재한다. 이는 컴퓨터가 해야 할 일을 추상화해 사람이 읽기 쉬운 형태로 만든 것이다. 명령문을 단계별로 지정해야 하는 저급 언어와 달리, 고급 언어에서는 많은 명령이 함축된 한 문장으로 컴퓨터에 의미를 전달할 수 있다. 예컨대 a=b+c라는 명령은 한 줄로 표현이 가능하지만, 이 명령을 저급 언어로 표현할 때는 b와 c 각 변수의 해당 값을 지정된 메모리 공간에서 불러오는 것부터 명령을 수행한 결괏값을 다시 a라는 변수에 입력하는 것까지의 모든 과정을 단계별로 나눠 기술해야 한다. 고급 언어가 될수록 하나의 명령어에 여러 가지 의미가 압축된다.

프로그래밍 언어의 연구는 어떻게 이뤄지는가.
크게 두 가지 방향이 있다. 먼저 컴퓨터의 성능을 최대한으로 끌어올릴 수 있는 방법론을 연구하는 측면이 있다. 이러한 방법론은 컴퓨터 자원을 더 잘 활용할 수 있는 언어를 연구하는 것이 목적이다. C언어나 Java와 같은 것이 해당된다. 한편으로는 사람이 쉽게 사용할 수 있는 프로그래밍 언어를 연구한다. 이런 언어는 교육을 목적으로 하는 경우가 많은데, 성능이 높지 않더라도 사람들이 쉽게 다가갈 수 있도록 기본적인 기능에 충실하다. 파이썬, 엔트리가 이런 언어에 해당한다.

프로그래밍 언어에서 언어학이 왜 중요한가.
모든 사람들이 컴퓨터를 통한 각종 서비스의 제공자 입장에 있는 것은 아니다. 대부분의 사람들, 즉 소비자들은 각종 서비스를 통해 윤택한 삶을 누리는 입장이다. 따라서 사용자들의 편안한 생활을 위해서는 자연어를 통한 상호작용이 필요하다. 인공지능에 자연어로 요청을 하고, 자연어로 응답받는 것이 가능해야 한다는 것이다. 이것이 실현되는 과정에서 언어학이 매우 중요한 의미를 가진다. 자연어에 대한 음성인식을 하는 과정에서 사람이 말한 것을 정확한 의미로 분석하는 것, 분석을 토대로 컴퓨터를 동작시키는 것, 적절한 결과를 자연어로 돌려주는 것은 언어학에 대한 깊은 이해가 없이는 불가능하다. 언어학에 대한 심도 있는 연구가 반영돼야만 컴퓨터가 자연어를 제대로 인지하게 하는 것이 가능하다.

프로그래밍 언어 교육 의무화 추세에 대해 어떻게 생각하는가.
범국가적 프로그래밍 언어 교육의 실효성에 대해서는 아직 속단하기 이르다. 하지만 보다 많은 사람을 프로그래밍 언어에 노출시킨다는 것은 분명 긍정적 효과가 있다. 전공자들만의 연구 분야를 넘어, 누구든 자신이 원하는 분야에 이를 활용해보려고 시도하는 것이 중요하다. 큰 문제를 작은 단위로 나눠 해결하는 컴퓨터적 사고법은 분명 많은 이들에게 도움이 되기 때문이다. 과거에는 창업을 할 때 프로그래밍 언어 관련 사업이 전공자들만의 영역이라는 생각이 강했다. 그러나 앞으로 3, 4년 뒤에는 비전공자들도 얼마든지 이와 관련한 창업을 시도해보고자 할 것이다. 컴퓨터적 사고법을 바탕으로 프로그래밍 언어에 대한 시야를 넓힐수록, 다른 학문과의 융합을 통해 새로운 가능성이 창출될 수 있다.