Thế giới thực hiện lập trình chức năng? [đóng cửa]


9

Tôi đang cố gắng làm quen với các loại ngôn ngữ khác nhau để hiểu các lĩnh vực mà mỗi người trong số họ cực kỳ giỏi. Cho đến nay, tôi đã tìm hiểu về C - một ngôn ngữ thủ tục, C ++ & java - ngôn ngữ hướng đối tượng tĩnh và Groovy - một ngôn ngữ hướng đối tượng được gõ động.

Mỗi ngôn ngữ lập trình có thể đã được bắt đầu để trả lời một nhu cầu. Và tôi cho rằng mọi ngôn ngữ đều cực kỳ tốt ở ít nhất một điều vì nó trở thành một tiêu chuẩn trong một lĩnh vực hoặc lĩnh vực cụ thể. Giống như C, C ++ đã trở thành tiêu chuẩn trong các lĩnh vực như phát triển trình duyệt hoặc trò chơi. Python trong thế giới Linux vì khả năng viết kịch bản dễ dàng, Java trong thế giới doanh nghiệp, v.v.

Bây giờ tôi quan tâm để học một ngôn ngữ lập trình chức năng như Clojure hoặc Lisp. Vì vậy, các ngôn ngữ lập trình chức năng được sử dụng trong các kịch bản thế giới thực ở đâu? Tôi không nghĩ rằng người ta sẽ sử dụng Clojure hoặc Lisp để phát triển ứng dụng hoặc giao diện người dùng. Vì vậy, tôi nên thưởng thức loại dự án nào sau khi trải qua các hướng dẫn cơ bản và tài nguyên học tập để hiểu ngắn gọn về việc triển khai lập trình chức năng? Và bạn có khuyến nghị mạnh mẽ về một ngôn ngữ cụ thể, như nói clojure không?


5
"Và tôi cho rằng mọi ngôn ngữ đều cực kỳ tốt ở ít nhất một điều vì nó trở thành một tiêu chuẩn trong một lĩnh vực hoặc lĩnh vực cụ thể" Điều đó thường không đúng. Đó là một giả định nguy hiểm khi nghĩ rằng ngôn ngữ bằng cách nào đó "chuyên biệt". Một vài ngôn ngữ có hốc, nhưng nói chung nó không đúng.
S.Lott

6
"Tôi không làm thế nào và bắt đầu từ đâu." Điều gì ngăn cản bạn bắt đầu với các hướng dẫn? Bạn có thể giải thích tại sao các hướng dẫn cho các ngôn ngữ này không hữu ích hoặc hữu ích?
S.Lott

"C ++ & java" có rất ít liên quan đến nhau.
DeadMG

Tôi có thể cho bạn biết điều gì thực sự hấp dẫn bạn khi học Clojure hoặc Lisp ngoài lý do họ theo mô hình lập trình chức năng không?
Maxood

3
Khi bạn nói "thời gian thực", bạn có nghĩa là "thế giới thực" bằng cơ hội nào không? Điều đó dường như có ý nghĩa hơn một chút trong bối cảnh của câu hỏi này.
sepp2k

Câu trả lời:


13

Bạn nói lập trình chức năng trong thế giới thực, tôi nghĩ Erlang.

Erlang là một ngôn ngữ lập trình được sử dụng để xây dựng các hệ thống thời gian thực mềm có thể mở rộng quy mô với các yêu cầu về tính sẵn sàng cao. Một số ứng dụng của nó là trong viễn thông, ngân hàng, thương mại điện tử, điện thoại máy tính và nhắn tin tức thời.

http://www.erlang.org/


3
+1 K chính xác! Ngoài ra, tôi muốn nói thêm rằng, đối với người mới bắt đầu ở vùng đất chức năng, ngôn ngữ chức năng "thuần khiết" nhất sẽ là Haskell :)
yati sagade

5

Có một loạt bài giảng tuyệt vời về Lập trình chức năng của Đại học Stanford. Bạn có thể kiểm tra chúng trên YouTube.

Tôi sẽ khuyên bạn nên xem xét Đề án hơn là LISP. Scheme là phiên bản sửa đổi của Lisp với những cải tiến hơn nữa. Đề án chủ yếu được sử dụng cho các mục đích học tập và đào tạo. Đó là một ngôn ngữ tuyệt vời nếu bạn thích nghiên cứu về khoa học máy tính lồng ngực.

Ứng dụng :

Google App Inventor cho Android sử dụng Scheme, trong đó Kawa được sử dụng để biên dịch mã Scheme thành mã byte cho Máy ảo Java chạy trên thiết bị Android. Elk Scheme được Synopsys sử dụng làm ngôn ngữ kịch bản cho các công cụ CAD (TCAD) công nghệ của nó.

