Примерно-ориентированное программирование
Программирование, ориентированное на примеры, — это подход к разработке программного обеспечения , который помогает пользователю создавать программное обеспечение, находя и изменяя небольшие примеры в единое целое. В этом подходе могут помочь инструменты, которые позволяют интегрированной среде разработки (IDE) показывать примеры кода или документацию API , связанную с поведением кодирования, происходящим в IDE. Тактика «заимствования» часто используется из интернет-источников, когда программисты покидают IDE для устранения неполадок. [1] Целью программирования, ориентированного на примеры, является сокращение времени, затрачиваемого разработчиками на поиск в Интернете. В идеале при программировании, ориентированном на примеры, пользовательский интерфейс интегрируется с примерами справочных модулей, чтобы программистам не приходилось покидать IDE. Идея этого типа «мгновенной документации» состоит в том, чтобы уменьшить перерывы в программировании. [2] Использование этой функции доступно не только экспертам, поскольку некоторые новички могут воспользоваться преимуществами интегрированной базы знаний, не прибегая к частому поиску или просмотру веб-страниц. [1]
Фон
[ редактировать ]Рост Интернета фундаментально изменил способ создания программного обеспечения. Огромное увеличение информационных ресурсов и демократизация доступа и распространения являются основными факторами в разработке ориентированных на примеры программ для развития конечных пользователей . Учебные пособия доступны в Интернете за считанные секунды, что расширяет круг тех, кто их пишет: дизайнеров, ученых или любителей. К 2012 году 13 миллионов программистов являются частью их работы, но только три миллиона из них являются настоящими профессиональными программистами.Распространенность онлайн-хранилищ кода, документации, блогов и форумов позволяет программистам создавать приложения, итеративно ища, изменяя и комбинируя примеры.
Использование Интернета является неотъемлемой частью оппортунистического подхода к программированию, когда упор делается на скорость и простоту разработки, а не на надежность и удобство сопровождения кода. Программисты, новички и эксперты широко используют Интернет для создания прототипов , идей и открытий. [3]
Чтобы быстро разработать программное обеспечение, программисты часто объединяют различные существующие системы. В рамках этого процесса программистам часто приходится искать подходящие компоненты и осваивать новые навыки, поэтому они начали использовать для этой цели Интернет.
При разработке программного обеспечения программисты проводят 19% своего времени в Интернете. [3] Люди используют Интернет для выполнения нескольких различных видов деятельности. Намерения, стоящие за использованием Интернета, различаются по форме и затраченному времени. Программисты тратят большую часть времени на изучение новой концепции, меньше всего времени тратят на напоминание себе о деталях уже известной концепции, а в перерывах между ними они используют Интернет для уточнения своих существующих знаний. [3]
Программирование, ориентированное на примеры, пытается решить проблему необходимости выходить из среды разработки для поиска ссылок и примеров во время программирования. Например, традиционно, чтобы найти документацию по API и пример кода, программисты либо посещают справочный веб-сайт по языку, либо обращаются к поисковым системам и делают запросы, специфичные для API. [2] Пытаясь изучить что-то новое, программисты используют веб-уроки для оперативного обучения. Кроме того, программисты сознательно предпочитают не запоминать сложный синтаксис и вместо этого используют Интернет как внешнюю память, к которой можно получить доступ при необходимости. [3]
Преимущества
[ редактировать ]Некоторые из преимуществ примерно-ориентированного программирования включают в себя:
- Предотвращение ошибок использования [4] [5]
- Сокращение времени на поиск примеров кода [1] [2]
- Сокращение времени на поиск документации по API [2]
- Уточнение имеющихся знаний и напоминание забытых деталей [1]
Экстренное программирование
[ редактировать ]Эмерджентность можно определить как процесс, в ходе которого более крупные сущности, закономерности и закономерности возникают в результате взаимодействия между меньшими или более простыми сущностями, которые сами по себе не обладают такими свойствами. Обширный объем кода, общедоступный в сети, можно использовать для обнаружения закономерностей и закономерностей такого типа. Моделируя то, как разработчики используют языки программирования на практике, можно создать алгоритмы для поиска общих идиом и обнаружения маловероятного кода. [5]
Этот процесс ограничен объемом кода, которым программисты хотят и могут поделиться. Поскольку люди пишут больше кода, чем выкладывают в Интернете, возникает много дублирующихся усилий. Чтобы в полной мере использовать мощь толпы, необходимо сократить усилия, необходимые для публикации кода в Интернете. [6]
Примеры
[ редактировать ]- План [1]
Blueprint — это плагин для Adobe Flash Builder , который автоматически дополняет запросы контекстом кода, представляет ориентированное на код представление результатов поиска, встраивает возможности поиска в редактор и сохраняет связь между скопированным кодом и его источником. Он разработан, чтобы помочь программистам при поиске в Интернете и позволить им легко запоминать забытые детали и уточнять имеющиеся знания.
Он отображает результаты с разнообразного набора веб-страниц, позволяя пользователям быстро просматривать и оценивать результаты поиска.
Blueprint ориентирован на конкретную задачу, то есть он будет специально искать примеры на языке программирования.
- Редпринт [2]
Redprint — это среда разработки на основе браузера для PHP , которая объединяет специальные API-интерфейсы отображения «мгновенного примера» и «мгновенной документации». Прототип IDE был разработан Анантом Бхардваджем , работавшим тогда в Стэнфордском университете , исходя из того, что примеры интерфейсов для конкретных задач заставляют программистов понимать найденный пример кода, и поэтому Redprint также включает интерфейс поиска для конкретного API. [2] Интерфейс поиска по API ищет соответствующие примеры и документацию по API.
- Кодекс [5]
Кодекс — это база знаний, в которой записаны общие практики для Ruby . Использует краудсорсинговые данные от разработчиков и просматривает весь код в поисках закономерностей. Таким образом, если кто-то пишет код странным образом, Codex сообщит ему, что он делает что-то не так.
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 для IDE IntelliJ IDEA и Android Studio позволяет разработчикам получать примеры кода для использования API Java и Android, не выходя из редактора.
- UpCodeIn
UpCodeIn — это поисковая система исходного кода, которая позволяет разработчикам находить и повторно использовать программные компоненты из Интернета. Уникальной особенностью UpCodeIn по сравнению с другими поисковыми системами исходного кода является ее способность находить код для элемента синтаксиса, например, вы можете найти методы с определенным типом параметра, аннотацией, переменными. UpCodeIn понимает синтаксис многих языков программирования, таких как Java, JavaScript, Python и C#.
См. также
[ редактировать ]- Появление
- Список тем взаимодействия человека и компьютера
- Пользовательский опыт
- Дизайн пользовательского опыта
- Удобство веб-юзабилити
- Краудсорсинг
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Скаффиди, Кристофер; Брандт, Джоэл; Бернетт, Маргарет ; Голубь, Эндрю; Майерс, Брэд (2012). «SIG: Программирование конечного пользователя». CHI '12 Расширенные тезисы по человеческому фактору в вычислительных системах . стр. 1193–1996. дои : 10.1145/2212776.2212421 . ISBN 9781450310161 . S2CID 17748945 .
- ^ Jump up to: а б с д и ж Бхардвадж, Анант; Лучано, Дате; Клеммер, Скотт (2011). «Редпринт». Материалы 24-го ежегодного симпозиума ACM по программному обеспечению и технологиям пользовательского интерфейса . стр. 21–22. дои : 10.1145/2046396.2046408 . ISBN 9781450310147 . S2CID 23031454 .
- ^ Jump up to: а б с д Брандт, Джоэл; Го, Филип; Левенштейн, Джоэл; Дончева, Мира; Клеммер, Скотт (2009). «Два исследования оппортунистического программирования». Материалы конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 1589–1598. дои : 10.1145/1518701.1518944 . ISBN 9781605582467 . S2CID 2907348 .
- ^ Jump up to: а б Оней, Стивен; Брандт, Джоэл (2012). «Коделеты». Материалы конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 2697–2706. дои : 10.1145/2207676.2208664 . ISBN 9781450310154 . S2CID 9811795 .
- ^ Jump up to: а б с Быстро, Итан; Стеффи, Дэниел; Ван, Люси; Брандт, Джоэл; Бернштейн, Майкл (2014). «Новая практика массового программирования в IDE». Материалы конференции SIGCHI по человеческому фактору в вычислительных системах . стр. 2491–2500. CiteSeerX 10.1.1.645.4136 . дои : 10.1145/2556288.2556998 . ISBN 9781450324731 . S2CID 2840903 .
- ^ Либер, Томас; Миллер, Роб (2012). «Программирование со всеми». Дополнительные материалы 25-го ежегодного симпозиума ACM по программному обеспечению и технологиям пользовательского интерфейса . стр. 101–102. дои : 10.1145/2380296.2380342 . ISBN 9781450315821 . S2CID 1319863 .
- ^ Шибан, Алабама, «Представляем поиск по коду Bing для C#» . blogs.msdn.com . Проверено 8 декабря 2014 г.