본문 바로가기
IT 잡학사전/Git & Github

[Copilot] 코딩을 도와주는 인공지능. 깃허브 코파일럿

by GiraffePark 2022. 12. 13.
깃허브의 수익 상품
Codespaces (코드스페이스) : https://arnopark.tistory.com/548
Copilot (코파일럿) : https://arnopark.tistory.com/553

 

안녕하세요. 박기린 입니다.

저번에 소개해드린 코드스페이스에 이어서 깃허브에서 수익 모델로 판매하는 또 다른 상품인 'Copilot'에 대해 소개를 해보겠습니다.

 

 

Copilot이란?

원래 copilot은 xbox에서 쓰이는 용어입니다. (사실 선후 관계는 잘 모릅니다만, 아마두?)

xbox 컨트롤러를 두 개 연결한 후에, 하나의 컨트롤러처럼 인식해서, 두 사람이 하나의 캐릭터를 조작하는 시스템입니다.

게임을 하고 싶은데 조작에 불편함이 있어 특정 키를 누르지 못하는 경우, 친구나 가족을 데려와서 추가로 패드를 연결한 후 copilot 역할로 대신 특정 키를 눌러줄 수 있습니다.

 

 

 

그리고 Copliot에 사람이 아닌 인공지능(AI)이 탑재되어 코딩을 도와주는 프로그램이 되었습니다.

 

Copilot 공식 소개 사이트 : https://github.com/features/copilot/

 

GitHub Copilot · Your AI pair programmer

GitHub Copilot works alongside you directly in your editor, suggesting whole lines or entire functions for you.

github.com

 

 

 

 

VS Code에 코파일럿 설치하기

공식사이트에서는 Visual Studio, Neovim, VS Code, JetBrains IDEs에서 코파일럿을 사용할 수 있다고 하는데, 일단 VS Code에서만 사용해보겠습니다. 

 

 

VS Code 확장프로그램 마켓플레이스에서 Github Copilot을 검색하면, 위와 같은 확장 프로그램이 보입니다.

설치를 해줍니다.

 

 

 

그러면 VS Code의 우측 하단에 코파일럿 버튼이 생깁니다.

 

바탕색이 주황색이면 비활성화, 무색이면 활성화 상태입니다.

활성화를 시켜줍니다.

 

 

 

 

코파일럿 사용하기. 그리고 한계점

주석으로 어떤 기능을 원하는 지 입력해줍니다.

 

 

입력을 마친 후 엔터를 쳐서 다음 줄로 넘어가면, 코파일럿이 코드를 제안합니다.

이때 제안된 코드는 이탤릭체로 나타납니다.

 

 

 

 

이때 단축키 4가지를 쓸 수 있습니다.

이 중에서

