Comencemos el año programando

Es sorprendente la acogida que ha tenido el buen Mar.io y a decir verdad es el primer artículo que publico que genera más de 10 mil vistas, esto pone la valla algo alta para los siguientes y espero no defraudarlos con este 🙂 Muchas gracias por encontrar mis escritos lo suficientemente interesantes como para compartirlos dicho sea de paso 🙂

Programación

Este es un tema de moda, todo el mundo quiere programar, o al menos todo el mundo piensa que es una habilidad cada vez más necesaria, y a decir verdad a mi me gustaría escribir todo un libro sobre programación, GNU/Linux, seguridad, y tal vez en algún momento lo pueda hacer, apenas aprenda cómo escribir libros libres y en formato agradable 😛 .

La tecnología avanza rápidamente

Este es uno de los motivos por los que no he escrito el libro todavía 😛 puesto que quiero hacer algo que pueda superar la barrera del tiempo en un campo en el que las cosas no suelen durar más de unos días de forma vigente. Es por esto que en este artículo quiero contarles un poco de los conceptos más que las implementaciones, de esta manera podremos volver a leer estas líneas en un tiempo y seguirán siendo vigentes.

Los principios se mantienen más tiempo

A pesar de que existen muchos lenguajes de programación hoy por hoy, muchos de los conpceptos se remontan a los mismos orígenes. Con esto quiero decir que muchas de las cosas que hoy se aprenden, han sido válidas por mucho tiempo, y probablemente lo seguirán siendo, esto debido a que la programación es hecha por personas y mientras sigan siendo ellos los que desarrollen, algunos conceptos se mantendrán.

Conociendo las bases

Ya existen muchos cursos, algunos gratuitos y otros no, que exponen gran parte de la sintaxis de muchos de los lenguajes de programación más populares de hoy en día. Pero no vamos a hacer esto aquí 🙂 yo quiero contarles un poco de lo que todo pogramador debería pensar antes de empezar a programar para poder hacer un trabajo decente.

Entrar en la mente del programador es ciertamente algo necesario, ya en un artículo un poco antiguo tratamos el tema. Ahora vamos a entrar un poco en los conceptos que nos permiten escribir el código.

Variables y funciones

Las variables son espacios de memoria, pensemos en los buzones que tienen los grandes edificios, están diseñados para almacenar cierto tipo de objetos, los hay grandes y pequeños, pueden estar solos o en grupo. Una variable es un valor que tu sabes que se usará a lo largo del tiempo, aunque exactamente no conoces su valor en el principio, si lo conoces y sabes que no va a variar, estamos frente a una constante.

Las funciones por otra parte, son conjuntos de instrucciones. Una instrucción es lo más básico que puede hacer un procesador, la razón de ser de las funciones es permitir al programador agrupar conjuntos de ordenes para poder repetirlas a lo largo de un programa. veamos un ejemplo sencillo y a la vez lleno de detalles.

Diseño propio. Christopher Díaz Riveros

Este es un pequeño programa escrito en C, tenemos la función main, la variable saludo, y la función printf que proviene de la biblioteca stdio.h. Vamos a modificar un poco el ejemplo y luego compilarlo para ver qué sucede.

Diseño propio. Christopher Díaz Riveros

Hemos agregado una pequeña función llamada saludar la cual toma como argumento una variable llamada saludo y la imprime. Esto no cambia mucho el resultado final del programa pero nos permite mostrar un gran y útil principio de la programación, la abstracción. Veamos el resultado:

Diseño propio. Christopher Díaz Riveros

Un simple programa, que está lleno de conocimiento y trabajo.

Bibliotecas

El motivo por el cual creé la función saludar fue simplemente para mostrar uno de los principios más grandes del desarrollo de software, que ya hemos nombrado: la abstracción. Así como hemos definido saludarprintf() ha sido definido en algún lugar de nuestro sistema operativo (la biblioteca standard de C de GNU), este lugar se conoce comúnmente como biblioteca/módulo/librería. Las bibliotecass son conjuntos de funciones que nos permiten agregar funcionalidad a nuestros programas sin tener que volver a inventar la rueda. En este caso, gracias a printf no tenemos que preocuparnos de toda la lógica necesaria para poder mostrar en una terminal el mensaje que deseamos.

