Cómo darme confianza para hacer programación y hacer programas.

Mi sospecha es que estás tratando de resolver grandes problemas de una sola vez. La programación es como Lego, puedes desmontar cualquier problema hasta el punto en que todo lo que tienes son bloques simples. Siempre que tome nota de cómo desarmó el problema, puede programar esos bloques relativamente triviales y convertirlos en un programa que resuelva su problema. Simplemente siga los pasos a la inversa.

Entonces, digamos que el problema es controlar un robot buggy. Rompe el problema en sentido donde están los obstáculos, trate de moverse, si falla, entonces determine dónde debe estar un obstáculo invisible y vuelva a moverse, de lo contrario, regrese para comenzar.

La detección de obstáculos se puede reducir a: leer el sensor, si el sensor muestra un bloqueo, registre, si quedan sensores, vaya al siguiente sensor y vuelva a leer, de lo contrario se conocen todos los obstáculos detectables.

Asumiendo que el sensor es un interruptor que detecta que estás en contacto con algo: consulta el controlador del sensor, si el resultado es 0, entonces no hay obstáculo más obstáculo

Al centrarse en el último paso, cuatro o cinco líneas de código como máximo, es indoloro. Hay bastantes fragmentos de código, pero el único en el que piensas es en el que estás escribiendo. El resto no importa.

Una vez que hayas hecho eso, subes una capa. Todas las tareas son ahora de una sola línea a medida que escribía el código que hizo el trabajo. Cada paso seguirá teniendo solo cuatro o cinco líneas de largo. Y así sucesivamente, hasta que todo termine.

Incluso los programas más complicados pueden reducirse y escribirse de esta manera. No hay ningún proyecto en el mundo que requiera que escriba más de 25 líneas en un procedimiento o función. Podría terminar con un programa de 10,000 líneas (y lo he hecho muchas veces) pero no importa. Solo 25 líneas importarán a la vez y, a menudo, puede reducir eso a cinco. Cinco líneas, incluso veinticinco líneas, es fácil. Nada de que preocuparse. Puedes codificarlo y probarlo sin preocuparte por el resto.

Esta técnica se conoce como diseño de arriba hacia abajo, desarrollo de abajo hacia arriba. Por la razón obvia de que eso es lo que haces. Es un método popular en el campo más amplio del desarrollo de software estructurado. Puede olvidarse del campo más amplio por ahora, pero una vez que esté más contento con la programación, vale la pena mirar. Un montón de consejos y sugerencias.

Las únicas otras cosas que debe recordar son: mantenerlo simple, y una función / procedimiento debe hacer solo una cosa.

Sinceramente, no creo que tengas ninguna dificultad.

Creo que la confianza viene con la capacidad, si no tienes la capacidad de hacer programas, no vas a tener confianza en hacerlo.

La forma de obtener confianza, es obtener capacidad, y la forma de obtener capacidad en cualquier cosa, es hacerlo.

Dependiendo de su nivel de experiencia (que, sin ofender, a los 12 años de edad, será bastante bajo), debe comenzar a escribir programas. En este momento, hacer un sistema operativo o compilador está más allá de su nivel de pago, acepte eso por el momento.

Escribe algo, cualquier cosa, lo que aumentará tu habilidad. Eso significa escribir algo que encontrarás difícil, pero no imposible. Como le interesan los sistemas operativos y los compiladores, querrá aprender utilizando un lenguaje que le enseñará cómo funcionan realmente las computadoras. Eso significa que ya sea ensamblador o C, y francamente, no use ensamblador. Eso te deja con C.

Usa C para escribir algo, tal vez un juego como Mario. No es como escribir un sistema operativo, pero aprenderá cómo administrar la memoria, cómo usar punteros, estructuras, matrices y, tal vez, hilos.

Una vez que entiendas la memoria, los punteros, los subprocesos, las estructuras, los arreglos, todo eso, entonces quizás veas cómo crear tu propio kernel de SO, tal vez descarga FreeRTOS, es muy pequeño:

RTOS (sistema operativo en tiempo real) líder en el mercado para sistemas integrados con extensiones de Internet de las cosas

Si quieres probar un sistema operativo muy bueno, mucho más grande que FreeRTOS, pero aún muy pequeño, echa un vistazo a Inferno.

  1. Aprende a usar Linux desde la línea de comandos.
  2. Aprende a compilar programas en C correctamente usando makefiles.
  3. Buscar gramáticas de lenguaje, LEX y YACC. Obtén LEX y YACC, diseña una gramática y la implementa. Diseñar la gramática del lenguaje es difícil para los lenguajes no triviales.
  4. Implementar semántica y generación de código. Esto es realmente difícil.
  5. Comprenda lo que los idiomas actuales le brindan y obtenga un avance creativo en idiomas en los que nadie ha pensado todavía. Esta es la parte más difícil.

¡No te preocupes, si tienes pasión llegarás allí!

Probablemente necesitarías ver por ti mismo que puedes lograr algo, cualquier cosa.

Comience con programas simples (no me refiero a los trabajos en casa de los cursos programáticos, no recuerdo cuántas bases de datos de estudiantes he programado y odiado …) que puede usar en la vida real. ¿Tiene un trabajo periódico que pueda ser soportado por un programa simple de ejecución automática que intenta escribirlo? ¿Eres miembro de un equipo, grupo, etc.? intenta programar un logo animado etc.

¿Has intentado jugar con Linux? Hacer que las máquinas virtuales utilicen VirtualBox u otro programa gratuito significa que puede experimentar con el sistema operativo de código abierto de su elección sin deshacerse de Windows o de lo que sea que tenga ahora.

Si quieres aprender Linux, aquí hay una publicación de blog que escribí que podría ayudar. Como aprendi linux