La programación centrada en ejemplos es un enfoque para el desarrollo de software que ayuda al usuario a crear software localizando y modificando pequeños ejemplos para formar un conjunto mayor. Este enfoque puede verse facilitado por herramientas que permiten que un entorno de desarrollo integrado (IDE) muestre ejemplos de código o documentación de API relacionados con los comportamientos de codificación que ocurren en el IDE. A menudo se emplean tácticas de "préstamo" de fuentes en línea, por parte de programadores que salen del IDE para solucionar problemas. [ 1 ] El propósito de la programación centrada en ejemplos es reducir el tiempo que los desarrolladores dedican a buscar en línea. Idealmente, en la programación centrada en ejemplos, la interfaz de usuario se integra con ejemplos del módulo de ayuda para brindar asistencia sin que los programadores salgan del IDE. La idea de este tipo de "documentación instantánea" es reducir las interrupciones de programación. [ 2 ] El uso de esta función no se limita a los expertos, ya que algunos principiantes obtienen los beneficios de una base de conocimientos integrada, sin recurrir a búsquedas o navegación web frecuentes. [ 1 ]
Fondo
El crecimiento de la web ha transformado radicalmente la forma de desarrollar software. El enorme aumento de recursos de información y la democratización del acceso y la distribución son factores clave en el desarrollo de la programación centrada en ejemplos para el usuario final . Los tutoriales están disponibles en la web en cuestión de segundos, ampliando así el abanico de creadores: diseñadores, científicos o aficionados. En 2012, 13 millones de personas programaban como parte de su trabajo, pero solo tres millones eran programadores profesionales. La proliferación de repositorios de código en línea, documentación, blogs y foros permite a los programadores crear aplicaciones de forma iterativa, buscando, modificando y combinando ejemplos.
El uso de la web es fundamental para un enfoque oportunista de la programación, priorizando la velocidad y la facilidad de desarrollo sobre la robustez y la mantenibilidad del código. La web es ampliamente utilizada por programadores, tanto principiantes como expertos, para prototipar , generar ideas y descubrir. [ 3 ]
Para desarrollar software rápidamente, los programadores suelen combinar diversos sistemas existentes. Como parte de este proceso, a menudo deben buscar componentes adecuados y adquirir nuevas habilidades, por lo que comenzaron a utilizar la web con este fin.
Al desarrollar software, los programadores dedican el 19 % de su tiempo de programación a la web. [ 3 ] Las personas utilizan la web para realizar diversas actividades. Las intenciones detrás del uso de la web varían en forma y tiempo. Los programadores dedican la mayor parte del tiempo a aprender un concepto nuevo, el menor tiempo lo dedican a recordar detalles de un concepto que ya conocen, y entretanto utilizan la web para aclarar sus conocimientos existentes. [ 3 ]
La programación centrada en ejemplos intenta resolver el problema de tener que salir del entorno de desarrollo para buscar referencias y ejemplos durante la programación. Por ejemplo, tradicionalmente, para encontrar documentación de API y código de ejemplo, los programadores visitan el sitio web de referencia del lenguaje o acuden a los motores de búsqueda y realizan consultas específicas de la API. [ 2 ] Al intentar aprender algo nuevo, los programadores utilizan tutoriales web para un aprendizaje justo a tiempo. Además, los programadores optan deliberadamente por no memorizar sintaxis complicadas y, en su lugar, utilizan la web como una memoria externa a la que pueden acceder cuando la necesiten. [ 3 ]
Beneficios
Algunos de los beneficios de la programación centrada en ejemplos incluyen:
Programación emergente
La emergencia puede definirse como un proceso mediante el cual surgen entidades, patrones y regularidades de mayor tamaño a través de interacciones entre entidades más pequeñas o simples que, por sí mismas, no presentan dichas propiedades. La gran cantidad de código disponible públicamente en la web puede utilizarse para encontrar este tipo de patrones y regularidades. Al modelar cómo los desarrolladores utilizan los lenguajes de programación en la práctica, se pueden crear algoritmos para encontrar modismos comunes y detectar código improbable. [ 5 ]
Este proceso está limitado por la cantidad de código que los programadores están dispuestos y son capaces de compartir. Dado que la gente escribe más código del que comparte en línea, se produce una gran cantidad de esfuerzo duplicado. Para aprovechar plenamente el poder de la colaboración colectiva, se debería reducir el esfuerzo necesario para publicar código en línea. [ 6 ]
Ejemplos
- Plano [ 1 ]
Blueprint es un complemento para Adobe Flash Builder que enriquece automáticamente las consultas con contexto de código, presenta una vista de los resultados de búsqueda centrada en el código, integra la experiencia de búsqueda en el editor y mantiene un vínculo entre el código copiado y su fuente. Está diseñado para ayudar a los programadores con las búsquedas web y permitirles recordar fácilmente detalles olvidados y aclarar conocimientos existentes.
Muestra resultados de un conjunto variado de páginas web, lo que permite a los usuarios navegar y evaluar rápidamente los resultados de búsqueda.
Blueprint es específico para cada tarea, lo que significa que buscará ejemplos específicos en el lenguaje de programación.
- Redprint [ 2 ]
Redprint es un entorno de desarrollo basado en navegador para PHP que integra interfaces de visualización de "ejemplos instantáneos" y "documentación instantánea" específicas para cada API. El prototipo del IDE fue desarrollado por Anant Bhardwaj , entonces en la Universidad de Stanford, bajo la premisa de que las interfaces de ejemplos específicos para cada tarea obligan a los programadores a comprender el código de ejemplo encontrado; por lo tanto, Redprint también incluye una interfaz de búsqueda específica para cada API. [ 2 ] Esta interfaz de búsqueda específica para cada API busca ejemplos y documentación relevantes para cada API.
- Códice [ 5 ]
Codex es una base de conocimientos que registra las prácticas comunes de Ruby . Utiliza datos recopilados por desarrolladores y analiza todo el código en busca de patrones, de modo que si alguien programa de forma inusual, Codex le avisa de que está cometiendo un error.
Codex utiliza análisis estadístico para encontrar código mal escrito o código sintácticamente diferente del código bien escrito y advertir al usuario; anotación de patrones para descubrir automáticamente modismos de programación comunes y anotarlos con metadatos mediante crowdsourcing; y generación de bibliotecas para construir un paquete de utilidades que encapsula las prácticas de software emergentes.
- Codelets [ 4 ]
Un codelet es un bloque de código de ejemplo, un widget interactivo que ayuda al usuario a comprender e integrar el ejemplo.
- Búsqueda de códigos Bing [ 7 ]
Bing Code Search es una extensión para Microsoft Visual Studio desarrollada por un equipo formado por personas de Visual Studio, Bing y Microsoft Research que permite a los desarrolladores buscar ejemplos de código y documentación de Bing directamente desde IntelliSense .
Bing Code Search recopila sus ejemplos de código de MSDN, StackOverflow, Dotnetperls y CSharp411.
- Código
Codota ayuda a los desarrolladores a encontrar ejemplos de código Java típicos analizando millones de fragmentos de código disponibles en sitios como GitHub y StackOverflow . Codota clasifica estos ejemplos según criterios como la frecuencia de los patrones de codificación, la credibilidad del origen y la claridad del código. El complemento de Codota para los IDE IntelliJ IDEA y Android Studio permite a los desarrolladores obtener ejemplos de código para usar las API de Java y Android sin tener que salir del editor.
- UpCodeIn
UpCodeIn es un buscador de código fuente que permite a los desarrolladores encontrar y reutilizar componentes de software de internet. Una característica única de UpCodeIn, en comparación con otros buscadores de código fuente, es su capacidad para encontrar código a partir de elementos sintácticos específicos; por ejemplo, permite encontrar métodos con tipos de parámetros, anotaciones y variables concretas. UpCodeIn comprende la sintaxis de muchos lenguajes de programación como Java, JavaScript, Python y C#.
Véase también
Referencias
- 1 2 3 4 5 Scaffidi, Christopher; Brandt, Joel; Burnett, Margaret ; Dove, Andrew; Myers, Brad (2012). "SIG: Programación para el usuario final". CHI '12 Resúmenes extendidos sobre factores humanos en sistemas informáticos . págs. 1193–1996 . doi : 10.1145/2212776.2212421 . ISBN 9781450310161. S2CID 17748945 .
- 1 2 3 4 5 6 Bhardwaj, Anant; Luciano, Date; Klemmer, Scott (2011). "Redprint". Actas del 24.º simposio anual adjunto de la ACM sobre software y tecnología de interfaz de usuario . págs. 21–22 . doi : 10.1145/2046396.2046408 . ISBN 9781450310147. S2CID 23031454 .
- 1 2 3 4 Brandt, Joel; Guo, Philip; Lewenstein, Joel; Dontcheva, Mira; Klemmer, Scott (2009). «Dos estudios de programación oportunista». Actas de la Conferencia SIGCHI sobre Factores Humanos en Sistemas Informáticos . págs. 1589–1598 . doi : 10.1145/1518701.1518944 . ISBN 9781605582467. S2CID 2907348 .
- 1 2 Oney, Stephen; Brandt, Joel (2012). «Codelets». Actas de la Conferencia SIGCHI sobre Factores Humanos en Sistemas Informáticos . págs. 2697–2706 . doi : 10.1145/2207676.2208664 . ISBN 9781450310154. S2CID 9811795 .
- 1 2 3 Fast, Ethan; Steffee, Daniel; Wang, Lucy; Brandt, Joel; Bernstein, Michael (2014). "Práctica de programación emergente a gran escala en el IDE". Actas de la Conferencia SIGCHI sobre Factores Humanos en Sistemas Informáticos . págs. 2491–2500 . CiteSeerX 10.1.1.645.4136 . doi : 10.1145/2556288.2556998 . ISBN 9781450324731. S2CID 2840903 .
- ↑ Lieber, Thomas; Miller, Rob (2012). «Programación con todo el mundo». Actas complementarias del 25.º simposio anual de la ACM sobre software y tecnología de interfaz de usuario . págs. 101-102 . doi : 10.1145/2380296.2380342 . ISBN 9781450315821. S2CID 1319863 .
- ↑ Shiban, Ala (17 de febrero de 2014). "Presentación de la búsqueda de código Bing para C#" . blogs.msdn.com . Consultado el 8 de diciembre de 2014 .
Enlaces externos
- Charla de Joel Brandt
- Interacción persona-ordenador
- Programación informática
- Características del software
- Diseño de software