Ruby hay Python? [đóng cửa]


24

Câu hỏi này cực kỳ chủ quan và kết thúc mở. Nó thậm chí có vẻ giống như một cái gì đó tôi chỉ nên tự nghiên cứu và đưa ra quyết định của riêng mình. Nhưng tôi muốn đưa nó ra khỏi đó và nhận được một số suy nghĩ từ những người khác.

Câu chuyện dài - Tôi đã kiệt sức với cuộc đua chuột và đang trong một kỳ nghỉ phép tự tài trợ trong năm nay. Phần lớn là để nghỉ ngơi và đi du lịch khắp nơi, nhưng tôi cũng muốn chơi xung quanh với các công nghệ mới và thực hiện một số dự án tự học, để theo kịp tốc độ lập trình, và tốt - tôi chỉ thích mày mò lập trình, khi không có áp lực!

Đây là điều: Tôi là một lập trình viên C / C ++ / Java trọn đời. Tôi là một chút của một kẻ hợm hĩnh trong khuôn khổ kể từ khi tôi làm việc với gia đình ngôn ngữ này cho toàn bộ sự nghiệp lập trình của tôi. Vì vậy, tôi muốn học một ngôn ngữ không liên quan chặt chẽ về mặt cú pháp với nhóm này. Điều tôi về cơ bản đang tìm kiếm là một ngôn ngữ có mục đích tương đối chung, thú vị để học, có một số khái niệm mới khác với C ++ / Java và có một cộng đồng tốt. Một xem xét thứ cấp là nó có khung phát triển web tốt. Một xem xét đại học là nó không hoàn toàn học thuật (đọc: có những công việc trong thế giới thực ngoài kia bằng cách sử dụng nó).

Tôi đã thu hẹp nó xuống Ruby hoặc Python. Ấn tượng của tôi về Ruby là nó cực kỳ hướng web - rằng ứng dụng thực sự duy nhất của nó là ngôn ngữ kịch bản phía máy chủ để làm công cụ web (chủ yếu là Ruby on Rails). Tôi hoàn toàn không có ấn tượng gì về Python, ngoại trừ việc nó dường như có một lượng fan hâm mộ cuồng nhiệt và dường như là một ngôn ngữ khá linh hoạt.

TL; DR và nói một cách ngắn gọn nhất có thể: điều nào trong số này sẽ tốt hơn cho một anh chàng C ++ / Java để học cách có được một số quan điểm mới về lập trình? Và đó là mục đích mở và chung hơn và áp dụng cho một bộ ứng dụng rộng hơn? Hiện tại tôi đang nghiêng về Ruby, nhưng tôi lo lắng đến mức có vẻ như nó được sử dụng như một ngôn ngữ web phía máy chủ.


"Đối với Python tôi không chắc lắm"? Của cái gì? Làm thế nào điều này có liên quan?
S.Lott

Bạn có thể tìm thấy nhiều hơn nữa trên Ruby vs Python trên StackOverflow. Tôi ngạc nhiên khi chính Lennart chưa bình luận. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/ chủ đề
Công việc

@ S.Lott: Xin lỗi, không rõ ràng lắm. Chỉ có nghĩa là tôi chưa có ấn tượng rất chi tiết về Python. Ngoại trừ việc nó linh hoạt và có một lượng fan hùng hậu.
Bàn Bobby

9
Perl, tất nhiên.
Bruce Alderman

Điều này rơi vào "Công nghệ nào tốt hơn?" loại câu hỏi, theo Câu hỏi thường gặp được coi là lạc đề.
ChrisF

Câu trả lời:


35

Đừng để thực tế Ruby tăng lên theo cách nói chung phần lớn là do Rails (khung ứng dụng web) đánh lừa bạn. Đây là ngôn ngữ lập trình có mục đích chung và bạn có thể sử dụng nó cho bất kỳ ngôn ngữ nào bạn có thể sử dụng bất kỳ ngôn ngữ nào khác.

Chơi xung quanh với Ruby và xem nếu bạn yêu nó. Bạn sẽ hoặc bạn sẽ không. Nó giống như âm nhạc của Grateful Dead; bạn có thể yêu nó hoặc bạn không thể chịu đựng được.

Ruby sẽ kéo dài bộ não của bạn. Ở nhiều khía cạnh, nó khác xa với C ++ / Java như bạn có thể nhận được. Tôi đến từ nền tảng C và C #, và tôi thấy sự năng động và sức mạnh lập trình meta của Ruby khá say sưa.

Điều đó đang được nói, Python là một ngôn ngữ hoàn toàn nổi bật và nó sẽ khiến bạn không thể hiểu được.

Tại sao không học cả hai? Tôi sử dụng cả hai một cách thường xuyên: Ruby để lập trình với Rails và Python để làm việc với Google AppEngine.


2
+1 cho tham chiếu Chết ,;)
cschol

1
Cảm ơn. Tôi sẽ đi với Ruby trước và xem nếu tôi yêu nó. :)
Bàn Bobby

