Aprendiendo C# y Revit API (II)

Advertencia

Esto no es un curso de programación, ni pretende serlo, simplemente son comentarios e ideas de un aspirante a conocer C# y la API de Revit; si detectas algún error puedes contactar conmigo o dejar un comentario en esta entrada.

Lenguajes de programación

La creación de un programa informático guarda algunas similitudes con la construcción de un edificio: se trata de generar un proyecto (conjunto de instrucciones) que el proyectista (desarrollador) entrega a la empresa constructora (ordenador) para que ejecuten una determinada construcción (programa).

Por tanto, para que la información fluya de forma correcta y todos entiendan el trabajo que deben realizar, el envío de instrucciones entre el proyectista (desarrollador) y la empresa constructora (ordenador) debe realizarse en un idioma estandarizado y codificado.

En el caso concreto de la programación, debemos de tener presente que nuestro el ordenador es una máquina "tonta" que únicamente entiende dos estados (dos niveles de voltaje) en sus componentes internos: 0 y 1; es lo que conocemos como "lenguaje máquina".

Este lenguaje máquina es específico de cada procesador (modelo de ordenador), además de complejo de leer y entender por humanos, por lo que los programadores han ideado otros "lenguajes de alto nivel", que se aproximan más a la sintaxis habitual del lenguaje humano, que nos ayudan a escribir programas de forma más sencilla y no nos exigen conocer al detalle la estructura interna de cada procesador. Paralelamente, se han desarrollado traductores entre lenguajes de alto nivel y lenguajes máquina, conocidos como "compiladores", que se encargan de convertir las instrucciones escritas por los programadores en instrucciones entendibles por los procesadores de los equipos.

El lenguaje C# y .NET Framework

Centrándonos en el lenguaje C#, que se utiliza principalmente para trabajar con la API de Revit, debemos saber que se trata de uno de los lenguajes de programación de alto nivel soportados por .NET Framework, el conjunto de herramientas/soluciones desarrollado por Microsoft para facilitar a la creación de aplicaciones.

.NET Framework se encarga de convertir nuestro programa escrito en C# (o en cualquier otro lenguaje soportado por la plataforma .NET) a un lenguaje intermedio, denominado Common Intermediate Language (CIL), que luego es ejecutado en cada ordenador gracias al uso de una máquina virtual denominada Common Language Runtime (CLR).

Es decir, nuestro programa no se compila expresamente para una máquina/arquitectura concreta, sino que es traducido a un lenguaje intermedio que es interpretado por un compilador Just-In-Time que traduce en tiempo real nuestro código al lenguaje máquina soportado por el procesador en el que corre nuestro programa.

Por todo esto, utilizar un lenguaje como C# bajo .NET Framework nos ofrece la ventaja de desarrollar nuestro programa sin preocuparnos por el equipo/plataforma que lo ejecutará después: sólo necesitaremos que exista la máquina virtual .NET en la plataforma en la que correremos nuestro programa.

Tipo de lenguaje y POO

Si nos centramos en las características propias del lenguaje C# podemos decir que se trata de un lenguaje de programación orientado a objetos, un paradigma de programación que se basa en organizar los programas como conjuntos de objetos que poseen determinados atributos y funcionalidades.

Un ejemplo sencillo: si estuviésemos trabajando en un programa de modelado BIM, podríamos diseñar un objeto "muro" que tuviese una serie de atributos (altura, longitud, espesor, material, etc.) y que tendría funcionalidades asociadas como "Vincula tu altura a un nivel" o "Cambia tu directriz".

En resumen, un programa diseñado bajo el paradigma de la Programación Orientada a Objetos (POO) se basará en la definición de objetos, con sus atributos y funcionalidades diferentes, que se irán relacionando entre sí mediante de mensajes.

Clases

Por tanto, el trabajo del desarrollador de software será abstraer la estructura básica de esos objetos (caracterísitcas y acciones) que compondrán nuestro programa, y crear una serie de plantillas genéricas, denominadas "clases", que permitan al programa construir posteriormente objetos específicos.

Es decir, nuestro trabajo será definir la clase "Muro", que poseerá una serie de atributos (características) y métodos (acciones que pueden realizar), y durante la ejecución del programa iremos creando "objetos" que serán "instancias o ejemplares" (concreciones en definitiva) de esa clase "Muro".

Estructura de un programa en C

Según indica la Guía oficial de C# escrita por Microsoft, un programa escrito en C# tendrá la siguiente estructura básica:

Los principales conceptos organizativos en C# son programas, espacios de nombres, tipos, miembros y ensamblados. Los programas de C# constan de uno o más archivos de origen. Los programas declaran tipos, que contienen miembros y pueden organizarse en espacios de nombres. Las clases e interfaces son ejemplos de tipos. Los campos, los métodos, las propiedades y los eventos son ejemplos de miembros. Cuando se compilan programas de C#, se empaquetan físicamente en ensamblados. Normalmente, los ensamblados tienen la extensión de archivo .exe o .dll, dependiendo de si implementan aplicaciones o bibliotecas, respectivamente.

Para ampliar información

Os dejo algunos enlaces interesantes que desarrollan las ideas principales de esta entrada del diario: