He escrito un montón de código C (y código ASM) que fue impulsado por eventos.
Normalmente, desde temporizador, watchdog e interrupciones de E / S. Con muchos programadores para iniciar funciones periódicas de software.
En mi experiencia, la mayoría de las escuelas no enseñan el tipo de pensamiento necesario para manejar la programación dirigida por eventos.
Hay lenguajes concurrentes, que a menudo se ejecutan en PLC, ASIC, etc., que son continuos, concurrentes, etc. En su mayoría, después de aprender esos lenguajes, un programador debe estar pensando en esos lenguajes para obtener el máximo provecho de ellos.
Luego están los I.A. lenguajes como Lisp y Prolog que son completamente diferentes de los lenguajes secuenciales o de eventos.
I.E. Cada idioma tiene sus puntos fuertes y débiles. Si un programador quiere (o necesita) usar un lenguaje específico, entonces ellos necesitan aprender ese lenguaje, por lo que piensan en problemas de programación en los términos de ese lenguaje.
La mayoría de los programadores nunca programarán FPGA, ASIC o PLC, sino que realizarán la programación de aplicaciones para empresas (COBOL, C, JAVA, ForTran, etc.) o diseño web (HTML, XML, javascript, json, SQL, etc.). .
SO, IMO: los idiomas 'secuenciales' son los mejores para aprender primero, ya que son los más fáciles de entender, por lo que se conocen los conceptos básicos antes de aprender los idiomas más esotéricos.
Y luego están los lenguajes como C ++ y C # y J # y muchos más que pueden codificarse para cualquiera de los entornos.
Pero primero, los conceptos subyacentes deben ser entendidos.
Conceptos que van desde los conceptos de memoria y registro, a la historia de la programación, a la máquina de Turing, a las cosas 'antiguas' que fueron las precursoras de la actualidad, como ASCII, tarjetas y lectores de tarjetas perforadas de 80/96 columnas y papel. cinta y cinta magnética con cambio de nivel y programación de bajo nivel de dispositivos de E / S, etc., etc. etc.