Mã Erlang tuyệt đẹp [đã đóng]


15

Tôi đang cố gắng tìm hiểu thêm về Erlang so với các dự án đồ chơi tôi đã chơi. Cuối cùng, tôi đang đọc qua Lập trình Erlang và một số tài liệu lưu trữ từ Armstrong trên Phần mềm .

Tôi cũng muốn đọc qua một số ví dụ (tốt nhất là sản xuất) trình bày các loại thứ bạn có thể xây dựng với Erlang sẽ khó tương xứng trong các ngôn ngữ khác. Ngoài (tôi giả sử) Yaws , có bất kỳ ví dụ công khai nào về mã Erlang đẹp mà tôi có thể đọc qua để hiểu rõ hơn về ngôn ngữ và / hoặc xem cách sử dụng thành ngữ cho các cấu trúc ngôn ngữ khác nhau không?

Tôi đặc biệt không tìm kiếm mã "hoàn thành công việc" mà sử dụng các thực tiễn đáng ngờ hoặc các ví dụ dọc theo dòng "đây là cách bạn viết factorialbằng Erlang".

Trong cùng một suy nghĩ, bất cứ ai cũng có thể đề nghị bất kỳ tài liệu tốt cho việc học ngôn ngữ này (ngoài "Erlang lập trình" đã đề cập)? Đối với sở thích, một cái gì đó mà bản thân bạn đã từng học nó, nhưng nếu có một số sách tiêu chuẩn cộng đồng cho nó, hãy ném chúng vào.


Erlang được Ericcson tạo ra để thiết kế và xây dựng các công tắc song song ồ ạt cho lưu lượng điện thoại. Nó được thiết kế bởi Ericsson để hỗ trợ các ứng dụng phân tán, chịu lỗi, thời gian thực mềm, không dừng. Đó là lĩnh vực vấn đề mà nó vượt trội. Đối với tất cả các miền vấn đề khác ... Số dặm của bạn có thể thay đổi.
Robert Harvey

Câu trả lời:



-4

Vì bạn đã thêm thẻ lập trình chức năng, làm thế nào về việc viết trình biên dịch hoặc trình thông dịch Erlang trong Haskell? Erlang không còn hoàn toàn hiện đại nữa, giống như tất cả. Tôi khuyên bạn nên học Erlang trong một hoặc hai ngày, như một số ngôn ngữ khác (LISP, Prolog), và sau đó quên chúng đi; chúng chỉ là một bước để học các ngôn ngữ OOP bắt buộc.

Đối với các tác vụ nhỏ hơn so với thực hiện trình biên dịch, hãy xem Project Euler .

[EDIT] Để trả lời nhận xét:

Từ quan điểm kỹ thuật: Erlang đã tốt trong những ngày xưa, khi không có bộ xử lý đa lõi. Nhưng bây giờ, hãy tạo ra các trình biên dịch / trình thông dịch hiện có mà tôi đang sử dụng, nó không còn mở rộng nữa. Một trình thông dịch được viết bằng Haskell sẽ mở rộng quy mô, được biên dịch thành Haskell sẽ làm cho nó nhanh hơn nhưng sẽ loại bỏ tính năng thay thế mã đang hoạt động.

Từ quan điểm của các lập trình viên: Haskell không phải là lựa chọn tốt nhất cho tất cả các nhiệm vụ có thể áp dụng, nhưng atm, các ngôn ngữ tiên tiến hơn có thể rất thử nghiệm và những nhiệm vụ không áp dụng thường phải làm với các hệ thống nhúng (như vi điều khiển và GPU) hoặc numbercrunching, trong đó C và Assembler vẫn là lựa chọn tốt nhất.

Chính xác thì điều gì bạn có thể làm với Erlang tốt hơn so với các ngôn ngữ khác?


4
Tôi đã không đưa ra yêu cầu để học nó bởi vì nó là hiện đại; Tôi chỉ nghĩ rằng nó trông thú vị, và có thể có những thứ bạn có thể xây dựng với nó mà bạn không thể dễ dàng sử dụng với các ngôn ngữ khác. Nếu câu trả lời của bạn là "Haskell là lựa chọn tốt hơn cho tất cả các nhiệm vụ hiện hành", thì hãy nói cho tôi biết tại sao cụ thể (thay vì chỉ khẳng định một cách mơ hồ) và trả lời câu hỏi ban đầu cho Haskell thay vì Erlang?
Inaimathi

1
Tôi không biết rằng câu trả lời này là rằng xấu, mặc dù nó váy ngay xung quanh câu hỏi ban đầu. Nếu bạn muốn thấy một số Haskell đáng yêu theo nghĩa mà comanad đang nói đến, hãy xem en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Đây là một hướng dẫn dạy về haskell, thư viện phân tích cú pháp . Kết hợp phân tích cú pháp, tôi cảm thấy, một trong những điều đẹp hơn để chơi với các ngôn ngữ chức năng. Chúng cũng hơi thực tế một chút; một khi bạn biết cách viết trình phân tích cú pháp, bạn có thể thiết kế ngôn ngữ của riêng mình để giải quyết các vấn đề cụ thể.
CodexArcanum

1
"Chính xác thì điều gì bạn có thể làm với Erlang tốt hơn so với các ngôn ngữ khác?" Tôi không biết; đó là lý do tại sao tôi đang cố gắng học nó Ruột của tôi nói với tôi rằng một ngôn ngữ có cấu trúc chính là quá trình (trái ngược với việc đóng cửa như trong CL, lambda như trong Scheme hoặc từ điển như trong python) sẽ có một điều thú vị để cung cấp. Haskell cũng có chức năng và nó có các cấu trúc khớp mẫu tương tự, nhưng không có sự tập trung không ngừng vào đồng thời. Trên thực tế, cấu trúc chính trong Haskell dường như là loại, khiến tôi nghĩ chúng là những động vật rất khác nhau.
Inaimathi

2
@CodexArcanum - AFAIK, Erlang và OTP có sẵn dưới dạng phái sinh của Giấy phép Công cộng Mozilla và nó là bia miễn phí từ các kho lưu trữ Debian. Ý của bạn là "hệ thống là độc quyền"?
Inaimathi

1
@comonad - Ý của tôi là "Haskell là lựa chọn tốt hơn cho tất cả các nhiệm vụ hiện hành" là "Đối với mọi nhiệm vụ mà tôi có thể hoàn thành chấp nhận được với Erlang, Haskell có thể làm điều đó tốt hơn". Tôi không có ý ám chỉ rằng bạn có thể thực hiện tất cả các công việc lập trình với một ngôn ngữ duy nhất hoặc tôi đang tìm cách chỉ sử dụng một ngôn ngữ cho tất cả các dự án của mình. Bạn dường như đang hỏi "Tại sao nên sử dụng Erlang khi bạn có thể sử dụng Haskell?", Điều này ngụ ý rằng bạn nghĩ Haskell trực tiếp vượt trội. Tôi muốn bạn làm rõ và có lẽ hỗ trợ yêu cầu đó.
Inaimathi
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.