19 de febrero de 2011

Multilingüismo intrínseco


Desde que aprendí a programar, siempre me han interesado conocer distintos lenguajes de programación.
Aunque el conocimiento de distintos lenguajes me interesa, también me interesan muchas otras cosas, es que soy un poco todo terreno, así que no dedico todo mi tiempo libre al aprendizaje de estos, más bien los aprendo cuando tengo una necesidad ya sea de interés propio o bajo encargo.

Recuerdo cuando aprendí a programar, no hace tanto tiempo, fue durante mi primer año de universidad, ya que yo no soy de los que en mi casa hubo un ordenador desde los inicios, porque no había una cultura tecnológica, y aunque si que es cierto que tuve un ordenador unos años antes de empezar en la universidad, solo mantuve unos pequeños contactos con la programación, pero nada serio, así que para mí, mis inicios fueron durante el primer curso universitario.

Yo soy de esos a los que le enseñaron a programar en PASCAL; aunque cuando yo empecé a estudiar en la universidad el lenguaje ya estaba un poco “desfasado”, aunque ahora he descubierto que parece que no tanto, y muchos nos preguntábamos porque cojones nos enseñaban a programar con este lenguaje, he de reconocer que después de terminar el trimestre y empezar el segundo trimestre con C, agradecí que me hubiesen enseñados las bases de la programación (imperativa) con este, ya que la sintaxis es muy parecida a pseudo código, y eso te permitía aislarte de la sintaxis del lenguaje y centrarte en lo que realmente había que aprender, que era la lógica de programar, es decir la elaboración del algoritmo que debía cumplir que a partir de unas precondiones se obtuvieran las postcondiciones.

Después de todo esto y de haber saltado de lenguaje en lenguaje (no han sido tantos como pueda parecer la expresión) te das cuenta que, si no tenemos en cuenta un cambio de paradigma, todo es más de lo mismo:
  1. Aprender la sintaxis a medida que escribes las primeras linea de código, consultando código ya escrito para las instrucciones más utilizadas y la documentación para las instrucciones que se usan menos.
  2. Aprender la API básica de las estructuras de datos y funciones compuestas ya implementadas que se ofrece con el propio lenguaje, para ver que podemos hacer en una sola llamada y no tener que estar consultando la documentación en todo momento.

Está claro que ese aprendizaje requiere un tiempo, y que dependiendo del lenguaje y de los lenguajes que ya conoces, por similitudes de sintaxis que se dan entre ciertos lenguajes, la curva de aprendizaje será más o menos pronunciada; no obstante es solo dedicar un poco de tiempo, sin mucha más complejidad, estás últimas vienen más de la mano del objetivo a acometer, es decir de la funcionalidad de lo que quieres desarrollar.

No obstante, cuando ya conoces un lenguaje y saltas a la aventura de uno nuevo, a mí se me plantean ciertas incógnitas que o bien las resuelvo con la documentación o buscando un poco en Internet o si no lo encuentro o veo que me va a costar más encontrar la respuesta que hacer una pequeña prueba, paso a elaborar, yo mismo, dicha prueba.
Este tipo de incógnitas suelen ser aspectos simples, como ya hace mucho tiempo se me planteo que pasaba con los parámetros pasados a un método en JAVA, si se pasaban por referencia o en copia, ya que no es algo que tu puedas indicar como en otro lenguajes, como sería C++; a mí estas cosas me inquieta no saberlas porque en este caso concreto si se pasa de una manera o de otra me determina si el estado de los objetos que se están pasando pueden cambiar o no, y si es por referencia, como es el caso de JAVA, si ese código es de un tercero y no lo tienes accesible, te tienes que fiar, a priori, de lo que se diga en la documentación, eso si existe.

Alguien se puede preguntar a que viene todo esto, pues el post es una introducción para unos cuantos posts que iré escribiendo sobre ciertas incógnitas del lenguaje de programación (PHP) que estoy utilizando para el desarrollo de un “proyecto” personal que hace tiempo que tenía en mente, y a raíz de haberme metido a desarrollarlo (aunque en con este lenguaje ya lo había utilizado en una versión anterior a la actual y no de manera muy amplia) me he topado con incógnitas en la ejecución de ciertas instrucciones, algunas resueltas con la documentación y otras a base de hacer alguna pequeñas pruebas, que son las que quiero publicar en siguientes posts.


Hasta la próxima enfermos.