Aquí hay una lista de cosas que un programa puede hacer:
- Almacenar variables en la memoria. O en otras palabras, gestión de memoria. O tiene que almacenar valores para su uso posterior mediante algún procedimiento de recuperación. La mayoría de las veces esto es automático. A veces es manual. (Lo cual es un dolor de cabeza).
- Entrada y salida. Alimenta datos en un programa. Y una vez que se computa el material, tiene que mostrarlo o escribirlo en un archivo, es decir, la salida. Incluso la lectura de un archivo o una secuencia se incluye en esta categoría. (Así está escribiendo).
- Calcular cosas
Algunos pueden decir que las redes deben estar en esa lista, pero es solo una forma elegante de entrada / salida. Eso es todo lo que hace una computadora. Sin embargo, cualquier lenguaje sofisticado solo puede hacer una de más (o todas) de estas operaciones.
La gente no se da cuenta, pero cuando comienzan a aprender un lenguaje de programación, pasan por alto fácilmente este aspecto. Solo cuando uno aprende sobre las computadoras y la organización de la computadora, esos temas están realmente cubiertos. Puede haber ligeras variaciones en la entrada / salida que se realiza (eso depende de la plataforma). Pero debes apreciar fundamentalmente que esto es lo que es una computadora (o una máquina de computación) …
- ¿Alguna vez has oído que los ingenieros deberían aprender a diseñar? ¿Si es así, donde?
- ¿Pueden los ingenieros de software ser astronautas?
- Dado que una biblioteca creada por un ingeniero experto invalida automáticamente todo (o la mayoría) del trabajo de muchos otros, ¿puedo decir que los trabajos de ingeniería y programación de software son trabajos de carnaval?
- ¿Cuál es la calidad de los ingenieros de software en Ticketmaster? ¿Tienen buena reputación?
- ¿Qué esperarías de 3 años de experiencia en ingeniería de software, si ha trabajado en C, C ++ y Python?
Ahora, cuando aprende a programar, aprende muchos conceptos que le permiten representar datos:
- Tipos de datos
- Matrices y cómo manipularlas. ¿Por qué se usan, etc.
También puede aprender sobre cómo estructurar la lógica y la ejecución de su programa. Por lo tanto, aprende lo siguiente:
- flujo de control: si / de lo contrario, diferentes tipos de construcciones de iteración.
- precedencia del operador
- procedimientos y rutinas
Finalmente, aprende sobre compilar / vincular y hacer que su código sea ejecutable.
Todos los idiomas tienen estos . Pero una vez que aprendas un idioma, definitivamente los comprenderás en el camino.
Luego aprenden sobre paradigmas de programación como OOP, funcional, etc. Incluso puede encontrar una familia diferente de lenguajes de programación cuando aprenda sobre RDBMS. Porque lo que haces allí (como la consulta de un subconjunto de datos) influye en el código (o idioma) que escribes. Quiero decir que comienzas a hablar en el ámbito de las bases de datos.
Después de este punto, cuando escribe programas para lograr algo, todo es solo arte y / o ciencia que juega con lo anterior (en alguna combinación).
Entonces, ¿cómo recuerda la gente muchos idiomas? En los viejos tiempos, leían religiosamente el manual de programación o la documentación del lenguaje. Hoy en día buscan en internet o google.
El truco es que, una vez que ha adquirido la habilidad de escribir programas en un idioma, se da cuenta de que también se puede hacer en el otro … y busca esas construcciones. Y en el proceso simplemente se registran en tu memoria. Incluso si no lo hacen, ya sabes cómo buscarlo.
Pero la única forma de obtener ese tipo de competencia es explorando más el idioma y las cosas que puede hacer con él. No solo hagas los ejemplos de libros de texto. Ser curioso. Si ha aprendido Python, probablemente haya hecho ejercicios como imprimir secuencias de Fibonacci, encontrar raíces cuadradas, etc. Es posible que haya editado el código en un editor como el bloc de notas (o gedit). Pregúntese, ¿cómo escribimos un programa para un editor de texto como el bloc de notas, o gedit, o etc.?
El siguiente nivel de competencia es que comienzas a tratar tu lenguaje de programación como una herramienta / marco. Tarde o temprano, descubres que esa herramienta te ralentiza cuando abordas algún aspecto en particular. O puede descubrir algo diferente que lo haga más productivo.
Por ejemplo, cuando está generando páginas web dinámicas en el servidor. Puede hacer esto en Java utilizando servlets y Struts. Pero el proceso de desarrollo no está optimizado para ese propósito. Mientras que si haces PHP, descubres que las aplicaciones web se pueden hacer más rápido. Luego cambia lentamente a php. Aprendes en qué se diferencia de Java. Puedes dibujar las similitudes y apreciar las diferencias.
Pero siempre debe hacer un esfuerzo para explorar el dominio de las aplicaciones web y lo que pueden hacer con php (si eso es lo que está aprendiendo). Así es como se encuentra la iluminación en este campo … y luego naturalmente recuerdas lo que practicas con frecuencia.
Todavía hay otro nivel de competencia. Esto no está en el ámbito de la tecnología o un nuevo lenguaje; por lo tanto, puede encontrarlo superfluo. Pero, idealmente, esto es lo que se espera de un programador / ingeniero de software. Empiezas a darte cuenta de abstracciones y patrones al escribir código o lógica. Empiezas a cuestionar el diseño de algo. Comienza a ver cómo una aplicación web es simplemente diferente de la que se ejecuta en su escritorio.
Por supuesto, la clave de todo esto es la exploración. Así que esté abierto a desafiar y emprender caminos que no conoce, con ese idioma con el que comienza. Aprender otros idiomas, marcos, herramientas será más fácil. Se necesita pasión, paciencia y determinación.