Lựa chọn giữa CL và Python để phát triển web


13

Tôi đến từ nền tảng Java và sau khi tôi đọc bài tiểu luận nhỏ này của Paul Graham, tôi bắt đầu băn khoăn về việc chọn một ngôn ngữ mới là Common Lisp để tăng tốc công việc của mình (Tôi là một nhà phát triển web).

Tôi đang viết dự án thú cưng hiện tại nhưng tôi có một số kế hoạch kinh doanh cho tương lai. Paul nói về LISP trong bài tiểu luận của mình như là một "vũ khí bí mật". Tôi không biết tuyên bố này có đúng sau 10 năm hay không nhưng tôi đã nhúng ngón chân vào một hướng dẫn CL hay và có vẻ như LISP có thể vượt trội hơn để phát triển web.

Paul cũng đề cập đến Python là một lựa chọn tốt mà tôi thực sự quen thuộc. Câu hỏi của tôi là: tôi nên chọn cái nào cho các dự án web trong tương lai của mình?

Những gì tôi đã suy nghĩ về:

  • Tôi sẽ không phát triển các ứng dụng máy tính để bàn vì vậy tôi có thể chọn bất kỳ ngôn ngữ nào tôi thích.
  • python dường như có một cộng đồng rất lớn, do đó, có rất nhiều thư viện / khung so với lisp
  • Tôi phát hiện ra rằng lisp có một số chức năng (như macro) không thể tìm thấy ở bất kỳ nơi nào khác
  • Tôi chủ yếu làm việc một mình hoặc với 1-2 lập trình viên khác nhưng việc tìm kiếm một người có kiến ​​thức cần thiết có thể khó khăn

Vậy bạn nghĩ như thế nào?


Cộng đồng Python lớn như thế nào so với PHP? Tôi giả định rằng việc tìm kiếm một nhà phát triển Python cũng có thể khó khăn, so với việc tìm một nhà phát triển PHP, vì vậy tôi có xu hướng chỉ chọn giữa các tùy chọn này cho các tùy chọn nếu dự án là thử nghiệm.
Alex

Tôi không thực sự thích PHP vì vậy đây không phải là một lựa chọn cho tôi. Vì tôi là ông chủ duy nhất của tôi, không ai bắt tôi phải sử dụng thứ tôi không thích. :)
Adam Arold

2
@Vash Cộng đồng phát triển của Python có thể không lớn như PHP, nhưng nó vẫn rất lớn. Hơn nữa, tôi thấy tài liệu trực tuyến của Python vượt trội hơn nhiều so với PHP.
tử

Đó là sự thật tôi nghĩ.
Adam Arold

2
Tôi không tin rằng không ai nhắc đến Clojure!
Chiron

Câu trả lời:


7

Bạn đang đến từ nền Java, vậy tại sao không kiểm tra ngôn ngữ lập trình Clojure?
Đây là một phương ngữ Lisp hiện đại sống trên JVM, vì vậy bạn có quyền truy cập vào hàng tấn JAR ngoài kia.

Mặc dù bạn sẽ không tìm thấy các khung web sẵn sàng được đánh bóng và sản xuất như Django và Rails trong vũ trụ Clojure (ít nhất là ngay bây giờ), nhưng các lập trình viên đang sử dụng các khung web Noir và Compojure.
Bạn cũng có thể triển khai các ứng dụng web Clojure của mình trên nền tảng Heroku.

Clojure rất bổ ích nhưng đường cong học tập thực sự rất dốc. Bạn đã sẵn sàng để học lập trình chức năng (giả sử bạn không quen)? sống bên ngoài thế giới OOP?

Python là khía cạnh an toàn: nó trưởng thành, hàng tấn sách, nhiều khung web, kho kiến ​​thức khổng lồ và dễ học.

Vì vậy, quyết định thực sự là của bạn.


1
Gần đây tôi đã kiểm tra Clojure và tôi nghĩ rằng đó là thứ phù hợp với nhu cầu của tôi nhất! Cảm ơn vì lời khuyên!
Adam Arold

7

Lisp là ngôn ngữ bạn nghe thấy khi đứng gần và lắng nghe giọng nói phát ra từ các tháp ngà. Các ngôn ngữ khác, như PHP, có thể không thanh lịch hoặc mạnh mẽ, nhưng chúng giống như một ngôn ngữ chung, dễ dàng và dễ tha thứ.