8
Tôi đến bữa tiệc muộn một chút, nhưng trypython.orgtryruby.org là những trang web tuyệt vời để thử các ngôn ngữ.
Michelle Tilley

17

Tôi hầu như không sử dụng Ruby, nhưng đây là những ấn tượng của tôi về Python:

  • Khi tôi viết mã giả thành bút chì, tôi thấy rằng những gì tôi viết thực tế Python và đôi khi rất ít viết lại là cần thiết để biến nó thành mã thực tế. Bạn thậm chí có thể bỏ qua mã giả cùng nhau và chỉ bày tỏ suy nghĩ của bạn trực tiếp bằng Python
  • Khi tôi cần làm một việc gì đó có vẻ giống như một nhiệm vụ chung, Python có xu hướng có các chức năng cần thiết (ở mức cao) được tích hợp trong thư viện chuẩn của nó. Chẳng hạn, ngay từ đầu khi tôi muốn mở một tệp và quét từng dòng một, câu trả lời đơn giản như 'cho các dòng trong myFile: do ware (lines)'. Điều này tôi tin rằng họ gọi phương pháp 'bao gồm pin' và nó khác với một số ngôn ngữ khác mà tôi đã sử dụng khi hoạt động hàng ngày khó khăn hơn rất nhiều

Hai điều đó nổi bật với tôi.


Tôi nghĩ đó chính xác là những lý do tôi thích Ruby. Ruby là OO nhiều hơn và có ít từ khóa hơn. Ví dụ: trong Ruby "[1,3,5] .length ()" và "[1..10] .each () ..." so với Python "len ([1,3,5])" và "cho i trong phạm vi (1,11) "
LennyProgrammer

6
@Lenny - Ruby thực sự có nhiều từ khóa hơn: krijnhoetmer.nl/ ware / ruby ​​/ keywords so với zetcode.com/tutorials/pythontutorial/keywords - đối với Python 2.6, đó là 31 từ khóa cho Ruby's 38. được sử dụng khá chủ quan ở đây, vì trong cả hai ngôn ngữ "mọi thứ đều là đối tượng" được áp dụng (và thậm chí nhiều hơn theo nghĩa đen với Python 3.x, vì mọi thứ đều được phân lớp object). Ngoài ra, len(obj)là một phím tắt để gọi obj.__len__()for i in rangecũng trừu tượng hóa các chi tiết hoạt động của các đối tượng máy phát hoạt động. Tôi nghĩ / tương đương nhưng khác biệt / chính xác hơn.
Wayne Werner

Tôi có cảm giác Lenny có nghĩa là bạn sử dụng ít từ khóa hơn trong câu lệnh điển hình của mình, ví dụ 'đối với tôi trong phạm vi (1,11) có 3 từ khóa (cho, trong, phạm vi). Tất nhiên, đôi khi nhiều từ là tốt hơn.
Andrew M

5
phạm vi không phải là một từ khóa, nó là một chức năng
Kugel

9

Nếu bạn đang nghỉ phép cả năm, thì tôi khuyên bạn nên dành một hoặc hai tuần để học mỗi thứ và sau đó tự quyết định xem bạn thích cái nào nhất. Tôi có kinh nghiệm với cả hai và theo ý kiến ​​của tôi, cả hai đều có khả năng đến mức bạn thực sự chỉ cần quyết định bạn thích cái nào hơn.


+1, Cả hai có vẻ khá dễ dàng. Clojure, mặt khác ... rất nhiều niềm vui, nhưng cũng khó hơn.
Công việc

7

IMO, bạn nên đi với Python. Lý do là nó linh hoạt hơn, bạn có thể sử dụng nó cho hầu hết mọi thứ. Ruby, như bạn nhận thấy, được sử dụng nhiều hơn trong phát triển web do các khung web của nó. Không giống như Python, Ruby không tốt cho việc phát triển các ứng dụng gui trên máy tính, các chương trình xử lý số, thống kê hoặc xử lý ảnh.


1
Bạn có thể chỉ ra điều gì làm cho Ruby "không tốt cho việc phát triển các ứng dụng máy tính để bàn, chương trình xử lý số, thống kê hoặc xử lý hình ảnh" không? Khi tôi lập trình ở Ruby vào năm 2001/2002, tôi đã vui vẻ làm tất cả những việc đó.
LennyProgrammer

7
@ Lenny 222. Trong Ruby không có thư viện như numpy, scipy, sympy, PIL, matplotlib. Dù chúng là thư viện số nào, chúng đều thua xa Python. Tương tự với tài liệu và thư viện để phát triển các ứng dụng gui.
Marcin

1
Bạn nói Python linh hoạt hơn và sau đó chỉ vào các thư viện tại sao. Tôi sẽ cho bạn biết rằng không dễ để làm một số thứ trong Ruby vì thiếu một thư viện tốt, nhưng điều đó không có nghĩa là bản thân Ruby không linh hoạt bằng cách nào đó.
Twisol

