stringtranslate.com

Ring (lenguaje de programación)

Ring es un lenguaje de programación de propósito general y tipado dinámicamente . Puede integrarse en proyectos C/C++, extenderse usando código C/C++ o usarse como lenguaje independiente. [5] Los paradigmas de programación admitidos son imperativo , procedimental , orientado a objetos , funcional , meta , declarativo usando estructuras anidadas y programación natural . [6] [7] El lenguaje es portátil ( Windows , Linux , macOS , Android , [8] WebAssembly , [9] etc.) [10] y puede usarse 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 específico de dominio 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 con la construcción de 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 utilizando diferentes estilos. A continuación se muestra un ejemplo del programa estándar "¡Hola mundo!" que utiliza cuatro estilos diferentes.

El primer estilo:

ver "¡Hola, mundo!"

El segundo estilo:

poner "¡Hola, mundo!"

El tercer estilo:

print("¡Hola, mundo!")

Otro estilo: similar a los 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 del idioma .

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

Traducir las palabras clave de Ring al japonés

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

Traducir las palabras clave de Ring al árabe

ChangeRingKeyword Ver másLetra "¡Hola, mundo!"ChangeRingKeyword إطبع Ver

Utilice un estilo similar al lenguaje de programación Pascal

ChangeRingKeyword func función   ChangeRingKeyword ver escritura   begin = : begin  función principal comienza a escribir ( " Hola , mundo !" ) ; retorna 0 ; fin   Función ChangeRingKeyword func   ChangeRingKeyword escribir ver  

[22] [23] [24]

Comando de bucle

El comando Loop puede tomar un entero para aplicar la semántica de continuación a los bucles externos circundantes [25]

changeRingKeyword bucle continuarcuenta = 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 la 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() # Llamar al método print()} # fin del acceso al objeto mediante llavespunto de clase # Define la clasexyz # Define los atributos (x,y,z)func print # Define el método print()? x + nl + y + nl + z # Imprimir los valores de los atributos (nl significa imprimir una nueva línea)

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

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

Implementación

Compilador y máquina virtual

Implementación de Ring VM con PWCT: instrucciones de máquina virtual
Implementación de Ring VM con PWCT: estructura de lista

Los programas Ring no se interpretan directamente a partir del archivo textual Ring, sino que se compilan en código de bytes , que luego se ejecuta en la máquina virtual Ring . El proceso de compilación normalmente es 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 omitiendo el compilador.

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

Extensiones

Diseñador de formularios en línea (WebAssembly): uso de RingQt
Implementación de Sokoban con Ring Game Engine para juegos 2D
Uso de 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 se proporcionan y mantienen oficialmente en el lado de Ring, los usuarios no se ven afectados por dependencias de bibliotecas que pueden causar problemas en otros idiomas, y existe la preocupación de que no se puedan usar de repente incluso si hay cambios destructivos en la especificación 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 lenguaje.

Algunas de estas aplicaciones son

[31] [32]

Herramientas

Ejecutar el juego Tetris usando el 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 en Sphinx . También está disponible una traducción al japonés de la documentación. [33]

Recepción

Popularidad

Ring tuvo un rápido ascenso 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ó en el top 50 por primera vez (posición 45). [34] A octubre de 2020, Ring ocupa la posición 93 en el índice TIOBE. [35] Ring está incluido 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 ampliamente 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 del primer carácter de las cadenas es 1.

cName = "Anillo"? cNombre[1] # imprimir RaList = ["Uno", "Dos", "Tres"]? aList[1] # imprimir Uno

Conversiones de tipos implícitas

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

/*** Normas:** <NÚMERO> + <CADENA> --> <NÚMERO>** <CADENA> + <NÚMERO> --> <CADENA>*/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)

Véase también

