¿Cómo se puede escribir un software en diferentes lenguajes de programación?

Una cosa que siempre debe tener en cuenta: un lenguaje de programación es para el beneficio del programador, no tanto (si es que lo es) para la computadora o incluso el programa. Está ahí para facilitar la vida del programador. Y en casi todos los casos, cualquier código fuente que el programador escribió se traduce a otra cosa que la computadora realmente “entiende”. Por ejemplo, si escribe su programa en C ++, la computadora no puede hacer nada con ese archivo de texto. Primero necesita traducirlo a algo como el lenguaje de conjunto de instrucciones de la CPU, generalmente a través de un compilador. Si escribe su código en Java, incluso la JVM en sí no puede entender los archivos fuente de Java; probablemente primero deba ejecutarlos a través del compilador javac para convertirlos en archivos de clase / jar que contengan el lenguaje de código de bytes que el programa JVM puede “entender”.

Y en ese caso, realmente no importa en qué idioma fue el origen. O incluso si todo era del mismo idioma de origen. Por ejemplo, ¿se daría cuenta una persona de habla francesa cuando algún texto se traduce tanto del inglés como del alemán en un documento francés combinado? Lo mismo se aplica a dichos programas compilados que se ejecutan en una computadora. Siempre que se traduzcan en algo que la computadora (o los programas que se ejecutan en esa computadora) puedan “entender”, casi no hay diferencia en cuanto a lo que se escribió originalmente. Al menos no en el sentido de que puede ejecutarse o no no se puede ejecutar.

Por lo general, cuando se usa más de un idioma de origen, se realiza dividiendo todo el programa en varios archivos compilados. Luego, el uno solo carga y llama desde el otro (es decir, como una DLL en Windows). Aunque la única razón real para hacerlo es porque el compilador utilizado para traducir desde el lenguaje X probablemente no puede traducir también desde el lenguaje Y. Cuando encuentra un compilador que puede traducir desde múltiples idiomas de origen, muy a menudo encuentra que su resultado es un solo compilado ejecutable (incluso cuando se usan varios idiomas).

Incluso si usa un intérprete en lugar de un compilador (es decir, el archivo fuente se ejecuta directamente), el intérprete tiene acceso a los programas nativos normales en la computadora. También puede llamar a otros programas. De hecho, casi todos los intérpretes se usan de esta manera por defecto. Incluso hasta el punto en que muchos idiomas generalmente se interpretan incluyen funciones para llamar a funciones de otros programas. A veces esto se conoce como FFI (interfaz de función externa). Una muestra de esto es usar programas en C desde Python.

Un montón de opciones.

En el caso de mis aplicaciones Java, también tiendo a utilizar bastante Objective-C, para que se parezcan más a las aplicaciones nativas de Mac. Construyo el Objective-C como una biblioteca dinámica y lo cargo a través de JNI en Java, funciona muy bien y terminas con una aplicación que usa Java y Objective-C.

En el caso de las aplicaciones en el AS / 400, las compilan según la especificación ILE, lo que básicamente significa que muchos lenguajes como RPG y C compilan en binarios casi idénticos, por lo que puede vincularlos todos como un solo programa. Significa que puedo escribir una biblioteca en C y llamar a esas funciones desde RPG, en el mismo programa.

En un nivel mucho más simple, puede ejecutar cosas a través de scripts de shell. Digamos que escribe una gran aplicación en Python, pero encuentra una gran biblioteca en Java para hacer algo, simplemente puede guardar los datos en Python, cargar los datos en Java, ejecutar lo que quiera, guardarlo de nuevo, volver a cargar en Python Puede ser un poco lento, pero puede que no importe. En muchas aplicaciones de negocios, los procesos no se ejecutan en 2 segundos, se ejecutan durante la noche , por lo que si toma 5 minutos o 1 hora, a menudo no importa.

Luego están las aplicaciones de red, si está pasando datos a través de una red, es poco probable que los idiomas importen, porque se está moviendo sobre datos en JSON o XML o algo así, así que si creo ese JSON en C, Java o BrainFuck, simplemente no importa, JSON es JSON.

Los lenguajes de programación permiten que el código legible por el hombre luego se compile (convierta) en código de máquina.

El código de máquina depende de la plataforma de destino y no del idioma original en el que se escribió.

Entonces, si un programador escribe

x: = y + z; // notación Pascal / Delphi

y otro escribe

x = y + z; // notación C

después de compilar, seguirá siendo la misma instrucción de procesador.

Al programar una aplicación que se compilará, es posible una gran compartimentación. A cada programador se le puede asignar una tarea para programar algo, y se le debe decir que su segmento de programa debe tomar ENTRADAS específicas y producir SALIDAS específicas. Cómo lo hacen depende de ellos.

Luego, el código que realmente lo reúne solo llama a esas funciones, y no importa en qué idioma se escribieron, siempre que funcionen correctamente.

Además, muchas aplicaciones de hoy están escritas en idiomas que se INTERPRETAN o COMPILAN JUSTO A TIEMPO cuando es hora de ejecutar el código, y no antes. Este es el caso de PHP o JavaScript, que es interpretado por el servidor (PHP) o el navegador (JS) cada vez que solicita esa página web específica.

More Interesting

¿Qué plataforma es mejor para una carrera, pruebas de software o SAP BW?

Cómo extraer todos los datos SQL de un software de inventario hecho por un programador

¿Ir más rápido que Tornado?

¿Behavior Driven Development ayudará a que los proyectos de desarrollo de software se completen a tiempo y dentro del presupuesto? ¿Cómo?

¿Por qué me piden que escriba un algoritmo durante la entrevista DevOps en lugar de las secuencias de comandos relacionadas con DevOps?

¿Hay algún campamento de programación en Florida?

Cómo transformar mi conocimiento sobre Java en software de edificios

¿Cuál es la diferencia entre diseño de software e ingeniería de software?

¿Cuáles son los mejores libros sobre ingeniería de software para ingenieros?

¿Dónde puedo encontrar una buena plantilla para probar el software? ¿Usted tiene alguna?

¿Cuánto tiempo lleva desarrollar habilidades de programación de comercio de baja latencia usando C ++?

¿Cuáles son las principales industrias que utilizan software personalizado?

¿Puede mi currículum ser lo suficientemente bueno como para ser considerado para una entrevista en las principales compañías tecnológicas para un puesto de ingeniero de software?

¿Cuál será la situación para los ingenieros de software para 2020, 2025, 2040? ¿La demanda aumentará o la IA escribirá mejor código que los humanos?

¿Cómo se clasifican en términos del tiempo que necesitaría para realizar estas tareas o aumentar mi nivel en ellas? ¿Serían los rendimientos futuros (en términos de trabajos, etc.) que estas habilidades darían a mi carrera?