컴퓨터, 인간의 언어를 배우다.
컴퓨터, 인간의 언어를 배우다.
여러분은 프로그래밍, 프로그램, 프로그래머의 차이를 아시나요?
저는 이 세 가지의 차이를 설명할 때 학생들에게 괄호 넣기를 주로 활용합니다.
( )가 ( )이라는 과정을 통해 ( )을 만든다.
프로그래머가 프로그래밍이라는 과정을 통해 프로그램을 만든다.
정답은 프로그래머, 프로그래밍, 프로그램입니다.
이렇게 만들어진 프로그램이 한글, 오피스, 여러 앱과 웹들입니다.
여기서 말하는 프로그래밍이 바로 코딩입니다.
코딩(Coding)이란 컴퓨터가 이해할 수 있는 프로그래밍 언어로 명령어를 작성해 프로그램을 만드는 작업을 말한다.
내가 현업에서 일을 하던 90년대에는 프로그래머(Programmer)를 낮추어 부를 때 코더(Coder)라는 용어를 사용했다. 왜냐하면 프로그래머가 코드들을 작성하는 작업을 코딩이라 하는데, 단순한 코딩을 하는 초급개발자를 코더라고 불렀기 때문이다.
프로그래밍의 중요성이 다시 강조되는 시대가 되고 부르기 편한 코딩이라는 용어가 사용되었으나 사실 나는 프로그래밍을 코딩이라 부르는 게 많이 거슬렸다. 하지만, 지금은 프로그래밍보다 코딩이라는 용어가 많이 보편화되고 사람들에게 친숙해져 이제 이런 감정은 사라졌다.
여기서 컴퓨터가 이해할 수 있는 프로그래밍 언어의 한 형태로 바이브(Vibe)가 새로 생겼습니다.
*바이브(Vibe) : 전체적인 흐름과 감각, 느낌을 말한다.
컴퓨터 프로그래밍 언어는 정확한 문법과 절차, 규칙에 의해 프로그래밍해야 합니다. 이를 지키지 않으면 프로그래밍 자체가 실행되지 않아 쓸모없는 존재가 되어버립니다.
결국, 바이브 코딩은 인간의 자연어를 컴퓨터가 문맥을 해석하여 정확한 프로그래밍 언어로 재 작성하는 것을 말합니다.
컴퓨터는 바이브 코딩을 통해 인간이 만들고자 하는 의도 또는 맥락을 해석하여 정확한 컴퓨터 프로그래밍 언어로 바꿔주는 역할을 합니다. 결국 바이브 코딩은 인간의 불완전성을 컴퓨터가 보완하여주는 코딩이라 볼 수 있습니다.
그렇다면 인간이 컴퓨터를 배려하면 어떨까요?
컴퓨터가 인간의 언어를 더욱 정확하게 이해하도록 바이브 코딩하는 것입니다.
이에 따른 여러 절차나 규칙을 프롬프트 엔지니어링이라 부릅니다. 역할, 맥락, 세부규칙, 지침, 제약사항, 뉘앙스, 최종 결과물 등등을 자세히 설정하면 인공지능의 환각 현상을 방지할 수 있습니다.
이는 바이브 코딩을 인공지능이 마음대로 해석하는 것을 방지하기 위한 장치들입니다.
처음에는 이러한 프롬프트 엔지니어링 기술이 꽤 먹혀들었습니다.
그리고 이때까지만 해도 나는 바이브 코딩을 "말로 하는 코딩" 정도 수준으로 생각했습니다.
그런데, 이제는 학습이 많이 이루어진 인공지능은 인간이 개떡같이 말해도 찰떡같이 알아듣습니다.
또한, 앞에서 한 이야기, 어제 한 이야기, 한 달 전에 한 이야기를 당연히 기억하고 있으며,
내가 누군지 나보다 더 잘 알고, 나의 현실적인 상황들을 고려하여 답을 주고 있습니다.
이런 시대에 정보 교사로서 "나는 코딩 교육을 어떻게 해야 하는가?"에 대한 질문을 할 수밖에 없으며
속 시원한 답을 찾지 못해 답답하기만 합니다.
이 질문은 나만의 것이 아니며 모든 정보 교사의 고민이라는 점이 더욱 답답했습니다.
이는 정보 교육의 방향에 대한 고민이기도 합니다.
그러다 최근 이를 해결할 작은 실마리를 찾게 되었습니다.
[제안] 알고리즘 설계에 집중하도록 하는 것이 정보 교육이 되어야 하지 않을까요?