stringtranslate.com

Программирование, ориентированное на примеры

Программирование на основе примеров — это подход к разработке программного обеспечения , который помогает пользователю создавать программное обеспечение, находя и изменяя небольшие примеры в более крупное целое. Такой подход может быть подкреплен инструментами, которые позволяют интегрированной среде разработки (IDE) показывать примеры кода или документацию API , связанную с поведением кодирования, происходящим в IDE. Тактика «заимствования» часто применяется из онлайн-источников программистами, покидающими IDE для устранения неполадок. [1] Целью программирования на основе примеров является сокращение времени, затрачиваемого разработчиками на поиск в Интернете. В идеале в программировании на основе примеров пользовательский интерфейс интегрируется с примерами модулей справки для оказания помощи без выхода программистов из IDE. Идея этого типа «мгновенной документации» заключается в сокращении перерывов в программировании. [2] Использование этой функции не ограничивается экспертами, так как некоторые новички пожинают плоды интегрированной базы знаний, не прибегая к частому поиску в Интернете или просмотру. [1]

Фон

Рост Интернета в корне изменил способ создания программного обеспечения. Огромное увеличение информационных ресурсов и демократизация доступа и распространения являются основными факторами в развитии программирования, ориентированного на примеры, для разработки конечных пользователей . Учебники доступны в Интернете за считанные секунды, тем самым расширяя пространство для тех, кто их пишет: дизайнеры, ученые или любители. К 2012 году 13 миллионов программируют как часть своей работы, но только три миллиона из них являются настоящими профессиональными программистами. Распространенность онлайн-репозиториев кода, документации, блогов и форумов позволяет программистам создавать приложения, итеративно ища, изменяя и комбинируя примеры.

Использование сети является неотъемлемой частью оппортунистического подхода к программированию, когда внимание уделяется скорости и простоте разработки, а не надежности и поддерживаемости кода. Широко распространено использование сети программистами, как новичками, так и экспертами, для создания прототипов , создания идей и открытий. [3]

Для быстрой разработки программного обеспечения программисты часто смешивают различные существующие системы. В рамках этого процесса программисты часто должны искать подходящие компоненты и осваивать новые навыки, поэтому они начали использовать Интернет для этой цели.

При разработке программного обеспечения программисты тратят 19% своего времени на программирование в Интернете. [3] Люди используют Интернет для выполнения различных видов деятельности. Намерения, стоящие за использованием Интернета, различаются по форме и затраченному времени. Программисты тратят большую часть времени на изучение новой концепции, меньше всего времени тратят на напоминание себе деталей концепции, которую они уже знают, а в промежутках они используют Интернет для уточнения своих существующих знаний. [3]

Ориентированное на примеры программирование пытается решить проблему необходимости выходить из среды разработки для поиска ссылок и примеров во время программирования. Например, традиционно, чтобы найти документацию по API и пример кода, программисты либо посещают сайт справочного языка, либо обращаются к поисковым системам и делают запросы, специфичные для API. [2] Пытаясь изучить что-то новое, программисты используют веб-уроки для оперативного обучения. Кроме того, программисты намеренно предпочитают не запоминать сложный синтаксис и вместо этого используют Интернет как внешнюю память, к которой можно получить доступ при необходимости. [3]

Преимущества

Некоторые из преимуществ программирования, ориентированного на примеры, включают в себя:

Эмерджентное программирование

Возникновение можно определить как процесс, в ходе которого более крупные сущности, шаблоны и закономерности возникают посредством взаимодействия между более мелкими или простыми сущностями, которые сами по себе не проявляют таких свойств. Обширный объем кода, публично доступного в сети, может быть использован для поиска такого типа шаблонов и закономерностей. Путем моделирования того, как разработчики используют языки программирования на практике, могут быть созданы алгоритмы для поиска общих идиом и обнаружения маловероятного кода. [5]

Этот процесс ограничен объемом кода, которым программисты готовы и могут поделиться. Поскольку люди пишут больше кода, чем делятся в сети, возникает много дублирующих усилий. Чтобы в полной мере использовать силу толпы, усилия, необходимые для публикации кода в сети, должны быть сокращены. [6]

Примеры

Чертеж [1]

Blueprint — это плагин для Adobe Flash Builder , который автоматически дополняет запросы контекстом кода, представляет кодоцентричный вид результатов поиска, встраивает поисковый опыт в редактор и сохраняет связь между скопированным кодом и его источником. Он разработан, чтобы помочь программистам с веб-поиском и позволяет им легко вспомнить забытые детали и уточнить имеющиеся знания.

Он отображает результаты с разнообразного набора веб-страниц, позволяя пользователям быстро просматривать и оценивать результаты поиска.

Blueprint ориентирован на задачу, то есть он будет искать примеры именно на этом языке программирования.

