Skip to content

La Importancia del Fundamento

Posted on:10 de agosto de 2023 at 19:46

La Importancia del Fundamento

Tabla de contenido

  1. Introducción
  2. Por qué deberíamos conocer el fundamento
  3. Qué es el fundamento de la computación
  4. Qué es el fundamento de la programación
  5. Cuál es el panorama actual del desarrollo software
  6. Cómo aprender los fundamentos
  7. Rust, un buen lenguaje para el fundamento
  8. Conclusión

Introducción

La realidad es que todos pensamos o escribimos algoritmos de forma más habitual de lo que creemos. Un ejemplo simple es, cuando pensamos en una receta de cocina y la ejecutamos para alimentarnos diariamente. Pero obviando ejemplos cotidianos, la programación es una habilidad esencial en la actualidad, ya que es el núcleo de la revolución tecnológica que llevamos ya tiempo viviendo y de la recién empezada revolución de la IA.

Es por ello que este sector está de moda y cada vez mas personas ven la posibilidad de ganarse la vida con esta profesión tan demandada. Pero como cualquier profesión, no es algo que se pueda aprender de manera rápida y trivial. Conviene conocer muy bien cuál es el fundamento de la profesión, para tranquilidad propia y la de los demás (que son los que van usar el software que se desarrolle).

Por qué deberíamos conocer el fundamento

Es simple, bajo mi punto de vista, para desempeñar cualquier profesión cualificada deberíamos conocer bien los fundamentos de esa profesión. Un ejemplo un poco radical podría ser, un médico o un cirujano. Es impensable que un médico trabaje o un cirujano habra en canal a alguien sin conocer exactamente cómo funciona el cuerpo humano en su esencia, sin conocer cuales son los fundamentos de la medicina. Es por eso que cualquier profesional que trabaje en algo relacionado con la ingeniería informática, debería conocer cómo procesa una computadora la información.

Conocer los fundamentos le permitirá poder adaptarse a los diferentes lenguajes y paradigmas actuales, además de escribir código eficiente, mantenible y escalable.

Qué es el fundamento de la computación

Se refiere a los principios y conceptos fundamentales que subyacen en el funcionamiento de las computadoras y en la resolución de problemas relacionados con la manipulación y procesamiento de información utilizando dispositivos electrónicos. Estos fundamentos son esenciales para conocer cómo funcionan las computadoras y cómo se pueden utilizar de forma efectiva para solucionar problemas.

Algunos de los fundamentos clave de la computación incluyen:

  1. Representación de Datos
  2. Arquitectura de Computadoras
  3. Lenguajes de Programación
  4. Sistemas Operativos
  5. Redes de Computadoras
  6. Algoritmos y Complejidad
  7. Teoría de la información
  8. Lógica
  9. Matemáticas Discretas
  10. Seguridad Informática

Qué es el fundamento de la programación

El fundamento de la programación se refiere a los principios y conceptos básicos que sustentan la creación y el desarrollo de software. Estos fundamentos son esenciales para comprender cómo funcionan los programas, cómo se escriben y cómo se comunican con las computadoras para realizar tareas específicas.

Algunos de los fundamentos clave de la programación incluyen:

  1. Algoritmos
  2. Estructuras de datos
  3. Lógica de programación
  4. Sintaxis y semántica
  5. Abstracción
  6. Modularidad
  7. Reutilización de código
  8. Depuración
  9. Optimización
  10. Paradigmas de programación

Cuál es el panorama actual del desarrollo software

