2009-12-19 24 views
12

Tôi muốn tìm hiểu C# (trên Linux, vì vậy sử dụng Mono), và tôi đang tìm một số hướng dẫn để khai thác kiến ​​thức mà tôi đã có các ngôn ngữ khác; đáng chú ý nhất là C, C++ và java (nhưng cũng là python, Haskell, lisp, và có lẽ một vài người khác). Cho đến nay tất cả những gì tôi tìm thấy trên web được kết hợp các văn bản giới thiệu và lập trình C#, nhưng tất cả đều thất bại vì tôi cảm thấy buồn chán và không thể gắn bó với kế hoạch học tập của mình.Làm cách nào để tìm hiểu C# nhanh (er), đã biết C, Java, C++, v.v.?

Có ai có đề xuất về nội dung hay để đọc không?

Mở rộng câu hỏi này, làm cách nào để bạn học một ngôn ngữ mới tương tự với ngôn ngữ bạn đã biết theo cách nắm bắt kiến ​​thức bạn đã có? Mọi người có viết những loại hướng dẫn này không? Bạn chỉ cần lấy một cheat sheet? Bạn có một loạt các bài tập mà bạn tự ép buộc không?

Chỉnh sửa: Tôi không biết bất kỳ sự phát triển nào khác của Microsoft ... thingies. Tôi đã viết một chút VB khoảng 8 năm trước, nhưng tôi không nhớ bất kỳ điều gì trong số đó. Tôi không có kinh nghiệm ASP, không có kinh nghiệm với bất cứ điều gì khác. NET, không có ngôn ngữ MS hoặc thư viện. Mặc dù tôi đã phát triển trên Windows, tôi đã không thực hiện phát triển Windows-D vốn. Vui lòng xem xét điều này khi đưa ra đề xuất.

+17

Để học bất kỳ ngôn ngữ nào, tôi có cách tiếp cận không thể đọc được - tôi đã đọc một cuốn sách. –

+0

Tôi nghĩ OP yêu cầu một cuốn sách hay cho những người đã biết các ngôn ngữ khác (tức là cái gì đó giả định kiến ​​thức về OOP và những thứ tương tự, và đi thẳng vào thịt). – Gorpik

+1

