(movido del perfil incorrecto)
Bricolaje.
En principio, cualquier software que vea, cualquier sitio web, puede programarlo usted mismo. La programación parece muy complicada y difícil de entender, y una razón para esto es que, bueno, no siempre estamos enfocados en entender. Nos convertimos en usuarios. Usuarios de programas, bibliotecas, sitios web, etc. ya existentes.
Al tomar algo que ves e intentar replicar ese comportamiento puedes crear una comprensión profunda. Es posible que cualquiera pueda crear su propio “facebook”, “twitter”.
Por ejemplo, para comprender cómo funciona y se implementa la multitarea cooperativa, con mutexes y semáforos, rendimiento, etc., puede comenzar con un código C simple y mirando setjmp y longjmp. Cuando tenga estos “hilos” definidos por software, puede extenderlos fácilmente a las devoluciones de llamada. Esto le permitiría comprender los sistemas controlados por eventos como nodejs y muchas tecnologías web de navegador.
Por ejemplo, para comprender REST, solo puede implementar una aplicación donde todo el estado esté en la URL y su script no tenga una base de datos / almacenamiento que cambie en absoluto. Cuando cambia el estado por POST, puede optar por implementar esto agregando el cambio a un archivo de hechos. Cuando se inicia el programa, lee este archivo y reproduce el estado desde el principio de los tiempos hasta que se hayan producido todos los cambios históricos, y luego su aplicación puede continuar desde allí. Así es, en principio, cómo funciona un sistema de base de datos. Con los métodos REST, puede implementar consultas de base de datos simples (especializadas). ¿Puedes usar esto para implementar un twitter de una persona para ti? ¿Puede extenderlo para que varios usuarios puedan usarlo para tener sus propios feeds? ¿Puedes extenderlo con respuestas y mensajes?
Hay mucho que puede hacer para comprender la informática, la mayor parte puede implementarlo usted mismo. Se ha “creído” que ningún individuo puede implementar un sistema operativo. Bueno, sorpresa: ¡un tipo lo hizo (Linus Torvalds) y ahora tenemos Linux!
Con estos métodos, puede implementar un programa que se comporte como un “linux”, por supuesto, se ejecuta en su computadora. Pero en algún nivel puedes escribir un simulador de esta computadora. Como el infierno. ls, cat, cp, mv, mkdir, cd. No es tan dificil. Ahora, extiéndalo con sus propias funciones / programas. Crea tu propio pequeño compilador / intérprete de idiomas. Puede ser BÁSICO, o un lenguaje mini C. Encuentre una manera de escribir archivos en su idioma, puede que necesite crear un pequeño mini editor, o puede “hacer trampa” y hacer que su programa de edición haga ‘system (“emacs -nw hangman.bac”);’. Ahora que tiene archivos que contienen código fuente, puede permitir que se ejecuten escribiendo “ahorcado” que invocará su código de intérprete y ejecutará su programa. ¿Puedes capturar ^ C para volver a tu mensaje y no romper tu “computadora”? ¿Se puede hacer un pequeño sistema de ventanas? Como terminal de salida, puede usar un navegador web que se conecta a su programa. ¿Puedes hacerlo para que varios programas puedan ejecutarse al mismo tiempo?
Ninguna de estas tareas es imposible. ¡El único límite es tu imaginación!
¡Buena suerte!