Примерно-ориентированное программирование - это подход к разработке программного обеспечения, который помогает пользователю создавать программное обеспечение, находя небольшие примеры и преобразовывая их в более крупное целое. Этому подходу могут помочь инструменты, которые позволяют интегрированной среде разработки (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]
Кодекс - это база знаний, в которой записаны общие методы работы с Ruby . Использует краудсорсинговые данные от разработчиков и просматривает весь код в поисках шаблонов, таким образом, если кто-то кодирует странным образом, Codex дает им понять, что они делают что-то не так.
Кодекс использует статистический анализ для поиска плохо написанного кода или кода, который синтаксически отличается от хорошо написанного кода, и предупреждения пользователя, аннотации шаблонов для автоматического обнаружения общих идиом программирования и аннотирования их метаданными с помощью краудсорсинга и создания библиотеки для создания пакета служебных программ. который инкапсулирует новую практику программного обеспечения.
- Кодлеты [4]
Кодлет - это блок кода примера, интерактивный вспомогательный виджет, который помогает пользователю понять и интегрировать пример.
- Поиск кода Bing [7]
Bing Code Search - это расширение для Microsoft Visual Studio, разработанное командой, состоящей из людей из Visual Studio, Bing и Microsoft Research, которое позволяет разработчикам искать примеры кода и документацию в Bing непосредственно из IntelliSense .
Bing Code Search собирает образцы кода из 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 #.
Смотрите также
Рекомендации
- ^ a b c d e Скаффиди, Кристофер; Брандт, Джоэл; Бернетт, Маргарет ; Голубь, Андрей; Майерс, Брэд (2012). SIG: программирование для конечного пользователя . CHI '12 Расширенные рефераты по человеческому фактору в вычислительных системах . С. 1193–1996. DOI : 10.1145 / 2212776.2212421 . ISBN 9781450310161.
- ^ а б в г д е Бхардвадж, Анант; Лучано, Дата; Клеммер, Скотт (2011). Redprint: интеграция специфичного для API интерфейса отображения «мгновенного примера» и «мгновенной документации» в IDE . Материалы 24-го ежегодного симпозиума ACM по программному обеспечению и технологиям пользовательского интерфейса . С. 21–22. DOI : 10.1145 / 2046396.2046408 . ISBN 9781450310147.
- ^ а б в г Брандт, Джоэл; Го, Филипп; Левенштейн, Джоэл; Дончева, Мира; Клеммер, Скотт (2009). Два исследования оппортунистического программирования: чередование поиска в сети, обучения и написания кода . Труды конференции SIGCHI по человеческому фактору в вычислительных системах . С. 1589–1598. DOI : 10.1145 / 1518701.1518944 . ISBN 9781605582467.
- ^ а б Оней, Стивен; Брандт, Джоэл (2012). Кодлеты: связывание интерактивной документации и примеров кода в редакторе . Труды конференции SIGCHI по человеческому фактору в вычислительных системах . С. 2697–2706. DOI : 10.1145 / 2207676.2208664 . ISBN 9781450310154.
- ^ а б в Быстро, Итан; Стеффи, Дэниел; Ван, Люси; Брандт, Джоэл; Бернштейн, Майкл (2014). Новая массовая практика программирования в среде IDE . Труды конференции SIGCHI по человеческому фактору в вычислительных системах . С. 2491–2500. CiteSeerX 10.1.1.645.4136 . DOI : 10.1145 / 2556288.2556998 . ISBN 9781450324731.
- ^ Либер, Томас; Миллер, Роб (2012). Программирование со всеми: ужесточение цикла обратной связи "копирование-изменение-публикация" . Дополнительные материалы 25-го ежегодного симпозиума ACM по программному обеспечению и технологиям пользовательского интерфейса . С. 101–102. DOI : 10.1145 / 2380296.2380342 . ISBN 9781450315821.
- ^ Шибан, штат Алабама. «Знакомство с поиском Bing-кода для C #» . blogs.msdn.com . Проверено 8 декабря 2014 .
Внешние ссылки
- Джоэл Брандт Talk