2010-10-24 23 views
14

Tôi sẽ học Ruby, HaskellProlog tại trường đại học. Bây giờ, tôi tự hỏi điều gì sẽ thu hút sự chú ý của tôi. Tôi có nửa năm để làm cả ba, có nghĩa là tôi cần phải quyết định một ngôn ngữ để có được thời gian ngoại khóa của mình. Những người khác tôi sẽ học đủ để làm rất tốt trong khóa học.Trình lập trình Python sẽ thu được gì khi học Ruby?

Tôi đã quen thuộc với Haskell và Prolog để biết rằng việc học chúng sẽ dạy cho tôi một vài khái niệm rất quan trọng về khoa học máy tính. Tôi không chắc về ruby.

Đi qua một vài hướng dẫn và giới thiệu, tôi nhận được ấn tượng rằng ruby ​​là rất nhiều ma thuật nông. Bây giờ tôi hỏi những người ruby: Tôi sẽ đạt được điều gì, tôi nên quyết định không bao giờ sử dụng nó nữa, sau khi tôi đã dành nửa năm để học nó, rằng Python đã không dạy tôi.

Câu hỏi này không có ý định "làm cho trường hợp" cho ruby, mặc dù tôi nhận ra đây là một chủ đề tiềm năng của sự tranh luận tuyệt vời.

Tôi sử dụng Python cho tất cả công việc CS của mình ngay bây giờ. Tôi đã thực hiện khá nhiều chức năng lập trình với nó. Tôi cũng đã, khá quen thuộc với lập trình hướng đối tượng (trong Java, Python và C#). Và tôi sẽ, như tôi đã nói, làm một số chương trình logic với Prolog.

Còn gì để Ruby dạy tôi?

Tiếp tục pha loãng câu hỏi:

  • Tôi không quan tâm bằng văn bản vui nhộn chương trình, hoặc các ứng dụng web mát mẻ. Tôi chỉ quan tâm đến Máy tính Các bit khoa học. Thực hiện các thuật toán, cấu trúc dữ liệu và vân vân. (Mặc dù vui vẻ chắc chắn sẽ không làm tổn thương)

  • Lý tưởng nhất, các khái niệm được thảo luận cần phải học trong khoảng 1.000 giờ.

  • Tôi hoàn toàn không quan tâm đến số Đường ray. Bất kỳ công nghệ nào ẩn giấu sự phức tạp, trong trường hợp này là bất lợi.

Tôi không thể giúp câu hỏi này mang tính tranh cãi. Nhưng một câu trả lời lý tưởng cho câu hỏi này sẽ đề cập đến một khái niệm sâu sắc quan trọng của khoa học máy tính lý thuyết mà ruby ​​giúp các lập trình viên sử dụng và hiểu để đạt được kiến ​​thức khoa học bổ trợ.

Đối với các ứng viên tôi đã đưa ra là Lập trình meta và Đa luồng. Tôi không biết nếu ruby ​​là đặc biệt tuyệt vời để tìm hiểu một trong số họ.

+5

Một sự đánh giá mới cho Python? :-) – paxdiablo

+2

Đôi khi tôi bỏ lỡ thẻ "chủ quan" cũ. – Pointy

+3

@Pointy: Đây không phải là câu hỏi chủ quan. Bạn có thể đưa ra câu trả lời khách quan, các tính năng và mô hình của Ruby là gì, điều đó sẽ là mới đối với Pythonist. – Nakilon

Trả lời

8

Đối với hầu hết các phần, không có gì. Hầu hết các điểm mạnh/điểm yếu của Ruby đều giống như Python, ngoại trừ Ruby hơi "chức năng" hơn một chút. Tuy nhiên nếu bạn có Haskell như là một lựa chọn, nhiều hơn nữa có thể được học về lập trình chức năng từ Haskell hơn từ Ruby.

Thứ hai, nếu bạn đang xem xét những thứ từ góc độ khoa học máy tính lý thuyết, thì Ruby không phải là ngôn ngữ được lựa chọn. Ruby và rất nhiều thư viện của nó phá vỡ rất nhiều kiến ​​thức OOP tiêu chuẩn mà tôi tin rằng nhiều học giả sẽ thấy bị đẩy (điều này chủ yếu dựa vào các cuộc trò chuyện của tôi về ngôn ngữ với các giáo sư khác nhau).

Từ góc độ học vấn, tôi nghĩ Haskell sẽ có sức hấp dẫn nhất đối với bạn. Nếu bạn quan tâm đến AI hoặc logic, thì Prolog cũng là một lựa chọn tuyệt vời.

+0

Để công bằng, nếu anh ấy học cách thiết kế OO 'đúng cách', anh ấy có thể tự làm như vậy. Ruby thậm chí còn cung cấp cho bạn một BasicObject để lộn xộn xung quanh với nó không chứa gì ngoài những cơ chế cốt lõi của những gì nó có nghĩa là trở thành một đối tượng trong Ruby chẳng hạn. Thiết kế hoàn toàn tùy thuộc vào anh ta. API chỉ là mỹ phẩm. – egervari

1

Nếu bạn muốn học những thứ khoa học máy tính, hãy học Scala. Đó là ngôn ngữ khoa học máy tính của tương lai. Xem nếu bạn có thể tìm hiểu điều đó;)