Tôi đang ở trong một chiếc thuyền tương tự (10 năm lập trình nhưng khá mới với C#) vì vậy tôi rất thích đọc qua các câu trả lời ở đây ... Tôi thấy cú pháp rất dễ nhận (tương tự như Java hoặc AS3) và nó dễ dàng để làm cho nó bắt đầu làm việc nhưng tôi thấy khó hơn nhiều để tìm tài liệu tham khảo "thực hành tốt nhất" ... – vitch

Trả lời

4
+0

Được chấp nhận, vì đó là câu trả lời duy nhất giải quyết vấn đề "Trên Linux, sử dụng Mono" một chút về câu hỏi của tôi. (Có lẽ tôi nên nhấn mạnh rằng một số chi tiết?) Và đề nghị (bởi Sergey) để thực hiện "A Real Project (tm)" tất nhiên là tốt nhất, và một mà tôi biết để làm, nhưng nó không cho tôi biết những điều tôi muốn biết nhưng * không * biết (chưa). –

+0

Vì bạn đã làm việc trong Java, hãy tìm kiếm trên web các cổng .NET của các khung công tác Java. Nếu bạn đang làm việc với phần mềm doanh nghiệp, bạn cần phải nắm vững các kỹ thuật truy cập cơ sở dữ liệu. Một số công cụ lập bản đồ O/R như NHibernate sẽ có ích.Đối với các loại phần mềm khác như đồ họa, có những thư viện rất tinh vi như MOGRE, v.v. Nếu bạn quyết định làm việc trong AOP, bạn có thể xem Spring.net. – anonymous

+1

Không "C# trong chiều sâu"? : D – moogs

4

Đọc highest voted C# related questions về Ngăn xếp ngăn xếp.

+6

Mặc dù điều này chắc chắn hữu ích và thậm chí là thú vị, tôi thực sự không nghĩ đó là một cách hay để học một ngôn ngữ lập trình. –

+1

@Koper: Những người khác nhau học khác nhau. Các loại OP ngụ ý rằng ông đã có thời gian khó khăn theo các tuyến đường truyền thống. Đọc về "tất cả những thứ thú vị và bất ngờ" trên một chủ đề thay vì là một cách học tập khả thi ... (Tôi không biết về bạn, nhưng loại công cụ này là đúng con hẻm của tôi). – Spoike

10

Nếu bạn đã biết các ngôn ngữ ở trên, tôi khuyên bạn nên biết ngôn ngữ đã có và tìm hiểu về các công cụ thú vị hơn .NET, chẳng hạn như CLR via C#, mà tôi có thể giới thiệu rất cao (nhưng không chắc chắn như thế nào nhiều điều áp dụng cho Mono). Những khoảng trống trong kiến ​​thức ngôn ngữ của bạn sẽ tự điền vào.

2

Như bạn biết C++ bạn đã quen thuộc với cú pháp C#. Nhưng không đủ, bạn cần làm quen với .NET architecture.

làm thế nào để bạn học một ngôn ngữ mới đó là giống với ngôn ngữ bạn đã biết trong một cách mà lẽ vào những kiến ​​thức bạn đã có? Mọi người có viết loại hướng dẫn này không? Bạn chỉ cần lấy một cheat sheet?

Tất nhiên bạn học ngôn ngữ mới nếu bạn đã biết bất kỳ ngôn ngữ nào bằng cách hiểu sự khác biệt giữa hai ngôn ngữ đó. Nhưng C# được thiết kế như một ngôn ngữ hoàn toàn khác và chỉ chia sẻ một phần cú pháp của C++.

Bạn có một loạt các bài tập bạn bắt buộc phải không? Bạn có một loạt các bài tập mà bạn tự ép buộc không?

Nếu bạn biết kiến ​​trúc .NET, mọi thứ sẽ bắt đầu giảm bớt cho bạn, sau đó bạn không cần viết chương trình trong C#. Bạn thậm chí có thể viết nó bằng nhiều ngôn ngữ được hỗ trợ bởi .NET, C# sẽ dễ dàng cho bạn vì nó chia sẻ cú pháp giống như cú pháp của C++.

Cũng có một cái nhìn tại

4

tôi đề nghị bạn đọc C# 3.0 in a nuthshell. Nó đặc biệt nhằm vào các lập trình viên của các ngôn ngữ khác. Here là một bài đánh giá của Jon Skeet

+3

Tại sao "Đây" là văn bản liên kết cho liên kết đánh giá? Sẽ không "xem xét bởi Jon Skeet" là một văn bản liên kết tốt hơn nhiều? ;-) –

0

Đọc một số khái niệm cơ bản từ sách/trang web và thực hiện - đó là cách tốt nhất và nhanh nhất để học (và thường bạn sẽ không cảm thấy buồn chán/c một số kiến ​​thức vẫn còn thiếu ... -> google)

0

Nếu bạn có kinh nghiệm trong Java this C# và trang Java đi qua tất cả các điểm có khả năng sẽ dẫn bạn lên bằng cách giả định rằng mọi thứ hoạt động trong một đường.

0

Tôi muốn giới thiệu cho bạn các cuốn sách lập trình C# chuyên nghiệp vì chúng chủ yếu tập trung vào quan điểm lập trình viên. Chẳng hạn như Professional C# 2008 (ISBN: 978-0-470-19137-8. Hướng dẫn chuyên nghiệp của Wrox.)

3
  1. Chọn một dự án thực sự. Sau đó, bạn sẽ phải đối mặt với vấn đề thực sự.
  2. Tìm người đã biết rõ về C#. Anh ấy có thể cung cấp cho bạn lời khuyên có giá trị.
  3. Nhận sách hay như C# 3.0 Complete reference by Herbert Shildt. MSDN là tốt, nhưng đôi khi nó là dễ dàng hơn để đọc một cuốn sách tốt hơn so với tài liệu hướng dẫn.
3

Tôi đồng ý với nhận xét của cyborg rằng C# rất gần với Java. Thật gần, trên thực tế, điều đó có thể khiến bạn hơi nghi ngờ về những gì đang diễn ra ở Microsoft sau cánh cửa đóng kín - nhưng tôi đang ...

Đó là tất cả các tùy chọn vì vậy đây là một vài điều trên đầu tôi:

