Un poco sobre cómo era la «informática» escolar en los años 90 y por qué todos los programadores de entonces eran exclusivamente autodidactas.

En qué se enseñaba a programar a los niños
A principios de los años 90, las escuelas de Moscú comenzaron a equipar selectivamente las aulas con computadoras. En las instalaciones, de inmediato se colocaban rejas en las ventanas y una pesada puerta de hierro forjado. De alguna manera, aparecía un profesor de informática (que lucía como el compañero más importante después del director), cuya tarea principal era asegurarse de que nadie tocara nada. Absolutamente nada. Ni siquiera la puerta de entrada.
En las aulas, lo más común era encontrar sistemas BK-0010 (en sus variantes) y BK-0011M.

Foto tomada
A los niños se les contaba sobre la estructura general y también un puñado de comandos de «Básico», para que pudieran dibujar líneas y círculos en la pantalla. Para las clases inferiores y medias, probablemente esto era suficiente.
Existían problemas con el guardado de sus creaciones (programas). Lo más común era que las computadoras se conectaran en red mediante controladores de canal único con una topología de «bus compartido» y una velocidad de transmisión de 57600 baudios. Por lo general, había un solo disquetera, y con ella a menudo había problemas. A veces funcionaba, a veces no, a veces la red colapsaba, a veces el disquete no se leía.
Entonces, llevaba conmigo esta creación de 360 kB.

Las probabilidades de que en otra ocasión pudiera recuperar mi programa eran del 50-70%.
Sin embargo, el principal problema de todas estas historias con las computadoras «BK» eran los interminables bloqueos.
Esto podría suceder en cualquier momento, ya fuera al escribir código o al ejecutar un programa. Un sistema bloqueado significaba que habías perdido 45 minutos, ya que tenías que hacerlo todo de nuevo, pero ya no había tiempo suficiente para ello en la clase.
Hacia 1993, en algunas escuelas y liceos comenzaron a surgir aulas adecuadas con máquinas 286, y a veces incluso había «tres» en algunos lugares. En cuanto a los lenguajes de programación, había dos opciones: donde terminaba «Básico», comenzaba «Turbo Pascal».
Programación en «Turbo Pascal» usando el ejemplo de «tanques».
En Pascal, los niños aprendían a construir ciclos, dibujar diversas funciones y trabajar con matrices. En el liceo de física y matemáticas, donde pasé un tiempo, dedicaban solo una clase a la informática a la semana. Y durante dos años, eso fue un gran aburrimiento. Por supuesto, quería hacer algo más serio que mostrar en pantalla los valores de una matriz o de cierta senoide.
Tanques
Battle City fue uno de los juegos más populares en las consolas clones de NES (Dendy y otras).

En 1996, la popularidad de los 8 bits había pasado, llevaban mucho tiempo acumulando polvo en los armarios, y me pareció interesante hacer, como algo a gran escala, un clon de 'Tanques' para PC. A continuación, hablaré sobre cómo entonces había que ingeniárselas para hacer algo en Pascal que tuviera gráficos, mouse y sonido.

Solo se pueden dibujar palitos y círculos
Comencemos con los gráficos.

En la versión básica, Pascal permitía dibujar algunas figuras, llenar de color y definir los colores de los puntos. Los procedimientos más avanzados en el módulo Graph, que nos acercaban a los sprites, eran GetImage y PutImage. Con ellos, se podía capturar una parte de la pantalla en un área de memoria previamente reservada y luego utilizar ese trozo como una imagen de mapa de bits. En otras palabras, si quieres reutilizar múltiples elementos o imágenes en la pantalla, primero los dibujas, los copias en la memoria, borras la pantalla, dibujas el siguiente y así hasta que creas la biblioteca necesaria en memoria. Dado que todo sucede rápidamente, el usuario no se da cuenta de estos trucos.
El primer módulo en el que se usaron sprites fue el editor de mapas.

En él había un campo de juego marcado. Hacer clic con el mouse abría un menú donde se podía seleccionar una de las cuatro opciones de obstáculos. Hablando del mouse...
El mouse – ya es a finales de los años 90
Por supuesto, todos tenían ratones, pero hasta mediados de los años 90 solo se usaban en Windows 3.11, en paquetes gráficos y en un pequeño número de juegos. En Wolf y Doom se jugaba solo con el teclado. Además, en el entorno DOS, el mouse no era muy necesario. Así que en Borland no incluían el módulo para trabajar con el mouse en la entrega estándar. Tenías que buscarlo entre conocidos, que se encogían de hombros y exclamaban: '¿y para qué lo necesitas?'.
Sin embargo, encontrar un módulo para sondear el ratón es solo la mitad del trabajo. Para que el ratón pueda hacer clic en los botones de la pantalla, era necesario dibujarlos. Además, en dos variaciones (presionado y no presionado). En el botón no presionado, la parte superior es clara, y debajo de él hay una sombra. En el presionado es al revés. Y hay que renderizarlo en la pantalla tres veces (no presionado, presionado, luego de nuevo no presionado). Además, no olvides poner retardos en la visualización y ocultar el cursor.