Las bibliotecas están presentes en casi todos los lenguajes de programación actuales, puesto que al poder contar con secciones de código para elegir e implementar es más sencillo que crear cada función desde cero.

Abstracción

Imaginemos el sistema de correo, nosotros no necesitamos conocer toda la logística necesaria para poder enviar o recibir una carta, lo mismo sucede con la programación, abstraer es esencial para generar código duradero y elegante. Este proceso permite utilizar nombres generales para definir procesos generales.  En otras palabras, si creamos la función enviarCarta() sabemos de manera general que dicha función se encargará de enviar una carta, pero no necesariamente qué pasos se requieren para hacerlo. Y este es otro punto por el cual la abstracción es tan buena, puesto que nos permite encapsular segmentos de procesos.

Encapsulamiento

Nuestra función saludar es un claro ejemplo de encapsulamiento, nos permite tener un bloque cerrado con instrucciones específicas que podemos usar una o mil veces dentro de un programa. Esto hace que el código sea más fácil de leer y que sea más fácil de depurar puesto que si algún error surge, sabemos exactamente cuáles son los límites de nuestra función, y conocemos cada instrucción en un espacio reducido. Esto nos lleva a un principio de la programación bastante común en UNIX

Haz una cosa, hazla muy bien

Una buena función es aquella que solamente hace una cosa, pero la hace muy bien. Pensemos en esto por unos instantes… enviarCarta() probablemente haría muchas cosas, lo que no puede ser bueno si queremos depurar el proceso, mientras saludar() solo hace una. A lo largo del tiempo, si surgen problemas la segunda será más fácil de reparar que la primera. Una opción para evitar este problema sería generar distintos niveles de abstracción para enviarCarta(), esto quiere decir que dentro de la función existirían otras como verificarSobre() y tal vez dentro de esta una como verificarRemitente(). En definitiva esta última función (verificarRemitente()) es mucho más específica que solo enviarCarta() y de esta manera podemos encapsular partes del código para que hagan lo que es necesario y solo una cosa a la vez.

Practicar

Para aprender el arte de la programación es necesario practicar, y puesto que yo ahora he dado un vistazo muy general al tema, es necesario que practiquen con diversos lenguajes, o diversos problemas. Primero intentando generar funciones específicas, luego aumentando la complejidad. Como siempre, si surgen dudas, o sugerencias o comentarios, me ayudan mucho a saber qué aspectos reforzar. Muchas gracias y que este 2018 esté lleno de éxitos y proyectos asombrosos. Saludos


Categorías

Programación

ChrisADR

https://blogs.gentoo.org/chrisadr/ Hola, me mudé a mi blog dado que perdí el acceso a desdelinux... ahí encontrarán más contenido ;) saludos,