Trong khi Lisp đã ảnh hưởng đến nhiều ngôn ngữ, nó không bao giờ được đưa vào dòng chính. Tại sao? Bởi vì nhiều nhà phát triển đã không hiểu các khái niệm về ngôn ngữ, nên đối với họ, nó dường như khá mơ hồ. Lisp là khó hiểu cho số lượng lớn các nhà phát triển. Bạn đã bao giờ thấy một mô tả công việc yêu cầu Lisp là ngôn ngữ lập trình chưa? Tôi chưa. "Lý do tại sao bạn hỏi? Bởi vì thật khó để duy trì và đọc cho nhiều người. Trong Lisp, bạn có thể thường xuyên hơn không nói cho biết ngay một biểu thức đang làm gì bằng cách chỉ cần nhìn vào nó. Nó thiếu một loại đơn giản nhất định, đó là lý do tại sao nó không bao giờ trở thành lưỡi phổ biến.

Tuy nhiên, Lisp đã có tác động đến nhiều ngôn ngữ. Tôi khuyên bạn nên học nó cho mục đích học thuật. Nó mở rộng biên giới tinh thần của bạn để bạn thường có thể suy nghĩ về các vấn đề từ một quan điểm khác. Tuy nhiên, tôi không khuyên bạn nên sử dụng nó cho các ứng dụng web, trừ khi bạn đang thực hiện một nghiên cứu khả thi cho một trường đại học. Đó là thiếu sự hỗ trợ trong các công cụ và thư viện so với các tùy chọn khác. Nếu bạn muốn có được các kỹ năng thực tế mà cuối cùng sẽ mang lại một số tiền và có thể được trình bày trên hồ sơ của bạn, thì bằng mọi cách hãy chọn Python. Bạn cũng sẽ được hưởng lợi từ Lisp nhưng bản chất ít thực tế hơn và mang tính học thuật hơn, mặc dù phong cách lập trình tổng thể của bạn có thể được hưởng lợi từ nó.

Ngoài ra, ngày nay có sự phục hưng của các ngôn ngữ chức năng. Bạn cũng có thể xem xét F # cho .NET hoặc Scala trên JVM nếu bạn muốn chọn một số khái niệm chức năng.

Vì vậy, lựa chọn của bạn. Nếu cả hai đều là ngôn ngữ thực, bạn sẽ học ngôn ngữ nào trong số này: Latin / Hy Lạp cổ đại hoặc Pháp / Đức / Ý / Tây Ban Nha / Trung Quốc / Ả Rập?


Tôi đã thấy một công việc quảng cáo không thể thiếu trong khu vực Chicago - không chỉ vậy, họ sẽ thuê bạn mà không có kinh nghiệm và đào tạo bạn. Tôi rất muốn buổi biểu diễn đó, nhưng đi lại sẽ giết tôi. Tôi sẽ thừa nhận, tuy nhiên, tôi nghĩ đó gần như là quảng cáo duy nhất tôi đã thấy trong nhiều năm.
Bryan Oakley

Ok tôi sẽ làm gì: Tôi cũng sẽ học LISP và Python, nhưng tôi sẽ sử dụng Python, vì những lý do mà bạn và những người khác đã đề cập ở trên. Cảm ơn bạn đã làm rõ.
Adam Arold

3

Đưa ra lựa chọn giữa lisp thông thường và trăn, lời khuyên thực dụng tốt nhất tôi có thể đưa ra là tìm hiểu trăn . Trong khi các nhà công nghệ trong tôi nghĩ rằng tất cả những người lập trình nên học lisp, tôi không nghĩ rằng việc học nó sẽ giúp bạn "tăng tốc [công việc] của bạn".

Nếu bạn học lisp, tôi tin rằng nó sẽ giúp bạn trở thành một lập trình viên tốt hơn về lâu dài. Tuy nhiên, việc học không cần thiết vì những lý do bạn nêu sẽ không giúp bạn tiến gần hơn đến mục tiêu trước mắt của bạn IMO. Nếu bạn muốn một giải pháp thực tế, thực dụng, hãy học Python. Đơn giản là không có đủ công cụ hoặc cơ hội để sử dụng lisp để giúp bạn trong các công việc hàng ngày trừ khi bạn thực hiện các công việc hàng ngày liên quan đến việc tùy chỉnh emacs.

Mặt khác, nếu bạn có thời gian để nghiên cứu và học hỏi, và sẵn sàng chấp nhận sự phân nhánh của sự lựa chọn của bạn (một công cụ nhỏ, khó hơn để tìm đồng nghiệp có được lisp, v.v.), hãy đi với lisp. Nó thực sự là một ngôn ngữ tuyệt vời.


3

Tôi sẽ khuyên bạn nên sử dụng Lisp nếu bạn là một người tự động viên, có khả năng làm việc với các thư viện mã của riêng bạn trong thời gian dài, thích đẩy các giới hạn của ngôn ngữ của bạn và không bận tâm đến việc cấu hình thỉnh thoảng. Nếu bạn tự làm chủ, nó có khả năng là một công cụ tăng năng suất trong thời gian dài do các tính năng vĩ mô của nó.

