PDF de programación - C# para programadores C++

Imágen de pdf C# para programadores C++

C# para programadores C++gráfica de visualizaciones

Publicado el 19 de Mayo del 2018
1.551 visualizaciones desde el 19 de Mayo del 2018
318,9 KB
50 paginas
Creado hace 21a (13/12/2002)
A

C# para programadores C++

Introducción

Este apéndice está destinado a aquellos programadores que están muy familiarizados con C++ y desean ver
cuáles son las diferencias entre C++ y C#. Repasaremos el lenguaje C#, destacando específicamente aquellas
áreas en las que C# se diferencia de C++. Dado que ambos lenguajes comparten una gran cantidad de sintaxis
y metodología, los programadores de C++ pueden utilizar este apéndice como una vía rápida para el
aprendizaje de C#.

Debe quedar claro desde el principio que C# es un lenguaje diferente a C++. Mientras que C++ fue diseñado
para la programación orientada a objetos de propósito general en los días en que el ordenador típico era una
máquina independiente que ejecutaba una interfaz de usuario basada en línea de comandos, C# ha sido
diseñado específicamente para trabajar en la Plataforma .NET, y está orientado al entorno moderno de
Windows y a las interfaces de usuario controladas mediante ratón, las redes e Internet. Sin embargo, es
innegable que ambos lenguajes son muy similares tanto en su sintaxis como en que ambos han sido diseñados
para facilitar el mismo paradigma de programación, en el que el código se estructura alrededor de jerarquías de
clases heredadas. Esta similitud no es sorprendente dado que, como hemos destacado a lo largo de este libro,
C# ha sido en gran medida diseñado como un lenguaje orientado a objetos que mantiene las bondades de los
lenguajes orientados a objetos anteriores a él, de los cuales C++ es probablemente el ejemplo más exitoso
hasta el presente, a la vez que aprende de sus errores de diseño.

Debido a las similitudes entre los dos lenguajes, los desarrolladores que dominan C++ pueden encontrar que la
vía más rápida de aprender C# es tratarlo como si fuera C++ con unas pocas diferencias y aprender cuáles son
esas diferencias. Este apéndice está diseñado para facilitar esa tarea. Comenzaremos por una presentación
general que menciona cuáles son las diferencias principales entre los dos lenguajes a la vez que indica cuáles
son los elementos que comparten en común. A continuación, mostraremos la apariencia del clásico programa
'Hello, World' en cada uno de los dos lenguajes. Por último, el grueso de este apéndice se dedica a un análisis
punto por punto que ofrece una comparación detallada entre C# y C++ en cada una de las áreas principales de
los lenguajes. Inevitablemente, un apéndice de este tamaño no puede ser exhaustivo, sino que ha sido diseñado
para cubrir las diferencias fundamentales entre los lenguajes que Ud. encontrará en la programación diaria.
Debemos notar, en todo caso, que C# depende fuertemente del soporte que le ofrece la librería de clases base

Apéndice A

.NET en diversas áreas. En este apéndice limitaremos nuestra atención al lenguaje C# en sí, y no cubriremos
extensamente las clases base.

Para la comparación, tomaremos ANSI C++ como punto de referencia. Microsoft ha añadido numerosas
extensiones a C++, y el compilador de Visual C++ presenta unas pocas incompatibilidades con el estándar
ANSI que señalaremos ocasionalmente; pero normalmente no haremos mención de ellas al comparar los dos
lenguajes.

Convenios utilizados en este apéndice

En este apéndice adoptaremos un convenio adicional para mostrar el código. El código C# siempre se muestra
del mismo modo que en el resto del libro, con sombreado en gris:


