26 sept 2014

De lo analógico y lo digital


Se podría decir que nuestro cerebro funciona en analógico. La vida que nos rodea, nuestras experiencias y recuerdos se almacenan en forma representativa, aleatoriamente, y de estas formas incorpóreas surgen nuestros sueños, las pesadillas y sucedáneos oníricos. Como si multitud de manecillas (no siempre exquisitamente precisas ni exactas) apuntasen a áreas dispares entre la compleja red de neuronas que comprende nuestro mundo interior. Con el paso del tiempo, o por alguna enfermedad o accidente, se descontrolan, se oxidan, o simplemente señalan direcciones incoherentes. Como un reloj que atrasa o adelanta. Con las horas perdidas.

Nuestro cerebro es un gran máquina analógica que necesita comprender con aquello que interactúa, incapaz de dar saltos adelante o hacia atrás.




Pero las máquinas, los ordenadores, la inteligencia artificial, es digital. Todo se encuentra de una forma estructurada. El mundo de la programación es un mundo apasionante. Es complejo (aunque ahora algo menos que antes, la verdad) pero emocionante. Yo soy un gran fan de Visual Basic y del -por desgracia- prácticamente desaparecido ya Visual Basic Script. Es un lenguaje que a muchos de los programadores "más puritanos", como los de C, C++, Delphi, Java o C#, no les cae mucho en gracia. Muchos de ellos (obviamente no todos, pero un gran número) consideran a Visual Basic un lenguaje "secundón", pero desde que empecé a trabajar con él me encantó (obviamente no lo hago desde el punto de vista profesional, para mí VB es un hobby). Lo bueno de VB (o una de sus cosas buenas) es que pesa muy poco (creo que es el que menos ocupa de la mayoría de RADs). No necesitas un "ordenador de la NASA" para instalarlo y empezar a programar con él. Incluso aún se pueden encontrar por ahí las ligerísimas versiones aquellas CEE que Microsoft lanzara en su día para el desarrollo de sus ActiveX, que ni siquiera pedían número de serie para usarlas.

Desde el primer momento que abrí el IDE de VB e hice mis primeras aplicaciones, casi lo entendí todo. Era como si VB me tendiera la mano, como si se hubiera hecho para mí. La gente que está acostumbrada a programar entenderá perfectamente esa sensación extraña e incomprensible de por qué con determinada RAD uno se siente "como en su casa" y, sin embargo, con otra nunca acaba de encontrarse a gusto. Y eso no quiere decir que VB sea sencillo, ni mucho menos. Puede llegar a ser un lenguaje muy complejo si uno se lo propone.


Recuerdo mis primeras clases de programación. Yo, que llegaba del mundo de las letras, con una mente más cercana a lo que podía considerarse escribir poemas que algoritmos, tenía que cambiar el chip completamente. Pero no era el único. De los que iniciaron el curso conmigo fueron cayendo como moscas. Nos costaba mucho entender cómo "pensaba" una máquina. Era un suplicio intentar retorcer nuestra mente analógica para que pensara "en digital", lo que los expertos denominan "pensamiento lógico" o lógica secuencial. Tal es así que existe toda una materia (quienes hayan estudiado informática lo saben muy bien), que, por desgracia, cada vez se la valora menos. Se llama "teoría de la computación" o "metodología de la programación", y en ella no se hace nada más que escribir en papeles algoritmos. Intentar forzar a nuestra mente animal a que piense "en modo binario", creedme: es muy duro. Sobre todo si tu conciencia está más cercana al mundo de las sensaciones, de los sentimientos. Por supuesto hay gente más predispuesta a ello que otras personas, y que casi les sale de manera innata, pero no es lo más habitual. Tal es así que el primer curso que hice, en el cual todo era a fuerza de algoritmos y sin encender un ordenador durante semanas, lo acabé abandonando. Solo tras proponerme a mí mismo que aprendería a programar al precio que fuera conseguí salir adelante y realizar mi sueño de poder "entender", de llegar a saber cómo trabaja o piensa una máquina hasta el punto de ser capaz de codificar una serie de órdenes y que ella pudiera entenderlas y realizarlas. Quizá Visual Basic me entusiasme porque es el lenguaje "más natural", y es uno de los pocos (al menos de manera patente) que incluye nemotécnica.

Ahora el gobierno de España se está planteando seriamente enseñar a programar a los niños con una materia curricular que sería obligatoria. Aunque creo que es muy útil saber programar, creo que es un gran error obligar a nadie a aprenderlo. Y lo es porque muchas personas, simplemente, jamás lo lograrán. Todo el mundo puede aprender a sumar y restar, o aprenderse de memoria un poema de Espronceda. Pero de la misma manera que no todo el mundo puede ser cirujano, no todo el mundo puede ser programador.


