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

box3d

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

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.

Luarto

#1

ciwi

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

alexwing

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

O

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

sillycon

En dos palabras, aco jonante.

N

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

m

#13: Está en %N.

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.

antihoygan

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

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.

albandy

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

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.

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.

m

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

Aenedeerre

#8 es como los alert de javascript...

peregringlk

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

impresionante