1. Alt(opt) + ] : 다음 제안
2. Alt(opt) + [ : 이전 제안
3. Tab : 적용

이 세 가지 단축키를 주로 사용합니다.

 

 

 

'Alt(opt) + ]' 키를 입력해서 다음 제안을 보니, 코드가 아니라 주석을 추천해줍니다.

현재 시각을 서버로부터 받아올 뿐만 아니라, console로 찍는 것까지 코파일럿이 제안을 합니다.

 

 

 

제안을 수용하고 계속 tab을 누르니, 위와 같은 코드들이 자동으로 생성되었습니다.

위의 코드 중에 제가 작성한 코드는 첫 번째 줄의 코드 뿐입니다. 나머지는 전부 자동생성되었습니다.

이제 실행을 해보겠습니다.

 

 

 

짜잔~

에러가 뜹니다. 왜냐하면 Request 모듈이 설치되지 않았기 때문입니다. 아무리 copilot이라고 해도 없는 모듈까지 가져올 수는 없겠죠.

 

 

 

여기에서 코파일럿의 한계가 보입니다.

Request 모듈은 공식적으로 지원 중단된 모듈입니다. 현대 자바스크립트의 업데이트에 따라 필요가 없어졌기 때문입니다. 근데 코파일럿은 그대로 추천을 해줍니다. 코파일럿이 추천해주는 코드는 깃허브에 다른 사람이 올려 놓은 코드를 기반으로 추천해주는 것입니다. 구식 코드들을 코파일럿이 읽고 추천해줄 수도 있습니다.

 

 

 

 

 

그래도 일단 실행확인을 위해 request 모듈을 설치해줍니다.

 

 

 

 

정상적으로 작동을 합니다. 서버에서 현재 시각을 잘 가져옵니다.

그런데 또 하나의 문제점이 보입니다. '===' 대신에 '=='가 사용된 것입니다. JS의 비교연산자에서 핵심으로 사용되는 Strict comparion이 적용되지 않았습니다.

 

 

 

결국 이 부분은 직접 수정했습니다.

 

 

 

이외에도

피보나치 수열

수학 공식을 제안해줍니다.

 

 

 

인접행렬 (adjacent matrix)

인접행렬 그래프도 그려줍니다.

 

 

 

분기 한정법 (branch and bound algorithm)

 

원하는 알고리즘도 각 언어에 맞춰서 제안해줍니다. 첫 번째 줄에 알고리즘의 이름을 적었더니, 알고리즘이 작동하는 순서부터 차례대로 알려줍니다.

 

 

심지어 시간, 공간 복잡도(Time, Space complexity)까지 알려줍니다.

 

 

시간, 공간 복잡도가 다른 두 가지의 코드뭉치를 소개해주는데..

코파일럿이 제안해준 코드를 깊게 읽지는 않았습니다. 아마도 올바른 제안을 해줬겠죠?

 

 

 

 

알고리즘 강의 시간 때 머리를 파먹어가면서 들었던 알고리즘인데... 코파일럿은 한 번에 해결해줍니다.

이게 바로 인공지능의 힘이자 효용성이겠죠. 프로그램을 만들 때 인공지능은 이런 복잡하고 까다로운 부분들을 효율적으로 해결할 수 있게 도와줄 것입니다. 그렇기에 인간이 더욱 프로그램을 기획하고 설계하는 일에 집중할 수 있게 해주겠죠. 반면, 프로그램의 설계도를 받아서 코딩만 해주는 코더들에게는 치명적일 수도 있겠습니다.

 

언젠가는 Pseudo 코드만 입력하면 언어에 상관없이 프로그램을 짜주는 시대가 올 수도 있겠습니다.

 

 

 

 

인강에서의 코파일럿

학습자료를 가지고 코딩공부를 할 때는 코파일럿을 끄고 하시는 것을 강력 추천드립니다. 지금부터 그 이유에 대해 설명드리겠습니다.

 

해당 코드뭉치는 리액트 관련 인강에서 제공하는 강의자료에 담긴 코드입니다.

드래그한 모든 코드를 지우고 코파일럿으로 작성해보겠습니다.

 

 

지우자마자 바로 똑같은 코드를 제안합니다.

 

 

 

Tab 버튼을 계속 누르고 나니, 어느새 지우기 전과 똑같은 코드가 다시 채워져있습니다.

이처럼 코파일럿을 키고 강의를 따라 코드를 작성하면 전부 자동으로 채워집니다. 왜냐하면, 대부분 강의자료가 깃허브에 올라와있거나 이미 학생들이 자신들의 깃허브 리포에 강의자료를 작성하고 업로드 해버려서, 코파일럿이 그 코드들을 읽은 후 그대로 제안을 해주기 때문입니다. 그리고 굳이 강의자료가 아니더라도 VS Code를 가지고 코딩공부를 하고 있다면, 비슷한 주제의 코드들을 싹 가져와서 추천해줍니다.

이러면 공부의 효과가 현저히 떨어질 수 있습니다. 학생은 직접 코드를 작성해보면서 손과 머리로 익히고, 의도치 않은 오류에 맞서보는 경험이 필요합니다. 하지만 코파일럿의 제안에 Tab키만 누르고 있으면, 그냥 공책과 코드편집기 없이 눈만 인강을 보는 것과 비슷할 수밖에 없습니다. 당장은 이해한 것처럼 보여도, 한 달 뒤에 다시 보면 이해를 하지 못할 수도 있습니다. 그래서 코딩 공부를 하실 때는 코파일럿을 끄고 하시길 추천드립니다.

 

 

 

 

검수가 필요한 코파일럿

공식사이트(https://github.com/features/copilot/) 발췌

코파일럿은 깃허브의 public 리포를 이용해서 추천을 해주는 시스템입니다. 그러다보니 좋지 않은 public 리포도 긁어올 수 있습니다. 위에서 봤던 'Request' 모듈을 사용하는 코드를 가져오는 경우처럼 말이죠. 또 알고보니 버그가 포함된 코드일 수도 있습니다. 그러니 코파일럿에 맹신해서는 안 됩니다. Copilot은 코딩의 동료이기에, 적당히 보조자료로 사용합시다.

 

반응형