¿Puedo saltar para aprender programación como principiante con solo un buen conocimiento de matemáticas y lógica?

¡Sí! Usted puede.

Y lo que no sabes, puedo explicarlo todo en este post.

Las computadoras en realidad no son más que una máquina construida con interruptores automáticos (de diferente tipo y con nombres diferentes), cables (dibujados en circuitos) y una combinación de interruptores y cables que producen lógica.

Es posible que haya notado un baño compartido por dos habitaciones (A y B, por ejemplo). Si alguien enciende la bombilla de la sala de baño presionando el interruptor en la habitación A, presionando el interruptor de la bombilla de la habitación B no volverá a encenderla, sino que la apagará. Esta es la lógica producida por cableado de interruptores de cierta manera. Esta es una tarea de ingeniería, por lo que no necesita preocuparse por eso como programador informático.

Y sabe que cada interruptor tiene uno de dos estados en un momento dado, es decir, ENCENDIDO y APAGADO

De manera similar, cada cable tiene uno de dos estados en un momento dado, es decir, tiene corriente / SEÑAL o no tiene corriente / SIN SEÑAL

Y cada circuito lógico (como se ve en el ejemplo de la bombilla de doble interruptor en la sala de baño) produce una salida como ENCENDIDO (luces de la bombilla) / APAGADO (la bombilla no se enciende)

Por lo tanto, se dice que las computadoras solo entienden el lenguaje binario que representamos mnemónicamente con 1 o 0, ON u OFF, SIGNAL o NO SIGNAL, TRUE o FALSE o lo que quieras.

Las primeras computadoras tenían solo 3 partes:

  1. Cambia para ingresar código binario
  2. Circuitos lógicos (llamados procesadores) para procesar código binario.
  3. Bombillas LED para mostrar salida en código binario.

¿Cómo podríamos resolver nuestros problemas con una máquina así?

Human se dio cuenta de que si podían representar cualquier cosa en una combinación de 2 estados discretos, podrían representar cualquier cosa con ella y procesarla utilizando computadoras.

¿Pero cuántas combinaciones?

El ser humano optó por una combinación de 8 interruptores (según el estándar ASCII) que fueron suficientes para representar todos los alfabetos, dígitos y otros símbolos porque proporcionó 2 ^ 8 = 256 combinaciones únicas

Ejemplo para representar texto con computadoras:

Para representar el texto, a la letra A se le asignó una combinación única 01000001 en el estándar ASCII que es igual a 65 en decimal. es decir, con 8 interruptores, si el interruptor número 1 (desde el lado derecho) y el número 7 (desde el lado derecho) están ENCENDIDOS, lo que significa que la letra A de inglés se ingresa en la computadora. De manera similar, si las bombillas LED respectivas están ENCENDIDAS, eso significa que la computadora envía la letra A

Así es como las computadoras representan datos, pero ¿cómo los computarían? Por ejemplo, ¿sumar dos números 2 + 3?

Para que las computadoras computen datos, la representación de datos en binario no era suficiente. La computadora también necesita realizar la suma (+).

Con la combinación de cables e interruptores, y siguiendo Boolean Algebra and Logic, los humanos pudieron diseñar tales circuitos (ejemplo de 2 bombillas de interruptor ya lo explica) que podrían computar datos.

Usted conoce estos circuitos como una unidad llamada CPU y empaquetada dentro de un solo chip llamado procesador o microprocesador .

Todos los circuitos que realizan operaciones aritméticas y lógicas se denominan conjunto de instrucciones de un procesador.

Por lo tanto, dada la representación binaria del dígito 2, la instrucción para la adición (también en binario) y la representación binaria del dígito 3 al procesador encenderían la primera y la tercera bombillas LED (00000101), es decir, la salida 5

Si observa que para agregar dos números, debemos proporcionar información y datos de computadora para agregar en la secuencia correcta en su propio idioma, denominado lenguaje binario o lenguaje de máquina. Esto se llama programación de computadora.

