values pagina multilenguaje idioma es_mx cambiar atributo multiple-languages

multiple languages - pagina - ¿Cómo interactúan múltiples idiomas en un proyecto?



html5 lang values (12)

Soy un joven, así que tengo mucho que aprender :)
Una pregunta que me vino a la mente es: Escuché que algunas personas programaban en varios idiomas en un solo proyecto. No puedo imaginar cómo interactúan los idiomas entre ellos.

Quiero decir que no hay un método Java como

myProgram.callCfunction(parameters);

nunca pasa ... ¿o estoy equivocado? :)


Depende del tipo de proyecto. Si desea experimentar, puede configurar un proyecto web en .NET y cambiar el idioma página por página. No funciona como lo muestra en su pseudocódigo, pero es en varios idiomas. Por supuesto, el directorio de código real debe ser un único idioma.


En general, cualquier proyecto web de un tamaño aceptable usará aproximadamente cinco idiomas: HTML, CSS, Javascript, algún tipo de lenguaje "hacer cosas" en el lado del servidor (ASP, JSP, scripts CGI con Perl, PHP, etc.) y alguna variante de SQL para la conectividad de la base de datos.

(Esto es, por supuesto, moviendo a mano el argumento sobre si HTML y CSS cuentan como lenguajes de programación; yo soy el campo "ellos son, pero no solo Turing-lenguajes completos", pero ese es un hilo totalmente diferente. )

Algunos ejemplos de cómo todos trabajan juntos:

Si va a la ruta de las mejores prácticas, la estructura de una página web está en HTML, y las instrucciones para mostrarla están en CSS, que podría estar en el mismo archivo, pero no tiene que ser así. El CSS contiene un grupo de clases a las que se refiere el HTML, y depende del navegador averiguar cómo hacer clic en ellas juntas.

Llevando todo eso un paso más allá, los scripts de JavaScript en esa página pueden alterar cualquiera de los HTML / CSS presentes (cambiar los contenidos de las entidades HTML, cambiar una clase CSS por otra, cambiar el comportamiento de CSS, etc. Hace esto a través de algo llamado Modelo de Objetos de Documento, que es esencialmente una API independiente del lenguaje y la plataforma para manipular páginas HTML de forma similar a un objeto (en ese punto retrocederé lentamente y solo proporcionaré un enlace al correspondiente artículo wiki .)

Pero entonces, ¿de dónde viene todo el HTML / CSS / Javascript? Eso es lo que hace el lenguaje del lado del servidor. En la forma más simple, el lenguaje del lado del seridor es un programa que devuelve una cadena gigante que contiene una página HTML como salida. Esto, obviamente, puede ser mucho más complejo: los formularios HTML y los parámetros de cadena de consulta se pueden usar como entrada para nuestro programa del lado del servidor, y luego tiene todo el aspecto AJAX donde el javascript puede enviar datos directamente al lenguaje del servidor también. También puede ser elegante donde el idioma del servidor puede personalizar el HTML, CSS y Javascript que se escupió. En esencia, tiene un programa en un idioma que escribe un programa en otro idioma.

El idioma del lado del servidor para la conexión SQL funciona de manera muy similar. Hay muchas maneras de hacerlo más complejo y más seguro, pero la forma más simple es que el lenguaje de su servidor construya dinámicamente una cadena con un comando SQL, entregue eso a la base de datos a través de algún tipo de conector, y regrese un conjunto de resultados. (Este es un caso donde realmente tiene una función que se reduce a algún valor = database.executeThisSQLCommand (SQLString)).

Entonces, para concluir, diferentes idiomas en este caso o bien se comunican escribiendo programas entre sí, o entregando datos en formatos muy simples y fáciles de analizar que todos pueden entender. (Cuerdas, principalmente)


Hay muchas maneras diferentes en que puede usar diferentes idiomas en un proyecto. Hay dos categorías principales que le vienen a la mente.

  1. Usar diferentes idiomas juntos para compilar una aplicación. Por ejemplo, usar Java para compilar la GUI y usar JNI para acceder a la API C (para responder a su pregunta, puede llamar a las funciones C desde Java;))
  2. Usar diferentes idiomas juntos en el proyecto, pero no son parte de la misma aplicación. Por ejemplo. Actualmente estoy trabajando en una aplicación para iPhone que usa una gran cantidad de texto. Actualmente estoy usando tres idiomas, Python (para trabajar con las fuentes originales del texto), SQL (para poner los resultados de la aplicación python en un formato fácilmente accesible desde la api iphone sqlite3) y Objectiv C para construir la aplicación real. Aunque el producto final solo será Objective C, he usado otros dos idiomas para llegar al producto final

Hay un par de formas en que el código en los idiomas puede interactuar directamente. Mientras los datos que pasan entre el código estén en el formato correcto, a nivel de bits y de bytes, entonces no hay razón por la cual los diferentes idiomas no puedan interoperar. Este enfoque se usa en el desarrollo DLL de Windows tradicional. Incluso en diferentes plataformas, si puede obtener el formato correcto (observe a endian grande / pequeño si le interesa) funcionará siempre que su enlazador (no el compilador) sepa cómo unir el código.

Más allá de eso, hay muchas otras maneras en que los idiomas pueden comunicarse entre sí. En .Net, el código mundial se compila en código IL, que es el mismo para todos los idiomas, de esta forma C #, VB.Net son todos iguales bajo el capó y pueden llamarse / funcionar entre sí sin problemas.