// este es código C#
class MyClass : MyBaseClass
{


Si deseamos resaltar cualquier código C# nuevo o importante, lo mostraremos en negrita:


// este es código C#
class MyClass : MyBaseClass // ya hemos visto esto
{
int X; // esto es interesante


El código C++ que se muestra para la comparación se presenta así:


// esto es código C++
class CMyClass : public CMyBaseClass
{


En el código de los ejemplos de este apéndice también hemos tenido en cuenta los convenios de nombres más
comunes para los dos lenguajes bajo Windows. Por esa razón, los nombres de clases en los ejemplos C++
comienzan con 'C', mientras que los ejemplos correspondientes de C# no. Asimismo, la notación húngara se
utiliza frecuentemente para los nombres de variables únicamente en los ejemplos C++.

Terminología

Ud. deberá tener en cuenta que en algunas construcciones del lenguaje se utiliza diferente terminología en C#
con relación a C++. Las variables miembros de C++ se conocen en C# como campos, mientras que las
funciones miembros de C++ se conocen como métodos en C#. En C#, el término función tiene un significado
más general, y se refiere a cualquier miembro de una clase que contiene código. Ello significa que el término
función cubre los métodos, propiedades, constructores, destructores, indizadores y sobrecargas de operadores.
En C++, los términos 'función' y 'método' se utilizan en la conversación de forma intercambiable, aunque
estrictamente hablando un método de C++ es una función miembro virtual.

Si le surge alguna confusión al respecto, la siguiente tabla deberá serle útil:



Significado
Variable que es miembro de una clase
Cualquier miembro de una clase que
contiene código
Cualquier miembro de una clase que
contiene código y que puede ser

1118

Término C++
Variable miembro
Función (o función
miembro)
Función (o función

Término C#
Campo
Función

Método

C# para programadores C++

llamado por su nombre con la sintaxis
HacerAlgo(/*parámetros*/).
Función virtual que se define como
miembro de una clase

miembro)

Método

Método virtual


Ud. también debe tener en cuenta las diferencias entre otro par de términos:


Término C++
Instrucción compuesta
valor-l1

Término C#
Instrucción de bloque
expresión-variable


En este apéndice utilizaremos siempre que sea posible la terminología asociada al lenguaje sobre el que
estemos hablando.


Una comparación entre C# y C++

En esta sección resumiremos brevemente las diferencias y similitudes generales entre ambos lenguajes.

Diferencias

Las principales áreas en las que difieren C# y C++ son las siguientes:


Destino de la compilación – El código C++ normalmente se compila a lenguaje ensamblador. Por
el contrario, C# se compila a un lenguaje intermedio (IL), que presenta alguna similitud con los
códigos de bytes de Java. El lenguaje intermedio es convertido a continuación en código de máquina
ejecutable mediante un proceso de compilación JIT. El código intermedio que se emite es
almacenado en un fichero o conjunto de ficheros conocido como unidad de ensamblaje
(assembly). Una unidad de ensamblaje conforma esencialmente la unidad en la que se empaqueta el
IL, correspondiendo a una DLL o fichero ejecutable que sería creado por un compilador de C++.
Gestión de memoria – C# ha sido diseñado para liberar al programador de las tareas relacionadas

con la gestión de la memoria. Ello significa que en C# no es necesario liberar explícitamente la
memoria que ha sido solicitada dinámicamente, como se haría en C++. En lugar de eso, un
recolector de basura recupera periódicamente la memoria que deja de ser necesaria. Con vistas a
facilitar este proceso, C# impone ciertas restricciones a cómo Ud. puede utilizar las variables que se
almacenan en memoria dinámica, y es más estricto en la verificación de los tipos que C++.



Punteros – Los punteros pueden utilizarse en C# del mismo modo que en C++, pero únicamente
dentro de bloques de código que hayan sido específicamente marcados para ello. La mayor parte del
tiempo C# se apoya en referencias al estilo de Java o VB para las instancias de clases, y el lenguaje
ha sido diseñado de forma tal que los punteros no son necesarios con tanta frecuencia como lo son
en C++.
Sobrecarga de operadores – C# no permite la sobrecarga explícita de tantos operadores como C++.
Esto se debe fundamentalmente a que el compilador de C# automatiza esta tarea hasta cierto punto
utilizando cualquier sobrecarga definida para operadores elementales (como =) para resolver
automáticamente la sobrecarga de operadores combinados (+=).



1 La 'l' viene de 'left' (izquierda). Un valor-l (l-value en inglés) es una expresión que produce una
referencia a memoria, y por tanto puede situarse en el lado izquierdo de una instrucción de
asignación (N. del T.)

1119





Apéndice A



Librerías – Tanto C++ como C# se apoyan en la existencia de una librería bastante amplia. En el
caso de ANSI C++, estamos hablando de la librería estándar. C# se apoya en un conjunto de clases
conocidas como las clases base .NET. Las clases base .NET están basadas en la herencia simple,
mientras que la librería estándar de C++ se apoya en una mezcla de herencia y plantillas. Además,
mientras que ANSI C++ mantiene la librería separada del lenguaje en sí, la interdependencia en C#
es mucho mayor, y la implementación de muchas palabras reservadas de C# depende directamente
de clases base particulares.
Plataformas de destino – C# ha sido diseñado explícitamente para satisfacer las necesidades de
programación en entornos dotados de interfaz gráfica de usuario (GUI) – no necesariamente
Windows, aunque el lenguaje está disponible actualmente sólo para Windows, así como para el
desarrollo de servicios de segundo plano, tales como servicios web. Esto realmente no afecta al
lenguaje en sí, pero se refleja en el diseño de la librería de clases. Por el contrario, C++ fue
diseñado para un uso más general en los días cuando las interfaces de usuario basadas en línea de
comandos eran predominantes. Ni C++ ni la librería estándar incluyen ningún tipo de soporte para
elementos de interfaz gráfica. En Windows, los programadores de C++ han tenido que apoyarse
directa o indirectamente en el API de Windows para obtener ese soporte.

Directivas para el preprocesador – C# incluye algunas directivas para el prepro
  • Links de descarga
http://lwp-l.com/pdf11101

Comentarios de: C# para programadores C++ (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad