Des Arrollo
Des Arrollo
Des Arrollo
Año: 2020-2021
Indice
¿Que es C#?...................................Pag 4
Características……………………Pag 9 - 10
Utilidad……………………………Pag 11
Ventajas y Desventajas……………Pag 12 – 15
Sintaxis……………………………Pag 16 - 18
Frameworks……………………….Pag 19 - 20
Introduccion
C# es un programa que nos resulta interesante porque la mayor parte de su base es muy
parecida a: C y los programadores de C, C++, Java y JavaScript, se distingue bastante por si
solo y resulta muy cómodo si se tiene conocimiento previo de cualquiera de los otros lenguajes
es un lenguaje formal diseñado para que máquinas o aparatos electrónicos puedan llevar a cabo
instrucciones.
Está formado por un conjunto de símbolos y reglas tanto sintácticas como semánticas.
Proporcionar un puente para realizar las instrucciones de psicológico extensible por el humano
e instrucciones creíbles para la máquina
Desarrollo | Historia y Origen
Origen del Nombre
Que este lenguaje haya adquirido el nombre de C Sharp viene inspirado por el signo
#, este signo se pronuncia como Sharp en inglés para la notación musical. Es un
juego de palabras, puesto que “C#” musicalmente significaría “do sostenido”,
donde el signo # nos indica que una nota es un semitono más alto. Todo eso lo
podemos traducir como una metáfora sobre la superioridad del C# sobre su
antecesor, el C++. También el símbolo de sharp puede hacer una alusión a la unión
de cuatro +, siguiendo el sentido de progresión de los lenguajes C.
Historia
La evolución
2002
Antes, 2002 fue el año en el que se pudo ver la primera versión de C#, la 1.0. Aquí
se establecieron las bases del lenguaje: el uso de clases, structs, interfaces, modelo
de herencia, ciclo de vida, etc. También ocurrio el nacimiento de Microsoft .Net
Framework.
Un año más tarde y con el fin de solucionar varios problemas, salio la versión 1.2
del lenguaje C#. No obstante, lo más importante de este año fue la versión 1.1
del .Net Framework que la acompañaba. Este Runtime por fin solucionaba los
problemas de liberación de memoria del Garbage Collector.
Hasta aquí todo era muy parecido a Java. Básicamente, si cambiabas los “import”
por “using”, “java.” por “System.” y las llamadas en pascal Case por Camel Case,
todo funcionaba prácticamente igual. Exceptuando el region. Un pragma del IDE
que servía para ocultar cierto código que se autogeneraba al usar los diseñadores
visuales de formularios.
2005
2007
Este año nos encontramos con el que sin duda fue el mayor avance del lenguaje. La
versión 3.0 es con la que se consiguió adelantar a Java. A partir de aquí desde Java
se dieron cuenta de que tenían que empezar a copiar las nuevas características de
C#. Los tipos anónimos, junto con las Lambdas y el ExpresionTree, trajeron Linq.
También se incluyeron algunos detalles estéticos (o syntax-sugar), como las auto-
properties o la palabra clave var, que intentaban dar mayor limpieza al código.
Además, por estas fechas, como se habia llegado al límite de calor con respecto al
precio en los materiales de los procesadores, se empezaron a poner de moda los
multi-core. Quedando obsoleto cualquier programa que simplemente utilizara un
solo núcleo de nuestro procesador y dejando los demás en Idle.
De cara a que esto no sucediera, en el .Net Framework 3.5 se introdujo la Task
Parallel Library, que nos ayudaría a sacar provecho de estos nuevos procesadores.
También de esta versión salió otra librería llamada Reactive Extensions. Hoy por
hoy se utiliza más suport para javascript (en React o Angular), pero la librería
original era para C#.
2010
2012
Dos años más tarde nos encontramos con una versión que básicamente solo añadía
el syntax-sugar más grande que ha visto un lenguaje de programación en la historia.
De hecho, luego fue copiado por javascript. C# 5.0 introdujo async y await, dos
palabras claves útiles. Esta característica esconde una máquina de estado en IL
(Intermediate Language, el bytecode de .Net) dentro de nuestros ensamblados. Y su
funcionalidad es hacer que la programación asíncrona pueda realizarse de la misma
forma que la secuencial, acercando un modelo de programación basado en eventos
y callbacks, a los pobres programadores que solo saben programar de forma
secuencial.
2015
Buscando la excelencia de su lenguaje bandera, Microsoft nos dio una gran cantidad
de syntax-sugar nuevos.
2017
Desarrollo | Características
Sintaxis sencilla.
La sintaxis de C# es muy similar a Java, lo que simplifica al desarrollador a la
hora de escribir código.
Escritura.
En C# tienes que declarar los tipos de datos con las variables, además que
estas variables no pueden ser globales. De esta manera se reducen los errores
de compilación. Además, es un lenguaje orientado a objetos, así que obliga
que todos los métodos y propiedades estén dentro de una clase.
Orientación a componentes. Además de ser orientado a objetos, como hemos
dicho antes, es orientado a componentes. Podemos definir propiedades sin
necesidad de crear métodos, como en Java, o usar eventos sin tratar con
punteros a funciones. Escribir código en C# es mucho más sencillo y potente
que en otros lenguajes de programación.
Polimorfismo.
En C++ se permite la herencia múltiple, pero en C# no, aunque puedes
implementar interfaces. De esta manera se evitan complicaciones y simplifica
la escritura.
Operadores sobrescritos. En C# puedes recodificar un operador, como puede
ser el sumatorio + o el incremento ++.
Bibliotecas. Cualquier compilador de C# viene con un mínimo de biblioteca
de clases disponibles y que puedes usar.
Un Lenguaje Seguro
C# es un lenguaje seguro, lo que implica varios elementos. Por ejemplo, usted no
puede utilizar variables no inicializadas. En C++, es fácil declarar una variable y
después revisar su valor; lo que sea que este en la dirección de memoria dada a esa
variable se mostraría, y esto podría causar problemas en una aplicación. En cambio,
el compilador de C# le notificará si intenta utilizar una variable antes de
inicializarla con algún valor válido.
Orientado a Objetos
Aunque muchos argumenten que C++ es orientado a objetos, C# lo supera a otro
nivel. Cualquier tipo de dato simple se puede tratar como objeto, lo que significa
que un “int” tiene métodos asociados a ello. Por ejemplo, uno puede usar el método
ToString para obtener un valor string para un int.
Comentarios XML
C# admite la introducción de comentarios XML. Lejos de ser solo otra forma de
agregar comentarios al código, los comentarios XML pueden convertirse en
documentación. Estos se colocan en formato XML y luego pueden utilizarse según
sea necesario para documentar su código. Esta documentación puede incluir código
de ejemplo, parámetros y referencias a otros temas. Finalmente, tiene sentido para
un desarrollador documentar su código, porque esos comentarios pueden
convertirse en documentación independiente del código fuente.
Mayor Accesibilidad
La creación de componentes es directa, así como es la referencia a esos
componentes en código. El espacio de nombres en C# reemplaza las molestias del
sistema COM en el cual se tenía que realizar búsquedas de registro y crear
instancias de objetos, lo que llevaba a preocuparse por cosas tales como
“Unknown” y “Dispatch”. Usando C#, simplemente importamos un nombre de
espacio y luego inicia utilizando las clases en ese componente.
int a;
int* pA;
A partir de aquí, lo más aconsejable es escribir el método Main en una clase que se
llame igual que el programa más las letras App. Por ejemplo, si es una calculadora,
lo más recomendable es situar el método Main en una clase que se llame
CalculadoraApp. Ahora bien, recuerda que esto no te lo exige el compilador, así
que si pones el método Main en cualquier otra clase el programa funcionará.
Otra cosa importante a tener en cuenta es que C# distingue las mayúsculas de las
minúsculas, de modo que una variable que se llame? Nombre? es distinta de otra
que se llame? nombre?, y un método que se llame? Abrir? será distinto de otro que
se llame ?abrir?. Adaptarte a esto será lo que más te cueste si eres programador de
Visual Basic. No obstante, verás que tiene algunas ventajas.
C# soporta la sobrecarga de métodos, es decir, que puedes escribir varios métodos
en la misma clase que se llamen exactamente igual, pero recuerda que la lista de
argumentos ha de ser diferente en cada uno de ellos, ya se diferencien en el número
de argumentos o bien en el tipo de dato de dichos argumentos. Esto es algo que
Visual Basic.NET también soporta (por fin), pero no sucedía así en las versiones
anteriores de dicho lenguaje.
También soporta la sobrecarga de operadores y conversiones definidas por el
usuario.
Esto quiere decir que cuando diseñes una clase puedes modificar el comportamiento
de varios de los operadores del lenguaje para que hagan cosas distintas de las que se
esperan, y quiere decir también que si usas una clase diseñada por otro
programador, uno o varios operadores pueden estar sobrecargados, por lo que es
conveniente revisar la documentación de dicha clase antes de empezar a usarla, no
sea que le intentes sumar algo, por ejemplo, y te haga cualquier cosa que no te
esperas.
De todos modos, cuando lleguemos al tema de la sobrecarga de operadores te daré
algunos consejos sobre cuándo es apropiado usar esta técnica y cuándo puede ser
contraproducente.
En C# no existen archivos de cabecera ni módulos de definición, así que, si
programabas en C o C++, puedes olvidarte de la directiva #include cuando cuente
tres: uno...dos...tres ¡YA! Si programabas en MODULA 2, puedes aplicarte el
cuento con el FROM ... IMPORT, aunque esta vez no voy a contar. Si programabas
en otro lenguaje no me preguntes, que no tengo ni idea. Si no sabías programar en
ningún lenguaje, mejor que no te olvides de nada, que si no la liamos. En lugar de
esto tenemos algo mucho más fácil y manejable: los espacios de nombres, de los
cuales hablaremos en la próxima entrega.
Desarrollo | Frameworks
Prism
Por un lado, tenemos Prism, uno de los frameworks de este tipo más antiguos, con
más solera y uno de los que están más testeados. Además, es uno de los frameworks
que recomienda Microsoft
MVVM Cross
Este framework se desarrolló inicialmente para Xamarin, aunque en la actualidad se
puede desarrollar también con Windows Presentación Foundation y demás.
Es un framework bastante potente, mucho más que los dos anteriores, tiene una
comunidad muy fuerte y está en constante actualización.
ReactiveUI
El más reciente, pero no por ello menos importante, es ReativeUI. Es un framework
MVVM un poco más pequeño que el resto, ya que no tiene tanto soporte, a nivel de
framework MVVM a nivel, de la comunidad, pero no por ello deja de ser bastante
potente también.
Su principal virtud es que no solo ayuda con la arquitectura MVVM, sino que
también está orientado a la programación reactiva, lo que nos permite ser más
eficientes a la hora de desarrollar código.
Conclusión