Редпринт [2]

Redprint — это браузерная среда разработки для PHP , которая интегрирует интерфейсы отображения «мгновенных примеров» и «мгновенной документации» API. Прототип IDE был разработан Анантом Бхардваджем , тогда работавшим в Стэнфордском университете, исходя из того, что интерфейсы примеров, специфичные для задач, оставляют программистам необходимость понимать найденный пример кода, и поэтому Redprint также включает интерфейс поиска, специфичный для API. [2] Интерфейс поиска, специфичный для API, ищет соответствующие примеры и документацию, специфичные для API.

Кодекс [5]

Codex — это база знаний, которая записывает общие практики для Ruby . Использует краудсорсинговые данные разработчиков и просматривает весь код, ища шаблоны, таким образом, если кто-то кодирует странным образом, Codex дает ему знать, что он делает что-то неправильно.

Codex использует статистический анализ для обнаружения плохо написанного кода или кода, который синтаксически отличается от хорошо написанного кода, и предупреждает пользователя, аннотацию шаблонов для автоматического обнаружения общих идиом программирования и аннотирования их метаданными с использованием краудсорсинга, а также генерацию библиотек для создания пакета утилит, который инкапсулирует появляющуюся практику разработки программного обеспечения.

Кодлеты [4]

Кодлет — это блок примера кода, интерактивный вспомогательный виджет, который помогает пользователю понять и интегрировать пример.

Поиск кода Bing [7]

Bing Code Search — это расширение для Microsoft Visual Studio, разработанное командой, состоящей из людей из Visual Studio, Bing и Microsoft Research, которое позволяет разработчикам искать примеры кода и документацию из Bing непосредственно из IntelliSense .

Поиск кода Bing собирает образцы кода из MSDN, StackOverflow, Dotnetperls и CSharp411.

Кодота

Codota помогает разработчикам находить типичные примеры кода Java , анализируя миллионы фрагментов кода, доступных на таких сайтах, как GitHub и StackOverflow . Codota ранжирует эти примеры по таким критериям, как общность шаблонов кодирования, достоверность источника и ясность кода. Плагин Codota для IDE IntelliJ IDEA и Android Studio позволяет разработчикам получать примеры кода для использования API Java и Android, не покидая редактор.

UpCodeIn

UpCodeIn — это поисковая система исходного кода, которая позволяет разработчикам находить и повторно использовать компоненты программного обеспечения из Интернета. Уникальной особенностью UpCodeIn по сравнению с другими поисковыми системами исходного кода является ее способность находить код для элемента синтаксиса, например, вы можете найти методы с определенным типом параметра, аннотации, переменные. UpCodeIn понимает синтаксис многих языков программирования, таких как Java, JavaScript, Python и C#.

Смотрите также

Ссылки

  1. ^ abcde 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 . стр. 1193–1996. doi :10.1145/2212776.2212421. ISBN 9781450310161. S2CID  17748945.
  2. ^ abcdef Bhardwaj, Anant; Luciano, Date; Klemmer, Scott (2011). "Redprint". Труды 24-го ежегодного симпозиума ACM, посвященного программному обеспечению и технологиям пользовательского интерфейса . С. 21–22. doi :10.1145/2046396.2046408. ISBN 9781450310147. S2CID  23031454.
  3. ^ abcd Брандт, Джоэл; Го, Филипп; Левенштейн, Джоэл; Дончева, Мира; Клеммер, Скотт (2009). «Два исследования оппортунистического программирования». Труды конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 1589–1598. doi :10.1145/1518701.1518944. ISBN 9781605582467. S2CID  2907348.
  4. ^ ab Oney, Stephen; Brandt, Joel (2012). "Codelets". Труды конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 2697–2706. doi :10.1145/2207676.2208664. ISBN 9781450310154. S2CID  9811795.
  5. ^ abc Fast, Ethan; Steffee, Daniel; Wang, Lucy; Brandt, Joel; Bernstein, Michael (2014). «Emergent, crowd-scale programming practice in IDE». Труды конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 2491–2500. CiteSeerX 10.1.1.645.4136 . doi :10.1145/2556288.2556998. ISBN  9781450324731. S2CID  2840903.
  6. ^ Либер, Томас; Миллер, Роб (2012). «Программирование со всеми». Дополнительные материалы 25-го ежегодного симпозиума ACM по программному обеспечению и технологиям пользовательского интерфейса . С. 101–102. doi :10.1145/2380296.2380342. ISBN 9781450315821. S2CID  1319863.
  7. ^ Шибан, Ала (17 февраля 2014 г.). «Введение в поиск кода Bing для C#». blogs.msdn.com . Получено 8 декабря 2014 г.

Внешние ссылки