이 페이지는 인공지능에 반대하는 페이지인가요?
아니요. 저희는 AI 기능을 개발하고 고객님께서 기존에 사용하시던 어시스턴트를 계속 사용하시기를 기대합니다. 핵심은 생성과 검증은 별개의 작업이며, 검증에는 매번 동일한 결과를 제공하는 도구가 필요하다는 점입니다.
Visual Assist가 Copilot을 대체하나요?
아니요, 그렇게 하려고 하지도 않습니다. VA와 Copilot은 Visual Studio에서 나란히 실행됩니다. Copilot은 초안을 작성하고, VA의 파서는 작성된 초안을 검증하는 데 사용됩니다.
여기서 "결정론적"이라는 말은 실제로 무엇을 의미하는 걸까요?
동일한 코드가 주어지면 파서는 매번 실행, 모든 머신, 모든 세션에서 동일한 모델(동일한 참조, 정의 및 이름 변경 범위)을 생성합니다. 샘플링도, 변동도, 편차도 없습니다.
인공지능 모델이 C++ 코드를 잘못 해석한 사례는 무엇인가요?
흔히 발생하는 오류로는 여러 개의 일치하는 오버로드가 있을 때 잘못된 오버로드를 선택하는 것(문자열 리터럴 이 다른 오버로드 bool보다 std::string우선시되는 경우가 대표적입니다), 해당 타입에 존재하지 않는 멤버나 API를 제안하는 것, 스마트 포인터 소유권을 잘못 처리하여 객체가 두 번 해제되거나 아예 해제되지 않는 것, 그리고 다른 라이브러리 버전의 시그니처를 호출하는 것을 "업데이트"하는 것 등이 있습니다. 이러한 오류들은 차이점을 비교해 보면 모두 완전히 합리적으로 보일 수 있습니다.
코드가 컴파일되면 괜찮은 거 아닌가요?
아니요. C++에서 클린 컴파일은 구문이 유효하다는 것을 의미할 뿐, 동작이 올바르다는 것을 의미하지는 않습니다. 해제 후 사용 오류, 유효하지 않은 참조, 정수 오버플로, 그리고 단순한 논리 오류는 모두 컴파일에는 문제가 없지만 런타임에, 그것도 부하가 걸릴 때만 나타나는 경우가 많습니다. 컴파일이 잘 된다는 것은 동작이 올바르다는 것을 의미하지 않습니다.
인공지능에게 특정 기호가 사용된 모든 사례를 찾아달라고 요청할 수는 없을까요?
물론 가능하지만, 목록이 완전한지 알 수는 없습니다. 모델은 그럴듯한 목록을 반환하지만, 매크로, 템플릿 또는 검토하지 않은 파일에서의 사용 사례를 놓칠 수 있으며, 다음에 실행할 때는 다른 목록을 반환할 수도 있습니다. 반면 파서는 전체 번역 세트를 탐색하여 매번 동일한 전체 개수를 제공합니다.