2010-02-20 33 views
9

Tôi đang xem xét để tìm hiểu một ngôn ngữ lập trình chức năng. Tôi quyết định xây dựng một ứng dụng web cỡ trung bình.Lisp hoặc Haskell để phát triển ứng dụng web

Tôi đã thu hẹp các lựa chọn về Haskell và Common Lisp.

Ứng dụng web cần giao tiếp với một số cơ sở dữ liệu quan hệ (MySQL, Firebird hoặc Postgres) và phải chạy trên Linux. Rõ ràng, nó có giao diện tốt với phần mềm máy chủ web. Tôi không có kinh nghiệm với các ngôn ngữ chức năng, chuyên môn của tôi là C, C++, PHP và JavaScript.

Ứng dụng nào được ưu tiên cho việc sử dụng này và tại sao?

Tôi không chắc liệu câu hỏi này có nên được đánh dấu chủ quan không? Nó thực sự không phải là "ngôn ngữ nào tốt hơn", mà là "phù hợp hơn cho công việc cụ thể này"

+1

Đừng quên kiểm tra F # là một lựa chọn. – ChaosPandion

+1

Javascript cho vay khá tốt để được sử dụng như một ngôn ngữ chức năng. – McPherrinM

+1

Nếu bạn nhìn vào hồ sơ của Milan Babuškov thì rõ ràng là anh ta thích Linux như một nền tảng, điều này làm cho F # trở thành một gợi ý vô dụng. –

Trả lời

5

Lisp có một lịch sử tốt trên Web. Cửa hàng Yahoo ban đầu được viết bằng Lisp.

1

Nếu xem xét chính của bạn là để có được một điểm ngọt giữa các kỹ thuật chức năng và chức năng web, tôi thấy khó để đánh bại F # xem xét nó có tất cả các công cụ web NET nướng trong đó Thats một số tiền rất lớn của trước nướng , sản xuất mã cứng theo ý của bạn. Bạn có thể làm MVC với nó - và nếu bạn không muốn chạy trên cửa sổ và có một spritering tiên phong (mà tôi cho rằng bạn xem xét các câu hỏi), sau đó thử một MVC với F # trên Mono sẽ thực sự ra khỏi đó! Tôi muốn yêu thích để xem kết hợp đó!

Tôi không biết Lisp - nhưng so với Haskell, F # sẽ hiệu quả hơn nhiều khi nhận được một ứng dụng web được viết bằng ngôn ngữ chức năng ... Tôi yêu Haskell, nhưng đối với những gì bạn muốn làm Bạn phải xem F # là tùy chọn đầu tiên, IMO.

+3

F # trên Mono hoạt động, nhưng không hoàn toàn có thể. http://www.mono-project.com/Runtime_Projects nói rằng "Sửa chữa hỗ trợ cuộc gọi đuôi cho F #" đang được tiến hành. – ephemient

+4

Bạn không nói tại sao F # lại tốt hơn, bạn khẳng định nó. –

+1

Rất nhiều công cụ F # ​​dường như thô ráp xung quanh các cạnh khi tôi nhìn vào nó--. NET tích hợp âm thanh tốt đẹp trên giấy, nhưng cố gắng sử dụng các thư viện rất chức năng trong một ngôn ngữ chức năng thường là một bài tập trong masochism . Nếu tôi cần phải viết một ứng dụng không độc hại trong F #, tôi có thể xem xét việc chuyển các thư viện OCaml hiện có thay vì sử dụng các công cụ .NET ... tại thời điểm đó tôi tự hỏi tại sao không sử dụng OCaml và được thực hiện với nó? –

5

Ở vị trí của bạn, tôi sẽ chọn Haskell vì ba lý do:

  • Khá dễ học
  • Hackage, cung cấp rất nhiều các thư viện mà có thể làm được rất nhiều về những gì bạn muốn, bao gồm HAppS, cung cấp nhiều chức năng cho ứng dụng máy chủ
  • Cộng đồng tuyệt vời. Kênh IRC của họ rất tuyệt.
+5

Về "Khá dễ học": Haskell thực sự là một ngôn ngữ rất nhỏ và rất thông thường (so với Java, C++) nhưng tôi sẽ không gọi nó dễ dàng. Đánh giá lười biếng và độ tinh khiết của khái niệm có thể không phải là Haskell cụ thể nhưng bạn vẫn cần phải tìm hiểu cách sử dụng chúng trước khi có thể làm * bất cứ điều gì * trong Haskell. –

+1

Tôi sẽ đi xa hơn SealedSun và nói: haskell nói chung là quá khó * để hoàn thành công việc với * đối với hầu hết mọi người. –

+2

Đừng lố bịch. Haskell có thể rất xa lạ với những người đến từ các ngôn ngữ mệnh lệnh chính thống, nhưng học đủ để chỉ nhặt nó lên và làm một điều gì đó không phải là một vấn đề lớn. Nó có thể mất nhiều thời gian hơn để thực sự có được đi, nhưng nếu ai đó thực sự muốn * học * nó không phải là khó khăn cả. –

6

'Common Lisp' không thực sự là ngôn ngữ chức năng. Nó có các thành phần của một ngôn ngữ chức năng, nhưng không kém phần bao gồm hỗ trợ cho lập trình bắt buộc và hướng đối tượng. Các chương trình thường được viết theo sự kết hợp của các chương trình đó.

Nói chung, Lisp và Haskell thường là các ngôn ngữ khác nhau.

Nếu bạn muốn học lập trình chức năng nâng cao, thì Haskell sẽ phù hợp hơn.

Viết các ứng dụng web trong Common Lisp bằng cách sử dụng cơ sở dữ liệu và chạy trên Linux là có thể và đã được thực hiện.

10

Mọi ngôn ngữ đáng giá muối của nó đều cung cấp nhiều thư viện cho ứng dụng web. Haskell cũng không ngoại lệ, và có 100 thư viện web cho ngôn ngữ.

Tính sẵn có của thư viện cần được xem xét chính của bạn (ngoài nói, cần cho mức độ đồng thời cao).

Bạn có thể tìm thấy các thư viện Haskell cho công cụ này ở đây:

Tất cả có thể được cài đặt với:

$ cabal cài đặt $ foo

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