Por ejemplo, el manejo del menú principal en el código se veía así:

Sonido – solo un pitido del PC Speaker
La historia del sonido es aparte. A principios de los noventa, los clones de Sound Blaster apenas comenzaban su triunfal marcha, y la mayoría de las aplicaciones solo funcionaban con el altavoz incorporado. Lo máximo que podía hacer era reproducir un solo tono a la vez. Justo eso permitía hacer Turbo Pascal. A través del procedimiento sound, se podía ‘pitar’ a diferentes frecuencias, lo cual era suficiente para los sonidos de disparos y explosiones, pero no servía para una música de fondo como estaba de moda entonces. Al final, se encontró una solución bastante ingeniosa: en mi propio archivo de software había un pequeño ‘exe’, descargado alguna vez de alguna BBS. Era capaz de hacer maravillas – reproducir wav sin comprimir a través del PC Speaker, y lo hacía desde la línea de comandos sin tener una interfaz propia. Todo lo que había que hacer era llamarlo a través del procedimiento exec de Pascal y asegurarse de que esta construcción no fallara.
Así que, al final, la música impactante apareció en la pantalla, pero resultó haber un detalle curioso. En 1996, tenía un sistema con un Pentium 75, overclockeado a 90. Todo funcionaba perfectamente en él. Sin embargo, en la universidad, donde en el segundo semestre nos introdujeron a Pascal, teníamos en el aula PCs de gama baja. De acuerdo con un acuerdo con el profesor, llevé esos tanques para obtener la aprobación y no volver más. Y así, después de iniciar, del altavoz salió un fuerte rugido mezclado con ruidos guturales burbujeantes. En resumen, el PC de 33 megahercios no pudo manejar correctamente ese pequeño ‘exe’. Pero, por lo demás, todo estaba bien. Por supuesto, sin contar con la ralentización en la respuesta del teclado, que arruinaba toda la experiencia de juego sin importar el rendimiento del PC.

Pero el problema principal no está en 'Pascal'
En mi opinión, 'Tank' es lo máximo que se podía obtener de Turbo Pascal sin insertar ensamblador. Entre los claros inconvenientes del producto final están el lento sondeo del teclado y la lenta representación gráfica. La situación se complicaba por la escasez de bibliotecas y módulos externos. Se podían contar con los dedos de una mano.
Pero lo que más me frustraba era el enfoque en la educación escolar. A los niños no se les hablaba de las ventajas y posibilidades de otros lenguajes. En las clases prácticamente de inmediato empezaban a hablar de begin, println e if, lo que encerraba a los estudiantes dentro de la paradigma del básico-pascal. Ambos lenguajes se pueden considerar estrictamente educativos. Su uso 'real' es un fenómeno raro.
Me resulta un misterio por qué enseñar a los niños lenguajes ficticios. Puede que sean más visuales. Puede que variantes de 'Básico' se usen en algunos lugares. Pero, en cualquier caso, si una persona decide vincular su futuro a la programación, tendrá que aprender otros idiomas desde cero. Entonces, ¿por qué no plantear a los niños las mismas tareas de aprendizaje, pero ya en una plataforma (lenguaje) normal, que les permita desarrollarse por sí mismos?
Hablando de tareas. En la escuela y en la universidad siempre fueron abstractas: contar algo, construir una función, dibujar algo. Estudié en tres escuelas diferentes, además tuvimos 'Pascal' en el primer año de la universidad, y los profesores nunca pusieron tareas prácticas reales. Por ejemplo, hacer una agenda o algo útil. Todo era artificial. Y cuando una persona resuelve durante meses tareas vacías que luego van a la basura... En general, la gente sale de la universidad quemada.
Por cierto, en el tercer año de esa misma universidad nos incluyeron 'C++' en el plan de estudios. Aunque era algo bueno, la gente estaba cansada, harta de falsedades y tareas 'educativas'. No había el mismo entusiasmo que al principio.
P.D. Busqué sobre qué lenguajes se enseñan actualmente en las escuelas en las clases de informática. Todo igual que hace 25 años: Basic, Pascal. Con algunas inserciones de Python aquí y allá.
Fuente: habr.com
