¿Es cierto que si entendemos los algoritmos podemos entender todos los programas difíciles de todos los idiomas?

No.

Para dar solo un contraejemplo: mi compañero de 13 años y finalmente logré colaborar en un papel. Es una ecóloga teórica y estaba ejecutando una simulación para comprender mejor la dispersión larval estocástica en los océanos. El código fue escrito en R, y como su doctorado es en física en lugar de informática, quedaba mucho rendimiento en el piso.

Al leer el código, cambié varios algoritmos y tomé un orden de magnitud de aceleración en serie, luego paralelicé el código para que se ejecutara en ~ 10k núcleos de procesador.

¿Entiendo ese código? Al nivel de los bits en movimiento, sí. A nivel matemático o ecológico, absolutamente no.

A partir de ahí, puedo ir a la lista de códigos de misión crítica que le importan a LLNL: UMT para el transporte de fotones, ParaDiS para la simulación de dislocación, CCSM para la investigación climática, etc. Comprender los algoritmos utilizados le permitirá comprender cómo rebotan los bits, pero esos los bits significan algo en un nivel superior, y necesita tener una buena cantidad de conocimiento específico del dominio para comprender si esos bits tienen sentido desde un punto de vista físico / químico / climático.

Un absoluto NO

¿Por qué?

Respondamos de una manera técnica, en lugar de psicológica.

Los seres humanos tenemos cerebros (sí, todos tienen eso: P) que se puede ver básicamente como un prototipo de computadora.

Una vez más, una computadora es un prototipo de un autómata simple.

Entonces podemos decir que nuestros cerebros son básicamente un autómata finito.

¿AUTOMATÓN FINITO implica CEREBRO?

Bueno, podemos pensar finitamente, hacer cosas finitas, calcular cosas finitas y todo lo finito, aunque vivimos en un universo infinito.

Nuestra imaginación se puede pensar en infinito, pero nuestro trabajo diario es finito.

¿CUÁL ES LA SIMETRÍA AQUÍ?

Sabemos que el autómata finito puede aceptar idiomas finitos (idiomas normales) pero no todos los idiomas. De manera similar, la comprensión de un algoritmo puede verse como la aceptación de un lenguaje por un autómata.

Así que eso no implica que puedas entender cada programa difícil de cada idioma.

Los lenguajes de programación están evolucionando todos los días, por lo que, en un tiempo infinito, habrá infinitos lenguajes de programación y, por lo tanto, infinitos problemas difíciles.

Por lo tanto, no espere que su cerebro finito capture todos los problemas dentro de este período de tiempo.

No es posible.

¿Las máquinas de Turing tienen una existencia física real?

Entonces podría ser posible. No estoy seguro. Quizás esa sea una solución.

¡Tu mente se ha vuelto loca!

😛

Gracias por A2A 🙂

No, desafortunadamente esto no es cierto.

La razón principal de esto es que hay una gran cantidad de jerga en todos los diferentes lenguajes de programación que es específica del lenguaje de programación y que se te presentará cuando adquieras un dominio de principiante a intermedio en ese lenguaje.

Déjame darte un ejemplo del lenguaje de programación C ..

Dos de las muchas formas de iterar sobre una matriz son las siguientes:

para (p = str; * p; p ++)
para (p = str; p [0]! = ‘\ 0’; p ++)

Se ven diferentes pero hacen exactamente lo mismo. La razón es simple: existen construcciones de lenguaje que son específicas de un lenguaje de programación que no encontrará en otros lenguajes de programación (en este caso, punteros en C que no utilizará en Java o Python).

En conclusión, debe esforzarse por aprender el lenguaje de programación, sin embargo, con la experiencia puede leer / adivinar la sintaxis de un lenguaje de programación desconocido, pero nuevamente no necesariamente al máximo.

No.

Lo más probable es que si comprende la arquitectura, particularmente el flujo de datos y el flujo de control, podría tener la oportunidad de comprender una gran cantidad de programas, para algún nivel de “comprensión”.

“Un algoritmo” es “un proceso o conjunto de reglas a seguir en las operaciones de resolución de problemas”. Puede comprender cómo desarrollar algoritmos, pero no puede “comprender todos los algoritmos”. (¿Entiendes mi algoritmo para preparar la cena? [Resolver ese problema es un algoritmo; la palabra no se limita a la programación de computadoras]).