2012-08-28 42 views
19

Câu hỏi đặt ra là: tại sao không tiếp tục (trong Ruby) và coroutines (bằng Python) được sử dụng rộng rãi hơn cho lập trình Web?Coroutines hoặc tiếp tục cho lập trình Web bằng Python và Ruby. Tại sao không?

Lập trình web phía máy chủ được thực hiện khó khăn do vấn đề bảo toàn trạng thái giữa các yêu cầu. Hai giải pháp thanh lịch và liên quan, đây là các giải pháp tiếp tục (như được tìm thấy trong Đề án, Ruby và Smalltalk) và các coroutines (như được tìm thấy trong Python và Go).

Bruce Tate trong Vượt Java ông (O'Reilly, 2005) nói về Ruby on Rails và Seaside phát triển mới như thú vị trong lập trình web. Với tôi, Seaside là bước đột phá thực sự: sử dụng Smalltalk continuations, Seaside làm cho nó rất dễ dàng để lập trình các chuỗi yêu cầu/đáp ứng phức tạp.

Tôi biết về coroutines Python được sử dụng trong Tornado và Twisted để giảm callbacks, nhưng đó là hơi thấp, so với viết một view/controller trong một coroutine đơn để xử lý một chuỗi các yêu cầu HTTP để hoàn tất việc mua hàng trực tuyến , ví dụ.

Tôi tự hỏi tại sao những ý tưởng trông đẹp như vậy trên giấy không được triển khai rộng rãi hơn trong Python và Ruby. Nó chỉ là một vấn đề văn hóa? Hạn chế trong các cơ sở như được thực hiện bằng các ngôn ngữ này? Hay có một lỗ hổng cơ bản trong các cách tiếp cận này trong bối cảnh phát triển Web?

+1

Nếu bạn đủ thông minh, tại sao không đi cùng? – mlvljr

+7

mlvljr: Tôi khá chắc chắn mọi người thông minh hơn tôi đã thử và tôi muốn nghe từ họ trước khi tự mình thử. –

+3

Tôi lo sợ câu hỏi này rơi vào mệnh đề của câu hỏi "Không hỏi" (http://stackoverflow.com/faq#dontask). Bạn có nhiều câu hỏi và mỗi câu hỏi có thể là một cuộc thảo luận dài. –

Trả lời

5

Tôi đã sử dụng Seaside và tiếp tục là một mô hình đẹp để phát triển ứng dụng web máy chủ ứng dụng khách. Chúng đơn giản hóa các ứng dụng khách/máy chủ truyền thống mà tôi không thể tin được tại sao không có langugage khác làm việc đó.

Nhưng tiếc là các ứng dụng web không phải là những gì chúng đã từng sử dụng. Thay vì yêu cầu chỉ một trang, bây giờ với ajax có nhiều yêu cầu vào các thời điểm khác nhau. Đó là lý do tại sao việc tiếp tục không hữu ích như trước đây.

Ngay cả Avi Bryant (tác giả gốc của Seaside) đã nói rằng dưới ajax làm cho callbacks dễ dàng hơn (lập trình hướng sự kiện) là quan trọng hơn tiếp tục.

Hãy nhìn vào cuộc thảo luận Quora này để biết thêm: http://www.quora.com/Whats-the-best-continuation-based-web-framework

+2

elviejo: cảm ơn vì sự thấu hiểu của bạn và liên kết đến câu trả lời của Quora, điều này thực sự tốt. –

+2

Đây là một điểm rất tốt.Tôi có thể nói rằng việc tiếp tục phù hợp hơn nhiều với các cuộc gọi API có thể cần phải được thực hiện liên tiếp. – rbp

1

Bạn ứng dụng nên được viết trên khuôn khổ liên tục/coroutines, cũng như các thư viện hỗ trợ quá. Nó không phải là mô hình tầm thường để hiểu bởi người mới bắt đầu. Ngoài ra còn có nhiều khung công tác dễ dàng hơn như gevent, cung cấp khả năng tương tự trong việc tạo các chuỗi màu xanh lá cây và dễ sử dụng hơn nhờ tính năng vá khỉ.

1

Chủ yếu là vì lý do phi kỹ thuật. Số lượng người biết Seaside hoặc thậm chí Smalltalk là nhỏ, vì vậy không có một nhóm lớn các lập trình viên giá rẻ có thể được thuê. Bởi vì điều này số lượng các nhà cung cấp dịch vụ biết làm thế nào để cài đặt và duy trì một hệ thống Seaside cũng thấp.

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