Python không linh hoạt, nhanh hay mạnh như vậy. Nó gần như không đáng để học so với nhiều ngôn ngữ khác. Nó rất Blubby, trên thực tế. Nó có sự hỗ trợ rộng rãi, nó là ngôn ngữ du lịch và có rất nhiều thư viện. Có lẽ sẽ tốt hơn một chút nếu bạn phải làm việc với những người phàn nàn về việc học ngôn ngữ mới.

Nếu tôi đang xem xét việc thuê một người giỏi về Lisp so với người giỏi về Python, tôi sẽ ngay lập tức cho rằng người Lisp là một nhà lập trình & máy tính giỏi hơn người Python (tất cả những thứ khác đều bằng nhau).

Tôi chắc chắn thiên vị, tôi chắc chắn.


1
Xu hướng hay không tôi thấy quan điểm của bạn!
Adam Arold

2

Nếu bạn muốn nhấn mạnh những gì Paul Graham đang nói, tôi sẽ ủng hộ Lisp. Sự khác biệt trong cách tiếp cận và tư duy được tán thành bởi gia đình ngôn ngữ Lisp có tiềm năng lớn hơn nhiều để có tác động đến bạn với tư cách là một lập trình viên, vì sự khuyến khích nghĩ khác. Và trong khi bản thân tôi đã không làm như vậy, có vẻ như việc phát triển web ở Lisp được hỗ trợ khá tốt: Xem câu hỏi này tại SO.

Python là một ngôn ngữ tuyệt vời và tôi sẽ không đánh bại nó. Có rất nhiều khung công cụ và công cụ web tốt cho Python và sẽ dễ dàng tìm thấy những người đã quen thuộc với nó, khi bạn cần.

Cuối cùng, vì môi trường hiện tại, việc chọn Lisp dường như luôn đặt ra câu hỏi "Bạn có muốn sử dụng những gì bạn muốn, hay bạn muốn sử dụng những gì ngành công nghiệp đã sử dụng?" Câu trả lời của bạn cho câu hỏi đó là gì?


2

Nếu bạn không có áp lực thời gian, hãy sử dụng Lisp. Học Lisp sẽ thay đổi cách bạn xem Python (và mọi ngôn ngữ khác mà bạn biết), nhưng học Python sẽ không thay đổi cách bạn xem Lisp (nếu bạn biết). Lisp không chỉ là một công cụ mới trong hộp công cụ. Đó là một cách suy nghĩ mới.

Trong khi bạn đang ở đó, hãy xem Factor hoặc một ngôn ngữ kết hợp khác . Ngôn ngữ kết hợp là tuyệt vời để dạy bạn cách suy nghĩ trong tổ hợp . Học một ngôn ngữ kết hợp sẽ thay đổi cách bạn xem tất cả các ngôn ngữ khác.

Cuối cùng, tập thể dục não phải của bạn. Tính hình thức của các ngôn ngữ lập trình buộc chúng ta phải sử dụng quá mức bộ não trái của mình để giải quyết vấn đề. Kích hoạt não phải của bạn để truy cập vào một sự thay đổi mô hình thay đổi trò chơi khác.


0

Lisp chỉ là một công cụ, giống như mọi ngôn ngữ khác. Liệu nó có các tính năng hữu ích, chắc chắn. Đồng thời, có thể có cùng một đầu ra với bất kỳ ngôn ngữ nào khác, nó chỉ có thể mất nhiều thời gian và mã hơn. Vấn đề chính với Lisp là bạn sẽ phải nhận, ít nhất là lưu trữ VPS, vì không có máy chủ chia sẻ (mà tôi biết) hỗ trợ bất kỳ loại Lisp nào trên nền tảng của họ.

Một điều tôi muốn đề xuất là, vì bạn là một lập trình viên Java, hãy xem Groovy (hoặc thậm chí là Scala). Chúng sẽ cho phép bạn sử dụng các thư viện và API Java của mình và sẽ tăng năng suất.


VPS không phải là vấn đề vì ý tưởng của tôi sẽ không hoạt động với chia sẻ lưu trữ.
Adam Arold

0

Tôi không biết nhiều về Lisp ngoài nguồn gốc của nó. Những gì tôi biết về Python là thế này:

5 phút sau khi chiếc đĩa bay đầu tiên hạ cánh, cộng đồng Python sẽ kết hợp một thứ gì đó để giao tiếp với các hệ thống I / O của nó.

Ngoài ra, chủ yếu đến từ JavaScript, tôi thấy Python rất phù hợp. Có lẽ điều ngược lại có thể đúng.

Ngoài ra, Django gần như là khuôn khổ để bắt chước ngày nay.

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.