English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Erlang es un lenguaje de programación funcional que también tiene un entorno de ejecución. Su construcción lo hace compatible con funcionalidades de concurrencia, distribución y tolerancia a fallos. Erlang se desarrolló originalmente para su uso en varios grandes sistemas de telecomunicaciones de Ericsson.
La primera versión de Erlang fue desarrollada por Joe Armstrong, Robert Virding y Mike Williams en1986Fue desarrollado en el año. Originalmente era un lenguaje propietario interno de Ericsson. Luego, en1998Se lanzó como un lenguaje de código abierto en el año. Erlang y OTP (conjunto de middleware y bibliotecas en Erlang) ahora son proporcionados y mantenidos por el departamento de productos OTP de Ericsson y se conocen ampliamente comoErlang/OTP.
Si tiene los siguientes requisitos, debe usar Erlang para desarrollar aplicaciones-
La aplicación debe poder manejar una gran cantidad de actividades concurrentes.
Debería poder distribuirse fácilmente en redes de computadoras.
Debería haber herramientas que hagan que la aplicación sea tolerante a errores de software y hardware.
La aplicación debe ser escalable. Esto significa que debe poder cruzar múltiples servidores sin cambios sustanciales.
Debería ser fácil de actualizar y reconfigurar, sin necesidad de detener y reiniciar la aplicación en sí.
La aplicación debe responder a los usuarios dentro de un período de tiempo estricto.
El sitio web oficial de Erlang eshttps://www.erlang.org/.
Erlang es un lenguaje de programación general orientado a la concurrencia, desarrollado por CS de Ericsson, un fabricante de equipos de telecomunicaciones suecos-El desarrollo de Lab tiene como objetivo crear un lenguaje de programación y entorno de ejecución que pueda hacer frente a actividades de alta concurrencia a gran escala. Erlang se presentó en1987Año, después de diez años de desarrollo,1998Año se lanzó la versión de código abierto. Erlang es un lenguaje interpretativo que se ejecuta en una máquina virtual, pero ahora también incluye un compilador de código nativo desarrollado por el proyecto de Erlang de alta performance de la Universidad de Uppsala (HiPE), desde la versión R11B-4Desde la versión, Erlang también comenzó a soportar intérpretes de scripts. En términos de paradigmas de programación, Erlang es un lenguaje de programación multifuncional, que abarca funcional, concurrente y distribuido. Erlang ejecutado en secuencia es un lenguaje de programación funcional de evaluación anticipada, asignación única y tipo dinámico.
Erlang es un lenguaje de programación estructurado, de tipo dinámico, con soporte integrado para cálculo paralelo. Originalmente fue diseñado por Ericsson específicamente para aplicaciones de comunicación, como switches de control o protocolos de transformación, por lo que es muy adecuado para construir sistemas de software distribuidos y de tiempo real, con cálculo paralelo. Las aplicaciones escritas en Erlang generalmente están compuestas por miles de procesos ligeros que se comunican entre sí mediante mensajes. La transición de contexto entre procesos en Erlang es solo una o dos etapas, mucho más eficiente que la transición de hilos en programas C.
Es más simple escribir aplicaciones distribuidas en Erlang, porque su mecanismo de distribución es transparente: para el programa, no sabe que se está ejecutando en modo distribuido. El entorno de ejecución de Erlang es una máquina virtual, algo así como la máquina virtual de Java, por lo que una vez compilado, el código puede ejecutarse en cualquier lugar. Su sistema de tiempo de ejecución incluso permite que el código se actualice sin interrupciones. Además, si se necesita mayor eficiencia, el bytecode también se puede compilar en código nativo para ejecutar.
El nombre Erlang se debe al matemático y estadístico danés Agner Krarup Erlang, y también puede representar Ericsson Language.
Erlang no es un lenguaje nuevo, apareció en1987Año, pero en ese momento, la necesidad de concurrencia y distribución no era tan generalizada como hoy en día, y en ese momento se podía decir que los héroes no tenían lugar para demostrar sus habilidades. El fundador del lenguaje Erlang, Joe Armstrong, trabajaba en la división de redes telefónicas de Ericsson en ese momento, donde utilizaba Smalltalk, pero en ese momento Smalltalk era demasiado lento y no podía satisfacer los requisitos de alta performance de las redes telefónicas. Pero Joe realmente amaba Smalltalk, por lo que encargó una máquina Tektronix Smalltalk. Pero la máquina tardó dos meses en llegar, y Joe, en el tiempo de espera, se aburrió y comenzó a usar Prolog. Cuando llegó Tektronix, ya tenía más interés en Prolog. Joe, por supuesto, no se conformó con dominar Prolog, y después de un tiempo de experimentación, añadió manejo de concurrencia y recuperación de errores a Prolog, y así nació Erlang. Esto es por qué la sintaxis de Erlang tiene muchos puntos en común con Prolog, por ejemplo, sus expresiones de lista son [Head | Tail].
1987año se lanzó la versión de prueba de Erlang, y se perfeccionó constantemente en aplicaciones reales de los usuarios.1991año, se lanzó la primera versión para usuarios, que incluía más funciones como compilador e interfaz gráfica.1992año, Erlang recibió más usuarios, como el proyecto RACE, etc. Al mismo tiempo, Erlang se portó a varios plataformas como VxWorks, PC y Macintosh, y dos proyectos de productos que utilizan Erlang también comenzaron.1993La organización interna independiente de la empresa Ericsson comenzó a mantener y apoyar la implementación y las herramientas de Erlang.
Diferente de los lenguajes orientados a objetos tradicionales, tiene sus propias ventajas: primero, se basa en la concurrencia de procesos, estos procesos son ligeros y manejan ordenadamente las transacciones, los usuarios no necesitan preocuparse por las operaciones específicas de PV, estos procesos son transparentes para el sistema operativo, para el sistema operativo hay solo un proceso en ejecución. En segundo lugar, cada proceso tiene su propia memoria independiente, en la comunicación entre procesos depende completamente del paso de mensajes, cada proceso tiene su propia bandeja de entrada y busca los mensajes a procesar mediante coincidencia de patrones, luego se procesan de manera asíncrona. Esto reduce la耦合度 entre procesos, mejorando la independencia. Erlang también tiene un mecanismo de tolerancia a fallos confiable, debido a la independencia relativa entre procesos, en Erlang se pueden usar algunos procesos para conectar o monitorear otros procesos, cuando estos procesos monitoreados generan excepciones de salida debido a errores, el programa encargado de monitorear recibirá las notificaciones de salida de estos procesos y procederá con el tratamiento correspondiente. En OTP, Erlang puede utilizar el árbol de monitoreo para realizar monitoreo uno a uno o uno a muchos. Lo más importante es, el soporte para CPU multicore, en Erlang no es necesario que el desarrollador gestione la operación multicore, para el desarrollador es completamente transparente, solo necesitamos escribir programas como de costumbre. Finalmente, Erlang admite actualizaciones de código en caliente, en Erlang se puede realizar la actualización de código sin interrupción del funcionamiento del software, logrando la actualización en caliente durante la ejecución del software. En la gestión de versiones de Erlang, se puede mantener un módulo de2Diferentes versiones, que admiten el desplazamiento a versiones anteriores.
El lenguaje Erlang se enfoca en ciertas necesidades y no es completamente adecuado para todas las situaciones. Mientras que tiene muchas características atractivas, también tiene algunas deficiencias: su capacidad de abstracción del lenguaje no es fuerte, Erlang es un lenguaje de tipo débil, y es bastante conveniente ajustar el contenido de los mensajes o los requisitos del patrón en el momento de la coincidencia, pero cuando ocurre un error, la ocultidad de estos errores es fuerte. Además, cuando el proyecto es grande, se encuentra que debido a las características del lenguaje, las partes aparecen características planas, y hay muchos grupos y registros en el programa, lo que hace que la estructura del programa sea caótica. En segundo lugar, la programación funcional difiere de los lenguajes tradicionales, y en la actualidad, los lenguajes de programación populares son del sistema C y orientados a objetos. Actualmente, la programación funcional carece de teorías de programación maduras, y hay pocos talentos y materiales relacionados, lo que aumenta la dificultad de aprendizaje. Además, la idea de orientación a objetos ya está profundamente arraigada en la mente de las personas, lo que dificulta la transición del pensamiento al aprendizaje de la programación funcional. Lo más importante es que Erlang es un lenguaje intensivo en E/S, adecuado para proyectos con características distribuidas claras. Para los requisitos intensivos en cálculo, puede ser difícil, pero aún tiene espacio para optimización y mejora.
El desarrollo de Erlang en el país ha sido muy rápido en los últimos años,主要用于开发系统 de servidores de juegos. Erlang es fácil de aprender, tiene una alta tasa de tolerancia a errores y es adecuado para la rápida iteración, lo que es muy adecuado para el desarrollo de juegos de página y juegos móviles. En particular, en Guangzhou, Shenzhen y algunas otras empresas de juegos medianas y pequeñas, la mayoría utiliza Erlang. Con c++El sistema de servidores de juegos para el lenguaje de base requiere una acumulación técnica a largo plazo, y c++La eficiencia de desarrollo de Erlang no es tan alta como la de Erlang, y el costo de contratación de personal es un desafío enorme para las empresas emergentes. Pero las empresas medianas y pequeñas prestan más atención a los productos que a la tecnología, lo que no es beneficioso para el desarrollo de Erlang en el país, ya que la mayoría de las empresas utilizan el mismo conjunto de marcos de Erlang maduros, enfocándose en el procesamiento de lógicas de negocios específicas y descuidando la optimización subyacente. Esto es extremadamente desfavorable para el desarrollo de Erlang.
El desarrollo de Erlang en el extranjero ha sido durante mucho tiempo, como un lenguaje maduro, ya ha sido comprobado, actualmente se aplica a varios cientos de proyectos de desarrollo importantes, incluyendo soluciones de sistema de acceso en ancho de banda de Ericsson, GPRS y ATM, teniendo una rica experiencia en proyectos, el framework de programación (OTP) proporciona a Erlang un conjunto de herramientas y bibliotecas para la implementación de robustez y tolerancia a fallos y un marco estructurado completo. Pero en comparación con el uso doméstico en desarrollo de juegos, se utiliza principalmente en el extranjero en servicios web, telefonía computacional, sistemas de mensajería y bancos comerciales, etc. A principios de este siglo, el sitio web Erlang.org tenía36000 páginas web aproximadamente, diez años después, este número aumentó a28000, lo que indica que la comunidad de Erlang está en constante expansión, incluyendo proyectos comerciales, de investigación y open source, marketing viral, combinación de libros y blogs, por supuesto, todo esto se origina en el diseño inicial de Erlang-La necesidad de resolver problemas específicos en campos y el impulso.