Zacharias 🐝 Voulgaris

hace 1 año · 5 min. de lectura · ~100 ·

Blogging
>
Blog de Zacharias 🐝
>
Resolución de Problemas Programáticos

Resolución de Problemas Programáticos

»
MLL Co —
NACE IM revi ie Poe
BN - od (20 a
—— Baa EN Cart -meny cart RL re”

BR ea —
Ri JRL EY memes
LTE SIE ar sty
ee ul ®search-btn a

atte
Bae ~1CoN-3al1ent-cart, . ascend “cmmem— -—

SL impor tant j color: NAR

I cafe JLT TLL 1 TERE SET BX EY PE ———

Bede st widget [ETAT Sa — J
sil FATT TTR Tr TS No —

EZ 2. am iW AR

- 2 7 ATTIRE

- a AUN I LN NN Ea
’ J A | y \ -
’ of Bo mea

PE

Pa ~

Fi 3x 8

 

he

 

Introducción no tan técnica

Cualquiera que se haya adentrado en el mundo de la informática ha oído y probablemente haya experimentado problemas de programación cuando nada parece funcionar en el guión que has pasado horas escribiendo y reescribiendo. Pero cuando se han limado todas las arrugas y esta pieza de software funciona finalmente, puede ser una fuente de valor. Este valor proviene del hecho de que (normalmente) resuelve algunos problemas que tardarían más tiempo en solucionarse a mano, incluso si tuvieras otras herramientas potentes a tu disposición (por ejemplo, un programa de hoja de cálculo). Entonces, ¿qué es lo que hace que la programación sea una ayuda valiosa para la resolución de problemas, especialmente cuando las cosas pueden cuantificarse y expresarse de una manera que los ordenadores puedan entender? ¿Y qué importancia tiene para nosotros hoy en día? En este artículo, intentaré responder a estas y otras preguntas que puedan surgir.

Problemas, problemas, problemas...

Hoy en día existen varios tipos de problemas, sobre todo cuando se trata de procesos complejos. Como todo se ha vuelto más interdependiente (por ejemplo, a través de la globalización y otros fenómenos) los problemas se vuelven más complicados. Esta mayor complejidad se debe en parte a que ahora entran en juego muchas variables, lo que hace que el espacio de soluciones sea mayor. En otras palabras, son posibles muchas más soluciones potenciales, y encontrar una buena es como buscar un trozo de paja en una fábrica de agujas. Fíjate en que he escrito "una buena" en lugar de "la mejor", ya que una solución suficientemente buena es a menudo todo lo que necesitamos. Por supuesto, si podemos encontrar la mejor, eso es aún mejor, pero si vale la pena es muy discutible.

Por ejemplo, actualmente utilizamos motores que no son súper eficientes. Pero eso está bien, ya que podemos seguir sacando provecho de ellos. Si tuviéramos que esperar a resolver todos los desafíos científicos y de ingeniería para construir un motor de alta eficiencia que sea factible de producir a escala, ¡todavía estaríamos viviendo en el mundo preindustrial!

Además, la resolución de un problema suele traer más problemas a la palestra. Cuando los brillantes ingenieros que desarrollaron el primer ordenador digital durante la Segunda Guerra Mundial consiguieron esta hazaña, aparecieron nuevos problemas que había que resolver para que fuera más aplicable. Al fin y al cabo, ese ordenador descifraba los códigos del Eje y ocupaba mucho espacio, pero si querías hacer algo más con él, te decepcionaba. Los primeros ordenadores programables que surgieron fueron un gran paso adelante, pero seguían careciendo de la elegancia y la portabilidad que caracteriza a sus descendientes. Quizá por eso, encontrar la mejor solución posible no es un gran problema si nuestro objetivo es resolver un problema lo suficientemente bien.

Los algoritmos como herramientas de resolución de problemas

Una vez que las cosas se hicieron más avanzadas y los ordenadores pasaron de ser herramientas problemáticas a herramientas de resolución de problemas, las cosas se pusieron mucho más interesantes. Al fin y al cabo, hicieron posible la programación y el uso de ésta para abordar otros problemas más difíciles. Pero incluso antes de eso, había una herramienta que se utilizaba para este fin y que era conocida incluso por los antiguos griegos (y probablemente por otras culturas antiguas): los algoritmos.

Los algoritmos fueron en su día una construcción estrictamente matemática que ayudó a los solucionadores de problemas de la época a enfrentarse a retos que eran irresolubles de otro modo. En pocas palabras, un algoritmo es una serie de pasos que hay que seguir para resolver un problema concreto. Para problemas comunes, se podían aprovechar ciertos algoritmos repetidamente, haciendo que sus creadores fueran conocidos. Al mismo tiempo, las Matemáticas serían más útiles como herramienta, algo que observamos desde entonces. Ahora, las Matemáticas no se limitaban a realizar mediciones y cálculos básicos, sino que eran un marco elegante para modelar y resolver problemas que de otro modo eran irresolubles. En ocasiones, estos algoritmos dieron lugar a fórmulas y métricas matemáticas que luego se incorporaron al corpus del campo y que aún se enseñan en las escuelas.

En informática, los algoritmos desempeñan un papel crucial, ya que son la forma de software de más alto nivel, sobre todo en lo que respecta a los programas utilizados para abordar problemas. Es posible que los algoritmos hayan experimentado un cambio de imagen últimamente debido al renacimiento de la IA que estamos viviendo. Sin embargo, son un dominio mucho más amplio, capaz de añadir valor incluso sin utilizar esos sofisticados marcos que conlleva la IA. Los algoritmos son una poderosa herramienta para todo tipo de escenarios que impliquen la programación, desde tareas básicas como cargar un archivo de datos y señalar los posibles errores que puedan surgir, transformar datos y, naturalmente, analizarlos. Esta última tarea, en particular, ha tomado vida propia a través del campo de la Analítica, donde los algoritmos parecen aportar mucho valor. Al fin y al cabo, los datos por sí solos están bien, pero no son valiosos, al igual que una ficha de dinero; por sí solos, son geniales (y, en algunos casos, agradables de ver), pero a menos que puedas cambiarlos por algo que necesites, no son tan importantes.

¿Y la heurística?

Toda esta charla sobre algoritmos puede hacer que alguien se pregunte por la heurística, ya que esta última es un poderoso dominio (¿marco?) que a menudo implica el aprovechamiento de algoritmos para la resolución de problemas. Sin embargo, la heurística está más orientada a problemas complejos que normalmente no se abordarían con un algoritmo estándar o un algoritmo que se inventaría mientras se estudia programación. Antes de la llegada de cierto tipo de redes neuronales artificiales (un tipo de IA muy popular hoy en día), el procesamiento de imágenes se basaba en gran medida en la heurística. Se podría decir que todo el campo de la imagen digital se basa en ciertos algoritmos de naturaleza heurística.

Si te preguntas qué tiene que ver todo esto contigo, recuerda que si no se hubieran desarrollado estos algoritmos heurísticos, enviar y recibir imágenes en tu dispositivo móvil seguiría siendo ciencia ficción. No es que no se puedan tener imágenes digitales de otro modo, pero si se quiere disponer de formatos de imagen prácticos como el JPEG, habrá que ser inteligente a la hora de codificar la información visual. Y si quieres hacer algo útil con esas imágenes, las herramientas convencionales pueden no ser suficientes. Así que todo este asunto de codificación y procesamiento de imágenes es posible gracias a la heurística.

Sin embargo, la heurística va más allá de los algoritmos para ayudarnos en nuestras empresas de resolución de problemas. Hay incluso métricas elegantes que la gente ha ideado y que no tienen teoría detrás (aunque para algunas de ellas, como la entropía, se desarrolló mucha teoría a su alrededor). Las heurísticas algorítmicas son potentes para problemas complejos que implican la iteración para encontrar una buena solución, aunque a menudo implican mucha programación. Las heurísticas relacionadas con la métrica son más sencillas y pueden implementarse incluso en una hoja de cálculo. Sin embargo, cuando la heurística se combina con los procesos que aporta la programación, puede ser aún más potente.

Más información sobre todo esto

Podría seguir hablando de este tema durante un buen rato. Si lo hiciera, probablemente acabaría escribiendo un libro sobre él (¡que seguro que algunos de ustedes estarían deseando leer!). Como ya lo hice el año pasado, para reunir mi experiencia y conocimientos sobre este tema en una forma fácil de asimilar, me limitaré a mencionar ese libro en su lugar. Se llama The Data Path Less Traveled, y es mi último libro técnico a través de Technics Publications, una editorial técnica de Estados Unidos. Aparte del texto entretenido, también incluye unos cuantos cuadernos de código para que puedas practicar los conceptos tratados en un entorno de programación elegante, eficiente y potente. Así que échale un vistazo cuando tengas un momento. Saludos!

Zacharias
Voulgaris, PhD

The Data Path
Less Traveled

Step up Creativity
using Heuristics in Data Science,
Artificial Intelligence, and Beyond Ciencia y Tecnología
Comentarios

Artículos de Zacharias 🐝 Voulgaris

Ver blog
hace 1 año · 2 min. de lectura

The “Language Model for Dialogue Applications" AI Google developed last year is a machine learning-p ...

hace 2 años · 2 min. de lectura

Lately, I’ve been thinking a lot about podcasts. I suppose this has to do with the zeitgeist of quic ...

hace 7 meses · 1 min. de lectura

My team and I are working on an educational venture for data matters. Nothing too technical but some ...

Profesionales relacionados

Puede que te interesen estos puestos de trabajo

  • Cronoshare

    Podólogo para problemas con uña

    Encontrado en: Cronoshare ES C2 - hace 2 días


    Cronoshare Alcorcón (Madrid), España

    Problemas con uñas grandes de los dos pies, la uña es del color blanco se levanta desde la base y parece que es hongo pero no lo es. Me hicieron la prueba y es negativa.Servicio(s) que se necesita del podólogo(a) · Problemas con uña · Rango de edad del paciente(s) · Adulto años) ...


  • Cronoshare Barcelona (Barcelona), España

    Necesito un servicio de Reparar monitores con las siguientes características:¿Qué avería(s) o problema(s) tiene el monitor? · Problemas de encendido, problemas con la imagen · ¿Qué tipo de monitor es? · Samsumg 27 pulgadas led · Tamaño del monitor · Entre 25 y 35 pulgadas · ¿De q ...

  • Page Personnel ETT

    Desarrollador FrontEnd

    Encontrado en: beBee S2 ES - hace 3 días


    Page Personnel ETT Valladolid, España A convenir

    Diseñar y desarrollar interfaces de usuario utilizando tecnologías frontend. · Colaborar estrechamente con el equipo de desarrollo backend para integrar las aplicaciones. · Participar en la revisión de código para garantizar la calidad del software. · Probar y optimizar las aplic ...