2009-11-19 36 views
10

Tôi đã đọc The Pragmatic Programmer đêm qua và nó khuyên bạn nên học một loạt các ngôn ngữ khi bạn trải qua sự nghiệp của mình - ngay cả khi bạn sẽ không bao giờ sử dụng chúng. Tôi luôn nghĩ đây sẽ là một ý tưởng hay, nhưng cuốn sách đã cho tôi đủ động lực để suy nghĩ về nó một cách nghiêm túc.Ngôn ngữ lập trình tốt để học cách mở rộng tâm trí của các nhà phát triển C# là gì?

Nó cũng đề cập đến (các từ có hiệu lực) "tìm hiểu thiết kế hướng đối tượng và bạn sẽ mã hóa các chương trình C thuần túy khác nhau".

Tôi có thể đi và (lại) tìm hiểu Java, nhưng có vẻ như đây là một lựa chọn dễ dàng cho nó là một ngôn ngữ tuân theo rất nhiều nguyên tắc giống như C#. Tôi có lẽ sẽ vẫn học Java ở một thời điểm nào đó, nhưng tôi khá quan tâm trước hết về ngôn ngữ nào sẽ khác biệt hoàn toàn trong kiểu suy nghĩ của họ rằng tôi sẽ học một quan điểm khác - hoặc chỉ là một cách suy nghĩ hoàn toàn khác về cách viết mã chương trình.

Lập trình chức năng có lẽ? Mọi đề xuất đều được chào đón, nhưng hãy thử và đưa ra một lý do ngắn gọn về lý do tại sao chúng có thể thú vị và "mới" từ góc nhìn của người dùng C#.

+1

Xem thêm http://stackoverflow.com/questions/362226/whats-your-next-programming-language-and-why –

+0

XSLT chắc chắn. :) –

Trả lời

19

chức năng mô - Đề án, Haskell, Erlang, F #

Scripting - Perl, Python, Ruby

Ngoài ra một trong những APL biến thể như J, K hoặc Q

Dare Tôi đề cập đến C? Rất nhiều người học lập trình ngày nay có rất ít tiếp xúc với kim loại, và C giúp bạn nhìn thấy ánh sáng.

+2

Ồ! Vì vậy, * đó là lý do tại sao F # trông rất kỳ lạ đối với tôi. Đã không nhận ra đó là một trong số họ các loại chức năng;) – mpen

+0

Đừng quên lua! – RCIX

+0

Lưu ý rằng F # là một ngôn ngữ đa mô hình. Tôi muốn giới thiệu một số Haskell cơ bản đầu tiên trước khi học F # - hoặc người nào khác bạn có thể kết thúc học cú pháp nhưng không thực sự học cách suy nghĩ theo các thuật ngữ hàm. – FinnNk

5

Cố gắng tìm hiểu một mô hình khác.

Tôi muốn đề xuất Lisp cho lập trình hàm vì lý do lịch sử hoặc Erlang cho ngôn ngữ "thương mại" hơn và Prolog cho lập trình khai báo (a.k.a logic).

Nó sẽ cung cấp cho bạn một cách khác để xem mọi thứ. Có rất nhiều lập trình viên tiếp tục bị ngạc nhiên bởi khả năng lập trình hàm (khả năng chứng minh một hàm đúng, dễ dàng tích hợp song song không có tác dụng phụ, vv) cũng như khả năng lập trình khai báo cho một công việc nào đó mà bây giờ rất phù hợp cho lập trình bắt buộc (nhận dạng patter chẳng hạn, hoặc các hệ thống dựa trên quy tắc)

15

Tôi khuyên bạn nên học F #. Bạn đã quen thuộc với .NET Framework, do đó bạn không phải đối phó với nó. Bạn có thể tập trung vào ngôn ngữ và tìm hiểu các ý tưởng lập trình chức năng.

Rất có thể, nếu bạn chuyển về C#, bạn sẽ thấy mình làm nhiều thứ theo phong cách chức năng và sẽ hiệu quả hơn trong ngôn ngữ đó.

6

F # là một lựa chọn tốt. Nhưng ngoài ra, các ngôn ngữ động - giống như Javascript. Ngoài ra, C-centric ít những thứ như Lisp hoặc XSL.

Thực sự tốt với họ.

3

Hãy thử C. Bạn nên học cách xử lý các con trỏ và quản lý bộ nhớ thủ công, đặc biệt là khi đến từ một thế giới "được quản lý bộ nhớ" như .NET hoặc Java. Điều này sẽ cung cấp cho bạn một cái nhìn tuyệt vời về "cách mọi thứ hoạt động" bên trong một chương trình phần mềm.