1) Sử dụng Java vs C# hướng dẫn như cyborg được đề nghị, nhưng nhận ra rằng đối với hầu hết các phần thường chỉ bao gồm những thay đổi cú pháp (liên kết ông đăng là khá darn tốt). Vẫn còn rất nhiều thay đổi để xâm nhập nếu bạn đang phát triển ứng dụng dành cho máy tính để bàn hoặc ứng dụng web. Ví dụ, tôi tìm thấy ASP .NET là một sự khác biệt rất lớn từ JSP. Điểm mấu chốt là kinh nghiệm Java của bạn sẽ chỉ đưa bạn đến nay, nhưng để có thể tạo ra các ứng dụng doanh nghiệp, bạn sẽ có rất nhiều việc học mới để làm.

2) Đi sâu vào. Tôi nhớ viết trên bảng tin khác cho người có câu hỏi tương tự ... chọn một ứng dụng mà bạn muốn viết cho vui (trò chơi trên bàn, trình quản lý liên hệ, danh sách việc cần làm với đồng hồ báo thức) . Hãy chắc chắn rằng bất kỳ ứng dụng bạn viết sử dụng các nguyên tắc cơ bản cơ bản mà bạn cần cho thế giới thực (truy cập dữ liệu, mạng, vv). Viết ứng dụng và sau đó vứt nó đi hoặc thực hiện một đánh giá và tái cấu trúc chính. Làm điều này 2-3 lần so với việc cải tiến mỗi lần và bạn sẽ có hình dạng khá tốt.

3) Nhận sách hay. Điều này rõ ràng có thể được kết hợp với 1 và/hoặc 2. Hãy chắc chắn rằng cuốn sách tập trung vào nguyên tắc cơ bản đầu tiên (OO, cú pháp, thực hành tốt nhất). Shameless cắm trong 1 ... 2 ... 3 ...hãy xem http://asteio.com để tìm tài nguyên trực tuyến nếu bạn muốn đi tuyến đường eLearning (mặc dù trang web của tôi đắt hơn một chút so với hầu hết).

+0

+1 cho "đi sâu vào". Chắc chắn là cách tốt nhất để học bất kỳ ngôn ngữ lập trình nào, imho. –

0

Đối với ngôn ngữ, không khó. Điều khó là học cách sử dụng khung công tác khổng lồ.

1

C# là một cái gì đó của một "thế hệ tiếp theo" Java, và đội ngũ Java cũ của Microsoft đã làm rất nhiều công việc phát triển về ngôn ngữ (cộng với Anders Heilberg, của Borland Pascal và Delphi nổi tiếng).

Có hai cải tiến quan trọng trong C# trên Java.

  • C# generics có triển khai tốt hơn, với cải tiến lớn là trong C#, generics giữ lại thông tin đầy đủ loại tại thời gian chạy. Điều này sẽ cải thiện hơn nữa trong C# 4.0, với hiệp phương sai và contravariance.
  • LINQ (Truy vấn không được phân loại theo ngôn ngữ) cung cấp cho bạn ngôn ngữ truy vấn giống SQL được tích hợp hoàn toàn vào C#. Bạn có thể truy vấn các bộ sưu tập đối tượng, XML, cơ sở dữ liệu, dịch vụ web hoặc bất kỳ thứ gì khác. Khuôn khổ .NET bao gồm các giao diện để phát triển các nhà cung cấp dữ liệu LINQ của riêng bạn, do đó, về cơ bản không có giới hạn về những gì LINQ có thể truy vấn.

Vì vậy, có lẽ cách tốt nhất để tiếp cận C# là suy nghĩ đầu tiên về Java và xem xét các cải tiến. Jon Skeet C# in Depth có thể là điểm khởi đầu tốt nhất; nó sẽ bao gồm tất cả các loại thịt thật của C# khác với các ngôn ngữ khác.

0

Học C# không chỉ là tìm hiểu về từ khóa và cú pháp của nó. Nó cũng (và có lẽ, quan trọng nhất) học về thành ngữ, môi trường thời gian chạy, triết lý tổng thể, thư viện và các công cụ liên quan khác.

Trên sách, tôi sẽ đề xuất C# in Depth by Jon Skeet. Nó không phải là Mono theo định hướng, nhưng chắc chắn nó sẽ dạy bạn phần bên trong của C#.

Các vấn đề liên quan