Những ngôn ngữ nào bạn muốn đề nghị một lập trình viên học, không phải vì họ sẽ sử dụng nhiều ngôn ngữ (nhưng họ có thể có), mà bởi vì nó sẽ cải thiện kỹ năng lập trình của một người nói chung và để mọi người nghĩ khác (và có thể tốt hơn ) đường?
Những ngôn ngữ nào bạn muốn đề nghị một lập trình viên học, không phải vì họ sẽ sử dụng nhiều ngôn ngữ (nhưng họ có thể có), mà bởi vì nó sẽ cải thiện kỹ năng lập trình của một người nói chung và để mọi người nghĩ khác (và có thể tốt hơn ) đường?
Câu trả lời:
cho các thuật toán và lập trình "bình thường":
cho một trải nghiệm thay đổi suy nghĩ:
vì đã phá hủy tâm trí của bạn và vượt qua ranh giới giữa Padawan và Jedi Master:
Đừng quên Javascript .
Nó có các tính năng OO không phải là các tính năng OO thông thường của bạn. Nó rất phù hợp cho các chức năng và đóng cửa bậc cao hơn, và bạn thường xuyên sử dụng chúng. Nó cho phép nhiều thủ thuật lập trình chức năng. Nó rất linh hoạt.
Và nó thực tế, bởi vì mọi trình duyệt nghiêm túc đều có nó.
(Tất nhiên nó cũng có một số điều kỳ quặc khó chịu. Rất ít ngôn ngữ thực tế không)
C và lắp ráp cho cách thức hoạt động của một máy tính
Haskell và LISP cho cả lập trình chức năng và siêu lập trình
APL cho lập trình vector và terse
bash hoặc tcsh để biết cách quản trị máy tính theo chương trình
Tôi muốn đề nghị Đề án.
Đó là một ngôn ngữ lập trình chức năng có nguồn gốc (hầu hết thực sự nghĩ rằng đó là một phương ngữ) từ Lisp. Sự khác biệt chính với Common Lisp là, cách tiếp cận của nó rất tối giản - cực kỳ như vậy. Chẳng hạn, trong một bản phân phối Scheme bình thường (mọi lược đồ <R5 hoặc Mit / GNU / Scheme), bạn sẽ không tìm thấy triển khai vòng lặp: bạn sẽ phải tự thực hiện bằng cách sử dụng đệ quy đuôi.
Nó thực sự biểu cảm và cú pháp của nó thật tuyệt khi học một cái gì đó mới về lập trình, như trong: chỉ cần nhìn vào mã, bạn sẽ biết được trình biên dịch / trình thông dịch sẽ hoạt động như thế nào.
Thêm vào đó, nó đi kèm với Sách lập trình tốt nhất từ trước đến nay, Cấu trúc và diễn giải các chương trình máy tính , có thể tải xuống miễn phí trên trang web của MIT.
Dưới đây là một số bài học video mà tôi hy vọng sẽ ngay lập tức khiến bạn hứng thú với ngôn ngữ hấp dẫn này - các diễn giả là tác giả của SICP: http://groups.csail.mit.edu/mac/groupes/6.001/abelson-sussman- bài giảng /
LISP, tốt nhất là Lược đồ kết hợp với "Cấu trúc và diễn giải các chương trình máy tính" của Abelson & Sussman, sẽ dạy bạn suy nghĩ theo các thuật ngữ khác với các thuật ngữ được áp đặt bởi C / C ++.
FORTH, cụ thể là một FORTH hướng khối, không phải là định hướng tệp (chẳng hạn như D85) sẽ dạy bạn kiềm chế sự ngu ngốc của bạn. Khi bạn không thể trong bất kỳ trường hợp nào viết một thói quen dài hơn 16 dòng 64 ký tự, bạn buộc phải trừu tượng và yếu tố.
Java là một trong những ngôn ngữ được giảng dạy nhiều nhất tại các trường đại học trên toàn thế giới và có lý do cho nó. Mặc dù nó thường giống như Khủng long, nhưng nó cung cấp cho mọi người một cái nhìn tổng quan rất tốt về các Khái niệm về lập trình hiện đại. Nó KHÔNG chỉ cho bạn cách máy tính hoạt động như Trình biên dịch hoặc thậm chí là ngôn ngữ trừu tượng hơn nhiều C. Nhưng Phi công phải có khả năng bay và không thể tự chế tạo Máy bay - hãy học JAVA như một cơ sở tốt cho bất kỳ Mã nào bạn sẽ viết bằng ngôn ngữ phổ biến nhất (cho tiếng vang) hiện nay: Java, c ++, php, c #, ruby (trên đường ray), v.v.
tối đa
C # 3 với LINQ.
Đó là một giới thiệu tuyệt vời để lập trình chức năng.
Hãy thử viết một chương trình (hoặc giải Project Euler) và thay thế càng nhiều vòng lặp càng tốt bằng các cuộc gọi LINQ.
Nó giúp người ta nắm vững các khái niệm về lập trình chức năng và đánh giá lười biếng.
Từ đó, người ta có thể chuyển sang F #
Chống tay xuống, tôi sẽ nói Haskell. Và vì hai lý do:
Tôi sẽ đề nghị Scala nếu một người đến từ thế giới C / Java.
Nó không hoàn toàn là ngôn ngữ lập trình chức năng, nhưng nó sử dụng OO để mô phỏng một số tính năng lập trình chức năng (ví dụ: Sử dụng đối tượng để mô phỏng chức năng hạng nhất và chức năng bậc cao).
Vì vậy, nếu bạn quen thuộc với OO, Scala sử dụng các thuật ngữ bạn đã biết để giải thích thế giới chức năng.
Tôi thấy việc hiểu lập trình chức năng trong Scala dễ dàng hơn thay vì đi sâu vào lập trình chức năng hơn như Haskell, List ... vv.
Các ngôn ngữ chức năng là những ngôn ngữ mà tôi cảm thấy đã giúp đưa tôi đến nơi tôi đang có ngày hôm nay. Mặc dù tôi đang phát triển ứng dụng web, các khái niệm học được từ các ngôn ngữ chức năng giúp tôi thấy các giải pháp cho các vấn đề mà nếu không tôi sẽ không thấy. Đây là những ngôn ngữ tôi đã làm việc trong trường đại học của tôi:
Học các ngôn ngữ này sẽ giúp bạn hiểu được thế giới trừu tượng và cách xây dựng các khối mã đóng gói các chức năng khác, ẩn các chi tiết cấp thấp để bạn có thể tập trung vào các mục tiêu kinh doanh cấp cao.
Có một số ngôn ngữ lập trình sẽ yêu cầu bạn suy nghĩ về một vấn đề theo một cách mới (liên quan đến những gì bạn đã sử dụng tất nhiên.) Các ngôn ngữ phổ biến nhất để học đã được dạy một ngôn ngữ bắt buộc, là một chức năng và một ngôn ngữ logic, ví dụ prolog và lisp .
Một số ngôn ngữ bị ảnh hưởng nặng nề bởi lý thuyết thể loại, như ocaml và Haskell và một số ngôn ngữ là giống ngôn ngữ chéo như Curry (chức năng và logic). Curry có lẽ là ngôn ngữ gây chú ý nhất mà tôi biết, không chỉ bởi vì nó khiến Haskell say mê với lập trình logic, mà còn vì sự tích hợp với lập trình dựa trên ràng buộc.
Một ngôn ngữ thú vị khác là Occam-pi vì nó quá nặng về đồng thời, nhưng cũng vì cổng arduino gần đây .
Một lập trình viên tròn trịa có một số túi để 'xỏ tay áo' và bao gồm:
Tất cả đều dạy cho bạn những cách hơi khác nhau để suy nghĩ và tiếp cận vấn đề.
bạn sẽ không học chính xác bất kỳ ngôn ngữ lập trình nào mà không có mục tiêu rõ ràng. Biết những gì bạn muốn làm với nó, sau đó bạn có thể quyết định chương trình nào phù hợp với nhu cầu của bạn.
Ví dụ: hãy nói về c #.
C # có thể làm chương trình web, chương trình điều khiển, thực thi độc lập, chương trình chơi trò chơi, chương trình bạc và chương trình di động. Mặc dù cú pháp bằng nhau trong hầu hết mọi trường hợp nhưng nó hoạt động khác nhau trong mọi kịch bản. Ví dụ, một chương trình thực thi độc lập sẽ giữ thông tin của họ cho đến khi nó được tải hoặc chương trình kết thúc, trong khi một chương trình web, thông tin bị hủy mỗi khi bạn tải một trang và trong ánh sáng bạc, bạn sẽ dành phần lớn thời gian, vật lộn với một tệp xml.
Và thứ hai, đừng dành thời gian của bạn với các ngôn ngữ kỳ lạ (ví dụ như Haskel), nói chuyện với công ty, có rất ít chương trình đáng để bạn nỗ lực: java (vua của ngọn đồi), c # / vb.net, php và sql.
Có một chương trình rất đơn giản để viết Applet Java được gọi là Đang xử lý
Ngôn ngữ này sẽ cung cấp cho bạn một sự hiểu biết rất cơ bản về các biến, vòng lặp và loại điều đó, nếu bạn chỉ mới bắt đầu.
Một số gợi ý tuyệt vời ở đây. Tôi có thể đi với C hoặc C ++ cá nhân. Họ buộc bạn phải đối phó với rất nhiều khái niệm quan trọng trong việc hiểu cách thức mọi thứ hoạt động, nhưng điều đó có xu hướng bị xáo trộn trong các ngôn ngữ khác. Chỉ cần hiểu cách mọi thứ đang thực sự hoạt động sẽ giúp bạn trở thành một lập trình viên ngay cả khi ngôn ngữ bạn đang sử dụng sau đó che giấu một số chi tiết.
Hội là thú vị nếu bạn muốn đào sâu ở cấp độ thấp hơn một chút, nhưng đừng hy vọng sẽ làm được nhiều việc với nó. :)
Tôi muốn giới thiệu Ruby. Ruby không yêu cầu bạn thay đổi mô hình, nhưng nó khuyến khích bạn làm việc trong nhiều mô hình. Tôi nghĩ rằng lợi thế của điều này là thay vì thất vọng vì không thể làm việc theo cách bạn đã quen, bạn sử dụng một mô hình khác để thoát khỏi sự thất vọng với những hạn chế của việc làm theo cách bạn đã quen.