Desarrollo de software con C#

Desarrollo de software con C#

Siguiendo con nuestro curso de programación nos toca evolucionar, y aunque muchos se enfaden, evolucionaremos en el más amplio sentido de la palabra, hacía el futuro, en este caso hacía un nuevo lenguaje de programación C#.

prin

Lenguaje CSharp

C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET. Este lenguaje ha sido influido principalmente por Java, C++, Eiffel, Modula-3 y Pascal, y al mismo tiempo también ha influido a lenguajes como D, F#, Java 5 o Vala. Sí, ha sido influido por el lenguaje de Oracle, y esa influencia se nota sobre todo en el paradigma funcional (según Java reinventado en su versión 8), aunque todavía no ha conseguido influirle en otros ámbitos (azúcar sintáctico) pero por otra parte esperamos que lo consiga.

Ventajas en el uso de CSharp

Las principales ventajas que presenta el uso C# en comparación con otros lenguajes es su potencia como lenguaje, pero también su flexibilidad. Soporta la mayoría de paradigmas, destacando el paradigma funcional que combinado con el paradigma orientado a objetos hacen del lenguaje uno de los más potentes.

Desventajas

La principal desventaja que puede presentar respecto a Java radica en su portabilidad y en la dificultad que trae un desarrollo completo de un producto software empleando este lenguaje. Java es un lenguaje que presenta una curva de aprendizaje menor que la de lenguajes como C# o Perl. Esta curva de aprendizaje no se debe a la sintaxis del código, ni si quiere a como se programa o los nuevos conceptos que introduce, es una curva más referente a la dificultad que con lleva para un usuario novel realizar una correcta documentación del código o una ausencia de una IDE que sirva como referente en el sector educativo, en Java si tenemos el famoso BlueJ utilizado en tantas universidades.

Tenemos que tener claro que los programas que nosotros desarrollemos son un producto software que tendrá que estar correctamente documentado y probado, no seria racional ni trabajar dos veces (arreglar bugs) ni desarrollar un software que por su mala documentación no lo haga mantenible (debido a que nadie entienda su documentación). Aunque sea cierto que C# si incorpora herramientas de documentación del código estas herramientas no son usables ni genéricas ni tampoco están realmente integradas con el lenguaje, ni tampoco con su entorno.

Es importante explicar que aunque estas desventajas no formen parte del lenguaje si que forman parte de su entorno y lo que hacen es que el desarrollo de un productos software, utilizando el lenguaje C#, sobre la plataforma .NET o Mono tenga defectos en el producto final, que aunque no este relacionado de forma directa con la programación, con picar código, si que condiciona que el producto desarrollado no sea tan mantenible como si tuviese una correcta documentación. Es por ello que la curva de aprendizaje, en un lenguaje que mantiene casi toda la sintaxis igual que Java, se ve incrementada por la carencia de un sistema de documentación universal. En este punto, también se podrían añadir otros aspectos como la universalización de una guía de estilo para el lenguaje, es verdad que existen distintos movimientos (entre los que se encuentra Microsoft) pero todavía es muy habitual ver un programa en C# empleando una guía de estilo de Java (por ejemplo con los nombres de los métodos en minúscula). Otro punto importante es que actualmente los entornos por excelencia (Mono y .NET) no utilizan el mismo framework para las pruebas y esto quizás si que pueda perjudicarnos si trabajamos en un equipo de desarrollo con otras 100 personas.

Entorno de desarrollo

Principalmente tenemos dos entornos de desarrollo integrado Visual Studio y MonoDevelop (actualmente Xamarin Studio).

Visual Studio es una IDE exclusiva de sistemas operativos Windows. Soporta múltiples lenguajes de programación tales como C++, C#, Visual Basic .NET, F#, Java, Python, Ruby o PHP; al igual que entornos de desarrollo web como ASP.NET MVC o Django. El gran problema que se nos plantea en el uso de Visual Studio es que en su versión profesional la licencia no es gratuita, y nos limitará mucho a la hora de continuar con nuestro curso de programación.

MonoDevelop era un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para C# y otros lenguajes .NET como Nemerle, Boo, Java (vía IKVM.NET) y, en su versión, 2.2 Python. MonoDevelop originalmente fue una adaptación de SharpDevelop para Gtk#, pero desde entonces se ha desarrollado para las necesidades de los desarrolladores del Proyecto Mono. Actualmente el entorno de desarrollo integrado MonoDevelop es llamado Xamarin Studio ha sido desarrollado por Xamarin, una compañía establecida en mayo de 2011 por los ingenieros que crearon Mono, una implementación libre de la plataforma de desarrollo.NET para dispositivos Android, iOS y GNU/Linux.

Xamarin Studio o MonoDevelop puede ejecutarse en las distintas distribuciones de Linux, Mac y Windows. Desde la versión 2.2, MonoDevelop ya cuenta con soporte completo para GNU/Linux, Windows y Mac, completando así un hito para ser un verdadero IDE Multiplataforma. Ser gratuito, multiplataforma y libre no son las únicas razones por las que usaremos este entorno en vez de .NET. Nuestro objetivo es desarrollar las tecnologías de .NET, en concreto las relacionadas con el lenguaje C#, para ello utilizaremos el programa Xamarin Studio.

¿Por qué no usaremos Visual Studio?

Para poder desarrollar software, aunque no sea multiplataforma, es necesario utilizar Visual Studio en su versión profesional. Sí es cierto que existe Visual Studio Express, que es completamente gratuita, pero la carencia más importante de esta versión es que el soporte de pruebas unitarias está muy limitado. También existe una nueva versión, Visual Studio Community, que aunque es algo más avanzado que Visual Studio Express sigue presentando alguna deficiencia respecto a su versión profesional.

Tenemos que tener claro que, si atendemos a lo aprendido hasta ahora en nuestro curso de programación, es que la integración de las pruebas (sobre todo las unitarias) en nuestro software son vitales para desarrollarlo de manera eficiente. Por tanto, sería una contradicción usar una IDE en la que no tenemos soporte para estas pruebas.

Pruebas unitarias en Xamarin Studio

Las pruebas unitarias las desarrollemos sobre Xamarin Studio, y para ello utilizaremos las pruebas proporcionados por NUnit. Estas pruebas no son totalmente compatibles con las de Microsoft (MSUnit): Cambian en el framework utilizado y en las cabeceras de los métodos y las clases.

Por ahora las pruebas que implementemos serán muy similares a las que hemos implementado en Java, eso sí, implicándonos más en su desarrollo. Tenemos que tener claro que las pruebas que realicemos en muchas ocasiones serán totalmente portables hacía MSUnit (únicamente cambiando las cabeceras), y también muy parecidas en sintaxis con las JUnits. Por ello, si alguien quiere utilizar el Visual Studio es libre de hacerlo, pero tendrá que cambiar algunas cosas en las pruebas que aquí desarrollemos.

Nosotros, los que hemos ido siguiendo este curso de programación, se supone que ya tenemos unos conocimientos sobre Java por tanto, si hemos comentado que la sintaxis de C# es similar a la de Java... ¿Realmente necesitamos otro curso sobre C#? Realmente no, pero para aprender el lenguaje, y algunas mejoras que respeto respecto Java, las siguientes partes del tutorial las realizaremos con este lenguaje, siempre es bueno avanzar, y en este caso, al menos en el mundo profesional C# si que puede presentar una evolución respecto a Java.

Para ti
Queremos saber tu opinión. ¡Comenta!