FYI: Cách sử dụng của Đề án


Tự hỏi nếu câu hỏi này có thể giúp bạn: lập trình
viên.stackexchange.com/questions/25056/iêu

1
Và có cuốn sách LISP này (miễn phí! Và trực tuyến!): Gigamonkeys.com/book Nó bao gồm các dự án "thực tế" như trình phân tích thẻ ID3, lập trình web và lọc thư rác.
Thất vọngWithFormsDesigner

5

Bryan O'Sullivan, người sáng lập mailrank.com (được Facebook mua lại) đã xây dựng toàn bộ phía máy chủ của phần mềm này trong Haskell. Ông đã trình bày về điều này tại Strange Loop 2011, videocác slide có sẵn trực tuyến.

Anh chàng đó đã viết một cuốn sách tên là Real World Haskell . Một số người đề cập đến hướng dẫn lập trình. Điều này có thể khá phù hợp với sở thích của bạn (tôi cũng thích đề xuất Erlang).


4

Tôi biết từ bạn bè về tài chính rằng công ty thương mại định lượng Jane Street sử dụng OCaml để thực hiện các chiến lược giao dịch của mình. Họ có một trang nơi họ nói về lý do tại sao, cùng với các liên kết đến các cuộc nói chuyện về chủ đề này.


2

Đây là danh sách những câu chuyện thành công chung của Lisp:

http://wiki.alu.org/Industry%20 Ứng dụng

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Mặc dù Common Lisp chỉ có một phần chức năng (nó cũng hỗ trợ OOP và thủ tục, cũng như bất cứ điều gì bạn muốn để thực hiện bản thân hoặc với một thư viện), đó là một ngôn ngữ rất thực dụng và cực kỳ mạnh mẽ trong tay một lập trình viên có năng lực. Tôi thực sự sử dụng nó để viết các ứng dụng web với khung RESTAS tuyệt vời .

Và dự án python thương mại mà tôi đang làm việc ngay bây giờ cuối cùng sẽ được bổ sung bởi các dịch vụ được viết bằng lisp (RESTAS như được đề xuất bởi tên của nó là tuyệt vời cho các dịch vụ RESTful).


1

Tôi khuyên bạn nên đi sâu vào trình biên dịch (đối với ngôn ngữ cho mục đích chung hoặc DSL) - đây là lúc lập trình chức năng hoạt động tốt nhất. Sẽ có nhiều điều thú vị và hữu ích để khám phá, từ ADT và khớp mẫu ở một mặt của quang phổ đến macro Lisp ở phía bên kia.


0

Bạn có thể muốn có một cái nhìn tại Hume .

Từ trang Ngôn ngữ lập trình Hume :

Hume (Môi trường siêu hợp nhất bậc cao) là một ngôn ngữ được đánh máy mạnh, chủ yếu là chức năng với một công cụ tích hợp để phát triển, chứng minh và đánh giá các hệ thống quan trọng, an toàn đồng thời. Hume nhằm mục đích mở rộng biên giới của thiết kế ngôn ngữ cho các hệ thống giới hạn tài nguyên, bao gồm các hệ thống nhúng quan trọng và an toàn theo thời gian thực, bằng cách đưa ra các mức độ trừu tượng và khả năng chứng minh mới.

Từ trang Hume wikipedia :

Hume là một ngôn ngữ lập trình dựa trên chức năng được phát triển tại Đại học St AndrewĐại học Heriot-Watt ở Scotland, và được đặt theo tên của nhà triết học thế kỷ 18 David Hume. Nó nhắm mục tiêu các hệ thống nhúng thời gian thực, nhằm tạo ra một thiết kế vừa trừu tượng, nhưng vẫn sẽ cho phép trích xuất chính xác chi phí thực hiện không gian và thời gian, do đó cho phép các chương trình được viết sẽ thực thi theo các ràng buộc về thời gian và không gian được bảo đảm.

Hume là không bình thường trong việc kết hợp các ý tưởng lập trình chức năng với các ý tưởng từ automata trạng thái hữu hạn . Automata được sử dụng để cấu trúc các chương trình giao tiếp thành một loạt các "hộp", trong đó mỗi hộp ánh xạ đầu vào thành đầu ra theo cách hoàn toàn chức năng bằng cách sử dụng khớp mẫu cấp cao. Nó cũng không bình thường khi được cấu trúc như một loạt các cấp độ, mỗi cấp độ phơi bày các thuộc tính máy khác nhau, điều này rất bất thường.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.