Sí, puedes, y sucederá bastante pronto.
Todo buen ingeniero de software es una “máquina de aprendizaje”, porque tratamos de mejorar las bases de código existentes para seguir mejor los estándares y las mejores prácticas (refactorización).
Nosotros, como humanos y programadores, tendemos a pensar que la mayoría del trabajo de programación es muy complejo y creativo, pero eso no es realmente cierto. Wikipedia ya tiene bots que analizan artículos y sugieren edtis basados en reglas; entonces los humanos aprueban o rechazan las sugerencias. Lo mismo sucederá con GitHub. Solo tenemos que hacer un bot que …
- ¿Qué pasos de procesamiento previo recomendaría para un aprendizaje automático exitoso en un conjunto de datos MNIST?
- ¿Qué excelente proyecto universitario podemos construir usando Machine Learning para obtener una gran exposición?
- ¿El libro "Aprendizaje automático: una perspectiva algorítmica" aborda la implementación en profundidad?
- Cómo migrar modelos de aprendizaje automático que están escritos en diferentes lenguajes de programación
- Si no tengo experiencia en aprendizaje automático o investigación computacional, pero tengo antecedentes estadísticos, ¿es posible hacer investigación en esta área en la escuela de posgrado o hacer una pasantía?
Utilizar funciones de aprendizaje no supervisadas
Los estándares modernos de uso de IDE de programación para sintaxis automática y sugerencias de refactorización. Estos se basan en especificaciones sobre el lenguaje de programación, por ejemplo, el proyecto PSR (Índice de recomendaciones estándar de PHP).
Los humanos son malos siguiendo las instrucciones, pero las computadoras lo hacen bastante bien.
También hay muchas otras herramientas que analizan la calidad del código (Herramientas de análisis de código fuente) y producen resultados en un formato legible por máquina.
Esto creará la base básica de la Red de aprendizaje Deep Q (lea esta página en nature.com sobre Google DeepMind) y proporcionará significado sobre el código fuente a través del cual la máquina comienza a ver el mundo.
Luego, el aprendizaje no supervisado construirá nuevos conceptos sobre los estándares existentes para mejorar el rendimiento de los algoritmos de aprendizaje al aumentar la velocidad de iteración (cuando la máquina usa conceptos de nivel superior, requiere menos velocidad de computación para llegar a las mismas conclusiones, consulte el video de este artículo Aprendizaje profundo y aprendizaje de funciones sin supervisión – Andrew Ng).
Una máquina nunca puede aprender a escribir código, pero aprenderá muy fácilmente a copiar / pegar y encontrar / reemplazar secciones de códigos de una manera muy creativa y efectiva por las mismas reglas que hacen que el código se compile y pueda leerse para los humanos. siguiendo las normas.
Para que un programa se programe, además del aprendizaje de funciones no supervisado, necesita …
Utilice el aprendizaje por refuerzo
Deep Q Learning Networks también necesita un mecanismo de recompensa; en el caso de Google DeepMind como se describe en esta página en nature.com, el mecanismo de recompensa es “no terminar en la pantalla Game Over”.
En la programación hay muchos mecanismos de recompensa y una gran cantidad de datos existentes en GitHub, lo que proporcionará un buen conjunto de aprendizaje para el algoritmo y esto hace que la programación asistida por humanos sea un problema de aprendizaje automático “mucho más fácil” que jugar un videojuego:
- Cuántas estrellas, relojes y horquillas tiene un proyecto en GitHub, describe muy bien lo útil que es el proyecto OpenSource
- Las pruebas deben ejecutarse, cuando las pruebas fallan, la máquina se ha programado en un “Juego sobre pantalla”
- En GitHub puede hacer que la Máquina contribuya a su bifurcación de un proyecto una vez cada hora más o menos; Si rechaza la solicitud de extracción, la máquina considerará esto como un “Juego terminado” e intentará nuevamente. Si acepta la solicitud de extracción, también puede usar metadatos en la sección de comentarios (por ejemplo, @codeQualityRewardPoinst: inserte Integer aquí) para recompensar la sugerencia de edición de código más fuerte.
- Este enfoque también podría mejorarse a cualquier comentario de GitHub; necesita definir buenas secciones del código y luego la Máquina usará la API de GitHub para leer las recompensas (por ejemplo, comente así @codeLines: 11-30, @codeQualityRewardPoints: 110)
El futuro de la programación
GitHub proporciona una muy buena plataforma para utilizar máquinas de aprendizaje para mejorar secciones de código. Bifurca un proyecto, agrega comentarios a las confirmaciones que guían a la máquina sobre lo que desea lograr, luego escribe una prueba que falla y espera a que la máquina encuentre una solución.
Hoy, la mayoría de los programadores pueden encontrar la mejor solución más rápido que las computadoras; pero eso no importa, la computadora aprenderá constantemente y puede mejorar las soluciones creadas por el hombre mientras el programador duerme, come, bebe café o conversa con un amigo. Las computadoras también son bastante baratas en comparación con los humanos; Con 50,000 € al año, obtienes bastante poder de programación computacional.
Nunca me gustó realmente escribir el código, me gustó el proceso de diseño.
Creé un proyecto de GitHub para esta idea: ¡vamos a llamarlo PimpMyCode! Comenzaré a escribir especificaciones para el MVP ahora mismo.
https://github.com/ThatGuyFromFi…