🇪🇸 ¿Puedes explicar "Turing Complete" y es necesario? | CH AMA 16 Jun 2020

:es: Transcripción al español de un fragmento de “Surprise AMA 06/16/2020”

Del minuto 00:41:30 al 00:48:15 del video original

Publicado en el canal de Youtube de Charles Hoskinson el 16 de Junio de 2020

Enlace a la versión doblada al español


¿Puedes explicar “turing complete” y es necesario?

No, no es necesario, puedes usar DSLs que son Turing incompletos si lo deseas para ejecutar contratos inteligentes o contratos para propósitos especiales, pero turing complete es agradable porque tienes un sentido de generalísimo con tu sistema. Ahora, la mayoría de estos sistemas son casi Turing completo porque están medidos, así que está casi ahí pero no del todo y básicamente la idea es que te puedes expresar en tu idioma, tienes un nivel suficiente de expresividad en tu lenguaje para modelar casi cualquier tipo de transacción que te gustaría, ahora si esa transacción es efectiva en costo o si esa transacción es útil para tu contexto es completamente contextual a la infraestructura de la máquina virtual subyacente que estás usando y el modelo computacional que estás usando, pero en general es deseable tener un sistema Turing Complete, porque tienes más flexibilidad. Pero hay muchos obstáculos, como por ejemplo, no puedes obtener una prueba de que el código terminará, se llama el problema de detención, así que lo que tienes que hacer es usar un sistema de medición para que se te agoten los recursos para eso, pero luego introduciendo un sistema de medición con tus cómputos, introduces un gran grado de potencial complejidad y vectores de ataque, es por lo que Ethereum tiene que ser reajustado una y otra vez en cada bifurcación dura, porque siempre hay algo que va mal.

Pero si estás realmente interesado hay documentos donde realmente muestran que parte de problema es falso y entonces te animo a que leas el libro “Annotated Turing” de Charles Pittsalt, hace un gran trabajo básicamente rompiendo los preliminares detrás del documento Turing y luego realmente yendo a través de todo el documento, párrafo por párrafo con notaciones que explican ¿qué es una máquina Turing y por qué la prueba hace lo que hace? Lo que Turing estaba tratando de hacer junto con Alonzo Church y Kurt Gödel y todos lo hicieron, Church hizo el cálculo lambda y Gödel usó funciones recursivas para esto, pero todos son enfoques isomórficos, pero básicamente lo que Turing estaba intentando hacer fue resolver un problema que David Hilbert había presentado, básicamente las matemáticas necesitan tener cuatro propiedades para que sea un buen sistema, o al menos esta era la creencia a finales del siglo 19 y principios del 20 y en las conferencias matemáticas internacionales en 1900 esto fue como la gran cosa que estaban empujando con Bertrand Russell y Alfred North Whitehead y todos estos otros lógicos como Gottlob Frege, etc. Pero básicamente el concepto es que primero te gustaría tener un sistema que es independiente y consistente, independiente significa que todos los axiomas de tu sistema, las cosas que asumes como verdaderas sin probar que son verdaderas, esos axiomas básicamente son todos necesarios y no se prueban mutuamente, lo que significa que uno se puede derivar de una colección de otros. Quiero decir, esto no es obvio como la geometría Euclidiana durante mucho tiempo, la gente tenía curiosidad por saber si el postulado paralelo era independiente o podría ser derivado de otros axiomas, la gente pasó bastante tiempo pensando sobre ello, más de dos mil años, resulta que lo es.

Y luego te gustaría tener consistencia, así que no quieres una situación en la que asumiendo dos cosas o más o N cosas ser ciertas, que el sistema básicamente estará violándose a sí mismo, algo que sería verdadero y falso a la vez o algo así, debido a los axiomas que tienes en el sistema. Bien, así que las matemáticas como los axiomas que construimos para la teoría de conjuntos, que los matemáticos construyeron, son sólidos desde la perspectiva de que son independientes de lo que creemos inconsistente. Donde te encuentras con algunos problemas es en la integridad y deseabilidad, integridad es la propiedad de decir “si tengo alguna declaración arbitraria de la que me gustaría derivar el valor verdadero” llamamos a esto WFF, fórmula bien formada, así que es una proposición de cosas lógicas conectadas, entonces deberías ser capaz de encontrar una reducción a eso para los axiomas de las matemáticas, así que deberías ser capaz de decir que con ese WFF tienes suficiente información y matemáticas para probarlo. Ahora, si tu sistema no tiene suficientes axiomas, significando que existen declaraciones en el sistema que no pueden ser demostradas dentro del sistema, se llama un sistema incompleto. Había un muy famoso matemático llamado Kirk Erdal que como estudiante de posgrado estudió este problema y más tarde en su carrera descubrió que a través del teorema de incompletitud Erdal que no sólo es matemáticamente incompleto, nunca se puede hacer completo con la construcción de las leyes de las matemáticas, está este requisito de axioma inductivo donde siempre se puede construir una declaración fuera del sistema como consecuencia de los axiomas anteriores, que no pueden ser probados con ellos, siempre tendrías que añadir otro y entonces al agregarlo puedes construir otra declaración y utilizar todas estas ideas inteligentes como codificaciones de Gödel, etc para hacer eso.

Así que eso fue bastante deprimente como que “oye, puedes pasar tu vida como matemático, pero estás trabajando en un sistema fundamentalmente incompleto”. No es cierto para todos los sistemas matemáticos, como la formalización de la geometría de Hilbert está completa. Pero entonces la última pregunta es la deseabilidad, así que digamos que puedes construir una máquina mágica y aquí es donde la ciencia de la computación vino y en lo que Turing estaba interesado y Church y Gödel estaban interesados. Así que podías construir una máquina mágica en la que puedes poner tu fórmula bien formada y escupiría, verdadero, falso o indeciso, lo que significa que no tienes suficiente información en el sistema para poder probarlo. Así que David Hilbert era el tipo que realmente tenía todo esto en marcha, estaba absolutamente convencido de que podrías hacer eso y lo que Turing hizo, como estudiante de posgrado, lo que fue bastante notable, es que mostró que no podía hacer eso en general y lo hizo construyendo algo llamado la máquina Turing, pero en el proceso de hacer eso, básicamente construyó los fundamentos de la ciencia de la computación moderna, que es otra cosa notable, aunque en ese momento no estaba completamente consciente de que lo que había hecho. Y las otras formulaciones de esto también son modelos alternativos de computación que se utilizan, el cálculo lambda se utiliza con Haskell por ejemplo. Así que hay mucha magia ahí, en estos sistemas y las personas que estudian eso se llaman lógicos, como que rima con magos, pero se llaman lógicos y teóricos y han habido muchos lógicos famosos a lo largo de los años, desde Cantor y Erdal y teóricos a lo largo de los años y la mayoría de ellos se vuelven locos, Erdal se volvió loco, él se murió de hambre porque pensaba que la gente estaba envenenando su comida, era un paranoico esquizofrénico y Cantor también se volvió loco, así que no es bueno para tu salud mental estudiar estas cosas, porque empiezas a pensar en cosas como la Hipótesis Continua, etc. Así que de todos modos, si te interesa esa historia Annotated Turing es una gran historia.

¿De qué estamos hablando?