
Hola Comenzaré el artículo con una pequeña digresión. ¿Te decepcionó la primera vez que te encontraste con la programación? Supuse que la creación de programas ocurre a través de la interacción con alguna herramienta compleja pero muy interesante, en la que puedo hacer mi actividad favorita (recolectar constructores) en un nuevo nivel. Sin embargo, en cambio, tuve que aprender a escribir archivos de texto que constan de varios operadores, corchetes, cadenas y otras construcciones de texto. Pasaron décadas, aprendí a programar y ya me había olvidado de esta decepción, pero cuando vi las noticias sobre Google Blockly y Scratch en la red, sentí nostalgia ...
¡Estas herramientas, sin siquiera pretender ser profesionales, son tan interesantes! Sin textos y compilaciones: arrastra bloques y obtienes el resultado al instante. ¿Se puede hacer esto por profesionales? Estoy seguro de que puedes! Y en este artículo me gustaría expresar mi visión de cómo.
Cual es el punto?
Si nos alejamos de la forma de prueba de escribir programas, necesitamos separar la estructura del código del programa y su tipo ...
Como es eso
Para hacer esto, antes que nada, necesitamos almacenar los códigos fuente en una forma diferente. Deben ser una descripción de las instrucciones y los datos del programa en una de las formas existentes de almacenamiento de datos, como json, xml o cualquier otra. Este archivo (Figura 1, izquierda) puede tener una apariencia bastante fea y no sucumbe a ninguna forma razonable de editarlo directamente, sin embargo, en un entorno de programación se convertirá en código de bloque (Figura 1, derecha).
El entorno de programación en sí no trata con códigos de texto, sino con los "bloques" a partir de los cuales se construye el código del programa.
¿Qué nos dará?
1. En primer lugar, eliminaremos las diferencias insignificantes en la sintaxis de varios idiomas. Por ejemplo, los bloques de código en C ++ están separados por llaves, y Ruby presta atención a las palabras clave ... En el editor, puede configurar ambos tipos de programas, nada cambiará. La configuración de visualización personal permitirá al desarrollador mirar el programa como quiera. Además, podemos usar cualquier carácter en la denominación, incluidos los espacios.
2. En segundo lugar, aumentará la velocidad de escritura de un programa. Ahora, para escribir una declaración for en un lenguaje similar a C, necesitamos escribir el texto for en sí, luego los corchetes, los parámetros, los puntos y comas, las llaves y presionar enter. En nuestra versión, el entorno de programación, al hacer clic en una determinada combinación de teclas, inserta un ciclo y solo requiere ingresar sus parámetros. Por ejemplo, presionar "f" colocará el bucle for en lugar del cursor y ofrecerá ingresar el número de repeticiones y el nombre del contador mediante tabulación presionando la tecla enter al final.
3. En tercer lugar, será posible garantizar la independencia del lenguaje del programador. Los operadores de idioma pueden estar indicados por algunos caracteres, o las palabras clave pueden mostrarse en el idioma nativo del programador. Si desea que se llame a los operadores en inglés, ruso o en cualquier otro idioma, selecciona este idioma en la configuración del editor y los nombres de los operadores cambian "sobre la marcha". En cuanto a los nombres de objetos y métodos, es más complicado, pero en cualquier caso, si el programa es desarrollado por desarrolladores rusos, puede nombrar todo en ruso: si selecciona este escenario, no habrá discrepancia entre los nombres de los operadores y los nombres de objetos y métodos, todo estará en ruso. Esto puede simplificar el aprendizaje para estudiantes y adultos que no están familiarizados con el inglés. Y además, en equipos multinacionales es posible usar dos nombres para nombrar objetos y métodos: en inglés y en el idioma del desarrollador.

4. Cuarto, será posible actualizar la estructura del programa. Si aparece una nueva característica en la nueva versión del estándar que cambia la apariencia de los diseños de bloque, será posible liberar parches para programas antiguos que los llevarán automáticamente a una nueva apariencia. En la Figura 4, puede ver qué construcciones de lenguaje antiguo pueden ser transformadas por el entorno de programación a una nueva forma.
5. En quinto lugar, será posible representar la estructura del programa de cualquier manera conveniente. Por ejemplo, en forma de una sala tridimensional a través de la cual puede navegar como juegos de computadora y editar la relación de clases y objetos tridimensionales.
Entorno de programación
Esta forma de presentar el programa ya no permitirá cambiarlo en un simple editor de texto. Para editar el programa necesitará un entorno de programación especial. Desarrollar la primera versión de este entorno de programación es más difícil que para los lenguajes tradicionales, pero hay formas de comenzar más fácilmente. Por ejemplo, puede comenzar con el editor de archivos de datos, que le permite editar archivos de cualquier formato (xml, json, yaml, etc.) de la misma manera, usando bloques. En este caso, el usuario se ahorrará la necesidad de estudiar la sintaxis de estos archivos y podrá editar cualquiera de ellos aprendiendo a editar archivos de datos solo en este programa.
Luego estará la tarea de desarrollar un compilador que pueda "sobre la marcha" construir un programa durante su edición. Y en el futuro, será más fácil proporcionar funcionalidad de autocompletado y agregar funciones al entorno de desarrollo que requieren un conocimiento "profundo" del código del programa, ya que no tiene que analizar los códigos de texto. Además, el entorno de programación "sabrá" todo lo que se necesita sobre el programa para mejorar el resaltado y la refactorización de la sintaxis, ya que todos los datos necesarios para esto se pueden almacenar de forma invisible para el programador en el archivo de datos del programa.
Conclusión
Estoy seguro de que el método de programación descrito abrirá enormes oportunidades para los programadores y acelerará enormemente y simplificará el desarrollo de aplicaciones. Sin embargo, uno en el campo no es un guerrero. El desarrollo de un producto de este tipo requiere un enfoque y recursos potentes. Soy un solitario y trabajo de forma remota: este proyecto es demasiado difícil para mí ... Tal vez si te interesaras, ¿podríamos trabajar juntos?