Referencias

  1. ^ M. Ayouni (29 de julio de 2020). "Un diálogo con Mahmoud Fayed" (PDF) . Springer .
  2. ^ "Publicado 1.21.2". 13 de septiembre de 2024. Consultado el 13 de septiembre 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). "Reseña 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}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  7. ^ Ahmed Tartour (enero de 2020). "Tu camino hacia la programación (Libro árabe, páginas 56-57) habla sobre Ring" (PDF) . Kotobna.
  8. ^ Bernhard Lauer (14 de agosto de 2018). «Ring: flexible, simple, rápido». Dotnetpro.
  9. ^ Paul Krill (24 de agosto de 2020). "La actualización del lenguaje Ring se centra en WebAssembly". InfoWorld .
  10. ^ Ghanem, Mohamed (2021). Desarrollo de software Poet con lenguaje Ring (PDF) . MetaBook (Egipto - Mansoura). ISBN 978-977-6928-38-1.
  11. ^ Introducción a la programación en anillo: de principiante a profesional | Mansour Ayouni | Apress.
  12. ^ Hany Salah (11 de enero de 2016). "Ring: un nuevo lenguaje de programación". youm7.com . youm7 .
  13. ^ Ahmed Mohammed Hassan. "Ring: un lenguaje de programación desarrollado por árabes". muslims-res.com . Consultado el 28 de septiembre de 2020 .
  14. ^ Abedallah Salehani. "Un libro sobre el lenguaje de programación Ring". muslims-res.com . Consultado el 28 de septiembre de 2020 .
  15. ^ Ring Team (septiembre de 2021). "Lenguaje del ring: preguntas frecuentes (FAQ)". Ring Team.
  16. ^ Fayed (abril de 2010). "Lenguaje de programación Supernova". Proyecto Code .
  17. ^ Omnia (diciembre de 2011). "Lenguaje Supernova por programador egipcio". Youm7 .
  18. ^ Equipo de Softpedia (23 de octubre de 2021). «Revisión de Ring 1.16». Softpedia .
  19. ^ Naveen Verma (14 de agosto de 2018). "Lenguaje de programación Ring: ¿qué necesitas saber?". Medium .
  20. ^ Mones Hawas (29 de mayo de 2018). "Avances en el desarrollo de PWCT 2.0 utilizando Ring". youm7.com . youm7 .
  21. ^ Fayed, Mahmoud S.; Al-Qurishi, Muhammad; Alamri, Atif; Hossain, M. Anwar; Al-Daraiseh, Ahmad A. (octubre de 2020). "PWCT: un nuevo lenguaje de programación visual de propósito general en apoyo del desarrollo de aplicaciones generalizadas". CCF Transactions on Pervasive Computing and Interaction . 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 . Code Project .
  23. ^ Roshan Ali (4 de junio de 2018). "Tutorial de programación de anillos". YouTube .
  24. ^ "Introducción - Documentación de Third Style — Ring 1.19".
  25. ^ Dr. Rangarajan Krishnamoorthy (21 de agosto de 2021). "Comando "Loop" en el 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 anillo: 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 con RingAllegro". codeproject.com . Code Project .
  29. ^ Fayed (11 de agosto de 2017). "Uso de la biblioteca de programación de lenguaje natural (NLPL) en el lenguaje de programación Ring". codeproject.com . Code Project .
  30. ^ Fayed (12 de octubre de 2016). "Programación en lenguaje natural en el lenguaje de programación Ring". codeproject.com . Code Project .
  31. ^ Open Source Developers (15 de junio de 2019). "Aplicaciones escritas en Ring". Equipo Ring.
  32. ^ Etqan Company (25 de septiembre de 2018). «Juego Gold Magic 800 de Etqan Company». Steam (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). «Top 100 Programming Languages». BairesDev . Consultado el 6 de octubre de 2020 .
  36. ^ "Desarrollemos mejor el software, juntos". GitHub .
  37. ^ Ciklum (12 de diciembre de 2017). «Nuevos lenguajes de programación: ¿una moda 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}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  38. ^ "Variables — Documentación de Ring 1.16".

Lectura adicional

Enlaces externos