Hoặc bạn có thể làm như tôi: Tôi là lập trình viên C# nhưng trong thời gian rảnh, tôi viết mã trong trình biên dịch Z80. Dù sao điều này có lẽ hơi quá quái dị.:-)

3

Tôi chưa thử, nhưng F # có vẻ là một ngôn ngữ tốt để tìm hiểu. Nó là chức năng nhưng cho phép phong cách bắt buộc quá. Nó cũng tận dụng khung công tác .NET và các thư viện, vì vậy rất nhiều kiến ​​thức hiện có của bạn có thể được sử dụng lại. Có lẽ tôi nên thử nó sớm ...

7

Lập trình chức năng, chắc chắn. Một mô hình mới cho phép bạn thấy kiến ​​thức và kinh nghiệm hiện tại của mình trong một ánh sáng mới, cái gì đó mà một ngôn ngữ mệnh lệnh khác không bao giờ có thể làm đến mức độ như vậy.

Nếu bạn muốn dính vào .NET, hãy thử F #. Đối với một cái gì đó hoàn toàn mới, tôi khuyên bạn nên Haskell; có một lượng lớn thông tin của người mới bắt đầu và cộng đồng thật tuyệt vời và vô cùng hữu ích.

0

C# /. Net hoặc Java không quan trọng lắm, các khái niệm cơ bản là giống hệt nhau, ngay cả khi có một số tính năng (chỉ một số phép thuật biên dịch, một số sâu hơn như generics) khác nhau.

Làm quen với lập trình hàm, ngôn ngữ chuyên dụng như XSLT, XQuery, T-SQL, PL/SQL, OCL, v.v. để đối mặt với nhiều khái niệm và cách tiếp cận khác nhau. Ví dụ, các phương ngữ SQL yêu cầu bạn phải suy nghĩ được đặt dựa trên các hoạt động để có được mã hiệu quả. Các phép biến đổi XSL đang làm việc trên dữ liệu có cấu trúc. Không một công cụ nào phù hợp với tất cả các yêu cầu.

12

Tôi có thể đề nghị bạn nhìn ra khỏi hộp phát triển và xem xét các khía cạnh phần mềm khác không?

Hầu hết các lập trình viên đều tránh học hỏi và giải quyết các vấn đề về tâm lý người dùng và khả năng sử dụng bằng mọi giá. Hầu hết bỏ qua bất cứ điều gì liên quan đến thiết kế đồ họa mà là một điều đáng tiếc.

Vì tôi quan tâm đến giao diện người dùng và thiết kế đồ họa, tôi thấy đó là một sự mặc khải. Bạn không thể nhìn vào phần mềm tạo ra của bạn với cùng một mắt nữa. Bạn bắt đầu suy nghĩ ở một cấp độ khác.

3

Sự bùng nổ đầu là một hình thức mở rộng tâm trí của bạn đúng không? Nếu vậy, hãy thử Objective-C.

+1

lol, đúng vậy. – RCIX

5

Bất kỳ ngôn ngữ chức năng nào cho suy nghĩ - đó là bộ não của bạn được suy nghĩ để suy nghĩ khác về vấn đề này, điều này thường làm cho giải pháp dễ dàng hơn.

Assembler để hiểu những người khổng lồ mà chúng tôi đang gánh vác.

2

tôi tự hỏi không ai đã nói điều đó rồi, C++/c! điều này sẽ dạy cho bạn những điều căn bản về những thứ mà bạn sử dụng hàng ngày.

+0

Tôi muốn nhấn mạnh C trên C++. Đơn giản, sạch sẽ của nó sẽ dạy cho bạn hầu hết những gì đáng để học. Làm việc theo cách của bạn thông qua K & R là một trải nghiệm giác ngộ. –

0

Nếu tôi đang dùng thời gian bạn đang dùng: Khả năng viết assembly hoặc D tốt là những gì tôi sẽ thực hiện tiếp theo.

Nếu tôi là bạn nhiều năm trước, và nhìn lại: C++ mẫu sâu, trong khi không nghiêm chỉnh 'ngôn ngữ', đủ xứng đáng để nói nó là ngôn ngữ cách mạng nhất trong việc thay đổi quan điểm lập trình của tôi. Bắt đầu với thiết kế hiện đại của Alexandrescu C++, sau đó xây dựng một số chương trình với kiến ​​thức mới của bạn, hoặc cố gắng cải thiện các thư viện cổ điển hiện có, để bắt đầu. Có một tấn để tìm hiểu.

0
  1. chức năng Ngôn ngữ - Đề án, Haskell
  2. động ngôn ngữ - Ruby, Python
  3. Prototype dựa OOP Ngôn ngữ - Javascript
  4. logic ngôn ngữ lập trình - Prolog
+0

.... Và có nếu bạn có đa luồng trong tâm trí thì Erlang là tốt – Tinku

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