Lo que la gente no entiende acerca de la programación es que en realidad es difícil y contraproducente crear un lenguaje de programación que sea fácil de usar para la persona promedio y lo suficientemente flexible para cumplir la amplia variedad de tareas para las que se usaría.
La razón por la que la programación se hace “difícil” a propósito es porque la programación requiere precisión, complejidad y flexibilidad. Si de alguna manera ‘reduce la dificultad’ de la programación, compromete los tres valores.
Voy a usar el kit de desarrollo de juegos GameMaker Studio 2 como ejemplo de cómo funciona esto.
GMS2 incluye esencialmente dos plataformas de programación: su sistema Drag and Drop y su sistema GML (Game Maker Language). Cuando comienzas un proyecto, debes elegir entre uno u otro. En versiones anteriores de GameMaker, puedes combinar elementos de arrastrar y soltar con código GML, pero ya no.
Arrastrar y soltar le permite arrastrar y soltar bloques de código predefinido en un árbol lógico.

(De Google)
Parece complicado, pero para ser honesto, esto es tan simple como la “programación” puede obtener. No estás escribiendo ninguna función de scripts ni nada. Está arrastrando y soltando cuadros en un orden específico para completar una tarea.
En los foros de GMS, existe esta ‘broma’ para arrastrar y soltar: nunca se usa profesionalmente y nunca debe considerarse para un proyecto profesional .
La razón por la cual es porque estás limitado por las limitaciones de los cuadros. Si necesitas que tu programa haga algo específico que Drag and Drop no puede hacer, básicamente estás jodido. Debido a que ya no puede hacer que Drag and Drop y GML interactúen entre sí, no puede presentar sus propios scripts personalizados para lo que quiere hacer.
Si bien Drag and Drop es fácil de entender y usar, su flexibilidad, precisión y complejidad están muy limitadas y, por no mencionar, es un sistema engorroso. Para ideas simples, es bueno; para otros, en realidad no.
GML (Game Maker Language) es arrastrar y soltar, menos las casillas y menos las limitaciones de lo que puedes hacer.

(De Google)
GML es un código escrito, no un árbol lógico de cuadros representativos. Con GML, solo está limitado por el conjunto de funciones en el lenguaje GML, así como por su propia imaginación.
Por supuesto, con esto viene una curva de aprendizaje decente, pero es mucho más fácil de dominar debido a lo que hace GML en el fondo.
GML es infinitamente más indulgente con ciertas convenciones de codificación. Cuando declara una variable, no necesita declarar qué tipo de datos es, ya que Game Maker maneja cómo se lee entre bambalinas. Por ejemplo:
hora int = 5;
float cpuTime = 3.14;
bool hasStarted = true;
char yesNo = ‘y’;
string month = “January”;
(De los tipos de datos primitivos en C #)
Aquí hay una lista de ejemplos con tipos de datos primitivos que puede usar en el lenguaje de programación C #: int, float (o double), bool (boolean), char y string.
Aquí es cómo escribirías esto en GML:
hora = 5;
cpuTime = 3.14;
hasStarted = true;
yesNo = ‘y’;
mes = “enero”;
Observe cómo no escribí los tipos de datos esta vez. Esto se debe a que Game Maker reconoce el tipo de datos por lo que escribe sin tener que hacerlo usted mismo. Por ejemplo, GM reconoce que ‘hora’ es un entero (int) porque ‘hora = 5’, donde 5 es un entero. GM reconoce ‘cpuTime’ como un flotador porque ‘3.14’ no es un número entero (entero).
Puede parecer que me estoy preguntando qué tan fácil es aprender y usar GML, así como su flexibilidad, y sería correcto asumir eso. Uso Game Maker en mis pequeños proyectos para hacer juegos. Es el software perfecto para mis necesidades personales.
Sin embargo, Game Maker tiene limitaciones. Hay ciertas cosas que deben hacerse de una determinada manera o de lo contrario no funcionará, o no funcionará bien, o lanzará un error exclusivo de Game Maker. Game Maker también tiene algunos problemas de memoria y de pérdida de memoria con algunas de sus características (algo que ocupa memoria seguirá ocupando memoria incluso cuando el programa está cerrado).
Si bien Game Maker, para mí, es una excelente forma de crear prototipos y crear juegos, muchas de las cosas que debo hacer son esencialmente soluciones alternativas y “casi” para algo que probablemente no tenga problemas en otros motores de juegos.
En lenguajes de programación más complejos como C # y C ++, y en motores de juego más robustos como Unity, las limitaciones son menos evidentes.
Entonces, una respuesta tardía y entrecortada más tarde: si intenta hacer que un lenguaje de programación sea “más fácil”, sacrifica la especificidad que necesita para producir algo que haga exactamente lo que quiere que haga.