Cangjie ( chino :仓颉; pinyin : cāngjié ) es un lenguaje de programación de alto nivel , de tipado estático , de propósito general , multiparadigma , compilado , imperativo y declarativo desarrollado por Huawei . Se lanzó por primera vez el 21 de junio de 2024, como parte del reclutamiento beta para desarrolladores, para el desarrollo de aplicaciones HarmonyOS NEXT en la versión preliminar del sistema operativo HarmonyOS . [ 1 ] También se le conoce como CangjieLang o CJ , pero su nombre correcto es Cangjie. [ 2 ]
Etimología
Cangjie es una figura legendaria del folclore chino a quien se le atribuye la invención de los caracteres chinos . [ 3 ] El método de entrada Cangjie también recibió su nombre en su honor. Huawei ha lanzado otros productos con nombres de criaturas mitológicas chinas, como el chipset móvil Huawei Kirin, que lleva el nombre de la criatura qilin ( chino :麒麟; pinyin : qílín ). [ 4 ]
Historia
El desarrollo de Cangjie fue iniciado en 2019 por Xinyu Feng, profesor del Departamento de Ciencias de la Computación y Tecnología de la Universidad de Nanjing . [ 5 ] Contó con la asistencia de la Universidad de Tianjin y la Universidad de Beihang durante sus primeros cinco años de desarrollo, [ 6 ] [ 7 ] [ 8 ] con la posterior colaboración de muchos otros programadores e ingenieros de software en Huawei , durante el desarrollo de la versión inicial de HarmonyOS y después de su incubación en los laboratorios de I+D. [ 9 ]
En 2020, Huawei registró “Cangjie Language” como marca comercial. En China, se clasificó como propiedad intelectual de “instrumento científico” y “servicio web” . En ese momento, también circularon rumores de que Huawei estaba desarrollando un nuevo lenguaje de programación independiente. [ 10 ]
Durante el HDC 2021, en octubre de 2021, se lanzó oficialmente HarmonyOS 3 Developer Preview, ya que el sistema operativo estaba avanzando hacia el desarrollo de software de programación declarativa . Huawei también anunció, en ese momento, que introduciría su propio lenguaje de programación para HarmonyOS en el futuro. [ 11 ]
También se informó que, entre 2021 y 2022, el lenguaje de programación debía haberse lanzado en 2022. Supuestamente, se retrasó debido al desarrollo continuo del sistema operativo HarmonyOS. [ 1 ] [ 12 ] [ 13 ]
El 17 de mayo de 2024, el lenguaje de programación Cangjie se agregó internamente al código fuente de OpenHarmony a través de su mecanismo de interfaz de funciones externas (FFI) . [ 14 ]
El 17 de junio de 2024, cuatro días antes de HDC 2024, Huawei cambió el nombre de su laboratorio de lenguajes de programación a lenguaje de programación Cangjie y anunció las sesiones para desarrolladores del nuevo lenguaje de programación para el evento. [ 15 ]
En la Conferencia de Desarrolladores Huawei HDC 2024, cuyo período de registro fue del 21 de junio de 2024 al 21 de octubre de 2024, se llevó a cabo el reclutamiento beta para HarmonyOS NEXT. [ 16 ] Solo se admitieron dispositivos Huawei Mate60 Pro , con planes para más dispositivos en 2025. [ 17 ] LeetCode, con sede en Silicon Valley, el banco ICBC, China Mobile y Kelan Software, fueron algunas de las primeras empresas locales de desarrollo de aplicaciones reclutadas por Huawei que utilizaban el nuevo lenguaje de programación. Esto tenía como objetivo probar y mostrar a otros desarrolladores y a la industria, mediante el lanzamiento de aplicaciones comerciales en el mercado chino, durante el lanzamiento de la nueva versión de la plataforma HarmonyOS Next. [ 18 ]
Del 5 al 7 de julio de 2024, se celebró la Conferencia ACM China Turing 2024 junto con el Foro de Lenguajes de Programación Huawei Cangjie, donde se presentó el nuevo lenguaje de programación nacional en universidades de China y se promovió su integración en el ámbito académico. [ 19 ] [ 20 ]
En septiembre de 2024, el lenguaje de programación Cangjie se lanzó oficialmente en LeetCode . [ 21 ]
Cangjie se publicó como código abierto el 30 de julio de 2025. [ 6 ] [ 8 ]
Historial de versiones
Historial de versiones de Cangjie lanzadas con HarmonyOS con el SDK de nivel 12 de la API principal de OpenHarmony a través del IDE DevEco Studio .
Plataformas
Las plataformas compatibles con Cangjie para el desarrollo de aplicaciones son: HarmonyOS , Linux , Windows , macOS , Android e iOS .
Un aspecto clave del diseño de Cangjie es su capacidad para integrarse con o sin código ArkTS. En dispositivos Huawei que ejecutan HarmonyOS, permite que las API nativas en las plantillas de DevEco Studio, el código C , C++ y ArkTS se ejecuten simultáneamente en un mismo programa. [ 23 ]
Características
A diferencia de ArkTS , Cangjie no deriva de ningún lenguaje de programación existente. Sin embargo, emplea conceptos modernos de teoría de lenguajes de programación y características avanzadas presentes en otros lenguajes de su categoría, como Java . Puede utilizarse en un entorno de desarrollo híbrido multilingüe, junto con ArkTS, lenguaje centrado en TypeScript , para generar ventajas complementarias que permitan una mayor eficiencia en función de diferentes escenarios. [ 24 ]
Cangjie incorpora un marco de programación AgentDSL integrado, con integración orgánica de lenguaje natural y lenguaje de programación.
Se informa que las aplicaciones que ya se han desarrollado en ArkTS no necesitan ser rediseñadas a la versión Cangjie en HarmonyOS Next. HarmonyOS admite una interoperabilidad de alto rendimiento entre el lenguaje Cangjie y el lenguaje ArkTS. En el futuro, los desarrolladores podrán elegir entre el lenguaje de programación Cangjie o ArkTS para el desarrollo incremental, según sus necesidades. [ 25 ] [ 17 ]
Huawei también afirma que el lenguaje integra características de seguridad en su diseño, con el objetivo de permitir a los desarrolladores centrarse en la funcionalidad de la aplicación y, al mismo tiempo, reducir las posibles vulnerabilidades de seguridad. [ 16 ] [ 5 ] El lenguaje proporciona un sistema de tipos estático y gestión automática de memoria para mejorar la estabilidad de la aplicación, junto con detección de errores en tiempo de ejecución y medidas de seguridad entre lenguajes. [ 26 ] Cangjie también admite varias cadenas de herramientas para el desarrollo de aplicaciones, incluidos servicios de lenguaje como: resaltado y asociación, depuración con depuración entre lenguajes y depuración visual a nivel de subprocesos, comprobación estática, análisis de rendimiento, gestión de paquetes, generación de documentación, herramientas Mock, marcos de prueba, herramientas de cobertura, herramientas Fuzz y herramientas de programación asistida inteligente. [ 27 ]
Sintaxis básica
El programa "¡Hola, mundo!" de Cangjie es:
principal () {println ( "Hola, mundo!" )}Las variables inmutables se declaran con la letpalabra clave `inmutable` y las mutables con la varpalabra clave `mutable`. Los valores deben inicializarse antes de leerlos. Los valores pueden inferir su tipo en función del tipo del valor inicial proporcionado. Si el valor inicial se establece después de la declaración del valor, se debe declarar un tipo explícitamente. [ 28 ]
Coincidencia de patrones
La coincidencia de patrones en Cangjie se proporciona mediante una matchexpresión, que tiene dos formas: una con un valor a coincidir y otra sin valor. Una matchexpresión con valor comprueba cada valor caseen secuencia, ejecutando el código correspondiente cuando el patrón coincide correctamente. Para garantizar la exhaustividad, esta última casesuele utilizar un patrón comodín_ para cubrir todos los valores posibles. Una matchexpresión sin valor seguirá evaluando la expresión que sigue al caso y no necesita un par de corchetes para la condición. [ 1 ]
Expresión Lambda
Una expresión lambda puede no tener parámetros: [ 1 ]
sea f = { a : Int64 , b : Int64 = > a + b }let print = { = > println ( "Hola Cangjie" ) }Interfaz de funciones externas
Cangjie tiene soporte FFI integrado para C y Python . Las funciones externas se declaran usando la foreignpalabra clave y se llaman usando la unsafepalabra clave. Para la interoperabilidad con C, Cangjie admite la conversión automática entre tipos de datos básicos. El CPointer<T>tipo corresponde a los tipos de puntero de C, por ejemplo, y CPointer<Int32>corresponde a int32_t *. Para Python, Cangjie admite la interacción a través de la biblioteca ffi.python en std. Requiere Python versión 3.0 o superior y actualmente solo funciona en Linux. [ 29 ] A continuación se muestra un ejemplo:
Metaprogramación
Cangjie está diseñado explícitamente para la metaprogramación [ 30 ] y admite dos tipos principales de macros :
- Macros sin atributo, que toman un único parámetro de entrada para el código que se está decorando.
- Las macros de atributos aceptan un parámetro de atributo adicional que permite a los desarrolladores pasar información extra a la macro.
En comparación con las funciones, las macros en Cangjie requieren la macropalabra clave `<script>`, que se puede colocar en una llamada macro packagey se invocan usando el símbolo `@`. Si bien se admite el anidamiento de macros en las llamadas, las definiciones de macros no se pueden anidar a sí mismas. La expansión de macros anidadas sigue un orden de adentro hacia afuera, y las macros pueden compartir información a través de variables globales. Las macros pueden aparecer tanto en llamadas entre paréntesis como sin ellos. Los desarrolladores pueden usar expresiones de comillas para crear objetos Token. [ 29 ]
Entorno de ejecución del módulo STD
El módulo de tiempo de ejecución STD, conocido como std.runtime, es un paquete de tiempo de ejecución para la biblioteca estándar de Cangjie (a través de la API de la biblioteca del lenguaje de programación de Cangjie) que interactúa con el entorno de ejecución del programa. Contiene funciones y variables que controlan, gestionan y supervisan la ejecución del programa. [ 1 ]
Herramientas de desarrollo
Compiladores
Con Ark Compiler , admite una variedad de lenguajes de programación de alto nivel dinámicos y estáticos como JavaScript , TypeScript , ArkTS y Cangjie, incluyendo la interoperabilidad entre Cangjie y ArkTS. [ 31 ] Es la base de compilación y ejecución que permite que OpenHarmony, junto con HarmonyOS, se ejecute en múltiples tipos de dispositivos, como dispositivos inteligentes, teléfonos móviles, PC, tabletas, televisores, automóviles y dispositivos portátiles. ArkCompiler consta de dos partes: la cadena de herramientas del compilador y el entorno de ejecución. [ 32 ]
El lenguaje de programación Cangjie también cuenta con un compilador Cangjie dedicado basado en LLVM que incluye un entorno de ejecución Cangjie para el desarrollo de código nativo de alto nivel en múltiples plataformas como Windows , Linux , macOS y HarmonyOS ( OpenHarmony ), orientado a plataformas de PC y aplicaciones complejas. [ 33 ]
gestor de paquetes
El Administrador de Paquetes de Cangjie ( CPM ) es la herramienta de administración de paquetes integrada para el lenguaje de programación Cangjie que viene instalada con el conjunto de herramientas cjc. En Cangjie, un paquete es la unidad de compilación más pequeña, y cada paquete puede contener varios archivos fuente (.cj) y tener su propio espacio de nombres; un módulo es una colección de paquetes, que representa una unidad funcional completa y sirve como unidad mínima para las versiones de desarrolladores externos. El newcomando crea un nuevo módulo, generando un archivo module.json y una carpeta src. El punto de entrada del programa de cada módulo debe estar en su directorio raíz, y el nivel superior puede tener como máximo una función principal como punto de entrada del programa. [ 29 ]
Compatibilidad con IDE y editores
Cangjie utiliza el complemento DevEco Studio para el desarrollo nativo de HarmonyOS . [ 34 ] [ 35 ]
Véase también
Referencias
- 1 2 3 4 5 Zhang Lei 2024a .
- ↑ Matsui, Emiko (21 de junio de 2024). "El lenguaje de programación de Huawei hará su debut oficial en HDC 2024" . Huawei Central . Consultado el 6 de julio de 2024 .
- ^ Zhang, Shudong (2005). "3".中华印刷通史[ Historia general de la imprenta china ] (en chino). Taipéi: Fundación Literaria XingCai. ISBN 957-99638-3-5.
- ^ Junqiong, Liang (12 de agosto de 2024). "名字里的中国浪漫" [ Romance en nombres chinos ] . Diario de Hainan .
- 1 2 "华为发布通用编程语言"仓颉",南京大学计算机" [ Huawei lanzó un lenguaje de programación de propósito general llamado "Cangjie", Feng Xinyu del Departamento de CS y Tecnología de la Universidad de Nanjing dirigió su desarrollo como arquitecto jefe. ] . www.nju.edu.cn (en chino). 21 de junio de 2024. Archivado desde el original el 30 de junio de 2024.
- 1 2 "Huawei liberará como código abierto el lenguaje de programación de desarrollo propio Cangjie" . thestar . The Star (Malasia) . 3 de julio de 2025. Consultado el 4 de septiembre de 2025 .
- ↑天津大学、北航深度参与华为"仓颉",推出首个基于国产编程语言的 AI 智能体编程框架"苍穹"[ La Universidad de Tianjin y la Universidad de Beihang participan activamente en el proyecto "Cangjie" de Huawei, lanzando el primer marco de programación de agentes inteligentes de IA basado en un lenguaje de programación nacional, "Cangqiong" ] . www.ithome.com . Consultado el 6 de julio de 2024 .
- 1 2 "Cangjie (lenguaje de programación)" . TAdviser . Consultado el 5 de septiembre de 2024 .
- ↑华为下一代编程语言"仓颉"首席架构师揭晓:南京大学冯新宇教授[ Se ha revelado quién es el arquitecto principal del lenguaje de programación de próxima generación de Huawei, "Cangjie": el profesor Feng Xinyu de la Universidad de Nanjing ] . ITHome . Consultado el 6 de julio de 2024 .
- ↑ Amit (25 de septiembre de 2021). "Huawei lanzará el próximo año un lenguaje de programación de desarrollo propio llamado Cangjie" . HU . Consultado el 6 de julio de 2024 .
- ↑ Benjie, Joshua (17 de marzo de 2022). "Huawei prueba el registro de su propio lenguaje de programación" . RPRNA . Archivado del original el 17 de marzo de 2022. Recuperado el 6 de julio de 2024 .
- ↑ Li, Deng (16 de junio de 2022). "El lenguaje de programación de Huawei se lanzará en la segunda mitad de este año" . Huawei Central . Consultado el 6 de julio de 2024 .
- ↑ Walker, Elyssa (2 de febrero de 2020). "Huawei está desarrollando su propio lenguaje de programación; se presentará en 2022" . CodeBug'22 . Consultado el 6 de julio de 2024 .
- ↑ Benjamin (14 de mayo de 2024). "El lenguaje de programación Cangjie (CJ), desarrollado por Huawei, podría estar disponible a finales de este mes más cerca de lo esperado" . HarmonyOSHub . Consultado el 6 de julio de 2024 .
- ↑ Nick (17 de junio de 2024). "Huawei cambia el nombre de su laboratorio de lenguajes de programación a 'Cangjie Programming Language' y anuncia novedades en HDC 2024" . HarmonyOSHub . Consultado el 6 de julio de 2024 .
- 1 2 Rajesh (6 de junio de 2024). "Huawei anuncia el lenguaje de programación "Cangjie" de desarrollo propio" . gizmochina . Consultado el 5 de septiembre de 2024 .
- ^ "华为开启鸿蒙 HarmonyOS NEXT 仓颉编程语言开发者预览版 Beta 招募 - IT之家" . www.ithome.com . Consultado el 6 de julio de 2024 .
- ^ "华为仓颉编程语言首批合作企业亮相:中国工商银行、中国移动、科蓝软件等在列 - IT之家" . www.ithome.com . Consultado el 6 de julio de 2024 .
- ^ "ACM 中国图灵大会 2024 将于 7 月 5 日举行,设华为仓颉编程语言论坛 - IT之家" . www.ithome.com . Consultado el 6 de julio de 2024 .
- ↑ Nick (7 de julio de 2024). "El lenguaje de programación Cangjie se presenta en la Conferencia Turing de ACM China" . HarmonyOSHub . Consultado el 7 de julio de 2024 .
- ↑编程刷题平台 LeetCode 力扣所有题目均已支持华为仓颉语言[ Todos los problemas de la plataforma de práctica de programación LeetCode ahora son compatibles con el lenguaje Cangjie de Huawei ] . Sohu . Consultado el 3 de diciembre de 2024 .
- ↑ Matsui, Emiko (21 de junio de 2024). "Huawei inicia el reclutamiento beta del lenguaje de programación Cangjie" . Huawei Central . Consultado el 6 de julio de 2024 .
- ↑华为仓颉编程语言首批合作企业亮相:中国工商银行、中国移动、科蓝软件等在列[ El lenguaje de programación Cangjie de Huawei presenta su primer grupo de empresas asociadas: ICBC, China Mobile, Kingsoft Software y otras incluidas ] . ITHome . Consultado el 6 de julio de 2024 .
- ↑汪淼 (21 de junio de 2024). "华为:仓颉编程语言自主可控,没有基于任何现有的编程语言演进" [ Huawei: el lenguaje de programación Cangjie se puede controlar de forma independiente y no se basa en ningún lenguaje de programación existente ] . ITHome (en chino). Wikidata Q140042829 . Consultado el 6 de julio de 2024 .
- ↑ "Huawei ha anunciado su propio lenguaje de programación, Cangjie" . ITC.ua. 21 de junio de 2024. Consultado el 6 de julio de 2024 .
- ↑ "Huawei revela un nuevo lenguaje de programación que promete inteligencia artificial nativa y seguridad robusta" . 23 de junio de 2024. Consultado el 6 de julio de 2024 .
- ↑ Bates, Kryzt (21 de junio de 2024). "Huawei lanza el lenguaje de programación de próxima generación "Cangjie" tras 5 años de investigación" . GAMINGDEPUTY . Consultado el 6 de julio de 2024 .
- ^ Liu Yue y Zhang Rong Chao 2024 .
- ^ Xu Liwen 2024 .
- ↑ Dong, Sun y Schumi 2024 .
- ↑ openharmony/arkcompiler_cangjie_ark_interop , OpenHarmony, 1 de diciembre de 2025 , consultado el 5 de diciembre de 2025
- ↑ "ArkCompiler Runtime" . OpenAtom Gitee . Consultado el 12 de febrero de 2024 .
- ^ cangjielanguage/cangjie_compiler , Cangjie, 5 de diciembre de 2025 , consultado el 5 de diciembre de 2025
- ↑ "HarmonyOS NEXT Cangjie Language Preview Developer Recruitment" . Desarrollador de Huawei (Desarrollador de HarmonyOS) . Huawei . Consultado el 6 de julio de 2024 .
- ↑ Adolphi, Benjamin (20 de mayo de 2025). "Un primer vistazo a la seguridad de las aplicaciones en HarmonyOS NEXT" . promon . Consultado el 12 de septiembre de 2025 .
Fuentes
- Dong, Guoliang; Sun, Jun; Schumi, Richard (2 de enero de 2024). "PTE: Pruebas de compiladores basadas en semántica axiomática". arXiv : 2401.01036 [ cs.SE ].
- Liu Yue; Zhang Rong Chao (1 de julio de 2024). Introducción rápida a la programación en Cangjie (en chino). Posts and Telecommunications Press. ISBN 978-7115624710.
- Xu Liwen (30 de junio de 2024). Introducción. Programación avanzada y práctica en lenguaje Cangjie (en chino). Editorial de la Universidad de Tsinghua . ISBN 978-7302625889.
- Zhang Lei (1 de julio de 2024a). Microlección práctica de idioma Cangjie (en chino). Editorial de la Universidad de Tsinghua . ISBN 978-7302616597.
Lecturas adicionales
- Liu Anzhan (30 de junio de 2024). Lenguaje de programación Cangjie (en chino). Editorial de la Universidad de Tsinghua . ISBN 978-7302615309.
- Zhang Lei (1 de julio de 2024b). Metaprogramación en lenguaje Cangjie (en chino). Editorial de la Universidad de Tsinghua . ISBN 978-7302637936.
- Jun Wang; Chenghao Su; Yijie Ou (1 de agosto de 2025). "Traducción a un lenguaje con pocos recursos con retroalimentación del compilador: un estudio de caso sobre Cangjie". IEEE Transactions on Software Engineering . 51 (9). IEEE : 2671–2692 . Bibcode : 2025ITSEn..51.2671W . doi : 10.1109/TSE.2025.3594908 .
- Sam Lindley (1 de abril de 2025). "Programación orientada al manejador de efectos" (PDF) . Universidad de Edimburgo .
Enlaces externos
- Cangjie-lang
- Grupos de desarrolladores de HUAWEI (HDG)
- Software 2024
- Software multiplataforma
- Lenguajes de programación orientados a objetos
- Lenguajes de scripting
- Compiladores de código fuente a código fuente
- Lenguajes de programación de tipado estático
- Productos Huawei