Hace 3 años | Por Florida_man a github.com
Publicado hace 3 años por Florida_man a github.com

Implementado por Nicholas Carlini para IOCCC 2020 (The International Obfuscated C Code Contest). Aunque la finalidad principal de printf es hacer de "El único debugger real", también resulta que es Turing completo (ver "Control-Flow Bending: On the Effectiveness of Control-Flow Integrity" donde se explica en un paper académico).

Comentarios

D

#1 Es ingenioso pero ciertamente no es sólo un printf. Además de los chorro cientos define que realmente me preocupan poco esta el while que es la clave para poder afirmar eso de "Turing completo". Es un poco fake lo que no quiere decir que esté carente de mérito.

albandy

#8 sin usar un debugger o tiras de stdout o de stderr, no hay más.

O

#14 El lenguaje C es lo mejor que ha parido madre. Lo demás es mierda pura

ciwi

ey a mi me tocó hacer un tres en raya en primero de carrera en c++

D

#8 se llama “loggear”

Omóplato

#8 pues a veces no hay otra opción y es lo que te queda, utilizar trazas de debug.

alexwing

Siempre me dio coraje el printf con sus crípticos parámetros.

D

#11 Por ejemplo si intentas debuggear web en un dispositivo IOS desde un PC o si utilizas una librería externa que está mal y en modo debug se jode y que no puedes modificar por ser una caja negra. Como dice #11 usar el debugger no siempre es una opción.

sillycon

En dos palabras, aco jonante.

N

Si no está en español, tienes que indicar en qué idioma está

box3d

#1 Ya me parecía muy raro que printf fuese turing-complete.

m

#8: Es mi código fuente y lo escribo como quiero.

m

#13: Está en %N.

antihoygan

#4 The first time the printf() call runs, it writes out "%hhd" to create the create the scanf() format string.

D

Un programa que necesita input del usuario en una llamada que no lee input del usuario.

No sé, Rick...

We ab^H^Huse this fact to implement a the logic of tic-tac-toe entirely within this one printf call (and a call to scanf() to read user input).

Bingo.

D

Aunque la finalidad principal de printf es hacer de "El Unico Debuger Real"

Hasta la polla de la peña debugeando escupiendo mierda en stdout.

Luarto

#1

peregringlk

Ese ejemplo no demuestra que `printf` sea Turing-completo.

Aenedeerre

#8 es como los alert de javascript...

impresionante