20 comentarios

  1.   Juanjo dijo

    Soy un apasionado de linux desde que cambie desde windows gracias s vosotros ya programo en bash y en c para llamadas al sistema gracias

    1.    ChrisADR dijo

      Estupendo Juanjo! Sigue así 😉 tal vez antes de que te des cuenta ya estarás ayudando a proyectos de software libre y open source a lo largo del mundo. Un saludo

  2.   Rodrigo dijo

    Muy interesante, mas cuando también estoy por dar mis primeros pasos en programación y estoy planificando que el 2018 sea el año en que aprenda a programar. Casi como si hubieras olido el aire etéreo de la red.
    Gracias por este articulo, espero nos puedas alumbrar mas en temas de seguridad informática que tanto hace falta en las mentes informaticas.

    Saludos

    1.    ChrisADR dijo

      Hola Rodrigo, pues ciertamente este 2018 estará llenos de artículos sobre programación y seguridad, siempre y cuando consiga un trabajo que me permita hacerlo 😛 pero mientras tanto puedo asegurar que la primera mitad del año sí podré escribir seguido, al menos hasta acabar los estudios jajaja

      Saludos y suerte con tu propósito de aprender a programar este año que viene 🙂

  3.   Ernesto Guillermo Vitali dijo

    Muchas gracias por escribir un artículo tan interesante. Sos un muy buen docente.
    El artículo sobre Mar.io va a trascender más de lo que sospechabas. Es excelente y está muy bien escrito.
    Feliz Año Nuevo!!!
    E. G. Vitali

    1.    ChrisADR dijo

      Muchas gracias Ernesto, muy amables palabras.

      Ciertamente ha sido más de lo que pensé que sería, y eso me motiva a seguir escribiendo cada vez más y mejor, y ciertamente estoy buscando un lugar donde poder desempeñar una labor docente, sería algo muy gratificante para mí y supongo que me daría oportunidad de escribir más temas sobre programación y seguridad y demás cosas que la curiosidad siempre trae a mi mente 🙂

      Saludos y feliz año nuevo también 🙂

  4.   Tecprog World dijo

    Muy bueno el post mi amigo, muchos saludos desde Lima – Perú , nosotros también confiamos en que la programación mejora la vida de las personas, esperando sigas publicando más entradas nos despedimos, un abrazo.

    1.    ChrisADR dijo

      Muchas gracias y seguramente vendrán más entradas, espero hacer una serie completa para poner a punto a los lectores en la colaboración de proyectos de software libre. Un saludo y éxitos este 2018

  5.   Anónimo dijo

    Sigue así, un saludo.

  6.   Ricardo dijo

    Brillante el post … saludos desde Paraguay … esperando que el 2018 sea un año mucho mejor que los anteriores … que salgan todos los proyectos personales … y que sigas aportando con tus conocimientos … Exitos!!!

    1.    ChrisADR dijo

      Hola Ricardo, muchas gracias por los saludos, ciertamente espero poder seguir compartiendo, seguro este año saldrán varios artículos 😉 éxitos para este 2018 también! Saludos

  7.   JorgeFS dijo

    Que manía del hispano-hablante en decir librería en referencia a “library”. Son bibliotecas de código, no librerías.
    Saludos.

    1.    ChrisADR dijo

      jajaja gracias por el dato Jorge, lamentablemente en Perú les decimos librerías, aunque también módulos, aunque ciertamente biblioteca es más acertado, veré si puedo ajustar el texto para hacerlo más correcto 🙂 Saludos y feliz 2018

  8.   Aanxhel dijo

    Muy buena introduccion a la programacion,
    espero y sigas haciendo mas aportes como este.

    1.    ChrisADR dijo

      Muchas gracias y ojalá pueda hacer una serie completa, saludos y feliz año nuevo!

  9.   Damian Garcia dijo

    Muy bueno el artículo, sólo quiero aportar algo más de mi primer contacto con programación y de como la práctica del mismo es fundamental. Al que le interesa el link es el siguiente http://bit.ly/1HBRCfx
    Espero que les resulte interesante. Saludos, feliz comienzo de año y a programar.

    1.    ChrisADR dijo

      Muchas gracias Damian, no había leído el artículo nunca, ni nada de la página, pero se ve interesante en realidad. Muchas gracias por compartir, saludos

  10.   Bertín Osborne dijo

    En mis tiempos se usaba void main, que cosas, aunque era en msdos y no importaba el valor del retorno .

    1.    ChrisADR dijo

      Hola Bertín 🙂 ciertamente el void main se mantiene, puede utilizarse dependiendo de la complejidad del programa hoy en día, del mismo modo el valor de retorno, pero hoy por hoy es mejor seguir con el desarrollo y las mejores prácticas para poder tener software que pueda ser leído por más personas, ya que esto es vital en ambientes de software comunitario. Saludos y gracias por compartir

  11.   José dijo

    muy buenos tus aportes, espero que sigan , este 2018 quiero empezar a programar, se agradece la ayuda

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *