2009-12-19 10 views
12

Quiero aprender C# (en Linux, entonces usando Mono), y estoy buscando alguna guía que aproveche el conocimiento que ya tengo de otros idiomas; más notablemente C, C++ y Java (pero también Python, Haskell, lisp y tal vez algunos otros).¿Cómo aprendo C# rápido (er), ya conozco C, Java, C++, etc.?

Hasta ahora, todo lo que he encontrado en la web son textos combinados de introducción a la programación e introducción a C#, pero todos fallan porque me aburro y no puedo ceñirme a mi plan de aprendizaje.

¿Alguien tiene alguna sugerencia de algo bueno para leer?

Ampliando esta pregunta, ¿cómo aprende un nuevo idioma que es similar a los idiomas que ya conoce de una manera que aprovecha el conocimiento que ya tiene? ¿Las personas escriben este tipo de tutoriales? ¿Acabas de agarrar una hoja de trucos? ¿Tienes una serie de ejercicios por los que te obligas a pasar?

Edit: No conozco ningún otro desarrollo de Microsoft ... thingies. Escribí un poco de VB hace unos ocho años, pero no recuerdo nada de eso. No tengo experiencia en ASP, no tengo experiencia en otra cosa .NET, no tengo lenguajes de MS o bibliotecas. A pesar de que he desarrollado en Windows, no he hecho desarrollo de Windows de capital-D. Por favor, considere esto al hacer una sugerencia.

+17

Para aprender cualquier idioma, tengo un enfoque infalible: leo un libro. –

+0

Creo que OP está pidiendo un buen libro para las personas que ya conocen otros idiomas (es decir, algo que asume conocimiento de OOP y similares, y va directo a la carne). – Gorpik

+1

Estoy en un bote similar (más de 10 años de programación pero bastante nuevo para C#) así que estoy muy interesado en leer las respuestas aquí ... Encontré que la sintaxis es muy fácil de aprender (similar a Java o AS3) y es fácil hacer que comience a hacer cosas, pero me resultó mucho más difícil encontrar referencias de "mejores prácticas" ... – vitch

Respuesta

4
+0

Aceptado, porque es la única respuesta que aborda el bit "En Linux, usando Mono" de mi pregunta. (Tal vez debería haber hecho hincapié en que algo más?) Y la sugerencia (por parte de Sergey) de llevar a cabo "Un proyecto real (tm)" es, por supuesto, una buena, y una que sé hacer, pero no lo hace dime las cosas que quiero saber pero * no * sé (aún). –

+0

Dado que ha trabajado en Java, busque en la web puertos .NET de frameworks Java. Si va a trabajar con Business Software, necesita dominar las técnicas de acceso a la base de datos. Algunas herramientas de mapeo O/R como NHibernate serán útiles.Para otros tipos de software como gráficos, hay bibliotecas altamente sofisticadas como MOGRE, etc. Si ha decidido trabajar en AOP, puede echar un vistazo a Spring.net. – anonymous

+1

Sin "C# en profundidad"? : D – moogs

4

Lea highest voted C# related questions en Stack Overflow.

+6

Si bien esto es ciertamente útil e incluso divertido, realmente no creo que sea una buena forma de aprender un lenguaje de programación. –

+1

@Koper: Diferentes personas aprenden de manera diferente. El tipo de OP implicaba que le costaba mucho seguir las rutas tradicionales. En cambio, leer sobre "todas las cosas geniales e inesperadas" sobre un tema es una forma viable de aprender ... (No sé ustedes, pero este tipo de cosas es lo mío). – Spoike

10

Si ya conoce los idiomas anteriores, le sugiero que suponga que ya conoce el idioma y profundice en las cosas más interesantes de .NET, como CLR via C#, que puedo recomendar muy bien (pero no estoy seguro cómo mucho se aplica a Mono, sin embargo). Las lagunas en el conocimiento de su idioma se llenarán.

2

Como ya sabe, C++ ya está familiarizado con la sintaxis de C#. Pero no es suficiente, necesita familiarizarse con .NET architecture.

¿Cómo se aprende un nuevo lenguaje que es similar a lenguas que ya conoce de una manera que aprovecha los conocimientos que ya tiene? ¿Las personas escriben este tipo de tutoriales ? ¿Acabas de agarrar una hoja de trucos?

Por supuesto que aprende un nuevo idioma si ya conoce cualquier idioma entendiendo las diferencias entre los dos. Pero C# está diseñado como un lenguaje completamente diferente y comparte solo una parte de la sintaxis de C++.

¿Tiene una serie de ejercicios que se esfuerzan? ¿Tienes una serie de ejercicios por los que te obligas a pasar?

Si conoce la arquitectura .NET, las cosas comenzarán a relajarse, después de eso no necesita escribir el programa en C#. Incluso puede escribirlo en muchos idiomas admitidos por .NET, C# será fácil para usted, ya que comparte la misma sintaxis que la de C++.

también echar un vistazo a

4

le sugiero que lea C# 3.0 in a nuthshell. Está especialmente dirigido a programadores de otros idiomas. Here es una revisión de Jon Skeet

+3

¿Por qué "Aquí" es el texto del enlace para el enlace de revisión? ¿No sería "review by Jon Skeet" un texto de enlace mucho mejor? ;-) –

