Programar es dar instrucciones a una computadora para que solucione algún problema. Mediante la programación, junto a varios otros componentes (análisis, diseño, arquitectura, pruebas) se pueden crear sistemas de software.
Pero, antes de poner manos a la obra en la programación, hay ciertos conceptos y habilidades básicos que deben manejarse, particularmente habilidades de resolución de problemas y de razonamiento lógico. Además de eso, es necesario cierto conocimiento general del mundo que nos rodea, ya que los problemas que resolveremos serán cuestiones reales o simulando la realidad. En la página de enlaces externos hay algunos recursos interesantes para desarrollar estas habilidades. También está disponible una explicación sobre tablas de verdad, un concepto básico de lógica que es de suma importancia en la programación. Y, a pesar de que no tiene relación directa con la programación, es muy útil (indispensable para los profesionales) saber inglés, ya que la mayor parte de los lenguajes se encuentran en ese idioma y la mayor parte de la documentación actualizada y completa, también.
Para programar se usa algún lenguaje de programación que permita dar órdenes que la computadora pueda interpretar. Los lenguajes pueden ser de bajo o alto nivel: a más bajo nivel, las órdenes son más cercanas al código entendible por la máquina (binario); a más alto nivel, las órdenes son más similares al lenguaje humano y “resumen” en pocas instrucciones varias acciones de bajo nivel. Es decir, un programa escrito en alto nivel, en definitiva, termina siendo traducido al bajo nivel para que la computadora pueda entenderlo, pero escribimos en alto nivel porque es más intuitivo, más rápido y menos engorroso.
Existen diversos paradigmas (es decir, formas de programar). Actualmente, el mayormente utilizado para la mayor parte de las aplicaciones es el paradigma de objetos, junto con el imperativo. En muchas universidades se comienza por la programación imperativa para luego agregar los conceptos de objetos. También existen el paradigma funcional (usado en aplicaciones matemáticas y científicas) y el lógico (utilizado en aplicaciones de inteligencia artificial -por ejemplo, para robótica y juegos-).
Para aprender a programar en el paradigma imperativo y en objetos se debe comenzar por aprender ciertos conceptos básicos: variables, estructuras de control, funciones, arreglos, punteros y, por supuesto, algoritmia (es decir, resolución de problemas mediante algoritmos). Luego se pueden agregar los conceptos de objetos: clases, atributos, instancias, métodos, encapsulamiento, herencia, polimorfismo…
Como lenguaje inicial, muchas universidades aún usan Pascal. Es un lenguaje antiguo pero que contiene las herramientas básicas necesarias, fácilmente trasladables a otro lenguaje (ya que sólo bastaría aprender la sintaxis -el cómo se escribe cada cosa- del nuevo lenguaje). Pascal suele ser útil para los autodidactas, ya que es un lenguaje estructurado que obliga al programador a seguir ciertas reglas para “ordenar” su código. Otros lenguajes, como Python, son más adecuados cuando existe un instructor, profesor o guía, ya que permiten ciertas “licencias” que el programador puede tomarse para escribir su código de forma más flexible. Además, con lenguajes modernos siempre es más sencillo hacer programas más vistosos. Para quienes gusten de empezar con mayor potencia (y, a la vez, mayor complejidad), existe la opción de aprender C, un lenguaje de más bajo nivel. Al pasar a objetos, desde C es buena idea pasar a C++, aunque también Java es una excelente opción, o los lenguajes de Microsoft: Visual Basic .Net o C#, que son sumamente intuitivos.