예제 중심 프로그래밍
Example-centric programming예제 중심 프로그래밍은 사용자가 작은 예를 찾아서 더 큰 전체로 수정함으로써 소프트웨어를 만들 수 있도록 도와주는 소프트웨어 개발에 대한 접근방식이다.그러한 접근방식은 통합 개발 환경(IDE)이 IDE에서 발생하는 코딩 동작과 관련된 코드 예나 API 문서를 보여줄 수 있는 도구로 도움을 받을 수 있다. "차입" 전술은 종종 프로그래머들이 IDE를 떠나 문제를 해결하도록 하는 온라인 소스에서 채택된다.[1]사례 중심 프로그래밍의 목적은 개발자가 온라인으로 검색하는 시간을 줄이는 것이다.이상적으로는, 예시 중심 프로그래밍에서, 사용자 인터페이스는 프로그래머가 IDE를 떠나지 않고 지원을 위한 도움말 모듈 예시와 통합된다.이러한 유형의 "인스턴트 문서"에 대한 아이디어는 프로그래밍 중단을 줄이는 것이다.[2]일부 초보자는 빈번한 웹 검색이나 브라우징에 의존하지 않고 통합된 지식 기반에서 이익을 얻기 때문에 이 기능의 사용은 전문가에 국한되지 않는다.[1]
배경
웹의 성장은 소프트웨어 구축 방식을 근본적으로 바꾸어 놓았다.정보자원의 대폭적인 증가와 접근과 유통의 민주화는 최종 사용자 개발을 위한 사례 중심 프로그래밍 개발의 주요 요인이다.튜토리얼은 몇 초 안에 웹에서 제공되어 누가 그것을 쓰는지의 공간을 넓혀준다. 디자이너, 과학자 또는 취미 활동가.2012년까지 그들의 직업의 일부로서 1,300만 개의 프로그램들 중 오직 300만 개의 프로그램만이 실제 전문 프로그래머들이다.온라인 코드 저장소, 문서, 블로그 및 포럼의 보급으로 프로그래머는 반복적으로 예를 검색, 수정 및 결합하여 애플리케이션을 구축할 수 있다.
웹을 사용하는 것은 코드 건전성과 유지관리성보다 속도와 개발 용이성에 초점을 맞출 때 프로그래밍에 대한 기회주의적 접근방식에 필수적이다.프로그래머, 초보자와 전문가 모두 웹을 프로토타입화, 아이디어화, 발견에 널리 사용하고 있다.[3]
소프트웨어를 빨리 개발하기 위해 프로그래머들은 종종 다양한 기존 시스템을 매시스트한다.이 과정의 일부로서 프로그래머들은 종종 적절한 구성요소를 찾고 새로운 기술을 배워야 하기 때문에, 그들은 이러한 목적을 위해 웹을 사용하기 시작했다.
소프트웨어 프로그래머를 개발할 때 프로그래밍 시간의 19%를 웹에서 보낸다.[3]개인들은 몇 가지 다른 종류의 활동을 수행하기 위해 웹을 사용한다.웹 사용의 이면의 의도는 형태와 시간에 따라 다양하다.프로그래머들은 새로운 개념을 배우는데 대부분의 시간을 소비하는데, 그들이 이미 알고 있는 개념의 세부사항을 스스로 상기시키는 데 소비되는 시간이 가장 적으며, 그 사이에 웹을 사용하여 기존의 지식을 명확하게 한다.[3]
사례중심 프로그래밍은 프로그래밍을 하는 동안 참조와 예를 찾기 위해 개발 환경에서 벗어나야 하는 문제를 해결하려고 한다.예를 들어, 전통적으로 API 문서와 샘플 코드를 찾기 위해 프로그래머들은 언어 참조 웹사이트를 방문하거나 검색 엔진으로 가서 API 관련 쿼리를 하게 된다.[2]새로운 것을 배우려고 할 때, 프로그래머들은 적시 학습을 위해 웹 자습서를 사용한다.게다가, 프로그래머들은 복잡한 구문을 기억하지 않고 대신에 필요할 때 접속할 수 있는 외부 메모리로 웹을 사용하는 것을 의도적으로 선택한다.[3]
혜택들
예제 중심 프로그래밍의 이점 중 일부는 다음과 같다.
- 사용 오류 방지
- 코드 예제에 대한 검색 시간 단축
- API 설명서를 검색하는 시간 단축
- 기존 지식의 명확화 및 잊어버린 세부 정보 상기
이머징 프로그래밍
출현은 더 큰 실체, 패턴 및 규칙성이 그 자체로 그러한 특성을 나타내지 않는 더 작거나 단순한 실체들 사이의 상호작용을 통해 발생하는 과정으로 정의될 수 있다.웹에서 공개적으로 사용할 수 있는 광범위한 코드는 이러한 유형의 패턴과 규칙성을 찾는 데 사용될 수 있다.개발자들이 어떻게 프로그래밍 언어를 실무에서 사용하는지를 모델링함으로써 공통 숙어를 찾고 있음직하지 않은 코드를 탐지하는 알고리즘을 만들 수 있다.[5]
이 과정은 프로그래머들이 기꺼이 공유할 수 있는 코드의 양으로 제한된다.사람들이 온라인에서 공유하는 것보다 더 많은 코드를 쓰기 때문에 중복되는 노력이 많다.군중들의 힘을 충분히 이용하기 위해서, 코드를 온라인에 게시하는 데 필요한 노력을 줄여야 한다.[6]
예
- 청사진
Blueprint는 Adobe Flash Builder용 플러그인으로, 코드 컨텍스트로 쿼리를 자동으로 확장하고, 검색 결과에 대한 코드 중심 보기를 제공하며, 검색 경험을 편집기에 내장하고, 복사된 코드와 소스 간의 링크를 보존한다.웹 검색을 통해 프로그래머가 쉽게 잊어버린 세부사항을 기억하고 기존 지식을 명확히 할 수 있도록 하기 위해 고안됐다.
사용자가 검색 결과를 빠르게 검색하고 평가할 수 있도록 다양한 웹 페이지의 결과를 표시한다.
Blueprint는 작업별 특성으로, 프로그래밍 언어의 예를 구체적으로 검색한다는 것을 의미한다.
- 레드프린트
Redprint는 브라우저 기반의 PHP용 개발 환경으로 API별 "인스턴트 예제"와 "인스턴트 문서화" 디스플레이 인터페이스를 통합한다.프로토타입 IDE는 아난트 Bhardwaj에 의해 개발되었고, 그 후 스탠포드 대학교에서 작업별 예시 인터페이스는 프로그래머가 발견된 예시 코드를 이해해야 한다는 전제하에 개발되었으며, 따라서 Redprint는 API별 검색 인터페이스도 포함하고 있다.[2]API별 검색 인터페이스는 관련 API별 예시와 설명서를 검색한다.
- 코덱스
코덱스는 루비의 일반적인 관행을 기록하는 지식 기반이다.개발자의 크라우드소싱된 데이터를 사용하여 모든 코드를 검색하고, 패턴을 찾아 만약 누군가가 이상한 방식으로 코딩을 한다면, 코덱스는 그들이 뭔가 잘못하고 있다는 것을 알게 해준다.
코덱스는 통계적 보풀을 사용하여 서툴게 작성된 코드, 즉 잘 쓰여진 코드와 구문적으로 다른 코드를 찾아내고 사용자에게 경고하며, 패턴 주석(patterning admination)은 공통 프로그래밍 숙어를 자동으로 검색하여 크라우드소싱을 이용한 메타데이터로 주석을 달게 하고, 라이브러리 생성은 새로운 것을 캡슐화하는 유틸리티 패키지를 구축한다.기계의 연습
- 코드렛[4]
코드렛은 사용자가 예를 이해하고 통합할 수 있도록 도와주는 대화형 도우미 위젯인 예제 코드 블록이다.
- 빙 코드 검색
빙코드 검색은 비주얼 스튜디오, 빙, 마이크로소프트 리서치 등으로 구성된 팀이 개발한 마이크로소프트 비주얼 스튜디오로 개발자가 인텔리센스에서 직접 빙의 코드 사례와 문서를 검색할 수 있는 확장판이다.
Bing Code Search는 MSDN, StackOverflow, Dotnetperls 및 CSharp411에서 코드 샘플을 수집한다.
- 코도타
코도타는 GitHub와 StackOverflow와 같은 사이트에서 사용할 수 있는 수백만 개의 코드 스니펫을 분석하여 개발자들이 전형적인 자바 코드 예를 찾을 수 있도록 돕는다.코도타는 코딩 패턴의 공통성, 코드의 출처에 대한 신뢰성, 코드의 명확성 등의 기준으로 이러한 예들을 순위를 매긴다.IntelliJ IDE 및 Android Studio IDE용 Codota 플러그인은 개발자가 편집기를 떠나지 않고도 Java 및 Android API를 사용할 수 있는 코드 예를 얻을 수 있도록 한다.
- UpCodeIn
UpCodeIn은 개발자가 인터넷에서 소프트웨어 구성요소를 찾아 재사용할 수 있도록 하는 소스 코드 검색 엔진이다.다른 소스 코드 검색 엔진과 비교했을 때 UpCodeIn의 고유한 특징은 구문 요소에 대한 코드를 찾을 수 있다는 것이다. 예를 들어, 특정 파라미터 유형, 주석, 변수를 가진 방법을 찾을 수 있다.UpCodeIn은 Java, JavaScript, Python, C#와 같은 많은 프로그래밍 언어의 구문을 이해한다.
참고 항목
참조
- ^ a b c d e Scaffidi, Christopher; Brandt, Joel; Burnett, Margaret; Dove, Andrew; Myers, Brad (2012). SIG: end-user programming. CHI '12 Extended Abstracts on Human Factors in Computing Systems. pp. 1193–1996. doi:10.1145/2212776.2212421. ISBN 9781450310161.
- ^ a b c d e f Bhardwaj, Anant; Luciano, Date; Klemmer, Scott (2011). Redprint: integrating API specific "instant example" and "instant documentation" display interface in IDEs. Proceedings of the 24th Annual ACM Symposium Adjunct on User Interface Software and Technology. pp. 21–22. doi:10.1145/2046396.2046408. ISBN 9781450310147.
- ^ a b c d Brandt, Joel; Guo, Philip; Lewenstein, Joel; Dontcheva, Mira; Klemmer, Scott (2009). Two studies of opportunistic programming: interleaving web foraging, learning, and writing code. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. pp. 1589–1598. doi:10.1145/1518701.1518944. ISBN 9781605582467.
- ^ a b Oney, Stephen; Brandt, Joel (2012). Codelets: linking interactive documentation and example code in the editor. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. pp. 2697–2706. doi:10.1145/2207676.2208664. ISBN 9781450310154.
- ^ a b c Fast, Ethan; Steffee, Daniel; Wang, Lucy; Brandt, Joel; Bernstein, Michael (2014). Emergent, crowd-scale programming practice in the IDE. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. pp. 2491–2500. CiteSeerX 10.1.1.645.4136. doi:10.1145/2556288.2556998. ISBN 9781450324731.
- ^ Lieber, Thomas; Miller, Rob (2012). Programming with everybody: tightening the copy-modify-publish feedback loop. Adjunct Proceedings of the 25th Annual ACM Symposium on User Interface Software and Technology. pp. 101–102. doi:10.1145/2380296.2380342. ISBN 9781450315821.
- ^ Shiban, Ala. "Introducing Bing Code Search for C#". blogs.msdn.com. Retrieved 8 December 2014.

