La programación es el diseño, escritura, prueba y depuración de código fuente que es el lenguaje que entiende la computadora.
Existen muchos lenguajes de programación, además se dividen en distintas categorías, dependiendo de la proximidad con la máquina, el alto, bajo y medio nivel, dependiendo de los paradigmas que abarcan, como la orientación a objetos, la orientación a eventos, paralelo, lógicos, procedural o imperativo.
Todo esto puede resultar abrumador, y más teniendo en cuenta todos los lenguajes existentes, sin embargo no es necesario conocer muchos lenguajes, lo importante es aprender los modernos, los cuales nos van a permitir manejar todas las herramientas tecnológicas, obteniendo soporte y ayuda que en éste caso es fundamental para cumplir los objetivos.
El lenguaje C# junto con .NET logra abarcar todo un espectro de programación importante, permitiéndonos controlar los mayores avances tecnológicos en materia de computación y sistemas de redes.
Cercanía a la máquina
La cercanía a la máquina es la capacidad del lenguaje de controlar directamente los circuitos, por ejemplo por medio de ensamblador (bajo nivel), o por instrucciones complejas (alto nivel), sin embargo algunos lenguajes, combinan las dos propiedades, el lenguaje C es un ejemplo. C# también nos va a permitir controlar directamente con instrucciones de ensamblador, solo en caso de necesitarlo, pero su mayor productividad reside en su capacidad de concentrarse en el paradigma orientado a objetos, su simplicidad, el manejo en modo seguro de memoria, etc.
Paradigmas
Es algo fundamental en materia de programación, y se refiere a un cambio radical de pensamiento, es algo que no es tan simple de asimilar y a veces lleva años captar esa idea. El paradigma más importante y el cual tiene que centrarse un buen programador es el orientado a objetos, por eso es importante leer por lo menos un libro sobre ese paradigma.
Existe una discusión abierta con respecto a la forma de aprendizaje de la programación orientada a objetos, algunos creen que primero es necesario aprender lenguajes procedurales como C o Pascal, otros creen que lo mejor es ir a la programación orientada a objetos. Las universidades por lo general inician con Pascal, que es un lenguaje estructurado que permite entender el procedimiento de una forma de programación, luego para la programación orientada a objetos enseñan Smalltalk ya que es un lenguaje puro para ese paradigma. Otros lenguajes si bien son orientados a objetos tienen la posibilidad de programar como si fuesen procedurales, por ejemplo C++ para lograr la compatibilidad con C arrastra sus inconvenientes. Para evitar algo de ese problema se diseñaron distintos lenguajes, como Java que se basa en C++ y que además de incorporar conceptos modernos, su principal contribución fue quitar una buena parte de las herramientas del lenguaje anterior. C# fue la respuesta de Microsoft a Java, y también entra en el camino de quitar antes de incorporar, permitiendo una mayor simplicidad y poder concentrarse en el paradigma orientado a objetos.