Haskell vs Erlang cho các dịch vụ web


30

Tôi đang tìm cách bắt đầu một dự án thử nghiệm bằng ngôn ngữ chức năng và đang cố gắng quyết định giữa Erlang và Haskell, và cả hai đều có một số điểm mà tôi thực sự thích.

Tôi thích hệ thống loại mạnh mẽ và tinh khiết của Haskell. Tôi có cảm giác nó sẽ giúp việc viết mã thực sự đáng tin cậy dễ dàng hơn. Và tôi nghĩ rằng sức mạnh của Haskell sẽ làm cho một số điều tôi muốn làm dễ dàng hơn nhiều.

Về mặt trừ, tôi có cảm giác rằng một số Khung để thực hiện các công cụ web trên Haskell như Yesod không tiên tiến như các bộ phận truy cập Erlang của chúng.

Tôi thích cách tiếp cận Erlang với các luồng và khả năng chịu lỗi. Tôi có cảm giác rằng khả năng mở rộng của Erlang có thể là một điểm cộng lớn.

Điều đó dẫn đến câu hỏi của tôi, kinh nghiệm của mọi người là gì khi triển khai các phụ trợ ứng dụng web trong cả Haskell và Erlang. Có gói nào để Haskell cung cấp một số chủ đề và diễn viên nhẹ mà người ta có trong Erlang không?


4
Nếu bạn không chỉ định yêu cầu, không thể nói được. Chỉ cần ném một đồng xu hoặc một cái gì đó như thế.
Vitor Py

1
Tôi không có bằng chứng nào về kết luận này, nhưng việc sử dụng Erlang của Facebook cho tôi thấy rằng nó vừa mạnh mẽ vừa đáng tin cậy.
Matthew Đọc

1
@Matthew: Facebook sử dụng Erlang cho hệ thống trò chuyện của mình, có lẽ vì những phẩm chất song song ồ ạt của nó.
Robert Harvey

3
Yessss, sử dụng Lisssssssp .
Đánh dấu C

8
Trong một tạp chí Commodore 64 cũ, họ đã có một bài viết về ngôn ngữ giả. Cái tốt nhất là "Litva", giống hệt như lisp, ngoại trừ nhân vật 's' đã bị loại trừ. Điều đó buộc tất cả các nhà phát triển 'lithp' phải thay thế một 'thứ' cho 's'. :)
Berin Loritsch

Câu trả lời:


17

Câu hỏi duy nhất tôi có là dịch vụ web của bạn đang làm gì? Nếu dịch vụ web thực sự là một vấn đề chức năng, thì Haskell sẽ phù hợp hơn.

Erlang không nhất thiết phải là một ngôn ngữ chức năng. Đó là một ngôn ngữ thủ tục với mô hình thực thi rất mạnh cho các hệ thống song song ồ ạt. Nó được thiết kế cho ngành công nghiệp viễn thông và chắc chắn nó sẽ phù hợp tuyệt vời để đáp ứng các yêu cầu dịch vụ web.

Xem trang này * để biết tổng quan về sự khác biệt giữa lập trình thủ tục và chức năng. (Lời xin lỗi trước cho màu đen xấu xí trên trang màu lục lam).

Nếu dịch vụ web của bạn đang thực hiện một số lượng lớn các quy tắc khớp mẫu và áp dụng quy tắc, thì Haskel là lựa chọn của bạn. Nếu bạn chỉ muốn một cơ sở hạ tầng có thể mở rộng không quá khác biệt với các ngôn ngữ mà bạn có thể đã biết, hãy chọn Erlang.

(* liên kết qua máy Wayback. Tệp gốc đã bị xóa)


Nó sẽ là một cái gì đó trông rất giống như một mạng xã hội. Tại thời điểm này, có 90% cơ hội nó sẽ được thực hiện trong haskell.
Zachary K

12
Erlang là một ngôn ngữ chức năng, không phải là ngôn ngữ thủ tục. Nó có hỗ trợ tuyệt vời cho khớp mẫu và nó khớp mẫu duy nhất trên mỗi bit, rất hữu ích khi thực hiện các dịch vụ mạng.
Jonas

@Berin luôn là vấn đề với các liên kết bên ngoài, giờ nó đã chết.
thecoshman

@thecoshman, Các ứng dụng của tôi ... Sau 3 năm, tôi thậm chí không thể nhớ lại nội dung của những gì đã từng có trên trang.
Berin Loritsch

Không phải lo lắng gì cả: D _¬ chỉ không bao giờ để nó xảy ra lần nữa. (trước khi mọi người
hoảng hốt

11

Giữa hai bạn đề cập, chắc chắn Haskell là học thuật, trong khi Erlang được sử dụng trong các dự án có khả năng mở rộng cao trong cuộc sống thực. Vì vậy, hai trong số các dịch vụ web tôi chọn Erlang.

Nhưng tôi muốn nói rằng bạn có lựa chọn thứ ba: Scala , một ngôn ngữ chịu ảnh hưởng lớn từ cả Haskell và Erlang. Nó được sử dụng để xây dựng các dịch vụ web hàng đầu như Twitter hoặc Foursquare. Thậm chí còn có Lift , một khung web lấy cảm hứng từ Rails và Django, mặc dù với một chút cách tiếp cận khác, nhiều chức năng hơn. Foursquare đang sử dụng thang máy.


2
Đồng ý với câu trả lời của bạn, ngoại trừ câu cuối cùng. Thang máy rất khác với Rails. Rails là mô-đun, Nâng là nguyên khối. Rails là một khung MVC, Nâng thì không. Rails là hướng đối tượng, Nâng có nhiều chức năng.
dbyrne

@dbyrne: ok, đã chỉnh sửa
vartec

3
Vấn đề với Scala cho các dịch vụ web là các máy chủ ứng dụng Java phổ biến nhất có quy mô rất tệ so với các máy chủ được viết bằng Erlang và Haskell.
Jonas

1
@Jonas: ví dụ như vert.x vertx.io
vartec

Thang máy không còn là khuôn khổ thực tế cho Scala. Bây giờ là Play , nó hoàn toàn là MVC và không trạng thái. Tôi đồng ý với câu trả lời. Scala là một lựa chọn tốt hơn cho thế giới thực. Dễ dàng có được các nhà phát triển Scala hơn Erlang và Haskell.
Jus12

7

Thông thường tôi nói: "học những thứ càng xa càng tốt từ vùng thoải mái của bạn, nó sẽ giúp bạn trở thành một lập trình viên tốt hơn ngay cả khi bạn không bao giờ sử dụng nó trong thực tế".

Trong trường hợp này, điều đó có thể có nghĩa là Haskell; nhưng Erlang không chỉ trở thành gần như được xã hội chấp nhận; nhưng những điểm chính (quy trình nhẹ, truyền thông điệp, khả năng mở rộng lớn) đang xuất hiện trên nhiều nền tảng 'thực tế' khác, vì vậy những bài học kinh nghiệm có khả năng áp dụng lớn và ngay lập tức vào công việc 'thực tế' hơn.

Lời khuyên của tôi: nếu đó là để giải trí, hãy làm Haskell. nếu đó là để đào tạo, hãy đi Erlang.


nó cho một dự án loại công việc. Tôi nghĩ nó có thể sẽ là Erlang nhưng tôi có thể làm haskell.
Zachary K
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.