Por supuesto me parece una genial idea que enseñen algorítmica, teoría de la programación, porque eso le hará ver a muchos alumnos a lo que de verdad se enfrentarán. Pero lanzarles sin más ni más a tener que defenderse con un lenguaje (y encima, impuesto, un lenguaje que ellos no van a poder elegir) me parece un gravisimo error que redundará en fracasos escolares y en niños traumatizados.

Cuando aprendes a programar hay una máxima que todos los profesores repiten como si estuvieran cacareando una canción aprendida, que es: "tu aprende un lenguaje, y ya sabrás programar en todos los demás". ¡Mentira! Un lenguaje no tiene nada que ver con el otro, ni en el diseño del IDE ni en la forma de programar. Es como si te dijeran: "tu aprende italiano y ya podrás aprender cualquier otro idioma". Por supuesto, aprender varios idiomas te da una flexibilidad mental y agudeza (muchos idiomas comparten muchas raíces) que te puede facilitar -al menos a ciertas personas- el aprendizaje de otros, pero no lo aprendes de por sí.


También es verdad que hay algunas personas que, bajo mi punto de vista, son unos superdotados, porque tienen la habilidad de programar tanto en ensambladdor, en C, en VB o en PHP y pasar de un lenguaje a otro sin problemas. Pero no son la mayoría. Claro, ya lo sé, hay mucha gente que te escribe un "hola mundo" en Java y ya creen que saben programar, pero defenderse en un lenguaje de programación, aunque sea "visual" y de alto nivel, es una tarea de años. Puedes hacer algunas cosillas en varios, pero eso no quiere decir que los domines. De la misma forma hay mucha gente que sabe saludar en griego, en francés, en alemán, incluso en japonés y árabe, pero eso no significa que conozcan el idioma como para siquiera llegar a entender una conversación mínimamente.

No obstante saber programar es una auténtica "pasada". Antes se decía (y algunas películas así lo reflejaban) que había dos clases de personas: las corrientes, y las que sabían pensar "como una máquina". De hecho a principios de la era informática cuando de una empresa se marchaba el programador la empresa corría serio peligro de entrar en quiebra, puesto que sólo el programador conocía los entresijos de sus herramientas informáticas. Por eso los programadores estaban tan bien pagados antes. Claro que ahora todo eso ha cambiado, ahora levantas una piedra y salen quince mil millones de programadores, porque la necesidad de informáticos de antes ha hecho que mucha gente escoja esa carrera y el mercado haya acabado saturado.


Por lo tanto a día de hoy quien desee programar tiene, sobre todo y ante todo, que gustarle. Mi consejo es que pruebe varias herramientas y se quede con la que se sienta más a gusto, con la que, nada más abrir el IDE, experimente una sensación de agradable bienestar. Pero antes de eso, mucho antes, que se apunte o lea un buen libro de metodología y algorítmica. Porque puede que su mente aún no esté preparada para salir de Matrix.

| Redacción: Revista Ordenadores

5 comentarios:

  1. Visual Basic es un lenguaje muy amigable, pero para alguien que quiera vivir de programar ahora solo hay dos lenguajes que copan casi todo el mercado: Java y C. Quien lo iba a decir,cuando yo empecé Java aún ni se daba en la universidad (tampoco se daba VB, no se si ahora eso habrá cambiado).

    A mi también me encanta VB, pero si tengo que elegir uno me quedo con Delphi (o con Lazarus, Pascal en suma).

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Ah, se me olvidaba, otra cosa que quería comentar también: lo de que los niños aprendan a programar "obligatoriamente" en clases. También pienso que es un error. Algorítmica no esta mal que les enseñen, pero aprender a programar o no debería ser una decisión individual. Es como si te obligan a tocar la guitarra.

    Ahora mucha gente pasa de la algorítmica, ya se que hay muchos programadores que nunca han aprendido metodología y son unos grandes programadores. También hay mucha gente que conduce muy bien y no tiene ni idea de mecácanica, pero si sabes algo de mecánica tendrás ventaja. Pues con la algorítmica lo mismo, se puede programar sin haber hecho nunca un algoritmo en un cuaderno, pero si sabes hacerlo lo agradecerás.

    ResponderEliminar
  4. Soy entusiaste de C/C++ entre otros lenguajes, y Visual Basic me encanta. Es un lenguaje segundón, es verdad, pero ningún otro te permitía hacer tanto con tanta facilidad.

    Lástima que con VB.NET se haya optado por potencia a costa de complejidad.

    En cuanto a que laboralmente solo hay Java y C, creo que es bastante inexacto. C apenas tiene uso salvo en microcontroladores, incluso C++ va a menos, aunque esté bien pagado.

    No podemos olvidar C# (escritorio y Windows Phone), PHP, HTML y Javascript que está resurgiendo, ...

    ResponderEliminar
  5. Muchas gracias por el enlace! Ya tenéis uno puesto vosotros también!

    ResponderEliminar