0

Lea algunos conceptos básicos de un libro/sitio web y vaya a la implementación, que es la mejor y más rápida forma de aprender (y generalmente no se aburrirá en el camino, tal vez simplemente colgado b/c aún falta algo de conocimiento ... -> google)

0

Si tienes experiencia en Java this C# vs Java la página repasa todos los puntos que probablemente te hagan tropezar suponiendo que las cosas funcionan en un cierto camino.

0

Yo recomendaría los libros de programación profesionales de C#, ya que se centran principalmente en el punto de vista del programador. Tal como Professional C# 2008 (ISBN: 978-0-470-19137-8. Wrox Guías Profesionales.)

3
  1. Recoger un proyecto real. Entonces enfrentarás problemas reales.
  2. Encuentra persona que ya conozca bien C#. Él puede darte consejos valiosos.
  3. Consigue un buen libro como C# 3.0 Complete reference by Herbert Shildt. MSDN es bueno, pero a veces es más fácil leer un buen libro que la documentación.
3

Estoy de acuerdo con el comentario de cyborg de que C# está muy cerca de Java. Tan cerca, de hecho, que puede hacerte sospechar un poco de lo que está sucediendo en Microsoft a puertas cerradas, pero me estoy desviando ...

Todo se trata de opciones, así que aquí están algunas de las que tengo:

1) Use una guía Java vs C# como cyborg recomendada, pero tenga en cuenta que la mayoría de las veces cubren solo cambios de sintaxis (el enlace que publicó es bastante bueno). Todavía hay un montón de cambios para entrar si está desarrollando aplicaciones de escritorio o aplicaciones web. Por ejemplo, encontré que ASP .NET es una GRAN diferencia de JSP. La conclusión es que su experiencia en Java solo lo llevará hasta el momento, pero para poder producir aplicaciones empresariales tendrá mucho nuevo aprendizaje por hacer.

2) Sumérjase. Recuerdo escribir esto en otro tablero de mensajes para alguien con una pregunta similar ... elija una aplicación que quiera escribir para divertirse (juego de mesa, administrador de contactos, lista de tareas pendientes con alarma) . Asegúrese de que la aplicación que escriba utilice los fundamentos básicos que necesita para el mundo real (acceso a datos, red, etc.). Escriba la aplicación y luego tírela o haga una revisión mayor y refactorícese. Haga esto 2-3 veces más haciendo mejoras cada vez y estará en muy buena forma.

3) Consigue un buen libro. Obviamente, esto se puede combinar con 1 y/o 2. Asegúrese de que el libro se centre primero en los fundamentos (OO, sintaxis, mejores prácticas). Shameless plug in 1 ... 2 ... 3 ...echa un vistazo a http://asteio.com para un recurso en línea si desea ir a la ruta de eLearning (aunque mi sitio es un poco más caro que la mayoría).

+0

+1 para "bucear". Definitivamente la mejor manera de aprender cualquier lenguaje de programación, imho. –

0

Para el idioma en sí, no es difícil. Lo que es difícil es aprender a usar el enorme marco.

1

C# es algo así como una "nueva generación" de Java, y el antiguo equipo de Java de Microsoft hizo gran parte del trabajo de desarrollo en el lenguaje (además de Anders Heilberg, de Borland Pascal y Delphi).

Hay dos mejoras esenciales en C# sobre Java.

  • C# generics tienen una mejor implementación, con la gran mejora de que en C#, los genéricos retienen información de tipo completo en tiempo de ejecución. Esto mejorará aún más en C# 4.0, con covarianza y contravarianza.
  • LINQ (Language Integrated Query) le ofrece un lenguaje de consulta similar a SQL que está completamente integrado en C#. Puede consultar colecciones de objetos, XML, bases de datos, servicios web o cualquier otra cosa. .NET Framework incluye interfaces para desarrollar sus propios proveedores de datos LINQ, por lo que esencialmente no existen límites sobre lo que LINQ puede consultar.

Probablemente la mejor manera de acercarse a C# es pensar primero en términos de Java, y ver las mejoras. El C# in Depth de Jon Skeet podría ser el mejor punto de partida; cubrirá toda la carne real de C# que difiere de otros idiomas.

0

Learning C# no solo está aprendiendo acerca de sus palabras clave y su sintaxis. También es (y tal vez, lo más importante) aprender sobre sus expresiones idiomáticas, entorno de tiempo de ejecución, filosofía general, bibliotecas y otras cosas asociadas.

En libros, sugeriría C# in Depth by Jon Skeet. No está orientado a Mono, pero definitivamente te enseñará el interior de C#.

Cuestiones relacionadas