인텔리전트 코드 완성
Intelligent code completion지능형 코드 완성 기능은[1] 일부 프로그래밍 환경에서 컨텍스트 인식 코드 완성 기능으로, 오타 및 기타 일반적인 실수를 줄임으로써 애플리케이션 코딩 프로세스를 가속화합니다.이 작업은 일반적으로 입력, 함수 파라미터 쿼리, 구문 오류 관련 힌트 쿼리 중에 자동 완료 팝업을 통해 수행됩니다.지능형 코드 완성 및 관련 도구는 [2][irrelevant citation]반사를 사용하여 변수 이름, 함수 및 메서드에 대한 문서화 및 명확화 역할을 합니다.
이 기능은 많은 프로그래밍 [3][4]환경에서 나타납니다.구현에는 Atom의 "autocomplete +"와 Visual Studio Code의 IntelliSense가 포함됩니다.이 용어는 원래 "pick list"로 널리 사용되었으며 일부 구현에서는 여전히 "[5]pick list"라고 부릅니다.
개요
다른 자동 완성 시스템과 유사한 지능형 코드 완성은 기능 설명, 특히 매개 변수 목록에 액세스할 수 있는 편리한 방법입니다.이 기능은 키보드 입력과 이름 암기의 필요성을 줄여 소프트웨어 개발을 가속화합니다.또한 액티브 스코프의 많은 기호(변수 및 함수)에 대한 대화형 문서가 [6]툴팁 형태로 동적으로 표시되므로 사용자가 외부 문서를 참조하는 빈도를 줄일 수 있다.
인텔리전트 코드 완성에서는 지정된 컴퓨터 코드가 정의 또는 참조하는 클래스, 변수 이름 및 기타 구성의 메모리 내 데이터베이스가 자동으로 생성됩니다.IntelliSense의 "클래식" 구현은 마침표 등의 마커 문자(또는 언어에 따라 다른 구분 문자)를 검출함으로써 작동합니다.사용자가 하나 이상의 액세스 가능한 멤버(변수 또는 함수 포함)를 가진 엔티티의 이름 바로 뒤에 이러한 문자 중 하나를 입력하면 IntelliSense는 팝업 대화 상자에 일치하는 문자를 제안합니다.사용자는 스테이트먼트 완료 문자를 입력하여 제안을 수락할 수 있습니다( ).Tab ↹ 또는 언어 고유의 마커(C++의 세미콜론 등)를 사용하거나 이름을 계속 입력합니다.시간이 지남에 따라 IntelliSense는 사용자에게 가장 필요한 변수 또는 함수를 결정합니다.IntelliSense는 함수의 소스 코드의 문서 양에 따라 팝업 창에 함수의 간단한 설명을 표시합니다.
또한 이 기능을 통해 사용자는 객체 지향 프로그래밍을 지원하는 언어로 과부하된 여러 함수 중에서 선택할 수 있습니다.일부 코드 편집 소프트웨어는 LSP(Language Server Protocol) 서버를 통해 지능형 코드 완성을 제공합니다.
역사
지능형 코드 완성 연구는 1957년에 시작되었으며, 필기체의 비트맵 이미지 맞춤법 검사기와 잘못된 입력에도 불구하고 데이터베이스에서 기록을 찾기 위한 특수 응용프로그램이 사용되었습니다.1961년, 이 새로운 기술에 대한 연구를 이끌었던 레 어니스트는 10,000개의 허용 [7]단어 목록에 접근한 최초의 철자 검사기를 포함할 필요가 있다고 보았다.당시 어니스트의 대학원생이었던 랄프 고린은 일반 영어 교재용 응용 프로그램으로 작성된 최초의 진정한 맞춤법 검사 프로그램을 만들었다.스펠(SPERE)은 스탠퍼드대 인공지능연구소(SAIL)의 [8]DEC PDP-10용으로 1971년 2월에 출판되었다.Gorin은 보다 빠른 액션을 위해 프로그램을 작성했습니다.그는 단어 목록을 검색하여 한 글자 또는 인접 문자 변환으로 다른 그럴듯하게 정확한 철자를 검색하여 사용자에게 제시함으로써 프로그램을 만들었습니다.Gorin은 대부분의 SAIL 프로그램과 마찬가지로 SPER를 일반에 공개하여 PC가 일반에 [9]보급되기 약 10년 전에 당시 새로운 ARPANET을 통해 곧 전 세계로 확산되었습니다.SPIEL과 그 알고리즘과 데이터 구조는 Unix 프로그램 Ispell에 영감을 주었습니다.
에디터 및 IDE 지원
비주얼 스튜디오
IntelliSense는 Visual Studio에서 가장 잘 알려진 Microsoft의 코드 완성 구현입니다.Visual Basic 5.0의 시제품인 Visual Basic 5.0 Control Creation Edition을 사용하여 코드 완성 및 구문 확인의 많은 이미 발명된 개념을 기반으로 1996년에 마이크로소프트 제품의 주류 기능으로 처음 소개되었습니다.처음에 Visual Basic IDE는 이 기술의 주요 "테스트 베드"였지만 IntelliSense는 Visual Studio 97의 시간대에 Visual FoxPro와 Visual C++에 통합되었습니다(Visual Basic에서 처음 본 리비전 1).인텔리센스의 Visual Basic 버전은 COM의 인스펙션 기능을 기반으로 했기 때문에 Visual C++의 5.0 및 6.0 버전(Visual Studio 네이밍 시퀀스의 97 및 98)보다 항상 견고하고 완벽했습니다.이러한 단점(97 출시 이후 많은 VC++ 개발자에 의해 비판)은 에서 대부분 수정되었습니다.NET 제품 라인예를 들어, 가장 많이 요청된 기능 중 하나가 사전에서 누락되었습니다.NET 제품은 현재 완전히 [10]구현된 템플릿을 지원했습니다.
IntelliSense는 통합 Visual Studio를 통해 새로운 개발 단계로 접어들었습니다.2001년에 처음 출시된 NET 환경은 에서 제공하는 보다 강력한 자기성찰 기능과 코드 문서 기능을 통해 강화되었습니다.NET 프레임워크IntelliSense는 현재 C++, C#, J#, Visual Basic, XML, HTML 및 XSLT용 Visual Studio 편집기에서 지원됩니다.Visual Studio 2005에서 IntelliSense는 사용자가 입력을 시작할 때 기본적으로 활성화되며 마커 문자를 필요로 하지 않습니다(단, 이 동작을 끌 수 있습니다).IDE는 개발자가 타이핑한 내용에 따라 다음과 같은 기본적인 언어를 구성하는 데까지 많은 양의 컨텍스트를 추론할 수 있습니다.for 및 while도 선택 목록에 포함됩니다.2017년에 마이크로소프트는 기계 학습을 사용하여 모든 키 입력에서 어떤 언어 또는 라이브러리 기능을 의도하는지 정확하게 추론하는 IntelliCode를 [11]발표했습니다.처음에는 C#의 확장으로만 제공되지만 Visual Studio의 향후 릴리스에 내장될 예정입니다.
IntelliSense를 탑재한 다른 마이크로소프트 제품에는 Expression Web, FrontPage 2003, Small Basic, Microsoft Office 제품의 Visual Basic for Applications IDE, Visual Studio Code 등이 있습니다.SQL Server 2008 Management Studio에는 SQL 구문에 대한 자동 완성 기능이 있습니다.
이클립스
Eclipse IDE에는 프로그램과 [12][13]함께 제공되는 코드 완성 도구가 있습니다.Java, C++ 및 JavaScript 코드 오서링을 지원합니다.Code Recommenders Eclipse 프로젝트는 강력한 지능형 [14]완성을 제공했지만 리소스 부족으로 인해 Eclipse 2018-12에서 중단되고 2019년 [15][16][17]7월에 아카이브되었습니다.
VIM
Vim Intellisense는[18] Vim 에디터용 고급 코드 완성 시스템입니다.
예
Visual Studio에서 편집 중인 C++ 응용 프로그램에 일부 멤버 함수가 있는 Foo 클래스가 있다고 가정합니다.
학급 푸우 { 일반의: 무효 막대기(); 무효 foo_bar(차 c, 인트 n); };
개발자가 소스 코드에서 이 클래스를 참조할 때, 예를 들어 다음과 같습니다.
푸우 후우; 후우.
사용자가 뒤에 마침표를 입력하는 즉시 IntelliSense는 사용 가능한 모든 멤버 함수를 자동으로 나열합니다(예:bar()
그리고.foo_bar()
및 사용 가능한 모든 멤버아트리뷰트(프라이빗멤버와 보호멤버는 이름 옆에 있는 자물쇠 그림으로 식별할 수 있습니다).그런 다음 올바른 멤버 기능이 강조 표시될 때 화살표 키를 사용하여 완료 문자를 눌러 하나를 선택할 수 있습니다.사용 가능한 경우 IntelliSense는 소스 코드 설명서에 나와 있는 멤버 함수에 대한 간단한 설명을 표시합니다.
IntelliSense는 더 나아가 사용자가 파라미터를 입력할 때 필요한 파라미터를 다른 팝업창에 표시합니다.사용자가 변수 이름을 입력할 때 이 기능은 변수를 입력할 때 완료하라는 제안도 제공합니다.IntelliSense는 사용자 유형에 따라 관련 파라미터를 강조 표시하여 계속 표시합니다.
사용자는 + 또는 Space+를 J사용하여 IntelliSense가 컨텍스트 없이 팝업 목록을 표시하도록 강제할 수 있습니다.Visual Studio에서는 개발자가 사용할 수 있는 전체 응용 프로그램 도메인 개체 모델이 표시됩니다.
메모들
- ^ Bruch, Marcel; Monperrus, Martin; Mezini, Mira (2009). "Learning from examples to improve code completion systems". Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering on European software engineering conference and foundations of software engineering symposium - ESEC/FSE '09 (PDF). p. 213. doi:10.1145/1595696.1595728. ISBN 9781605580012. S2CID 18621745.
- ^ [ Autocomplete ] : Dictionary.com 에서 [Define Autocomplete]를 선택합니다.Dictionary.reference.com 를 참조해 주세요.2014-04-04에 취득.
- ^ FAQ - CodeBlocks.Wiki.codeblocks.org (2014-02-01)2014-04-04에 취득.
- ^ QT 매뉴얼 - 코드 완성2015-07-07에 취득.
- ^ Dynamic Apex를 사용하여 Picklist Values Developer Force 블로그를 가져옵니다.Blogs.developerforce.com (2008-12-09)2014-04-04에 취득.
- ^ Murach. C# 2005. p. 56.
- ^ Earnest, Les. "The First Three Spelling Checkers" (PDF). Stanford University. Archived from the original (PDF) on 22 October 2012. Retrieved 10 October 2011.
- ^ Peterson, James (December 1980). Computer Programs for Detecting and Correcting Spelling Errors (PDF). Retrieved 18 February 2011.
- ^ Earnest, Les. Visible Legacies for Y3K (PDF). Archived from the original (PDF) on 20 July 2011. Retrieved 18 February 2011.
- ^ Intelli Sense 사용.Msdn.microsoft.com 를 참조해 주세요.2014-04-04에 취득.
- ^ Visual Studio Intelli Code
- ^ "Eclipse Corner Article: Unleashing the Power of Refactoring the Eclipse Foundation".
- ^ "Technologies".
- ^ Eclipse 코드 추천: 지능적인 코드 완성이 중요합니다.Code-recommenders.blogspot.com (2010-05-03)2014-04-04에 취득.
- ^ 542689 - 2018-12년 코드 추천자 포함 안 함
- ^ Cross-project-issues-dev SimRel에서 코드 추천 철회
- ^ 아카이브된 프로젝트 Eclipse Foundation
- ^ Vim Intellisense.인스엔비임sourceforge.net 를 참조해 주세요.2014-04-04에 취득.
외부 링크
- Torre, Charles (24 January 2008). "Arjun Bijanki: Making Sense of VC Intellisense" (Video). Channel9. Microsoft.
- "Using IntelliSense". VS .NET 2003 (2015 ed.). MSDN. Archived from the original on 2005.
- "IntelliSpeed Tutorial" (Video). Visual Prolog.