Principios de Programación

¿Qué es un algoritmo?

El término algoritmo se ha vuelto muy común por estos días. Quizás lo hayas escuchado en conversaciones de tecnología, visto en redes sociales o noticias. Pero, ¿qué significa este término y para qué se utiliza?

La respuesta es más fácil de lo que crees, un algoritmo es un conjunto de pasos que completan una tarea específica.


Los programas funcionan a través de un código que sigue una serie de procesos en un orden particular. Las computadoras o aplicaciones pueden usarlos para calcular las cosas de manera más eficiente y rápida.

Netflix, por ejemplo, ha desarrollado un algoritmo de personalización que combina perfectamente lo que deseas ver y nuevas sugerencias que se convertirían en tus películas o series favoritas. Esta plataforma utiliza los algoritmos en su programación como herramienta primordial para sus clientes.


Otro ejemplo de aplicaciones es Waze y Google Maps, ya que los celulares transmiten a los servidores la posición y velocidad con la que los usuarios se están moviendo. Es así como calculan la velocidad de un trayecto, saben de vehículos mal estacionados, choques, reductores de velocidad y hasta huecos, los cuales dan idea del tiempo que te llevará llegar a tu destino.




En resumen, el futuro de la tecnología está encaminado a evolucionar y mejorar las tareas que hace. Mientras la codificación y la programación se sigan utilizando, los algoritmos serán una pieza fundamental en este proceso.


Sistema binario


El sistema de numeración decimal ha sido usado por muchas civilizaciones a lo largo del tiempo y se compone por diez dígitos que van del 0 al 9, con los cuales formamos cifras.

Sin embargo, como los computadores funcionan de forma diferente, utilizan el sistema binario.




Para realizar sus tareas, los computadores necesitan procesar muchos datos, estos se componen por dígitos binarios o "bits". Cada bit representa a un solo número: 0 o 1, que al combinarse con otros crea unidades más grandes como: 
  • Bytes (B): 8 Bits
  • Kilobytes (KB): 1024 Bytes
  • Megabytes (MB): 1024 Kilobytes
  • Gigabytes (GB): 1024 Megabytes
Las cuales determinan el tamaño de nuestros archivos. Entre más grande sea el archivo, más bits posee, por ejemplo, un vídeo de alta resolución está conformado por millones de unos y ceros.

¿Cómo este sistema le permite funcionar a los computadores?


Pensemos en el sistema binario como una lámpara en la cual el número 1 la representa encendida y el número 0, apagada. De este modo, la lámpara estaría encendida o apagada, sin otra posibilidad.

Estos bits forman hileras con distintas combinaciones entre los unos y ceros, formando un código. Tu computador procesa este código y lo transforma en datos que le indican qué hacer.

¿Por qué el código binario y no el sistema decimal?

Para un computador es mucho más fácil procesar los datos con el código binario, ya que solo posee dos estados y consume mucho menos espacio. Si, en cambio, empleara el sistema decimal, ¡imagina cuánto trabajo le costaría procesar la información con ocho estados adicionales!


Así como los átomos conforman todo en nuestra realidad, en el mundo digital, los textos, imágenes, vídeos y más, pueden descomponerse en el código binario y aunque no podamos verlo, todo se trata de unos y ceros.


Lenguaje de programación


Todo lo que hacemos en un computador, en un teléfono inteligente o en cualquier dispositivo electrónico tiene algún tipo de código detrás dictando que debe suceder, o sea, determinando cómo debe funcionar el equipo o el programa que estamos utilizando. Pero ¿alguna vez te has preguntado cómo está escrito dicho código?


Así como hay miles de idiomas en el mundo, en el entorno digital hay toneladas de diferentes lenguajes de programación, y son estos los que hacen funcionar gran parte de la tecnología que usamos hoy en día.

Cada uno está compuesto de términos y comandos específicos que son usados para crear cosas como páginas web, aplicaciones y, básicamente, cualquier tipo de software.


Lenguajes como Javascript, Python y Java son usados en sitios web para diferentes propósitos. Por ejemplo, Javascript sirve para darle interactividad a las páginas, mientras que Java es utilizado frecuentemente en los servidores web. Por otro lado, Python tienen usos en proyectos de "machine learning" y procesamiento de lenguaje natural.

Otro ejemplo es C++, el cual es empleado en muchos lugares para hacer cosas como programas de escritorio, juegos, servidores web, entre otros.

También puedes haber escuchado sobre HTML y CSS. Estos no son técnicamente lenguajes de programación, pero se usan con frecuencia para determinar la estructura, las funciones y la apariencia de un sitio web. 

Estos 6 ejemplos son solo algunos de los lenguajes más populares, pero hay muchos más, y se debe a que cada uno funciona de manera distinta.


Para explicar esto, veamos un ejemplo:

Existen muchas clases de vehículos en el mundo y la mayoría puede transportarte desde un punto A hasta un punto B, pero el que elijas depende de una serie de factores. Algunos se caracterizan por ser muy veloces, como un auto de carreras; otros, en cambio, requieren más habilidades o entrenamiento para conducirse, como en el caso de un camión. En ciertos casos un vehículo puede funcionar mejor que otro. Por ejemplo, una camioneta puede ser más efectiva al mover objetos pesados que una moto. Pero en general, todos los medios de transporte pueden hacer estas tareas. La elección depende de lo que prefieras.

Estas cualidades también aplican a los lenguajes de programación. Por ejemplo, un desarrollador web puede escoger JavaScript porque funciona mejor con HTML, mientras que un creador de videojuegos puede preferir C++ porque puede procesar gráficos más complejos.