Nếu không, Ruby là một ngôn ngữ tốt để tìm hiểu xem bạn có muốn tiếp thị nhiều hơn sau khi học hay không, vì đây có thể là công việc dễ dàng nhất sau này.

Thuật toán và cấu trúc dữ liệu đều tốt và tốt, nhưng đừng quên kiến ​​trúc và thiết kế cấp cao.Điều này thực sự quan trọng - để có thể thiết kế các công cụ có quy mô lớn không bốc mùi thiết kế kém. Trong số 3 lựa chọn, Ruby có rất nhiều điều để cho bạn thấy ở đây. Scala cũng vậy.

Tất cả ngôn ngữ đều có thể làm công cụ CS, vì vậy tôi không thấy ngôn ngữ sẽ gây thiệt hại như thế nào. Chắc chắn, một ngôn ngữ có thể thanh lịch hơn một ngôn ngữ khác, nhưng mọi người thường thể hiện những thứ cấp độ CS trong C và C++ trong ngày, vì vậy thực sự, bạn không thể đi sai nếu bạn chỉ cố gắng học khái niệm và không trở thành chất lỏng với một ngôn ngữ.

Khi bạn biết một tập hợp các khái niệm, sẽ dễ dàng hơn nhiều khi hiểu bất kỳ ngôn ngữ nào sử dụng các khái niệm đó.

+0

Tôi đã chỉnh sửa câu hỏi của mình để trả lời câu trả lời của bạn. Bạn có thể mở rộng suy nghĩ của mình về Kiến trúc chương trình và Ruby không? Tôi cũng nên nói rằng tôi đã rất thông thạo khoa học máy tính, tôi không phải là người mới bắt đầu. –

+1

Ruby là một ngôn ngữ tốt trong số 3 vì bạn có thể làm mọi thứ cơ bản với nó, và nó có tác dụng phụ là hữu ích sau khi bạn học. Nó thực sự là không có trí tuệ. – egervari

+1

Nó không phải là quá nhiều mà một ngôn ngữ sẽ là một thiệt hại, nhưng Haskell và Prolog rất * hoàn toàn * khác nhau mà họ sẽ có lợi. Bạn có thể không thực sự phát triển một sự hiểu biết sâu sắc, nói rằng, lập trình logic backtracking trong khi làm việc trong, nói, C, mà không làm tất cả các nâng nặng mình. Mặt khác, làm việc trong Prolog khá nhiều đòi hỏi và nuôi dưỡng sự hiểu biết đó. Haskell tương tự với hệ thống loại mạnh và tinh khiết của nó. Bạn sẽ không hiểu rõ về bất cứ thứ gì như thế trong Ruby - không phải không có Greenspunning nghiêm trọng, đó là một sự lãng phí thời gian của mọi người. –

4

Ruby và Python là khá giống nhau về CS thực sự mà bộ não của bạn sẽ thoát ra khỏi nó - sự khác biệt phần lớn là mỹ phẩm và thực dụng. Các khu vực mà về cơ bản chúng giống nhau:

  • Cả hai ngôn ngữ đều được nhập động, mạnh mẽ.
  • Cả hai hỗ trợ nhiều mô hình như chức năng, hướng đối tượng, v.v.
  • Ruby có nhiều lông tơ/đường (tương tự như Perl), trong khi Python tin rằng rõ ràng là tốt hơn là ngầm.

Nếu bạn quan tâm đến thông dịch viên, khuôn khổ, và thử nghiệm, nó có thể là đáng giá để battle hai, nhưng từ một quan điểm lý thuyết bạn sẽ học nhiều hơn từ Haskell hoặc Prolog.

3

Tôi đã lập trình chuyên nghiệp hơn 20 năm và có nhiều ngôn ngữ khác nhau, từ lắp ráp và C qua nhiều SQL khác nhau. Có phạm vi đó mang lại cho tôi một hộp công cụ tốt để lựa chọn khi tôi cần phải làm điều gì đó.

Mọi ngôn ngữ đều có điểm mạnh và biết chúng sẽ giúp gì khi bạn tiến bộ trong sự nghiệp của mình. Không ngôn ngữ nào là ngôn ngữ cuối cùng, tất cả ngôn ngữ lập trình và nhiều ngôn ngữ bạn biết, càng có nhiều bạn có thể hoàn thành và bạn càng dễ dàng tìm thấy ngôn ngữ đó để học những ngôn ngữ mới.

+0

Đó là một câu trả lời rất hay, nhưng nó không hoàn toàn liên quan đến câu hỏi của tôi. ở tất cả. :-) –

+0

Trong hơn 20 năm, bạn có thể cảm thấy khác nhau. –

4

Câu trả lời cho hai câu hỏi sau đây, nói chung, giống nhau:

  • Nếu tôi đã biết Python, những gì tôi sẽ học hỏi từ Ruby?
  • Nếu tôi đã biết Ruby, tôi sẽ học được gì từ Python?

Câu trả lời cho cả hai hạnh phúc:

  • Không có gì quan trọng, trừ một cách hơi khác nhau làm việc.

Cả hai đều là ngôn ngữ OO động. Ruby cho chính bản thân nó có chức năng hơn một chút, trong khi Python có một số thứ khác tốt hơn (danh sách hiểu). Nói chung, mặc dù, bạn sẽ không học được nhiều điều thường áp dụng cho khoa học máy tính bằng cách đi từ một đến khác.

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