stringtranslate.com

Anillo (lenguaje de programación)

Ring es un lenguaje de programación de propósito general tipado dinámicamente . Puede integrarse en proyectos C/C++, ampliarse usando código C/C++ o usarse como un lenguaje independiente. [5] Los paradigmas de programación admitidos son imperativo , procedimental , orientado a objetos , funcional , meta , declarativo utilizando estructuras anidadas y programación natural . [6] [7] El lenguaje es portátil ( Windows , Linux , macOS , Android , [8] WebAssembly , [9] etc.) [10] y se puede utilizar para crear aplicaciones de consola , GUI , web , juegos y móviles . [11] [12] [13] [14]

Historia

Ring IDE (Bloc de notas de Ring - Diseñador de formularios)

En 2009, Mahmoud Samir Fayed creó un lenguaje de dominio específico menor llamado Supernova que se centra en la creación de interfaces de usuario (UI) y utiliza algunas ideas relacionadas con la programación en lenguaje natural , luego se dio cuenta de la necesidad de un nuevo lenguaje que sea de propósito general y pueda aumentar la productividad de la creación de lenguaje natural. Ring tiene como objetivo ofrecer un lenguaje centrado en ayudar al desarrollador a crear interfaces naturales y DSL declarativos. [15] [16] [17] [18]

Objetivos

PWCT 2.0 (Android): en desarrollo con Ring

Los objetivos generales detrás de Ring: [19] [20]

Ejemplos

Diferentes estilos para escribir el código fuente.
Programación declarativa (desarrollo web)
Programación en lenguaje natural
Prueba del rendimiento del control TreeView con RingQt

programa hola mundo

El mismo programa se puede escribir usando diferentes estilos. A continuación se muestra un ejemplo del estándar "¡Hola, mundo!" programa usando cuatro estilos diferentes.

El primer estilo:

consulte "¡Hola, mundo!"

El segundo estilo:

ponga "¡Hola, mundo!"

El tercer estilo:

print("¡Hola mundo!")

Otro estilo: similar a lenguajes xBase como Clipper y Visual FoxPro

? "¡Hola Mundo!"

Cambiar las palabras clave y los operadores.

Ring admite el cambio de palabras clave y operadores de idioma .

Esto se puede hacer muchas veces en el mismo archivo fuente y es útil para

Traducir palabras clave de anillo al japonés

Cambiar palabra clave de anillo Ver 手紙を出すChangeRingOperator + そして改行 = nlします。 = :します。手紙を出す "こんにちは、世界" そして 改行 します.ChangeRingKeyword 手紙を出す Ver // キーワードの復旧ChangeRingOperator そして + // 演算子の復旧

Traducir palabras clave de Ring al Árabe

Cambiar palabra clave de anillo Ver إطبعإطبع "¡Hola mundo!"CambiarRingKeyword إطبع Ver

Utilice un estilo similar al lenguaje de programación Pascal.

Función ChangeRingKeyword func   ChangeRingKeyword ver escribir   comenzar = : comenzar  función principal comenzar a escribir ( " ¡Hola , mundo !" ) ; devolver 0 ; fin   Función ChangeRingKeyword func   ChangeRingKeyword escritura ver  

[22] [23] [24]

Comando de bucle

El comando Bucle puede tomar un número entero para aplicar la semántica de continuar para encerrar bucles externos [25]

El bucle changeRingKeyword continúacontar = 2para x en 1:5 para y = 1 a 2 si x = 3  ? "A punto de ejecutar 'bucle', cuenta = " + cuenta continuar contando OK  ? "x: " + x + ", y: " + y próximopróximo

Programación orientada a objetos

Ring admite programación orientada a objetos (clases, objetos, composición, herencia, encapsulación, etc.) [26]