Hay varias formas en que se pueden usar múltiples idiomas en un proyecto. Algunos ejemplos:

  • Puede escribir una DLL en, por ejemplo, C, y luego usar esa biblioteca desde, por ejemplo, un programa de VB.
  • Podría escribir un programa de servidor en, digamos C ++, y tener muchas implementaciones de lenguaje diferentes del cliente.
  • Un proyecto web a menudo usa muchos idiomas; por ejemplo, un programa de servidor, escrito en, por ejemplo, Java (un lenguaje de programación), que obtiene datos de una base de datos utilizando SQL (un lenguaje de consulta), envía el resultado al navegador en HTML (un lenguaje de marcado), que el usuario puede interactuar con el uso de Javascript (un lenguaje de scripting) ...

Múltiples idiomas en uso se llama "interoperabilidad" o "interoperabilidad" para abreviar.

Tu ejemplo es incorrecto Java puede llamar a las funciones C.

El lenguaje proporciona un mecanismo para la interoperabilidad.

En el caso de .NET, los idiomas se compilan en IL como parte de la CLI. Por lo tanto, cualquier lenguaje .NET puede interoperar (llamar a métodos definidos por) módulos definidos en cualquier otro lenguaje .NET.

Como ejemplo:

Puedo definir un método en C #

static void Hello(){ Console.WriteLine("Hello World");}

Y puedo llamarlo desde Python (IronPython)

Hello()

Y obtenga el resultado esperado.

En términos generales, algunos idiomas interfieren mejor que otros, especialmente si los autores del lenguaje específicamente hicieron de la interoperabilidad una característica del lenguaje.


Múltiples idiomas pueden interactuar con:

  1. Entrada / salida canalizada (CUALQUIER idioma puede hacer esto porque la entrada y la salida deben implementarse necesariamente en todos los idiomas que no sean juguetes)
  2. Tener código en un idioma compilar a una biblioteca nativa, mientras que el otro admite llamar al código nativo.
  3. Comunicación a través de una conexión de red loopback. De esta forma, puede tener dificultades con la interferencia del cortafuegos.
  4. Bases de datos Estos pueden considerarse como un formato de almacenamiento de datos "universal" y, por lo tanto, la mayoría de los idiomas pueden acceder a ellos con extensiones de bases de datos. Esto generalmente requiere que un programa termine la operación antes de que el siguiente programa pueda acceder a la base de datos. Además, todas las "comunicaciones" generalmente se escriben en el disco.
  5. Si los lenguajes involucrados se ejecutan en el mismo tiempo de ejecución (es decir, .NET, JVM), generalmente puede pasar datos de objeto de un idioma directamente al otro con poca impedancia.

En casi todos los casos, debe convertir cualquier comunicación a un formato común antes de poder intercambiarlo (la excepción son los idiomas en el mismo tiempo de ejecución). Esta es la razón por la cual los idiomas múltiples se usan raramente en un proyecto.


Mal. Si no hay una necesidad urgente, adhiérase a un solo idioma. Estás aumentando las dependencias y la complejidad. Pero cuando tiene un código existente que proporciona una funcionalidad interesante, puede ser más fácil unirlo entre sí que recrearlo.


Podría tener una aplicación donde la mayor parte del trabajo se realiza en Java, pero podría haber una parte de ella, como un analizador de datos o algo escrito en Python o lo que sea. En realidad, casi dos aplicaciones separadas, tal vez el analizador solo está trabajando en los archivos y luego su aplicación principal en Java los está utilizando para algo. Si alguien me preguntara qué usé en este proyecto, diría "Java y Python".


Solo para agregar a la lista de ejemplos, es bastante común optimizar el código Python en C o C ++ o escribir una biblioteca C para vincular otra biblioteca a Python.


Tener varios idiomas en un proyecto es en realidad bastante común, sin embargo, los principios detrás no siempre son simples.

En el caso simple, se compilan diferentes idiomas con el mismo código. Por ejemplo, el código C y C ++ normalmente se compila en ensamblador de máquina o C # y VB.Net se compila en IL (el lenguaje entendido por .NET runtime).

Se vuelve más difícil si los lenguajes / compiladores usan un sistema de tipo diferente. Puede haber muchas formas diferentes, los tipos de datos básicos como enteros, flotantes y dobles se representan internamente, y hay incluso más formas de representar cadenas. Al pasar tipos entre los diferentes idiomas, debe asegurarse de que ambas partes interpreten el tipo de la misma manera o, si no, los tipos están correlacionados correctamente. Este tipo de mapeo de tipos también se conoce como marshalling .

Ejemplos clásicos de interoperabilidad entre diferentes lenguajes de programa son (principalmente del mundo de Windows):

  • Los diferentes idiomas disponibles para .NET platfrom. Esto incluye C #, VB.Net, J #, IronRuby, F #, XSLT y muchos otros idiomas menos populares.
  • Los componentes nativos COM escritos en C ++ o VB se pueden usar con una gran variedad de idiomas: VBScript, VB, todos los lenguajes .NET, Java
  • Las funciones api de Win32 se pueden llamar desde .NET o VB
  • IPC (comunicación entre procesos)
  • Corba , probablemente el enfoque más completo (y más complejo)
  • Servicios web y otras arquitecturas orientadas a servicios, probablemente el enfoque más moderno

Trabajo en un proyecto empresarial grande que está compuesto por (en el último recuento) aproximadamente 8 idiomas. La mayoría de la comunicación se realiza a través de un bus de mensajes de nivel empresarial que contiene enlaces para múltiples idiomas para acceder y pasar datos de un lado a otro. Se llama tibco .