Cómo comenzar a programar: una guía útil

julio 25, 2023
Empezar con la programación
A menudo, la idea de aprender a programar puede resultar abrumadora. La palabra «programar» en sí misma evoca un sentido de misterio, ya que implica una comunicación técnica que las computadoras, y no los humanos, deben entender.
Muchas personas comienzan a aprender a programar eligiendo un lenguaje de programación popular y sumergiéndose en él sin una dirección clara. Esto podría implicar realizar cursos de programación en línea, seguir tutoriales de proyectos o adquirir libros sobre temas específicos de manera aleatoria.
Sin embargo, es raro que los posibles desarrolladores comiencen con una ruta de aprendizaje clara: una visión panorámica del mundo de la codificación que describa un conjunto de conceptos, lenguajes y herramientas de programación relevantes que casi todos los desarrolladores utilizan en su día a día.
Aprender la Arquitectura Computacional y Básicos de Datos
Los lenguajes de programación modernos ofrecen una maravillosa característica llamada abstracción, que permite a los desarrolladores crear aplicaciones sofisticadas sin preocuparse por los detalles internos del hardware. Esta capacidad de trabajar con herramientas de alto nivel simplifica la comprensión y las habilidades necesarias para el desarrollo de software. A pesar de esta comodidad, es útil tener conocimientos básicos sobre la arquitectura computacional para entender el funcionamiento subyacente de nuestros códigos y facilitar las conversaciones técnicas en el entorno laboral.
La arquitectura computacional comienza con los microchips o circuitos integrados, que son la parte más crucial de una computadora. Estos microchips dependen de transistores, pequeños interruptores eléctricos que se encuentran en estados de apagado (0) o encendido (1) para realizar cálculos y operaciones. En un solo microchip, pueden haber millones o incluso miles de millones de transistores integrados.
Las computadoras modernas incluyen una Unidad Central de Procesamiento (CPU) que puede compararse con el cerebro del sistema. La CPU maneja tareas lógicas y de procesamiento de números, siendo esencial para el funcionamiento de la computadora. Cada CPU tiene un conjunto de instrucciones, que son una colección de comandos binarios (ceros y unos) que la CPU puede entender y ejecutar. Afortunadamente, los desarrolladores de software no necesitan preocuparse por estos comandos binarios, ya que la abstracción les permite trabajar con lenguajes de programación de alto nivel.
Además de la CPU, otro componente importante es la memoria. Las computadoras utilizan la Random Access Memory (RAM) como «memoria de trabajo» para almacenar información que se usa de forma activa por los programas abiertos. La RAM consiste en una colección de direcciones de memoria que se utilizan para almacenar datos en forma de bits. Aunque en lenguajes de programación más antiguos como C, los programadores podían acceder directamente a las direcciones de memoria utilizando punteros, en lenguajes modernos esta práctica es menos común.
Por último, tenemos el disco duro, que actúa como la memoria a largo plazo del sistema. Es el lugar donde se almacenan los datos que deben persistir incluso después de apagar la computadora. En una analogía con el cerebro humano, el disco duro sería equivalente a la memoria a largo plazo del individuo. Es un dispositivo interno o externo utilizado para almacenar documentos, imágenes, videos y otros archivos importantes.
En conclusión, tener una comprensión básica de la arquitectura computacional nos ayuda a entender cómo funcionan nuestros dispositivos y cómo interactúan con los lenguajes de programación. Aunque los detalles del hardware están abstractos para los desarrolladores de software, es valioso tener una visión general de la estructura interna del sistema para facilitar la resolución de problemas y las discusiones técnicas en el lugar de trabajo.
Aprender cómo funcionan los lenguajes de programación
En computadoras, la CPU es capaz de comprender instrucciones en forma de unos y ceros, que se denominan código de máquina. Aunque esto puede ser complicado para los humanos, utilizamos lenguajes de programación de alto nivel como JavaScript, Python y Java, que son más fáciles de aprender y trabajar. Estos lenguajes actúan como un puente entre nuestra forma de pensar y la comprensión de la CPU.
Cuando escribimos código en un lenguaje de programación, este debe traducirse al código de máquina para que la CPU pueda ejecutarlo. Esto se realiza a través de un programa llamado compilador o intérprete, dependiendo del lenguaje que estemos utilizando. Algunos ejemplos son JavaScript y Python, que son lenguajes interpretados, mientras que Java es un lenguaje compilado.
La elección entre un lenguaje compilado o interpretado puede tener implicaciones en la comodidad del desarrollador, el manejo de errores y el rendimiento, entre otros aspectos. Sin embargo, esos detalles específicos no serán abordados aquí. En general, el uso de lenguajes de programación de alto nivel nos permite trabajar de manera más eficiente y comprensible, haciendo que el proceso de programación sea más accesible para los desarrolladores.
Aprender cómo funciona Internet
Independientemente del tipo de programación que desees realizar, conocer cómo interactúan las computadoras a través de Internet será útil en muchas situaciones. Internet es una red global, una colección de computadoras conectadas que se comunican entre sí mediante un conjunto de reglas acordadas. En esta comunicación, las computadoras transfieren datos, que pueden representarse como unos y ceros.
Internet puede entenderse como un enorme escenario de conversación digital, y en esta conversación, hay dos participantes principales: el cliente y el servidor. El cliente es quien inicia la conversación, mientras que el servidor responde y proporciona los datos solicitados.
Por ejemplo, cuando accedes a un sitio web como «www.google.com», tu navegador web actúa como el cliente que solicita información a la computadora de Google, que actúa como el servidor. La computadora de Google responde enviando los datos necesarios para mostrar la página web en tu navegador. Esta relación cliente/servidor es fundamental en todas las transferencias de datos a través de Internet.
Prácticas básicas
La Línea de Comandos puede parecer intimidante al principio, pero en realidad, es una herramienta poderosa y fácil de usar. Aunque comúnmente se asocia con imágenes de piratas informáticos malvados, es simplemente una forma de interactuar con una computadora a través del teclado.
A través de la línea de comandos, puedes realizar diversas tareas, como navegar por carpetas, crear y eliminar archivos, copiar y mover archivos, ejecutar programas y más. En lugar de usar el ratón para hacer clic, la línea de comandos utiliza el teclado, lo que puede agilizar el trabajo una vez que te familiarices con ella.
Un comando básico útil es «pwd» (print working directory), que te muestra la ubicación actual en el sistema de archivos, es decir, en qué carpeta te encuentras. Explorar la línea de comandos es una excelente manera de adentrarse en el mundo de la programación y las funciones avanzadas de la computadora. ¡Inténtalo y descubre todo lo que puedes hacer con ella!
Cómo usar el Terminal de Línea de Comandos
Aquí tienes un resumen de los principales comandos de la Línea de Comandos:
- Para ver tu ubicación actual en el sistema de archivos, usa el comando «pwd».
- Utiliza «ls» para listar el contenido del directorio actual y «ls -al» para obtener más detalles.
- Para crear una nueva carpeta, utiliza «mkdir nombre_carpeta».
- Navega entre diferentes directorios con «cd nombre_carpeta» y «cd ..» para regresar al directorio anterior.
- Crea un nuevo archivo vacío con «touch nombre_archivo».
- Copia archivos con «cp nombre_archivo directorio_destino» y muévelos con «mv nombre_archivo directorio_destino».
- Renombra archivos con «mv nombre_actual nombre_nuevo».
- Elimina archivos con «rm nombre_archivo» y directorios con «rm -rf nombre_carpeta» (ten cuidado con este último, ya que eliminará todo el contenido de la carpeta).
Estos comandos te permitirán realizar tareas básicas de navegación y manipulación de archivos y directorios en la Línea de Comandos. ¡Practica y experimenta para familiarizarte con ellos!
Ganar habilidades en los editores de texto
Hasta ahora, hemos aprendido los fundamentos de la línea de comandos y cómo manipular archivos sin el uso del ratón. Sin embargo, aún no hemos explorado cómo editar el contenido de archivos de texto directamente en la terminal.
Editar archivos de texto en la terminal es esencial, ya que el código de programación generalmente se guarda en archivos de texto. Aunque existen editores de texto más elaborados, como Microsoft Word o editores de código como Sublime o Atom, la terminal es un lugar conveniente para escribir y editar código, ya que generalmente ya está abierta para ejecutar comandos.
Uno de los editores de texto más poderosos y populares para trabajar en la terminal es Vim. Vim es el sucesor de un antiguo editor llamado Vi y está diseñado para funcionar directamente en la terminal, lo que significa que no es necesario abrir ventanas separadas o utilizar el ratón. Vim tiene un conjunto de comandos y modos que facilitan la edición de texto utilizando solo el teclado.
Aunque Vim tiene una curva de aprendizaje, dedicar tiempo a aprenderlo puede ser muy beneficioso en tu carrera como programador. Vim suele estar preinstalado en muchos sistemas operativos, y puedes verificar si está instalado escribiendo «vim -v» en la Línea de Comandos.
Para aprender a usar Vim, puedes acceder a su tutorial integrado, llamado VimTutor, que es una excelente opción para familiarizarte con sus comandos y modos. Puedes ejecutarlo escribiendo «vimtutor» en la Línea de Comandos. Si quieres mejorar tu productividad al utilizar Vim, también puedes consultar siete comandos clave que pueden ser de gran ayuda a medida que te acostumbras a trabajar con este editor.
Aprender HTML
HTML, abreviatura de HyperText Markup Language, puede considerarse como la estructura esencial de una página web. Define los elementos que deben mostrarse y su orden. Cada página web que visitas tiene su correspondiente HTML asociado. Cuando accedes a una página web, el servidor web envía el HTML al navegador, que lo lee y lo muestra en tu pantalla.
A diferencia de otros lenguajes de programación, HTML no realiza acciones ni ejecuta instrucciones en secuencia. Es simplemente un conjunto de datos que define cómo se verá una página web. No es técnicamente un lenguaje de programación, aunque a menudo se le llama «código HTML».
En resumen, HTML es una herramienta poderosa para definir la estructura y el contenido de una página web, pero en sí mismo no realiza ninguna acción o función. Es como los cimientos y la estructura de un edificio, listos para ser mostrados al usuario final a través del navegador web.
Aprender CSS
Puedes pensar en CSS (Cascading Style Sheets) como el glaseado de un pastel en una página web. Al igual que el glaseado hace que un pastel sea más apetitoso, CSS mejora la apariencia de una página web. Sin CSS, una página web funciona correctamente, pero carece de estilo y atractivo visual. CSS nos permite asociar diferentes propiedades de estilo, como colores, tamaños de fuente, anchos, alturas y más, con los elementos HTML.
Cada propiedad de estilo indica al navegador cómo mostrar los elementos en la pantalla, dándoles el aspecto deseado. Al igual que HTML, CSS no es un lenguaje de programación en el sentido tradicional, ya que no realiza acciones o secuencias de instrucciones. En cambio, su función principal es agregar estilo y diseño al HTML básico, creando una experiencia visualmente agradable para los usuarios.
Aprender JavaScript
Comencemos respondiendo la siguiente pregunta: ¿realmente necesitamos JavaScript si podemos usar HTML para construir la estructura de una página web y CSS para que se vea bonita? La verdad es que técnicamente no es necesario si estamos satisfechos con un sitio estático que se muestra y se ve bonito sin cambios. En este caso, HTML y CSS son suficientes.
La clave aquí es entender la diferencia entre un sitio estático y uno dinámico. Si deseamos agregar interacciones más complejas y funciones dinámicas a nuestras páginas web, como cambiar el contenido de manera dinámica o permitir interacciones del usuario en tiempo real, entonces necesitamos recurrir a JavaScript. Es el lenguaje de programación que nos permite agregar esa dinamicidad a nuestras páginas y hacer que respondan a la interacción del usuario de una manera más activa y atractiva.
Aprender Python
En el mundo de la programación, es común encontrar lenguajes que ofrecen funciones similares, como variables, operadores aritméticos, declaraciones if/else, bucles y funciones.
Es interesante observar cómo diferentes lenguajes de programación abordan estos conceptos de manera similar, aunque presenten diferencias en la sintaxis, es decir, la forma en que se escribe el código en cada uno de ellos. A pesar de estas variaciones, los conceptos subyacentes suelen ser consistentes, lo que facilita la transición entre distintos lenguajes una vez que se comprenden estos fundamentos comunes.
Almacenamiento de datos y SQL
Una base de datos es un programa diseñado para almacenar, actualizar, recuperar y eliminar grandes cantidades de datos de manera eficiente. Podemos visualizarla como un contenedor de tablas, que son conjuntos de columnas y filas que contienen datos estructurados.
Para interactuar con estas bases de datos desde nuestros programas, utilizamos lenguajes como JavaScript, Python o Java, y empleamos consultas SQL (Structured Query Language). SQL es un lenguaje de programación específico para bases de datos que nos permite realizar diferentes operaciones.
Existen dos tipos principales de consultas SQL: las de lectura, que obtienen datos de la base sin modificarlos, y las de escritura, que insertan, actualizan o eliminan datos. Cuando necesitamos recuperar datos específicos, utilizamos la palabra clave SELECT seguida del nombre de las columnas que deseamos obtener y FROM para especificar la tabla de la cual queremos extraer los datos.
Además, podemos filtrar los resultados usando la palabra clave WHERE y aplicando condiciones específicas. También podemos ordenar los resultados de nuestras consultas con la cláusula ORDER BY, que los organiza de forma ascendente o descendente, según nuestras necesidades.
Frameworks y MVC
Las aplicaciones web son comunes y dependen de Internet para funcionar. Son versiones más funcionales de los sitios web y suelen tener código de backend en un servidor web para respaldar su funcionalidad.
Los lenguajes de programación utilizados para el código de backend incluyen Python, Java y JavaScript, entre otros. Las aplicaciones web ofrecen funcionalidades como modificar dinámicamente el contenido de las páginas, autenticación de usuarios, características de seguridad y acceso a bases de datos.
Los frameworks web son conjuntos de bibliotecas de código que facilitan el desarrollo de aplicaciones web al proporcionar funcionalidades comunes. Permiten a los desarrolladores crear aplicaciones sin preocuparse por tareas complejas detrás de escena.
Cada lenguaje de programación tiene varios frameworks populares en uso, como Spring Framework y Spring Boot para Java, Django para Python, y Express.js y Meteor.js para JavaScript. Estos frameworks son gratuitos y de código abierto. Los equipos de desarrollo pueden elegir el framework que mejor se adapte a sus necesidades y habilidades.