visual sharp programacion net lenguajes lenguaje historia ejemplos caracteristicas c# c++ windows linux

sharp - Programador de Linux/C++ para el programador C#/ Windows



programacion.net ejemplos (7)

He estado codificando exclusivamente desde hace un tiempo en Linux con C ++. En mi trabajo actual, es una tienda de Windows con C # como idioma principal. Me he vuelto a entrenar para usar Visual Studio en lugar de emacs (la razón principal es el depurador integrado en VC, el modo emacs en VC me ayuda), configurar Cygwin (ya que no puedo vivir sin un shell) y recuperar las cuerdas del lenguaje administrado. ¿Qué herramientas, libros, sitio web (además de MSDN) o trampas crees que debería verificar para convertirme en un codificador de Windows / C # más eficiente?


¿No debería ser la base del CLR? ¿Y no debería ser irrelevante el uso del lenguaje .NET? Si reviso los documentos de .NET, puedo decidir si me gustaría ver el material en VB.Net, C # o C ++. Entonces, si conoce C ++, ¿por qué no debería usar "C ++ administrado"?

Saludos Friedrich



Las primeras cosas que se deben tener en cuenta al cambiar de C ++ a C # son el hecho de que en su mayoría comparten parte de la sintaxis de la superficie, pero la diferencia de los paradigmas de programación se agranda a medida que se profundiza en .Net.

Conozca los paradigmas de programación de C # core antes de comenzar a programar, de lo contrario podría caer en la trampa de escribir programas C ++ en C #, que no es la mejor idea por mucho tiempo. Las cosas más importantes para acostumbrarse son:

  • Administración automática de memoria y recolección de basura incluyendo el patrón de disposición. Aprenda los conceptos básicos y las trampas.
  • ¿Qué son las clases, las interfaces, las estructuras y las primitivas en .Net, y cómo se comportan en comparación con C ++?
  • Eventos, delegados, propiedades, expresiones lambda, todos los cuales son conceptos algo nuevos cuando provienen de C ++.
  • .Net genéricos y diferencias entre plantillas.
  • cadenas, matrices, atributos personalizados, reflexión, excepciones y principios básicos de subprocesos en .Net, todos estos se utilizan mucho en todas partes en .Net, y debe aprender sus complejidades para usarlos de manera efectiva.
  • Programación de GUI en Winforms y ASP.Net (y quizás después de allí WPF), componentes, controtrols, databinding. El modelo .Net GUI.

Primero comience con un libro .Net genérico que le presenta todos estos conceptos. Recomiendo un libro sobre tutoriales y artículos de lectura antes que nada para que puedas tener una imagen completa de .Net al final. Los artículos en Internet podrían no lograr esto. El mejor libro .Net genérico que he leído:

Professional C #, 3ª edición. por Simon Robinson, Christian Nagel, Karli Watson, Jay Glynn, Morgan Skinner, Bill Evjen

Y en segundo lugar, dado que eres de origen C ++ y estás acostumbrado a trabajar cerca del metal y pensar de forma similar a cómo funciona el hardware (administración de memoria sin formato (punteros, asignaciones de memoria, etc.) solo puedo recomendar uno libro que desmitificará realmente lo que es .Net y lo que hace:

CLR Via C # por Jeffrey Richter

CLR a través de C #, segunda edición ISBN 9780735621633 http://www.microsoft.com/MSPress/books/imgt/6522.gif

No puedo hacer suficiente hincapié en lo bueno que es este libro para cada desarrollador de .Net, especialmente cuando proviene de C ++ y al mismo tiempo es uno de los mejores libros .Net que he leído. El libro es un puro placer de leer y cubre temas de:

  • Modelo de ejecución .Net (de MSIL a código nativo)
  • Administración de memoria (cómo el tiempo de ejecución .net y el recolector de basura administran la memoria, el diseño del montón, las generaciones de memoria, la finalización, el montón de objetos grandes)
  • Diseñando tipos
  • Ensamblaje de carga, reflexión, dominios de aplicación
  • y muchos más ...

Este es mi mejor consejo que podría darle a cualquiera en su camino para convertirse en un desarrollador experto de C # en el menor tiempo posible.


Lea sobre recolección de basura en .Net . Las personas que provienen de C ++ están acostumbradas a la administración y asignación de memoria explícita. En C #, la gestión explícita de la memoria es virtualmente inexistente.

Otro tema que debe verificar es la diferencia entre los genéricos de C # y las plantillas de C ++. Aunque no tengo un buen enlace para eso.

Dependiendo del producto en el que esté trabajando, es posible que deba recurrir a las funciones de API de Win32 desde C #. Esto se hace a través de P / Invoke, por lo que es posible que también desee leer un poco al respecto. Y si realmente tiene que usarlo, http://pinvoke.net es una colección muy útil de declaraciones de C # para la mayoría de las API de Win32.

También es posible que desee aprender al menos los conceptos básicos de COM, ya que con mucha frecuencia las aplicaciones C # /. Net eligen / necesitan reutilizar componentes de proveedores externos, que a menudo se implementan como componentes COM. COM es un tema complejo sin embargo. Mis libros favoritos sobre COM y Essential COM de Don Box y Professional DCOM de Roger rimes. Lo tomaría prestado de una biblioteca, ya que todo lo que necesita leer son los primeros capítulos (a menos que quiera profundizar).

Se necesita una comprensión básica de las ventanas, los mensajes y las colas de mensajes, si va a escribir aplicaciones cliente. Para ello utilizará Winforms de WPF / XAML, y ambas tecnologías hacen un buen trabajo al aislar los detalles; Sin embargo, para poder escribir un buen código necesitas saber qué está detrás de escena. No estoy seguro de qué buen libro sería para eso, pero MSDN tiene mucha información.



Mis antecedentes fueron predominantemente C / Unix y Python con algunos java y polvosos 2000-vintage VB6 cuando utilicé C # por primera vez. Estaba familiarizado con los tiempos de ejecución administrados del trabajo que había hecho con Java y las API de .Net tienen un aspecto similar a las anteriores API de MS.

Encontré el Pro C # de Troelsen y la plataforma .Net 2.0 como un recurso C # /. Net realmente bueno. Hay ediciones más recientes ahora.


Obtenga una copia de Resharper . Probablemente sea la mejor herramienta de productividad para la codificación directa.