Existen dos problemas claros que derivan en una reducción de la comprensión profunda de los conceptos subyacentes de la programación:

  1. Tendencia en el mercado, en la que se incita a los nuevos interesados en el desarrollo software, a aprender de manera rápida a través de cursos online o bootcamps de solo varios meses, en los que una persona debería salir preparada para enfrentarse a su primer trabajo en la industria debido a la alta demanda. Pero la realidad es que las personas ingresan en el mundo laboral, lo hacen habiendo adquirido demasiados conceptos en un muy poco tiempo sobre una materia, la programación, que puede llegar a ser muy densa. Lo normal es que el alumno, al salir del bootcamp, no tenga claro exactamente ciertos aspectos acerca de cómo funciona un lenguaje de programación, y mucho menos una computadora.

  2. Dependencia excesiva de un framework o una tecnología de alto nivel. Una organización requiere de un perfil concreto, para una determinada tecnología, por lo que busca personas que sepan sobre esa tecnología en concreto. Esto hace que los futuros desarrolladores se especialicen en una sola tecnología, cuando lo ideal sería que ese nuevo trabajador tuviera un amplio conocimiento del fundamento, y una vez dentro de la nueva empresa o proyecto, aprenda la tecnología necesaria y se especialice.

Cómo aprender los fundamentos

Bajo mi punto de vista, un profesional que vaya a empezar una carrera en el mundo de la ingeniería informática, debería tener conocimientos en las siguientes dos areas:

  1. Teoría de la computación.
  2. Uno o varios lenguajes de programación de bajo nivel.

La forma más fácil de obtener estos conocimientos es, a través de una carrera universitaria o de cualquier educación superior. Aunque se podría hacer de manera autodidacta, dado la gran cantidad de información que existe en la red acerca del tema, la forma más fácil es a través de una educación reglada. Aunque siempre existen personas a las que le gusta aprender de forma autónoma, pero apenas conozco a nadie que aprenda de manera autodidacta dicha materia (al igual que conozco a pocas personas que se hayan convertidos en expertos en física de forma autodidacta).

Rust, un buen lenguaje para el fundamento

No hablaré sobre temas relacionados con computación, tal vez en otros artículos. Pero sí sobre el fundamento de programación, y sobre un lenguaje que es adecuado para aprender esos fundamentos que tanto vengo predicando en este artículo, Rust.

En realidad el lenguaje no es importante para aprender mientras se enseñe bien el fundamento. Podríamos usar un clásico como es C, su hermano mayor, C++, o incluso Java. Pero en este artículo voy a recomendar Rust por ser una opción más moderna e igual de eficiente o mas que los mencionados arriba.

Rust es un lenguaje de programación moderno que ha ganado popularidad gracias a su un enfoque en la seguridad, la concurrencia y el rendimiento. Es ideal para aprender los fundamentos de la programación por varias razones:

  1. Sintaxis clara y expresiva: Rust tiene una sintaxis que se asemeja a la de C++, lo que facilita la comprensión de conceptos como variables, tipos de datos y estructuras de control.
  2. Gestión de memoria: Rust introduce el concepto de “préstamos” y “ciclos de vida” que permiten a los programadores entender cómo se maneja la memoria en el nivel más bajo de la computadora, evitando así errores comunes como fugas de memoria y errores de punteros.
  3. Enfoque en la seguridad: Rust impone reglas estrictas para prevenir errores comunes de programación, como el acceso a memoria no válida o la concurrencia insegura. al aprender a trabajar dentro de estas restricciones, los desarrolladores pueden adquirir una comprensión más profunda de cómo funcionan estas características fundamentales de la programación.
  4. Biblioteca estándar rica: Rust proporciona una biblioteca estándar rica y bien documentada que expone a los desarrolladores una amplia gama de conceptos y estructuras de datos comunes.

Conclusión

El mercado impulsa a los nuevos desarrolladores (y no tan nuevos) a aprender lenguajes y tecnologías de manera rápida, ya sea a través de la empresas o a través del imparable crecimiento en la oferta de formación que promete una rápida especialización. Pero el fundamento de la programación en conjunto con el de la computación, es esencial para ser un programador competente y versátil. Al invertir tiempo y esfuerzo en comprender los fundamentos, los desarrolladores pueden mejorar su habilidad para resolver problemas y crear soluciones robustas y eficientes. Y como recomendación podrían usar Rust para aprender el fundamento además de un nuevo lenguaje robusto y moderno.