@Twisol chính xác là Tại sao: Python rất đơn giản (và nhất quán) là lý do tại sao nó rất linh hoạt và tại sao có rất nhiều thư viện hữu ích (IMO).
Nadir Sampaoli

6

Ruby đã tồn tại lâu hơn rất nhiều so với đường ray, vì vậy hãy để tôi đưa nó ra ngoài thế giới Ruby != web, mặc dù nó làm điều đó rất tốt. Có một loạt các hệ thống liên quan đến những điều nó có thể và làm. Có vẻ như toàn bộ khung Rails đã nuốt chửng phần còn lại của thế giới Ruby. Và vâng, tôi là một fan hâm mộ của Ruby.

Mặt khác, Python có rất nhiều thứ cho nó và nó đã được tích hợp với hầu hết mọi thứ trên Linux. Điều đó cho tôi biết có lẽ khá dễ dàng để kết hợp vào các chương trình lớn hơn (so với Ruby, Java, v.v.). Có một số lượng lớn cơ sở hạ tầng Ubuntu Linux được viết bằng Python, cho tôi biết rằng Python có ứng dụng trong lập trình hệ thống. Tôi nghe thấy khung web của nó rất hay, tôi chưa chơi với nó.

Điều đó nói rằng, cả Ruby và Python đều là những ngôn ngữ có khả năng như nhau và bạn sẽ thấy chúng làm cho cuộc sống của bạn dễ dàng hơn rất nhiều. Ruby có nhiều người đứng đầu web hơn trong cộng đồng của mình, nhưng đó không phải là toàn bộ cộng đồng. Tôi cũng đã sử dụng nó trên một số dự án cơ sở hạ tầng.


5

Đây là trường hợp đặc biệt của " Trình tự học ngôn ngữ lập trình lý tưởng"các câu hỏi tương tự . Những gì bạn cần không phải là "một ngôn ngữ hoàn hảo", bạn cần nhiều mô hình ngôn ngữ và nhiều kinh nghiệm học tập để mở mang đầu óc.

Tôi biết bạn nói rằng bạn đã thu hẹp nó xuống Ruby và Python, nhưng tôi khuyên bạn nên bắt đầu với Vợt (một lược đồ phổ biến). Nó được xây dựng để học và nó sẽ giúp bộ não của bạn hướng tới lập trình chức năng, lập trình tương tác và gõ động. Không có việc làm (nghĩa đen là không), một cộng đồng rất nhỏ, phân mảnh và không có khung web chính, đó chính xác là lý do tại sao bạn sẽ không bị mắc kẹt trên đó; chiên não của bạn một lúc và sau đó di chuyển trên.

Thứ hai, bạn muốn học Ruby hoặc Python cho các công việc có thể. Tôi đề nghị bạn học cả hai. Học cái thứ hai trong hai cái đó sẽ dễ hơn nhiều so với cái thứ nhất mặc dù sự khác biệt của chúng. Đối với các công việc có thể, cảm giác ruột của tôi là có nhiều công việc Ruby hơn vì Rails, nhưng tôi biết cũng có một số Zope làm việc trong lĩnh vực này. Đừng đầu tư vào ít nhất một trong số chúng, nhưng cũng nên kiểm tra cái kia ít nhất đủ lâu để xây dựng một cái gì đó nhỏ.

Thành thật mà nói, bạn có thể sẽ học được nhiều hơn trong tuần đầu tiên làm việc với một trong số họ hơn là bạn tự học; cả hai đều có hệ sinh thái lớn với nhiều công cụ và văn hóa và thành ngữ.

tl; dr: Cả và Đề án.


1
+1 Tất cả những gì tôi thấy là "một ngôn ngữ hoàn hảo" và "sơ đồ". :)
dietbuddha

1

Tôi cũng vậy, đến từ nền tảng Java / C ++ và đã lập trình bằng Python với khung Django trong 4 tháng qua và nó thực sự tuyệt vời. Bất cứ khi nào tôi có một vấn đề hoặc câu hỏi tôi có thể tìm thấy lời giải thích trên các bài viết hiện có. Tôi không thể bảo đảm cho Ruby vì tôi chưa sử dụng nó, nhưng tôi chắc chắn sẽ dùng thử khi có thời gian.

Cá nhân tôi thích cách bạn có thể thực hiện công cụ thực sự nhanh chóng với Python vì nó có rất nhiều chức năng hữu ích tích hợp.


1

Id bình chọn cho Ruby. Tôi đến từ nền tảng .Net và C #, đã thử Python trước, nhưng Ruby chỉ quyến rũ tôi =)
Tôi đang viết rất nhiều thứ hệ thống trong đó và một số Rails dev. Nó có khả năng như Python trong lập trình hệ thống và tuyệt vời trên web. Và nó cảm thấy bóng bẩy hơn đối với tôi ..

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.