¿Podría crear un programa de inteligencia artificial que analice las bases de código y encuentre errores para las personas que son relativamente nuevas en la programación?

Creo que para encontrar errores de estilo “recién llegados”, sí, creo que sería razonablemente sencillo.

Los errores de los recién llegados son cosas como puntos y comas faltantes, espacios en los lugares equivocados, etc. Creo que podría hacer un programa para encontrar cosas como esas con bastante facilidad. Swift tiene algunas características agradables como esa, si se equivoca el nombre de la variable, el compilador notará que hay variables * similares * definidas y las sugerirá, es bastante bueno.

Es casi imposible encontrar otros errores, porque para encontrar un montón de errores necesitas conocer la intención del código, que no puedes saber de manera razonable.

Ejemplo rápido:

Tarea asincrónica pública <List > listFolder ()
{

var resp = (lista de espera ());
List lout = resp.Files;

lout.RemoveAll (o => o.FileName == “.” || o.FileName == “…”);

volver resp;
}

OK, podemos leer este código y determinar qué está haciendo, pero solo porque tenemos una idea de lo que significa “.” Y “…” en el contexto de un sistema de archivos. Espera … Espera, ¿no debería “…” ser “…”? Sí, debería, pero ¿cómo puede saber eso una computadora? ¿Cómo sabe que no quiero estar buscando “…” y no “…”?

Sin que la IA sepa lo que se supone que debe hacer el método, no podrá encontrar un montón de errores.

Incluso cosas simples como “FileName” significa algo para usted y para mí, pero no lo será para una computadora. Podríamos enseñar cosas de IA como esa, pero la propiedad podría llamarse fácilmente “Badgers” no “FileName” y el código seguiría funcionando si configuro mis clases para incluir la propiedad “Badgers”.

Entonces, para cosas simples, como errores de sintaxis comunes, errores comunes como dejar un “i ++” fuera de un ciclo while, o algo así, entonces sí, podemos hacer eso. De hecho, la mayoría de los IDE buenos ya lo hacen, Visual Studio, NetBeans, etc. producirán un error si se supone que su método devuelve algo, pero puede que no, es decir, si no todas las rutas de código devuelven un valor.

Pero para el tipo de errores que encuentras en el software del mundo real, diría que es casi imposible.

Como se indicó, hay muchas herramientas disponibles para encontrar frutas que cuelgan poco, como errores, por ejemplo, variables utilizadas antes de la inicialización, pérdidas de memoria, etc., pero la mayoría de los programas son bastante complicados y una IA no es un lector de mente.

Si pudieras crear una IA de este tipo donde pudieras cumplir con todos los requisitos y usarla para identificar errores, entonces me parece que podría escribir el programa en sí.

Ya hay muchas herramientas de cobertura que buscan posibles pérdidas de memoria y problemas de seguridad. Sin embargo, es poco probable que una herramienta de este tipo detecte errores lógicos.