También notó que podríamos agregar los números 2 + 3 en papel también, es decir, podríamos hacer la programación sin computadora. Entonces, ¿ por qué la computadora? Sólo por conveniencia y rapidez.

Humano se dio cuenta de que la programación informática en lenguaje binario era difícil. Así que se les ocurrió la idea de un programa llamado Ensamblador . Un ensamblador nos permitiría escribir programas en inglés como palabras y traducir nuestro código en inglés al código de máquina.

Esta idea fue tan popular que los humanos comenzaron a crear más capas de abstracciones sobre el lenguaje ensamblador y, por lo tanto, crearon muchos lenguajes de alto nivel (porque tienen un mayor nivel de abstracción) como Python, C, Java y HTML, etc. Más tipos de programación.

Los humanos también se volvieron inteligentes, inventaron interruptores automáticos (flip-flops) que mantendrían su estado ACTIVADO y DESACTIVADO siempre que se les suministre energía. Con estos construyeron RAM , una memoria a la que se podía acceder de forma aleatoria. Entonces, en lugar de una entrada lenta a través de interruptores operados manualmente, primero cargarían todo el programa en la memoria, lo que proporcionaría una entrada al procesador a alta velocidad y, por lo tanto, la computadora resolvería su problema al máximo.

Human también inventó los interruptores magnéticos y construyó con ellos discos duros tradicionales (HDD) . Estos interruptores pueden conservar su estado durante mucho tiempo (años), incluso si no se les proporciona corriente.

Usando lenguajes de alto nivel, Human también escribió sistemas operativos (OS) que administrarían todos los recursos de su computadora, como el procesador, la memoria, el disco duro, el teclado, el mouse y el monitor, etc., y le liberarían de escribir software para que estos componentes de hardware reciban información. , salida o funcionalidad de almacenamiento para su programa.

Human también desarrolló IDE y editores de código que le proporcionarían una plataforma para escribir, editar, depurar, compilar / interpretar y ejecutar código.

Entonces, con la ayuda de lenguajes de alto nivel, sistemas operativos e IDE, la programación de computadoras se ha vuelto mucho más fácil.

Puede escribir código en un IDE utilizando el teclado o arrastrando los componentes de la GUI con el mouse; Guárdelo en el disco duro para su almacenamiento permanente; cárguelo en la memoria haciendo clic en un ícono (funcionalidad proporcionada por el sistema operativo) y deje que el procesador lo ejecute y proporcione resultados en la pantalla, altavoces, impresoras, etc., o en el disco duro.

¡Entonces sí! Puedes saltar a la programación sin preocuparte por binarios, octales o hexadecimales.

Puede enfocarse en el pensamiento computacional que le enseña a preparar algoritmos (plantillas de solución a sus problemas). Puede aprender la sintaxis y la semántica de cualquier lenguaje informático más adelante e implementar esos algoritmos.

¡Disfruta de la programación debido a muchas capas de abstracción!

EDITAR: Me encantaría añadir un ejemplo de la programación de hoy en día.

Escribamos algoritmo para 2 + 3:

paso 1: almacenar 2 en memoria

Paso 2: almacenar 3 en la memoria

paso 3: agregar 2 y 3 en el procesador

paso 4: mostrar la salida en la pantalla

Vamos a escribir el programa para este algoritmo en Python:

Imprimir 2 + 3

Este programa de una línea implementaría su algoritmo y mostraría la salida 5 en la pantalla. ¿Es difícil?

Con o sin – ciertamente. Nadie, ni siquiera el programador más brillante de la historia, nació con un conocimiento de matemática, lógica o cualquier otra cosa que no fuera la diferencia entre sentirse cómodo e incómodo.

Las matemáticas no son necesarias para la programación, a menos que estés haciendo programación matemática. (No puede escribir un programa para hacer lo que no sabe hacer). Pero en 43 años de escribir todo tipo de software, la matemática más compleja que he usado nunca fue de la forma “a = b / c” . La contabilidad, la aritmética pura, fue mucho más difícil para mí: nunca tomé ni una clase de contabilidad. (¿”Contabilidad con doble entrada”? ¿Se trata de mantener un conjunto para su uso y otro para el gobierno? En realidad pensé que esa era una definición posible antes de que aprendiera a equilibrar los débitos y los créditos).