nuevo punto { # Crea un nuevo objeto a partir de la clase Punto y accede al objeto usando llavesx=10 y=20 z=30 # Establecer los atributos del objetoprint() # Llama al método print()} # fin del acceso al objeto usando llavespunto de clase # Definir la clasexyz # Definir los atributos (x,y,z)func print # Definir el método print()? x + nl + y + nl + z # Imprime los valores de los atributos (nl significa imprimir una nueva línea)

Las clases In Ring se pueden definir en tiempo de ejecución usando la función Eval() [27]

? "Creando una nueva clase dinámicamente..."eval("clase Clase Dinámica a b")? "Imprimiendo la instancia..."? nueva clase dinámica {a=1 b=2}

Implementación

Compilador y máquina virtual.

Implementación de Ring VM usando PWCT - Instrucciones de máquina virtual
Implementación de Ring VM usando PWCT - Estructura de lista

Los programas Ring no se interpretan directamente a partir del archivo textual Ring, sino que se compilan en un código de bytes , que luego se ejecuta en la máquina virtual Ring . El proceso de compilación suele ser invisible para el usuario y se realiza en tiempo de ejecución , pero se puede realizar sin conexión para aumentar el rendimiento de carga o reducir la huella de memoria del entorno host al excluir el compilador.

El compilador y la máquina virtual se diseñan mediante programación visual a través del software Programming Without Coding Technology y luego se genera el código C.

Extensiones

Diseñador de formularios en línea (WebAssembly): uso de RingQt
Implementación de Sokoban usando Ring Game Engine para juegos 2D
Usando Qt3D a través de RingQt

Las siguientes son extensiones que se pueden usar inmediatamente después de la instalación de la versión de instalación completa (con un tamaño de archivo de aproximadamente 280 MB para Ring 1.12). Dado que estos se proporcionan y mantienen oficialmente en el lado de Ring, a los usuarios no les molestan las dependencias de la biblioteca que pueden causar problemas en otros idiomas, y existe la preocupación de que no puedan usarse repentinamente incluso si hay cambios destructivos en las especificaciones del idioma.

Las extensiones se implementan en aproximadamente 500.000 líneas de código C y C++ .

[28]

Bibliotecas

Ring viene con bibliotecas escritas en el propio Ring, como bibliotecas relacionadas con el desarrollo web y de juegos.

[29] [30]

Aplicaciones

Juego Gold Magic 800: uso de RingAllegro y RingOpenGL
Juego Othello en línea (WebAssembly): uso de RingQt

Ring se distribuye con más de 60 aplicaciones escritas en el idioma.

Algunas de estas aplicaciones son

[31] [32]

Herramientas

Ejecutar el juego Tetris usando Ring Package Manager

Ring se distribuye con un IDE estándar que incluye las siguientes herramientas:

Ring también se distribuye con extensiones para muchos editores de código como Emacs , Notepad++ , Geany , Atom , Sublime Text 2 y Visual Studio Code .

Documentación

Ring se distribuye con documentación escrita con Sphinx . También está disponible una traducción japonesa de la documentación. [33]

Recepción

Popularidad

Ring tuvo un rápido aumento y caída en popularidad según lo medido por el Índice de la comunidad de programación TIOBE . En febrero de 2018, Ring entró por primera vez en el top 50 (posición 45). [34] En octubre de 2020, Ring ocupa la posición 93 en el índice TIOBE. [35] Ring figura en GitHub en la lista de lenguajes de programación que se desarrollan activamente. [36]

Crítica

Los críticos de Ring señalaron algunas características de Ring que no son comunes en los lenguajes de programación más utilizados. [37]

El índice de la lista comienza desde 1 en lugar de 0.

En Ring, el índice del primer elemento de las listas y el primer carácter de las cadenas es 1.

cNombre = "Anillo"? cNombre[1] # imprimir RunaLista = ["Uno","Dos","Tres"]? aList[1] # imprimir uno

Conversiones de tipos implícitas

El idioma puede convertir automáticamente entre números y cadenas. [38]

/*** Normas:** <NÚMERO> + <CADE> --> <NÚMERO>** <CADE> + <NÚMERO> --> <CADE>*/x = 10 # x es un númeroy = "20" # y es una cadenanSum = x + y # nSum es un número (y se convertirá en un número)cMsg = "Sum = " + nSum # cMsg es una cadena (nSum se convertirá en una cadena)

Ver también

Referencias

  1. ^ M. Ayouni (29 de julio de 2020). "Un diálogo con Mahmoud Fayed" (PDF) . Saltador .
  2. ^ "Lanzado 1.20". 11 de abril de 2024 . Consultado el 12 de abril de 2024 .
  3. ^ Azeez Adewale. "El lenguaje de programación simple".
  4. ^ Aavesh Jilani. "El lenguaje de programación Dragon".
  5. ^ Dr. Rangarajan Krishnamoorthy (7 de agosto de 2021). "Primer encuentro con el lenguaje de programación Ring". rangakrish.com. Archivado desde el original el 9 de agosto de 2021.
  6. ^ Omar Selim (enero de 2018). "Revisión del lenguaje de programación Ring" (PDF) . Revista BIMArabia. Archivado desde el original el 17 de noviembre de 2023 . Consultado el 24 de marzo de 2024 .{{cite web}}: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )
  7. ^ Ahmed Tartour (enero de 2020). "Tu camino hacia la programación (Libro en árabe, páginas 56-57) habla sobre Ring" (PDF) . Kotobná.
  8. ^ Bernhard Lauer (14 de agosto de 2018). "Anillo: flexible, sencillo, rápido". Dotnetpro.
  9. ^ Paul Krill (24 de agosto de 2020). "La actualización del lenguaje de timbre se centra en WebAssembly". InfoMundo .
  10. ^ Ghanem, Mohamed (2021). Desarrollo de software Poet utilizando el lenguaje Ring (PDF) . MetaBook (Egipto - Mansoura). ISBN 978-977-6928-38-1.
  11. ^ Programación inicial en timbre: de principiante a profesional | Mansour Aaiuni | Presione.
  12. ^ Hany Salah (11 de enero de 2016). "Ring: un nuevo lenguaje de programación". youm7.com . tu7 .
  13. ^ Ahmed Mohammed Hassan. "Ring: un lenguaje de programación desarrollado por árabe". musulmanes-res.com . Consultado el 28 de septiembre de 2020 .
  14. ^ Abedallah Salehani. "Un libro sobre el lenguaje de programación Ring". musulmanes-res.com . Consultado el 28 de septiembre de 2020 .
  15. ^ Equipo Ring (septiembre de 2021). "Lenguaje de timbre: preguntas frecuentes (FAQ)". Equipo de anillo.
  16. ^ Fayed (abril de 2010). "Lenguaje de programación de supernova". Proyecto de código .
  17. ^ Omnia (diciembre de 2011). "Lenguaje de supernova por programador egipcio". Tum7 .
  18. ^ Equipo de Softpedia (23 de octubre de 2021). "Revisión del anillo 1.16". Softpedia .
  19. ^ Naveen Verma (14 de agosto de 2018). "Lenguaje de programación en anillo: ¿Qué necesita saber?". Medio .
  20. ^ Mones Hawas (29 de mayo de 2018). "Avances en el desarrollo de PWCT 2.0 utilizando Ring". youm7.com . tu7 .
  21. ^ Fayed, Mahmoud S.; Al-Qurishi, Mahoma; Alamri, Atif; Hossain, M. Anwar; Al-Daraiseh, Ahmad A. (octubre de 2020). "PWCT: un novedoso lenguaje de programación visual de propósito general que respalda el desarrollo generalizado de aplicaciones". Transacciones CCF sobre interacción e informática generalizada . 2 (3): 164-177. doi :10.1007/s42486-020-00038-y. S2CID  225395711.
  22. ^ Rubin Liu (28 de diciembre de 2017). "Diferentes estilos para escribir el programa Hello World en el lenguaje de programación Ring". codeproject.com . Proyecto de código .
  23. ^ Roshan Ali (4 de junio de 2018). "Tutorial de programación de anillos". YouTube .
  24. ^ "Primeros pasos: tercer estilo: documentación de Ring 1.19".
  25. ^ Dr. Rangarajan Krishnamoorthy (21 de agosto de 2021). "Comando " Bucle "en lenguaje de programación Ring". rangakrish.com. Archivado desde el original el 23 de marzo de 2023.
  26. ^ "Programación orientada a objetos (POO): documentación de Ring 1.16".
  27. ^ Dr. Rangarajan Krishnamoorthy (4 de septiembre de 2021). "Lenguaje de timbre: comportamiento dinámico de clases y objetos". rangakrish.com. Archivado desde el original el 29 de mayo de 2023.
  28. ^ Majdi Sobain (2 de mayo de 2017). "Rompecabezas de cuadrados usando RingAllegro". codeproject.com . Proyecto de código .
  29. ^ Fayed (11 de agosto de 2017). "Uso de la biblioteca de programación en lenguaje natural (NLPL) en el lenguaje de programación Ring". codeproject.com . Proyecto de código .
  30. ^ Fayed (12 de octubre de 2016). "Programación en lenguaje natural en el lenguaje de programación en anillo". codeproject.com . Proyecto de código .
  31. ^ Desarrolladores de código abierto (15 de junio de 2019). "Aplicaciones escritas en Ring". Equipo de anillo.
  32. ^ Compañía Etqan (25 de septiembre de 2018). "Juego Gold Magic 800 de Etqan Company". Vapor (software) .
  33. ^ "ようこそ Anillo 取扱説明書へ! - プログラミング言語 Anillo 1.16 取扱説明書". Archivado desde el original el 30 de octubre de 2021 . Consultado el 30 de octubre de 2021 .
  34. ^ "Índice TIOBE | TIOBE - la empresa de calidad del software". www.tiobe.com . Archivado desde el original el 21 de febrero de 2018 . Consultado el 28 de febrero de 2022 .
  35. ^ Emma White (6 de octubre de 2020). "Los 100 principales lenguajes de programación". BairesDev . Consultado el 6 de octubre de 2020 .
  36. ^ "Creemos software mejor, juntos". GitHub .
  37. ^ Ciklum (12 de diciembre de 2017). "Nuevos lenguajes de programación: ¿una exageración o una realidad?". ciklum.com . Ciklum . Archivado desde el original el 7 de diciembre de 2017 . Consultado el 1 de febrero de 2024 .{{cite web}}: Mantenimiento CS1: bot: estado de la URL original desconocido ( enlace )
  38. ^ "Variables: documentación de Ring 1.16".

Otras lecturas

enlaces externos