Sin los lenguajes de programación, mucha de la tecnología que usamos a diario sería inútil. Simplemente, son la columna vertebral de todo nuestro software.


¿Debería aprender programación?


En los últimos años, el interés por la programación ha aumentado. Muchos consideran que es una habilidad importante en el mundo laboral actual o un campo donde se puede hacer mucho dinero. Las razones para optar por la programación como carrera profesional pueden ser muchas. Sin embargo, no siempre es la mejor alternativa para todos.


Si aún no estás seguro de que la programación sea una opción adecuada para ti, te recomendamos considerar algunos de los siguientes aspectos:

Lo primero que debes tener en cuenta es el mercado laboral. Aunque en este campo hay oportunidades muy bien remuneradas, son más las personas en búsqueda de trabajo que las ofertas laborales. Estudios recientes demuestran que hay un 50% más de aspirantes en busca de empleo que opciones profesionales. Esto significa que saber programar no es garantía de conseguir trabajo, ya que los empleadores están en busca de los mejores de cada área.


Lo segundo es que, como cualquier habilidad, la programación requiere dedicación y paciencia. Entre más tiempo practiques, mejor serás. Entender el primer lenguaje de programación puede ser un proceso largo y difícil, pero una vez lo hayas aprendido, te será más fácil entender los demás.


A medida que la tecnología continúe evolucionando se crearán nuevos trabajos, mientras que otros quedarán obsoletos. Por esta razón, algunos te dirán que es mejor inversión estudiar áreas como la inteligencia artificial y el aprendizaje automático o "machine learning". Sin embargo, la programación es una excelente forma de iniciar y puede servirte como punto de partida si tu sueño es trabajar desarrollando software en ese tipo de campos en el futuro.


Finalmente, lo más importante es que si consideras la programación como algo que realmente disfrutarás y estás dispuesto a poner en práctica, entonces no dudes en iniciar. Este conocimiento se puede aplicar de muchas maneras. Pero si se trata de algo sobre lo que no estás seguro, quizás deberías seguir mirando opciones, ya que hay muchas otras alternativas disponibles y no estás obligado a hacer algo que no se adapte a ti.


Diferencias entre software de código libre y código cerrado


Software es el conjunto de programas o aplicaciones, instrucciones y reglas informáticas que hacen posible el funcionamiento de un equipo. Puedes encontrar software de código libre y código cerrado.

En este vídeo podrás ver las principales características y diferencias de estos dos tipos de software.


En primer lugar, el software de código cerrado es aquel que es distribuido con licencia de uso y no puede ser modificado o adaptado por el usuario, como sucede con IOS y Windows.

Por otro lado, el software de código libre es todo lo contrario, ya que este puede ser modificado por el usuario y se distribuye gratuitamente. Un claro ejemplo son Android y Linux.

Existen tres puntos claves que diferencian estos dos tipos de software:

1. El costo:

Para usar una licencia de software de fuente cerrada debes pagar, mientras que los software de fuente abierta son distribuidos de forma pública y gratuita.


2. El servicio:

Los software de código cerrado, por lo general, te ofrecen soporte técnico y actualizaciones durante el tiempo de vida del producto, a diferencia de los de código abierto, en donde tendrás que trabajar de manera colaborativa con otros usuarios para mejorar el servicio.


3. La seguridad:

En este caso, los software de código cerrado te obligan a aceptar el nivel de seguridad que el proveedor ofrece. Todo lo contrario al software abierto, el cual es inspeccionado por los usuarios, quienes tienen la capacidad de modificar e implementar cualquier característica extra de seguridad.


Al final de cuentas, al decidir qué tipo de software es el más adecuado para ti depende en gran medida de tu experiencia técnica o recursos para mantener y actualizar el software.


Secuencias, condicionales y ciclos


Todos los software que usamos a diario están formados por símbolos y términos escritos en inglés, ya que este es el idioma que se usa regularmente al programar.

Este código se divide en tres estructuras que, al trabajar en conjunto y correctamente, forman algoritmos e instrucciones básicas para programas complejos. Veamos:


1. Secuencias

Son series de acciones desarrolladas en un orden específico, ya que se realiza una acción tras otra hasta que todas se hayan llevado a cabo.

Un claro ejemplo de esto es la rutina matutina: te levantas, tomas agua, te bañas, desayunas, etc.

2. Condicionales

Este tipo de estructura, en lugar de seguir un orden específico de eventos, realiza una preguntar para determinar el camino a seguir.

Para entender mejor este concepto, veamos el siguiente caso: digamos que vas a cepillarte los dientes y notas que se acabó la crema dental. Ante este hecho te preguntarías: "¿tengo más crema dental?"


Si la respuesta es negativa, agregarías este artículo a tu lista de mercado. Pero, si la respuesta es afirmativa, simplemente la usarías.

Esta es la función básica de los condicionales: responder preguntas a partir de lo que descubren.

3. Ciclos

Así como los condicionales, los ciclos también realizan preguntas. La diferencia es que hacen la misma pregunta una y otra vez hasta que cierta tarea haya sido elaborada.

Por ejemplo, cuando clavas una puntilla en una pared. Aunque no lo notas, constantemente te preguntas: "¿ya entró la puntilla?".


Cuando la respuesta es negativa, martillas nuevamente y continúas repitiéndote esta pregunta hasta que la respuesta sea afirmativa y puedas parar.

Los ciclos te ayudan a programar tareas repetitivas, sin necesidad de hacer el mismo código una y otra vez, para la misma acción.