¿Todas las aplicaciones contienen una sola línea mágica de código sin la cual la aplicación sería imposible de implementar correctamente?

Creo que entiendo a lo que te refieres: los programas se crean de manera inductiva y necesitan algún tipo de ” caso base “. Un núcleo sobre el cual se construye todo lo demás.

Y la respuesta es … más o menos. Sí, en última instancia, podemos seguir todas las llamadas a métodos y llegar a la “esencia” fundamental de un programa. Pero no, no será necesariamente una sola línea de código. De hecho, es probable que no sea ninguno: ni único ni código.

En particular, todo se reducirá al sistema operativo . Podrías tener programas perfectamente viables que no tienen más que llamadas al sistema y, dentro de ese programa, no hay un “núcleo”; todo es una llamada de función. Pero si también incluye el código del sistema operativo en sí, obviamente habrá partes que anclarán todo lo demás que no solo llamará a otro código.

¡Pero esas partes no son necesariamente código propio! De hecho, puede rastrear la cadena de código hasta el hardware . Las operaciones más fundamentales en las que se basa todo lo demás no son en sí mismas programas, son solo arreglos inteligentes de puertas lógicas.

Así que, en última instancia, todo su programa se basará en un montón de instrucciones implementadas en hardware . De ahí proviene todo. Ese es el corazón “mágico” de cada programa. Esas son las operaciones primitivas reales. Todo lo demás es solo una abstracción.

int main (

Editar: al menos en C

Las computadoras son completamente deterministas; Todos los programas, funciones y operaciones necesitan un punto de partida y al menos un punto final. Si no tiene un punto de partida, su programa o script nunca se ejecutará. Si no tiene un punto final, quedará atrapado en un bucle sin fin, por ejemplo, mientras que (1) {}.

Esto significa que una computadora (en su mayor parte) solo puede resolver problemas que una persona puede entender cómo resolver.

MI RESPUESTA:
Uno de los aspectos más importantes de las computadoras es que, a pesar de toda su complejidad y todo lo que la humanidad ha logrado hacer durante décadas, son fundamentalmente simples.

Cada operación que realiza cada computadora puede convertirse (y casi siempre es *) en un conjunto relativamente pequeño de operaciones: suma, resta, multiplicación, división, movimiento, almacenamiento, interrupciones y algunas otras operaciones. Todo esto a su vez puede interpretarse con las matemáticas y la lógica.

Como su nombre indica, una “computadora” es la implementación fundamental de las matemáticas, la informática (o la realización de estos cálculos) y la lógica.

Este es el código de ensamblaje, la versión entendible por los humanos de lo que la computadora realmente está haciendo. CADA programa (código, o los programas que implementan scripts) se convierte a este “lenguaje”. Esta es la base fundamental para la programación. Todos los demás lenguajes de programación son un método para usar estas operaciones fundamentales (los lenguajes de script como python o PHP dependen de otros programas, que a su vez se basan en el código ensamblador).

Para cada problema que desee resolver, hay infinitas formas de resolverlo utilizando un lenguaje de nivel superior con estructuras de control, variables y otras construcciones. Sin embargo, su código SIEMPRE encontrará su camino de regreso al código de ensamblaje.

* como siempre puede haber excepciones, como circuitos personalizados, como arreglos de puertas programables en campo (FGPA)

La falta de una “línea de falla mágica” implica un código redundante, ya que básicamente puede eliminar cualquier línea para un programa más conciso e igualmente funcional. Por lo tanto, la respuesta es sí para cualquier programa conciso.

Depende de cómo lo mires:

  • puede encontrar fácilmente una línea crítica que deshabilitará completamente la aplicación, pero esa línea puede no tener un significado conceptual real. Por ejemplo, muchas de estas líneas son configuración o repetitivo circunstancial.
  • destruir una línea al azar puede no tener mucho efecto observable, simplemente debido al tamaño y a que muchos usos no cubrirán todo el código, al igual que un humano puede perder un dedo y sobrevivir.

Creo que entiendo el punto al que estás llegando, pero especialmente dado el enlace de complejidad mencionado, es posible que tengas más suerte persiguiendo esta idea dentro del alcance de un solo algoritmo .

More Interesting

¿Qué tan bueno es SGD4500 / mes para software eng con 3+ experiencia para trabajar y vivir en Singapur?

Quiero entrar en la inteligencia artificial como una opción de carrera. ¿Debo apuntar a prácticas de ingeniería de software o ciencia de datos?

¿Dónde agrego Agile / Scrum a la sección de habilidades de mi currículum? He desglosado la sección de habilidades en plataformas, lenguajes y marcos, bases de datos y herramientas. ¿Dónde encajaría Agile / Scrum entre esas opciones?

¿Qué tipo de ingenieros de software tienen una gran demanda?

¿Cuáles son algunos sistemas de software heredados malos que se beneficiarían de una reescritura completa?

¿Cuál es la diferencia entre un modelo utilizado en ingeniería de software orientado a objetos y un diagrama UML? ¿Cómo se asocian?

Como ingeniero experimentado, ¿vale la pena probar el curso en línea 'Aprendizaje profundo práctico para codificadores'? ¿Por qué?

Cómo hacer un software como Cortana

Como desarrollador web que escribe código para una empresa nueva que trata con números crujientes (no tan en tiempo real como las existencias) en 2014, ¿qué debería considerar codificar?

¿Están los ingenieros de software infravalorados por las grandes empresas tecnológicas?

Al monitorear y analizar registros, ¿prefieren los ingenieros de software y los administradores de sistemas más o menos espacios en blanco (iniciales) entre las líneas de registro? ¿Por qué?

¿Se contrata a los estudiantes de los campamentos de codificación basándose únicamente en su trabajo realizado en el campamento?

¿Cuál es el mejor software de gestión de proyectos para empresas de ingeniería?

¿Qué universidades ofrecen BTech en Ingeniería de Software en India con especialización en seguridad de la información y ciber forense o incluso sin ella?

¿Cuáles serían los requisitos de software para desarrollar un software de cubo de rubik?