¿Lógica? Bueno, si no eres bueno en lógica, es probable que no aprendas a programar (aprenderás cómo fingir lo suficiente para obtener un cheque de pago por un tiempo), así que si eres bueno con la lógica, Estás por delante del juego.

¿Simplemente salta? Eso depende de lo que estás saltando. ¿Un lenguaje de programación? No. Los lenguajes de programación son herramientas, por lo que no tiene que ingresar su programa en todos los 1s y 0s. Pero tienes que aprender lo que estás programando, por qué lo estás programando de esa manera, cómo escribir un programa; en resumen, tienes que aprender a programar. Y eso es todo teoría. Usted “salta para aprender” la teoría, no salta para aprender un lenguaje de programación hasta que haya aprendido la teoría. (¿Un maderero simplemente comienza a cortar árboles, o aprende primero cómo derribar un árbol? Si es el primero, probablemente matará a algunas personas, incluso si aprendió “hacha” muy bien).

Así que comience con la teoría simple: algoritmos y estructuras de datos. Si puedes estudiar eso (estudiar, no hojear) y llegar a la página 13 mientras aún comprendes lo que está sucediendo, sigue adelante. Estudia todo el libro. (Si no puedes llegar a la página 13 sin confundirte, es probable que tu cerebro no esté conectado a la lógica, por lo que no aprenderás a programar muy bien).

Después de los algoritmos, pase a CS50: Introducción a la informática. Cuando termine de estudiar eso, estará listo para aprender un idioma o 4 (eso depende: escribir un sitio web, tanto el servidor como el navegador, requiere al menos 4 idiomas, y si hay una base de datos involucrada, una quinta) , y saber realmente qué hacer con ellos.

Sistemas de números? En los idiomas de alto nivel, a menos que tenga una necesidad específica para un número en particular (\ 0x52, que representa una R mayúscula, es “hex 52”, que es 82 en nuestro sistema decimal normal), no necesitará más que las triviales matematicas. (En 43 años, llegué a una ecuación de la forma “a = b / c”). La programación científica requerirá más, pero no es necesario que hagas programación científica. Eso depende de usted. (Es como un agricultor en Kansas que es alérgico al maíz. Él no tiene que cultivar maíz).

No creo que puedas.

La diferencia entre las personas que terminan programando y las que no lo hacen es la diferencia entre preguntar “¿Cómo hago esto?” Y “¿Puedo hacer esto?”.

Usted dice “No tengo conocimiento del sistema numérico (binario, hexa, octal, etc.)”. ¿Crees que es un tema insuperable? ¿Crees que podrías utilizar un navegador web, un lápiz y una hoja de papel y aprender base-2, base-16 y base-8, especialmente porque ya sabes base-10? Si no puedes manejar eso, probablemente no puedas aprender a programar.

En cuanto a la recuperación y decodificación, si desea comenzar por escribir el firmware del procesador, es posible que deba comprender esto (pero probablemente no). De lo contrario, es irrelevante.

Creo que te sería más fácil comenzar si supieras menos. Entonces comprenda que está comenzando con una desventaja significativa en comparación con las personas que simplemente escriben “tutorial de Python” en su navegador y comienzan a aprender. No digo que no puedas lograr esto, pero tus competiciones no están compilando una lista de cosas que no saben. Están programando.

respuesta corta sí, si te gusta resolver problemas, serás un buen programador.

en estos días, muchos códigos no tienen nada que ver con los sistemas numéricos, todo ese hardware está abstraído.

pensar en sitios web, html, css y javascript no importa esas cosas.

Hay alguna programación para sistemas embebidos que realmente no importa. pero eso es sólo un tipo de problema de codificación.

buena suerte,