¿Qué quieren decir los ingenieros de software cuando hablan de “código nativo” y cómo podría ser más rápido que otro código?

Erik Fair tiene la respuesta correcta.

El código nativo (máquina) es un código que el procesador ejecuta directamente, en contraste con el código que se ejecuta en una máquina virtual o mediante un intérprete.

El código nativo no se limita a un idioma, en teoría cualquier lenguaje podría adoptarse para compilar el código nativo, hasta cierto punto.

Los lenguajes como C generalmente se compilan en código nativo. Por ejemplo, gcc (popular compilador de C) traduce el código C en lenguaje ensamblador que luego se ensambla en código máquina.

Utilizo el término ensamblado en lugar de compilado, ya que el lenguaje ensamblador es simplemente una representación de instrucciones de código de máquina. Los diferentes procesadores tienen diferentes conjuntos de instrucciones, por lo que el lenguaje ensamblador difiere entre la arquitectura del procesador. Por ejemplo, la mayoría de los dispositivos móviles se ejecutan en un procesador ARM, por lo que un compilador de C en un dispositivo móvil traducirá el código C en un ensamblaje ARM que luego se ensamblará en código máquina. La mayoría de las PC y laptops de consumo utilizan CPU con conjuntos de instrucciones x86 (32 bits) o x86-64 (64 bits).

Java y C # son ejemplos de lenguajes compilados que se ejecutan en máquinas virtuales. Ambos se compilan en su propia forma de bytecode. El compilador de Java traduce el código de Java en código de bytes de Java que es ejecutado por la máquina virtual de Java. C # y otros lenguajes .NET compilan en CLI que es ejecutado por CLR. Tanto la máquina virtual Java como el CLR hacen uso de la compilación Just-in-time para acelerar la ejecución del código traduciendo el código de bytes al código de la máquina durante el tiempo de ejecución.

Python y Perl son ejemplos de lenguajes interpretados. Puede ejecutar el código directamente sin tener que compilar. Dicho esto, Python compila a bytecode antes de la ejecución y este bytecode lo ejecuta una máquina virtual.

El código nativo es más rápido porque lo ejecuta directamente el procesador, no hay intermediario.

El código “nativo” significa que el lenguaje de máquina binario se ejecuta directamente en el hardware de la computadora (es decir, la CPU) de la computadora en cuestión.

El código no nativo debe ser ejecutado por un intérprete que se encuentre en el código nativo, pero el intérprete agrega sobrecarga.

Por lo general, se usa en el contexto de la creación de aplicaciones móviles para, por ejemplo, la plataforma Apple iOS.

Aquí, las aplicaciones nativas significan que está creando una aplicación para iOS utilizando el entorno de desarrollo de Apple (Xcode, Objective-C, Cocoa, etc.).

También puede crear aplicaciones que en realidad son solo una colección de código HTML que se ve y se comporta como una aplicación de Apple.

Si están construidos correctamente, entonces la mayoría de los usuarios no notarán la diferencia en la experiencia. Los descarga de la tienda de aplicaciones de Apple y los instala de la misma manera.

Hay varias razones por las cuales una es más adecuada que la otra para ciertos escenarios, pero eso está fuera del alcance de la pregunta, creo.

“Nativo” se refiere al código que no se traduce de algún otro idioma o conjunto de instrucciones, ya sea en un nivel superior de abstracción o especializado en hardware diferente. El código nativo contiene menos sobrecarga y se puede optimizar para una arquitectura de hardware particular.

Una ilustración simple (y algo ingenua) es que el texto traducido del francés al inglés por el traductor de Google generalmente parece incómodo.

More Interesting

¿Cómo hacen las personas las aplicaciones?

¿Vale la pena pasar de la ingeniería mecánica al campo del software?

¿Cuáles son los problemas con las API actuales en este momento?

A los 27 años, ¿cuál es la mejor manera de convertirse en ingeniero de software y obtener una buena paga, volviendo a los estudios durante 3-5 años o tratando de ser contratado en IBM / Atos / etc.?

¿Qué es EMC ESRS y cómo funciona?

Cómo conectarse remotamente a sus computadoras

¿Cuál es la diferencia entre la ingeniería informática y la ingeniería de software, y cuál es mejor en términos de calidad del trabajo y salario?

Recientemente en mi empresa, hemos recurrido más a empresas externas para el desarrollo. Soy un desarrollador nuevo, ¿cómo puedo desarrollar mis habilidades en este entorno?

¿Cómo elegirías entre jugar para el Real Madrid y convertirte en ingeniero de software?

¿Cuáles son los mayores desafíos para los desarrolladores de iOS a tiempo completo?

Si disfruto la creación de software y la programación de sistemas más que la programación competitiva, ¿cómo puedo construir mi carrera sin un perfil de codificación, como estudiante de CSE?

¿Cómo es ser un probador de control de calidad en WhatsApp?

Quiero aprender el software CFD. ¿Cuál es el mejor instituto en Mumbai?

"Habrá muchos ingenieros de software, pero no suficientes ingenieros de software excelentes". ¿Cómo se reconoce uno del otro?

¿Qué hay en una posición de gestión de productos de software que los candidatos deben tener un título de ingeniería?