Presentamos Nzym: un libro blanco sobre el lenguaje de programación que revolucionará el multimedia

Published on 12 Aug 2023

Logotipo de Nzym

Introducción

Nzym es un nuevo lenguaje de programación que se centra en hacer que la programación sea más fácil, sencilla y rápida, agilizando el tiempo de producción para producir incluso mejores resultados, especialmente para aplicaciones multimedia. En el núcleo de Nzym se encuentra un objeto de archivo de script que puede existir por sí solo o estar vinculado con otros. Es a través de estos objetos de script que el intérprete de Nzym puede generar programas y páginas de contenido. Este documento sirve para presentar este lenguaje y los nuevos conceptos que contiene.


Sintaxis de Nzym

La sintaxis básica de Nzym es muy sencilla. Los objetos se crean asignando un valor a una variable del tipo adecuado. Por ejemplo, para crear un nuevo objeto de tipo Número, se debe escribir lo siguiente:

Número myInteger = 10;

Los métodos se invocan en objetos mediante la notación de punto. Por ejemplo, para invocar el método Add en un objeto de tipo Number, debe escribir lo siguiente:

miEntero.Add = 6;
// Si antes el valor de myInteger era igual a 10, ahora será 16

También es importante tener en cuenta que el punto y coma ( ; ) se utiliza para terminar todas las declaraciones y un comentario se crea utilizando dos barras diagonales (//) y, generalmente, un espacio después.

Tipos primitivos

Nzym introduce sólo cinco tipos primitivos básicos:
  • Número : almacenará números enteros, flotantes o una combinación de ambos
  • Cadena : almacena caracteres y se puede utilizar para expresiones más complejas
  • Booleano : un tipo binario que almacena verdadero o falso.
  • Grupo : una matriz de objetos que se utiliza para crear y definir elementos más complejos.
  • Enlace : un tipo único que puede ser nulo o que dirige a una función

Clases y métodos

Las clases de Nzym se pueden utilizar para crear tipos personalizados. Cada archivo de script de un proyecto se puede llamar y acceder a él como una clase; sin embargo, dentro de un archivo de script se pueden crear otras clases. Nzym también tiene una visión única de los métodos. Hay dos tipos de métodos en términos de cómo se crean y esto se basa en dónde se crean. Aquellos que están contenidos en clases anidadas se denominan simplemente métodos. Los que están fuera de una clase se denominan funciones. El siguiente código ofrece un ejemplo de los dos:


Persona de clase;
Cadena nombre= Sin nombre;
Número de edad = 18;
Método ShowName;
Nombre crudo;
Devolver;
Devolver;
Función GetPerson = String;
Persona randomPerson;
randomPerson.name = Un extraño;
PersonaAleatoria.MostrarNombre;
Devolver;

El código anterior crea una clase llamada Persona e instancia las propiedades de nombre y edad, configurándolas con variables predeterminadas. Además, en Persona hay un método que imprimirá el nombre de la clase Persona dada. La función GetPerson tiene un tipo de retorno de cadena y, en realidad, crea una nueva Persona e imprime su nombre en la pantalla según el método dado de la clase Persona.


Herencia

Las clases de Nzym pueden heredar de otras clases. Esto le permite reutilizar el código y crear tipos más complejos. Para heredar de una clase, debe utilizar el signo igual después de crear la clase; por ejemplo, la siguiente clase hereda de la clase Person:

Clase SuperHero = Persona;
Superpoderes grupales = (Ojos láser, Súper fuerza, Vuelo);
Número potenciaactiva = 1;
Método PowerInUse;
Superpoderes en bruto[activePower];
Devolver;
Devolver;

La clase SuperHero también tendrá acceso a todas las propiedades y métodos de la clase Persona.

Palabras de moda de Nzym

Nzym: Un lenguaje simple, orientado a objetos, interpretado, imperativo, multiplataforma, de alto rendimiento, multiproceso y dinámico.

Muchos sistemas de lenguajes de programación utilizan un conjunto de palabras clave estándar que los caracterizan, establecidas de acuerdo con sus paradigmas, disciplina de tipificación y los problemas que el lenguaje pretende resolver. Usamos estas palabras clave, a las que aquí nos referimos como palabras de moda, para describir Nzym y presentar el núcleo fundador de su estructura y ecosistema.

Sadomba-Mahari Computers (Private) Limited (o simplemente SM), la empresa detrás del desarrollo de Nzym, entró en la industria del desarrollo web en 2010, unos meses después de haberse registrado, y también incursionó en la creación de software especializado para la industria cinematográfica local en Zimbabue. Unos años más tarde, también comenzaron a desarrollar aplicaciones móviles dirigidas a teléfonos móviles de gama alta en las plataformas Android, Windows Phone e iOS. Las partes en cursiva y sangría que aparecen a continuación buscan brindar una descripción de los problemas que enfrenta SM y brindar ejemplos de las palabras clave de Nzym presentadas.

Simple

Uno de los principios básicos del desarrollo de Nzym fue la necesidad de contar con sistemas que pudieran programarse fácilmente sin necesidad de mucho entrenamiento, que tuvieran algunas similitudes con conceptos anteriores, pero que tuvieran un toque más simplificado que atrajera incluso a los más principiantes en programación. Los lenguajes de programación más comunes que se enseñaban durante el tiempo del desarrollo de Nzym eran aquellos similares a la sintaxis de C++, incluidos C++, C#, Java y Python. Estos lenguajes de programación también están orientados a objetos. Si bien C++ venía con algunos niveles de complejidad que los otros mencionados no tenían, como la falta de administración de memoria y el concepto de punteros y sobrecarga de operadores, los otros intentaron mejorar esos conceptos, pero aún quedaba una curva de aprendizaje pronunciada para que los programadores los dominaran con sobrecargas adicionales y conceptos como recolección de basura, herencia múltiple y amplias coerciones automáticas.
Nzym se centra en el objeto y elimina por completo la necesidad de llaves y muchos tipos de corchetes o incluso comillas. Por lo general, cada enunciado en Nzym tiene dos o tres partes, principalmente en forma de:

Tipo nameOfType = valor;
nombreOfType.MethodOfType = valor2;
Clase NombreDeClase = InheritFrom;
Función NameOfFx = ReturnType;
Nombre del método = ReturnType;

Al eliminar las características poco utilizadas, poco comprendidas y confusas de C++ y al eliminar los aspectos a veces confusos de la sintaxis de tipo C, que para muchos ha sido causa de mucho dolor y pena, nació un lenguaje más simple.

Al principio, SM empleaba solo a tres programadores a tiempo completo, dos de los cuales eran pasantes contratados en la universidad. El mayor desafío que se les presentó fue poder crear y replicar sitios web estáticos, hechos a medida para varios tipos de clientes, pero reduciendo el tiempo de producción. Obviamente, las hojas de estilo iban a ser diferentes de un proyecto a otro, pero había elementos que iban a existir en todos los proyectos, especialmente la navegación, los widgets de pie de página, la página de inicio, la página de contacto, una página acerca de nosotros y una página para destacar productos y mostrar portafolios. Era necesario que fuera posible una forma más sencilla de crear prototipos y producir...

Otro aspecto de la sencillez es la portabilidad visual. Uno de los objetivos de Nzym es permitir la creación de aplicaciones multimedia que puedan ejecutarse en cualquier plataforma y mantener su aspecto y atractivo visual. El uso de hojas de estilo en cascada y elementos de tecnología web para crear visualizaciones visuales estándar se convirtió en una característica clave para el desarrollo de Nzym. La forma en que se ve una pantalla en un navegador, en una aplicación móvil y en una aplicación de escritorio será la misma o, al menos, será uniforme en apariencia en todas las plataformas.

Orientado a objetos

Podría decirse que es una de las palabras de moda más utilizadas cuando se trata de describir un lenguaje de programación, pero en realidad es un concepto clave para describir Nzym. La programación orientada a objetos como paradigma de programación se basa en objetos hechos de datos y código. En Nzym, los datos están en forma de tipos que conforman las diversas propiedades de un objeto y luego el código se almacena en los métodos (que son los procedimientos). Nzym hace uso del diseño orientado a objetos debido a la forma en que facilita la definición clara de interfaces y hace posible proporcionar elementos reutilizables.

Las funciones orientadas a objetos de Nzym son básicamente las de la mayoría de los lenguajes de tipo C que lo precedieron, pero con una sintaxis diferente y reglas mucho más relajadas. Los archivos de script de Nzym son los objetos clave de un proyecto de Nzym y, dentro de ellos, pueden contener clases que también se tratan como objetos.

Al trabajar en un sitio web, el equipo de SM sabía que siempre iban a tener que recrear elementos comunes como el formulario de contacto o un menú desplegable, pero con algunas modificaciones solicitadas por el cliente. Como se ocupaban principalmente de la creación de sitios web estáticos, parecía una buena idea si hubiera una manera en la que pudieran agrupar estos elementos comunes en archivos separados para importarlos fácilmente a un proyecto, cuando fueran necesarios, con modificaciones menores para el cliente. Por ejemplo, cambios de color, adición o eliminación de ciertos campos de un formulario o la inclusión de íconos en el menú.

Interpretado

Los archivos de script de Nzym se interpretan mediante el intérprete de Nzym Builder (que se llama Elephant) y el resultado puede ser un sitio web completo en un archivo nzym que funciona como una biblioteca para usar en otros proyectos de Nzym o un archivo ctlyst que es un código de bytes de Nzym que se puede ejecutar utilizando una implementación de Nzym Console en cualquier dispositivo o máquina. Si bien Nzym Console ahora existe para la mayoría de los sistemas operativos, se están desarrollando más implementaciones que permitirán la ejecución de un programa Nzym compilado en cualquier dispositivo. Sin embargo, si un programa Nzym se interpreta en un sitio web, el resultado estará inmediatamente disponible para ser transferido a cualquier dispositivo o servidor para alojarlo, generalmente como un sitio web estático.

El equipo de SM utilizaba Bootstrap o un código interno que existía en ese momento para recrear y generar distintos tipos de sitios web. Sin embargo, estos bloques de código tenían muchas desventajas, especialmente al visualizarse en distintos dispositivos y navegadores antiguos.

Un objetivo clave del proceso de interpretación de Nzym también ha sido crear productos que funcionen en cualquier dispositivo, en cualquier plataforma, manteniendo no solo la portabilidad visual, sino también la misma funcionalidad y rendimiento.

Imperativo

Nzym utiliza sentencias para cambiar el estado del programa y, por lo tanto, en este caso es un lenguaje de programación imperativo que describe cómo funciona el programa en cada paso. Nzym también puede seguir los principios de la programación procedimental en el sentido de que un programa puede construirse a partir de uno o más procedimientos, mediante el uso de funciones, que pueden localizar los cambios de estado en métodos específicos.

Una de las dificultades del trabajo del equipo de SM era tener que determinar dónde colocar los elementos que reutilizaban en cada proyecto. Un sitio web tenía un sistema de menú ubicado en la parte superior de la página, encima del encabezado, y otro tenía un menú debajo del encabezado. A veces, el menú se colocaba en el encabezado, entre otros elementos del encabezado, y a veces estaba separado. Saber dónde colocar el conjunto de código con los menús era una tarea que requería mucho cuidado y, si uno se alejaba por un tiempo de su proyecto, siempre era difícil retomarlo. Era igualmente desconcertante si alguien necesitaba hacerse cargo de un proyecto en curso de otra persona, no poder saber hacia dónde se dirigía el proyecto y qué se había hecho con solo un vistazo.

La programación imperativa para Nzym hace que el lenguaje sea fácil de aprender, ya que existe un flujo de control claro que se puede visualizar, lo que le da al usuario más poder para cambiar, modificar y optimizar el programa. Esto también genera más eficiencia en el sentido de que el programador puede decirle al programa informático exactamente qué hacer. En el aspecto procedimental, existe la ventaja de la modularidad, ya que un programa se puede dividir en procedimientos reutilizables más pequeños, y estos también pueden reutilizarse en otros programas. La depuración también es mucho más sencilla debido al paradigma imperativo.

Multiplataforma

Nzym fue diseñado no solo para la web, sino también para aplicaciones multimedia en general. Cuando hablamos de aplicaciones multimedia, nos referimos a software interactivo que combina diferentes tipos de medios, como texto, imágenes, video y audio, para transmitir información a una audiencia. Estas aplicaciones son el tipo de software más común que se encuentra en varios tipos de dispositivos y hardware, y abarcan varios sistemas operativos, consolas de juegos y dispositivos de consumo, como teléfonos móviles y relojes.

Aunque el trabajo en los sitios web era el pan de cada día de SM, había otro gran proyecto del que SM pasó a formar parte y que implicaba trabajar en un paquete de software multimedia llamado AVisPar (el Paquete Visual Africano). AVisPar era un conjunto de programas y herramientas de software para crear visualizaciones 3D, películas, juegos, recursos de juegos y efectos visuales. Lo que iba a ser único en AVisPar era su capacidad de utilizar una tarjeta gráfica para producir renderizados 3D de alta calidad y guardarlos en el disco casi en tiempo real. AVisPar también fue desarrollado para funcionar, no sólo en los sistemas operativos de escritorio comerciales más comunes, sino también en algunas distribuciones de Linux.

Dado que Nzym puede generar sitios web con recursos web, incluidas páginas HTML con JavaScript y CSS, se puede decir que es multiplataforma. Sin embargo, cuando Nzym genera un archivo ctlyst, es posible ejecutar el archivo en cualquier plataforma que tenga una implementación de Nzym Console.

Rendimiento alto

En lo que respecta al formato de archivo ctlyst, la consola Nzym está diseñada para convertirlo directamente en código de máquina para la CPU en particular en la que se ejecuta la aplicación en tiempo de ejecución. El formato de archivo recibe el nombre de la palabra catalizador, que se refiere a aquello que acelera una reacción química. En este caso, sin embargo, la consola Nzym ejecuta el archivo ctlyst, lo que permite que el programa se ejecute como cualquier otra aplicación en el sistema.

La última implementación de Nzym y Nzym Console se creó con Rust y, a partir de entonces, ha heredado características adicionales de alto rendimiento del lenguaje, ya que el compilador de Rust pudo optimizar el código para lograr mayor velocidad. Además, la biblioteca estándar de Rust proporciona una serie de algoritmos y estructuras de datos eficientes que se utilizaron en la creación de la versión actual de Nzym. Para dar un breve resumen de lo que esto significa para los programas de Nzym:

  • Seguridad de la memoria : el sistema de propiedad de Rust garantiza que la memoria siempre se administre correctamente, lo que puede evitar fugas de memoria y fallas. Esto puede generar mejoras significativas en el rendimiento, ya que Nzym no tiene que dedicar tiempo a administrar la memoria manualmente.
  • Eficiencia : el compilador de Rust es muy bueno para optimizar el código para lograr velocidad. Esto significa que Nzym Console puede ejecutarse lo más rápido posible, incluso en tareas complejas.

Multiproceso

Para crear una aplicación multimedia impresionantemente potente e interactiva, normalmente será necesario poder gestionar la capacidad de respuesta interactiva en tiempo real y una mejor sincronización entre todos los elementos implicados. Esto implicará que la aplicación deberá poder gestionar varios procesos al mismo tiempo, lo que implica varios subprocesos y eventos simultáneos que pueden ocurrir al mismo tiempo.

AVisPar fue un proyecto único en el que el equipo de SM pudo trabajar. Permitió mucha experimentación en términos de cómo crear las soluciones involucradas, pero hubo un gran problema al que se enfrentó el equipo y que tenía que ver con el manejo de eventos simultáneos. La base de código inicial de AVisPar se había escrito en C++ junto con algunas bibliotecas de otros motores de juegos 3D como Irrlicht, que se incluyeron. El motor de juegos 3D Irrlicht en particular tenía cierta funcionalidad de subprocesos múltiples que era fácil de usar y adaptar para ejecutar varios procesos en una sola máquina. Sin embargo, al ejecutar múltiples subprocesos en una red con varias CPU y unidades de procesamiento gráfico involucradas, los subprocesos se volvieron realmente difíciles y complicados de manejar.

C y C++ son tradicionalmente de un solo subproceso y el uso de algunas bibliotecas para lograr la creación de múltiples subprocesos da como resultado las mismas desventajas que enfrentan la mayoría de los programadores cuando usan Java u Objective C para crear aplicaciones multiproceso. Por lo general, los problemas surgen de la complejidad en términos de la necesidad de descubrir cómo interactúan los subprocesos, problemas de rendimiento debido a que el sistema operativo cambia entre subprocesos si el diseño no se realiza con cuidado y, en última instancia, un mayor uso de recursos. Nzym, por otro lado, hace uso del modelo async/await de Rust para código concurrente cuando se dibuja al crear un archivo ctlyst. Sin embargo, Nzym también tiene una alternativa en términos de uso de Web Workers, de la misma manera que lo hace JavaScript, en el sentido de que múltiples subprocesos se pueden convertir a JavaScript para proyectos de sitios web y luego beneficiarse del rendimiento mejorado, la capacidad de respuesta y la escalabilidad de los que se benefician las aplicaciones JavaScript con múltiples subprocesos.

Dinámica

Nzym sigue desarrollándose y evolucionando constantemente. Se ha diseñado para adaptarse a un panorama tecnológico en constante evolución. Con el desarrollo y la expansión continuos de la consola Nzym y sus implementaciones, Nzym puede convertirse en el lenguaje de elección para crear aplicaciones para dispositivos portátiles y móviles, incluidos los relojes inteligentes y los teléfonos inteligentes.

Desde principios de 2011, y durante todo el año hasta finales de 2012, SM experimentó un aumento de clientes que requerían de sus servicios para desarrollar aplicaciones móviles para ellos. SM hizo uso de Java en la creación de aplicaciones para teléfonos inteligentes de la época que soportaban Java, incluidos los teléfonos Android que estaban ganando mucha participación de mercado en ese momento. El problema era que el código para estas plataformas, aunque escrito en el mismo lenguaje, no era ni podía ser el mismo. La presentación visual no era portable y la funcionalidad difería mucho, así como las bibliotecas utilizadas en el desarrollo.

Java fue alguna vez el lenguaje de referencia para desarrollar lenguajes móviles, pero en los últimos años ha perdido terreno frente a lenguajes más nuevos, como Kotlin y Swift. Los principales problemas con Java fueron y siguen siendo

  • Rendimiento : Java no tiene el mismo rendimiento que algunos de los lenguajes más nuevos, lo que puede generar aplicaciones más lentas.
  • Complejidad : Java es un lenguaje complejo, lo que puede dificultar su aprendizaje y uso.
  • Fragmentación : existen muchas versiones diferentes de Java, lo que puede dificultar el desarrollo de aplicaciones que funcionen en todos los dispositivos.

Si bien Java sigue siendo popular para el desarrollo de aplicaciones móviles, debido a su ecosistema de bibliotecas y herramientas, el soporte de muchos proveedores y su madurez, los lenguajes más nuevos están ganando terreno. Con la iniciativa de Nzym de seguir el camino y hacer que sea más fácil, mejor y más rápido crear y trasladar aplicaciones a la mayor cantidad de dispositivos posible con una única base de código como objetivo, Nzym es, sin duda, un lenguaje a tener en cuenta en su avance hacia este objetivo.


Conclusión

Nzym es un nuevo lenguaje de programación diseñado para ser simple, elegante y potente. Si bien aún está en sus inicios, su objetivo es convertirse en la opción preferida de los programadores que desean crear aplicaciones multimedia y sitios web orientados a objetos. Debido a su simplicidad, elimina la necesidad de usar llaves y comillas para las cadenas y hace que la sintaxis sea más sencilla y directa.

Desarrollo actual

El lenguaje de implementación original de Nzym era C++, pero con la aparición y el lanzamiento de la primera versión estable de Rust 1.0 en 2015, el desarrollo y la producción de Nzym se trasladaron al nuevo lenguaje. Optar por un lenguaje que refuerce la seguridad de la memoria, sin requerir el uso de recolección de basura o conteo de referencias, parecía ser una gran opción para un lenguaje que se utilizará para crear potentes aplicaciones multimedia con alto rendimiento y muy pocos errores.

Desarrollo futuro

Dado que Nzym aún se encuentra en desarrollo, hay una serie de características previstas para futuras versiones. Estas características incluyen:
  • Bibliotecas prediseñadas para una creación de aplicaciones más fácil y rápida
  • Clases y objetos más potentes
  • Un mejor depurador
  • Un IDE simple pero más fácil de usar
Nzym es un nuevo y prometedor lenguaje de programación que tiene el potencial de convertirse en una opción popular para la programación orientada a objetos. Es una buena opción para los programadores que desean crear aplicaciones simples, elegantes y rápidas, especialmente para diversas plataformas, incluidas las móviles e Internet. Para obtener más información, envíe un correo electrónico a hello@nzym.org.
Tags
  • #Tecnología
Icon
THANK YOU

You will receive an email with a download link. To access the link, please check your inbox or spam folder