<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d9665506\x26blogName\x3dMi+blog!\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://zirrus.blogspot.com/search\x26blogLocale\x3des_ES\x26v\x3d2\x26homepageUrl\x3dhttp://zirrus.blogspot.com/\x26vt\x3d-7334819199369966265', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

martes, febrero 22, 2005

"Si os copiais lo voy a saber..."

...No os copieis porque tengo una aplicación que me dice al 99.9% si una práctica esta copiada de otra...

Con eso quieren asustarnos muchos profesores cuando explican cómo deben realizarse las prácticas de la asignatura.

Despues de haberme examinado de Procesadores de Lenguaje (¡y haberla aprobado!) y de haber leido algunas cosillas, he descubierto cómo es posible que se pueda descubrir cuándo unas prácticas son copia de otras. Antes que nada aclarar que esto solo va referido a prácticas de programación, en las cuales se debe implementar algún algoritmo, funcionalidad o derivado. Os explico:

La verdad es que es muy fácil (bueno, relativamente fácil). La aplicación anticopia simplemente debe analizar el codigo fuente de las dos prácticas a comparar y realizar el análisis léxico y sintáctico. De cada una de ellas obtiene el árbol sintáctico formado por los elementos estructurales (tokens) esenciales de la gramática. Finalmente se comparan dichos árboles, y según el grado de adecuación (o parentesco) que haya entre los dos, se puede obtener el grado de copia.

Precisamente porque se trabaja con el árbol sintáctico y sus elementos estructurales, da igual si las variables varían en nombre (en el árbol solo aparece el token variable) o si hemos puesto mas o menos comentarios (se deshechan durante el análisis léxico, ni siquiera entran en el sintactico, y menos en el árbol). El cambiar el orden de las instrucciones puede cambiar un poco el árbol, pero no sustancialmente, y al fin y al cabo, las instrucciones principales (bucles, condicionales...) van a seguir siendo iguales.

Siento haber sido tan técnico en la explicación y espero que sea mas o menos entendible por los lectores informáticos, que al fin y al cabo, son los afectados.

Nos vemos!