Ứng dụng ngôn ngữ Ruby. "Ruby" là gì? Ngôn ngữ lập trình Ruby. Phẩm chất cá nhân quan trọng

Lập trình viên Ruby- Đây là những chuyên gia có nhiều kinh nghiệm, kiến ​​thức kỹ thuật và sử dụng ngôn ngữ lập trình động. Các nhà phát triển sử dụng ngôn ngữ này để tạo trang web, giao diện web, ứng dụng và phần mềm của công ty. Nghề phù hợp với những người yêu thích khoa học máy tính (xem phần chọn nghề dựa trên sở thích các môn học ở trường).

Mô tả ngắn

Ngôn ngữ Ruby, là mã nguồn mở, được một nhà phát triển Nhật Bản tạo ra vào đầu những năm 90 và được cung cấp rộng rãi vào năm 1995. Ruby không rời Nhật Bản ngay lập tức, vì trong những năm đầu tồn tại, không một tài liệu nào được dịch sang các ngôn ngữ châu Âu. Chỉ đến cuối những năm 90, công nghệ mới xuất hiện. tài liệu bằng tiếng Anh và nhiều nhà phát triển đã quan tâm đến ngôn ngữ lập trình được đề cập.

Lưu ý rằng vẫn còn rất ít tài liệu kỹ thuật được dịch sang tiếng Nga nên nhà phát triển phải biết tiếng Anh hoặc tiếng Nhật. Ngày nay ngôn ngữ lập trình này nằm trong Top 5 phổ biến nhất, nhường chỗ cho các vị trí dẫn đầu là Java, JavaScript và PHP.

Ruby sẽ khó thành thạo đối với một người không có trình độ học vấn chuyên môn. Chỉ những lập trình viên đã sử dụng C#, C++ hoặc Java trong vài năm mới có thể làm việc với nó. Ruby có cú pháp đơn giản, lập trình đa luồng, hỗ trợ xử lý ngoại lệ và dữ liệu là đối tượng.

Đặc điểm của nghề nghiệp

Công việc của lập trình viên Ruby không khác gì công việc của các nhà phát triển sử dụng JavaScript hay PHP. Nhiệm vụ của họ bao gồm tạo phần mềm, gỡ lỗi và bảo trì thêm. Trách nhiệm của lập trình viên được xác định bởi công ty nơi anh ta làm việc:

  • cải thiện và hoàn thiện chức năng của các cửa hàng, ứng dụng trực tuyến, v.v.;
  • hỗ trợ kỹ thuật cho các plugin trong các hệ thống khác nhau;
  • tạo các ứng dụng Android, ứng dụng web, trò chơi, nền tảng và các sản phẩm khác;
  • thiết kế kiến ​​trúc cơ sở dữ liệu;
  • kiểm tra và gỡ lỗi phần mềm đã tạo;
  • tương tác với các nhà thiết kế, nhà phát triển và các thành viên khác trong nhóm;
  • quản lý dự án.

Ưu và nhược điểm của nghề

thuận

  1. Một ngôn ngữ lập trình động đơn giản và dễ hiểu.
  2. Một số ít nhà phát triển Ruby có kinh nghiệm, điều này làm tăng giá trị nghề nghiệp trong mắt nhà tuyển dụng.
  3. Nếu có kiến ​​thức chuyên môn, bạn có thể thành thạo Ruby khá nhanh.
  4. Mức lương ổn định, cao, được thưởng nếu làm việc thành công.
  5. Bạn có thể làm việc tại văn phòng hoặc từ xa, lên kế hoạch cho ngày làm việc của riêng mình.
  6. Sự nghiệp phát triển không ngừng.
  7. Các nhà phát triển đạt được thành công rất nhanh chóng, bởi vì bạn có thể trở thành Ruby Senior ở độ tuổi 25-30.
  8. Bạn có thể bắt đầu làm việc khi còn đang học, điều này sẽ mang lại cả lợi nhuận và kinh nghiệm.
  9. Một số lượng lớn các khóa học trực tuyến và các lập trình viên miễn phí sẵn sàng dạy cho sinh viên.

Nhược điểm

  • Sự cần thiết phải ghi nhớ nhiều thông tin.
  • Công việc thường mang tính chất thường xuyên.
  • Nhà phát triển ít giao tiếp với mọi người, đặc biệt nếu anh ta làm việc từ xa.
  • Một chuyên gia dành nhiều thời gian bên máy tính nên khi còn trẻ có thể bị mờ mắt, đau lưng và các bệnh nghề nghiệp khác.
  • Phẩm chất cá nhân quan trọng

    1. Hãy yên tâm vì bạn thường xuyên phải làm việc trong chế độ khẩn cấp.
    2. Sự cống hiến hết mình và sự kiên nhẫn, đặc biệt liên quan đến việc thiếu lịch trình làm việc, thực hiện những thay đổi không ngừng và sửa chữa sai lầm.
    3. Kỹ năng giao tiếp, vì cần tìm ra ngôn ngữ chung với các nhà thiết kế, khách hàng và lập trình viên bên thứ ba.
    4. Khiêm tốn và thông minh.
    5. Trung thực và năng lực kỹ thuật.
    6. Hành trình sáng tạo.
    7. Chính trực.
    8. Không có thói quen xấu.
    9. Sự tháo vát.

    Đào tạo lập trình viên Ruby

    trường đại học

    Nơi làm việc

    1. Các công ty CNTT.
    2. Các cơ quan quảng cáo.
    3. Các nhà phát triển phần mềm tư nhân.
    4. Hệ thống ngân hàng.
    5. Các tổ chức khác cần lập trình viên để vận hành.

    Sự nghiệp

    Một nhà phát triển Ruby, giống như bất kỳ lập trình viên nào khác, có thể mong đợi sự phát triển nghề nghiệp ổn định, nhưng tốc độ của nó phụ thuộc vào kiến ​​thức, kỹ năng và tham vọng cá nhân của người đó. Trong 3 tháng đầu làm việc, lập trình viên là người học việc, sau đó mỗi năm kinh nghiệm sẽ mang lại cho anh ta một địa vị mới:

    • Junior (tối đa 18 tháng kinh nghiệm);
    • Trung cấp (tối đa 3-4 năm kinh nghiệm);
    • Senior (trên 4 năm kinh nghiệm).

    Sự phân loại có thể khác nhau, nhưng nguyên tắc vẫn giống nhau: nhiều kinh nghiệm hơn nghĩa là vị trí tốt hơn và mức lương cao hơn.

    Lương lập trình viên Ruby

    Mức lương tính đến ngày 03/02/2020

    Nga 30000—120000 ₽

    Matxcơva 50000—230000 ₽

    Kỹ năng chuyên nghiệp

    1. Kiến thức về Ruby và Ruby on Rails.
    2. Có kinh nghiệm làm việc với PHP, Java, C++, v.v.
    3. Yêu cầu có ít nhất 2-3 năm kinh nghiệm lập trình.
    4. Yêu cầu biết ngoại ngữ.
    5. Kiến thức về MySQL, PostgreSQL, JSP, HTML, UnitTest, Grails, CSS.
    6. Git, Subversion hoặc Mercurial.
    7. Phát triển tài liệu kỹ thuật.

    Tài liệu hữu ích

    1. Diễn đàn tiếng Nga về Ruby: onrails.club.
    2. Trang web có bản dịch cho Ruby: rusrails.ru.
    3. Chris Pine Học cách viết mã.
    4. Michael Fitzgerald "Học Ruby."
    5. Giovanni Sakti, Nia Mutiara, Hafis Bari Lubis "Học lập kế hoạch cho Rails".

    Ngày nay có rất nhiều ngôn ngữ lập trình có những đặc điểm và khuôn mẫu riêng. Bài viết này sẽ thảo luận về một trong số họ.


    Lịch sử của ngôn ngữ Ruby

    Ruby đã xuất hiện như một ngôn ngữ lập trình từ khá lâu. Công việc biên soạn phiên bản của ngôn ngữ hiện được biết đến này bắt đầu lần đầu tiên vào năm 1993. Phiên bản chính thức đầu tiên được phát hành vào năm 1995. Người tạo ra ngôn ngữ này là Yukihiro Matsumoto. Niềm đam mê lập trình của anh được chú ý khi còn là sinh viên, nhưng ý tưởng tạo ra công cụ của riêng anh lại xuất hiện muộn hơn nhiều. Vậy ngôn ngữ lập trình này có gì đặc biệt? Điều gì khiến bạn nổi tiếng trên trường thế giới?

    Ngôn ngữ lập trình Ruby khá được diễn giải. Đây là một ngôn ngữ cấp cao với kiểu gõ động và triển khai đa luồng độc lập với môi trường thực thi. Nó có bộ thu gom rác riêng. Về đặc điểm cú pháp, nó gần giống nhất với ngôn ngữ Perl. Do sự phát triển rộng rãi của hệ sinh thái, nền tảng này đã tiếp thu rất nhiều từ Smalltalk, Python, Lisp và các ngôn ngữ lập trình khác. Điều quan trọng nhất là ngôn ngữ Ruby và cách triển khai nó hoàn toàn miễn phí. Từ đó mọi người đều có cơ hội đề xuất những thay đổi của riêng mình. Nếu được cộng đồng chấp nhận, chúng sẽ được đưa vào phiên bản tiếp theo của ngôn ngữ.

    Triết lý Ruby

    Trong quá trình tạo ra đứa con tinh thần của riêng mình, Matsumoto, vốn là một người hâm mộ cuồng nhiệt và đam mê lập trình hướng đối tượng, đã trở thành tác giả của một triết lý nhất định dành cho các lập trình viên chọn học ngôn ngữ của ông. Do đó, ngôn ngữ lập trình Ruby được thiết kế để tạo ra các ứng dụng đơn giản và dễ hiểu. Điểm nhấn chính là tính đơn giản và dễ đọc của mã chứ không phải tốc độ của chương trình. Đây chính xác là lý do nền tảng này thường được chọn làm nền tảng đầu vào cần thiết cho việc đào tạo lập trình viên. Ý tưởng cơ bản mà ngôn ngữ này dựa vào là nguyên tắc “ít gây ngạc nhiên nhất”. Điều đó có nghĩa là gì?

    Và thực tế là chương trình phải hoạt động như người lập trình mong đợi ở nó. Một phần quan trọng của hệ tư tưởng ngôn ngữ được người sáng tạo giới thiệu là tính biến đổi lớn của nó. Vì vậy, có thể đạt được cùng một kết quả theo những cách và chức năng khác nhau. Điều này cho phép mỗi lập trình viên giải quyết vấn đề mà anh ta thấy phù hợp về mặt tính đúng đắn và thuận tiện. Trong hầu hết các trường hợp, đây là điều đã ảnh hưởng đến sự phổ biến của ngôn ngữ này đối với các chuyên gia công nghệ thông tin.

    Các đặc điểm chính

    Ruby có ý nghĩa gì khi coi nó là ngôn ngữ lập trình? Trước hết, nó là một ngôn ngữ hướng đối tượng. Không có kiểu nguyên thủy vì tất cả cấu trúc và đơn vị dữ liệu đều được coi là đối tượng. Điều này phân biệt nó với cùng một ngôn ngữ Java, nơi có các cấu trúc dữ liệu nguyên thủy. Tất cả các hàm trong Ruby đều là một phương thức. Hầu hết các thuộc tính và khả năng được tác giả giới thiệu từ các ngôn ngữ lập trình khác. Vì vậy, chúng ta có thể nói một cách an toàn rằng Ruby chứa đựng những phẩm chất tốt nhất của nhiều ngôn ngữ và công nghệ khác. Ví dụ: hệ sinh thái Ruby có trình thu gom rác riêng.

    Ý tưởng của anh được lấy từ Smalltalk và Java. Nó có khả năng làm việc với tất cả các đối tượng trong hệ thống. Cơ chế này cho phép xóa bộ nhớ khỏi các đối tượng không còn cần thiết mà người dùng và nhà phát triển ứng dụng không nhận thấy. Trình thu gom rác giúp nhà phát triển không bị phân tâm khi quản lý bộ nhớ của ứng dụng. Bằng cách này, anh ấy có thể tập trung toàn bộ sự chú ý của mình vào chức năng và khả năng sử dụng.

    Mô hình ngôn ngữ

    Một số lập trình viên trả lời câu hỏi Ruby đại diện cho ngôn ngữ đa mô hình đã thấy mình đang ở trong một cuộc tranh luận sôi nổi. Ngôn ngữ này cho phép áp dụng bất kỳ mô hình lập trình nào với mức độ thành công như nhau. Trong số này, điều đáng chú ý là:

    Phong cách lập trình thủ tục;
    cách tiếp cận hướng đối tượng;
    cách tiếp cận chức năng.

    Nhà phát triển được phép chọn mô hình gần gũi nhất với mình. Cần lưu ý rằng điều này sẽ làm cho bộ công cụ của anh ta trở nên hạn chế hơn hoặc yếu hơn. Ngôn ngữ lập trình Ruby chỉ tuân theo lựa chọn này.

    Lý do nổi tiếng

    Trong hầu hết các trường hợp, ngôn ngữ này đã trở nên nổi tiếng do dễ dàng phát triển các bổ sung khác nhau cho nó. Do đó, số lượng khung và thư viện không ngừng tăng lên và các nhiệm vụ mà chúng giải quyết một cách độc lập cho phép các nhà phát triển đưa sản phẩm về trạng thái hoàn thiện trong thời gian ngắn nhất. Lập trình Ruby thường gắn liền với việc tạo ra các ứng dụng web, cũng như hỗ trợ hoạt động của các trang web và nền tảng Internet khác nhau. Ngôn ngữ này có thể chiếm lĩnh vị trí này nhờ tính đơn giản và tốc độ phát triển của nó. Điều đáng chú ý là các nền tảng thay thế (ví dụ: Java) đòi hỏi lượng kiến ​​thức và kinh nghiệm lớn hơn đáng kể được thiết kế để giải quyết các vấn đề tương tự.

    Các framework nổi tiếng

    Nói về các framework nổi tiếng hiện có trên thị trường hiện nay, đáng chú ý là Rails trong số đó. Hầu hết người dùng trả lời câu hỏi Ruby là gì đều có nghĩa là RubyOnRails. Tập hợp các thành phần phần mềm này là một tiêu chuẩn công nghiệp dành cho các nhà phát triển. Nó được hỗ trợ thường xuyên, không ngừng phát triển và được bổ sung bởi cộng đồng lập trình. Điều đáng chú ý là bất chấp tất cả những điều này, nó vẫn miễn phí.

    Khung được trình bày có khả năng mô tả các thành phần của ứng dụng web trong ranh giới của mẫu MVC (Model-View-Controller). Ngoài ra, nó sẵn sàng cung cấp khả năng tích hợp sẵn có với máy chủ ứng dụng, cũng như giao diện cho phép truy cập vào cơ sở dữ liệu. Ba thành phần này giúp bạn có thể viết và khởi chạy một blog đơn giản hoặc trang web riêng tư trên Internet chỉ trong vài giờ. Thậm chí có thể tạo các ứng dụng di động gốc bằng ngôn ngữ lập trình Ruby. Điều này đạt được bằng cách sử dụng thư viện RubyMotion. Nó có thể chạy mã Ruby trên nền tảng iOS, OS X và Android. Thư viện này được phát triển bởi một nhóm nhà cung cấp tư nhân. Điều này có nghĩa là bạn sẽ phải trả tiền để sử dụng, nhưng đó là một sự xác nhận khác về khả năng rộng rãi của ngôn ngữ.

    Tầm quan trọng của bài kiểm tra viết

    Một thành phần quan trọng khác của hệ sinh thái ngôn ngữ Ruby, cũng như phần định hướng web của nó, bao gồm các khung và thư viện được thiết kế để viết bài kiểm tra. RubyOnRails sử dụng triết lý BDD (phát triển theo hướng hành vi). Điều này có nghĩa là trước tiên người lập trình phải phát triển một chuỗi các thử nghiệm mô tả hành vi dự kiến ​​của chương trình. Sau đó, nó tạo mã cần thiết để vượt qua các bài kiểm tra đó. RSpec được coi là tiêu chuẩn bất thành văn trong lĩnh vực này. Đó là một framework giúp viết các trường hợp kiểm thử bằng ngôn ngữ mà ngay cả những người dùng thiếu kinh nghiệm cũng có thể hiểu được.

    Đá quý Ruby

    Do tiêu chuẩn chi tiết mà các gói và thư viện Ruby phải tuân thủ nên việc tạo các tiện ích bổ sung rất dễ dàng. Do đó, trong số những viên ngọc quý, có thể tìm thấy các mô-đun được thiết kế để giải quyết hầu hết mọi vấn đề, từ tích hợp với mạng xã hội và tài nguyên của bên thứ ba đến các nền tảng làm sẵn cho thương mại điện tử. Để sử dụng thư viện của bên thứ ba, việc mô tả sự phụ thuộc của dự án của bạn vào một thư viện cụ thể nằm trong kho lưu trữ từ xa hoặc cục bộ là đủ. Trong quá trình lắp ráp tiếp theo, thư viện này sẽ tự động được tải vào ứng dụng. Giải pháp này đơn giản hóa đáng kể việc di chuyển dự án giữa những người sáng tạo vì không cần chia sẻ các phần phụ thuộc để xây dựng dự án theo cách thủ công.

    Vì vậy, chúng ta có thể kết luận rằng Ruby là ngôn ngữ lập trình mạnh mẽ và linh hoạt, không chỉ phù hợp với các nhà phát triển có kinh nghiệm mà cả những người mới bắt đầu.

    Có nhiều ngôn ngữ lập trình được thiết kế để thực hiện các nhiệm vụ khác nhau. Mỗi trong số chúng được đặc trưng bởi một tập hợp các toán tử và cú pháp đặc biệt.

    Trong bài viết hôm nay chúng ta sẽ xem xét ba ngôn ngữ phổ biến nhất được sử dụng trong phát triển web: PHP, Ruby và Python. Chúng ta sẽ tìm hiểu xem chúng trông như thế nào, chúng khác nhau như thế nào, mức độ phổ biến của chúng và đối tượng khán giả.

    Nhờ đó, bạn sẽ hiểu ngôn ngữ nào phù hợp hơn để giải quyết vấn đề của mình và ngôn ngữ nào đáng học:

    PHP: ngôn ngữ phổ biến nhất cho Internet

    PHP (Hypertext PreProcessor, hypertext preprocessor) là ngôn ngữ lập trình được thực thi trên phía máy chủ web, được thiết kế Rasmus Lerdorf(Rasmus Lerdorf) làm công cụ tạo các trang web động và tương tác.

    Ngôn ngữ này hóa ra khá linh hoạt và mạnh mẽ, vì vậy nó đã trở nên phổ biến và được sử dụng trong các dự án ở mọi quy mô: từ một blog đơn giản đến các ứng dụng web lớn nhất trên Internet:

    Ưu điểm của PHP:

    • là phần mềm miễn phí được phân phối theo giấy phép đặc biệt (giấy phép PHP);
    • dễ học ở mọi giai đoạn;
    • được hỗ trợ bởi một cộng đồng lớn người dùng và nhà phát triển;
    • có hỗ trợ cơ sở dữ liệu nâng cao;
    • có một số lượng lớn các thư viện và phần mở rộng ngôn ngữ;
    • có thể được sử dụng trong môi trường biệt lập;
    • cung cấp các công cụ gốc để tổ chức các phiên web, giao diện chương trình cho các tiện ích mở rộng;
    • là sự thay thế khá hoàn chỉnh cho môi trường ASP (Trang máy chủ hoạt động) độc quyền của Microsoft;
    • có thể được triển khai trên hầu hết mọi máy chủ;
    • được chuyển sang một số lượng lớn các nền tảng phần cứng và hệ điều hành.

    Nhược điểm của PHP:

    Phổ biến:

    Theo Wikipedia, tính đến ngày 1 tháng 1 năm 2013, PHP đã được cài đặt trên hơn 240 triệu trang web (39% tổng số được khảo sát) hoặc 2,1 triệu máy chủ web.

    Cách sử dụng

    Các tập lệnh viết bằng PHP thường được lưu trữ trong các tệp có phần mở rộng .php, chứa hỗn hợp các thẻ HTML thông thường với đánh dấu đặc biệt: thẻ mở:

    Ruby: một ngôn ngữ OOP thuần túy, được giải thích

    Ruby là ngôn ngữ lập trình hướng đối tượng mệnh lệnh động được phát triển bởi Yukihiro Matsumoto. Ruby bị ảnh hưởng bởi các ngôn ngữ như Perl, Eiffel và Smalltalk.

    Nó được đặc trưng bởi tính năng gõ động và quản lý bộ nhớ tự động. Ngôn ngữ Ruby được sử dụng trong phát triển web như một phần của khung web mở Rails, thường được gọi là Ruby on Rails (RoR):

    Lợi ích của Ruby:

    • phát triển mở;
    • hoạt động trên nhiều nền tảng;
    • có thể được nhúng vào đánh dấu HTML;
    • đề cập đến các ngôn ngữ lập trình cấp cao (VHLL), nghĩa là nó có mức độ trừu tượng cao và cách tiếp cận theo chủ đề cụ thể để thực hiện các thuật toán;
    • thực hiện một mô hình hướng đối tượng thuần túy về mặt khái niệm;
    • cung cấp các kỹ thuật thao tác chuỗi và văn bản nâng cao;
    • dễ dàng tích hợp các máy chủ cơ sở dữ liệu hiệu suất cao (DB2, MySQL, Oracle và Sybase) vào các chương trình của nó;
    • nhờ VHLL, các chương trình Ruby có quy mô tốt và dễ bảo trì;
    • cú pháp đơn giản và rõ ràng giúp các lập trình viên thực hiện những bước đầu tiên trong việc học ngôn ngữ này dễ dàng hơn nhiều;
    • có một giao diện phần mềm đơn giản để tạo các ứng dụng đa luồng;
    • có các công cụ nâng cao để làm việc với mảng;
    • Khả năng của ngôn ngữ có thể được mở rộng bằng cách sử dụng các thư viện viết bằng C hoặc Ruby;
    • các từ dành riêng có thể là định danh nếu điều này không tạo ra sự mơ hồ cho trình phân tích cú pháp;
    • các tính năng bảo mật bổ sung;
    • trình gỡ lỗi tích hợp.

    Nhược điểm của Ruby:

    • học một ngôn ngữ vượt quá trình độ mới bắt đầu có thể là một thử thách;
    • rõ ràng là không có đủ nguồn thông tin dành riêng cho Ruby;
    • Ruby kém năng suất hơn nhiều ngôn ngữ khác được sử dụng trong phát triển web;
    • Ruby tương đối chậm phát triển và tiến hóa.

    Các dự án sử dụng Ruby:

    • Google phác họa;
    • 37 tín hiệu;
    • GitHub;
    • Shopify;
    • Indiegogo ;
    • Căn cứ.

    Phổ biến

    Dựa theo trang web chính thức của Ruby, ngôn ngữ này là một trong mười ngôn ngữ lập trình phổ biến nhất. Sự tăng trưởng về mức độ phổ biến của ngôn ngữ này là do sự phổ biến của các sản phẩm phần mềm được viết bằng Ruby, đặc biệt là RoR.

    Cách sử dụng

    Các tệp chương trình được viết bằng Ruby có phần mở rộng là .rb. Các tệp này có thể được chạy dưới dạng tập lệnh shell bằng trình thông dịch. Ví dụ: với trình thông dịch Ruby nằm trong /usr/bin :

    Python: ngôn ngữ lập trình có mục đích chung

    Python được sử dụng rộng rãi như một ngôn ngữ thông dịch cho các tập lệnh cho nhiều mục đích khác nhau (mặc dù cũng có các trình dịch ngôn ngữ Python).

    Giống như Ruby, Python nhằm mục đích đưa cú pháp của một chương trình thực được viết trong đó gần hơn với mã giả mô tả nhiệm vụ, cho phép lập trình viên giảm kích thước của chương trình. Ý tưởng tạo ra ngôn ngữ này nảy sinh vào cuối những năm 1980 và được thực hiện Guido van Rossum.

    Thiết kế trang nhã và cú pháp hiệu quả, có kỷ luật của ngôn ngữ này giúp các lập trình viên dễ dàng cộng tác trên mã. Python là ngôn ngữ lập trình đa mô hình: nó cho phép bạn kết hợp cách tiếp cận thủ tục để viết mã với cách tiếp cận hướng đối tượng và chức năng:

    Lợi ích của Python:

    • phát triển mở;
    • khá dễ học, đặc biệt là ở giai đoạn đầu;
    • các tính năng cú pháp khuyến khích người lập trình viết mã dễ đọc;
    • cung cấp các công cụ để tạo mẫu nhanh và ngữ nghĩa động;
    • có một cộng đồng rộng lớn tích cực đối với người mới;
    • nhiều thư viện và tiện ích mở rộng ngôn ngữ hữu ích có thể dễ dàng sử dụng trong các dự án của bạn nhờ cơ chế nhập và giao diện chương trình cực kỳ thống nhất;
    • cơ chế mô-đun được tính toán kỹ lưỡng và có thể dễ dàng sử dụng;
    • hoàn toàn mọi thứ trong Python đều là một đối tượng theo nghĩa OOP, nhưng cách tiếp cận đối tượng không bị áp đặt đối với lập trình viên.

    Nhược điểm của Python:

    • hỗ trợ đa luồng không tốt lắm;
    • Không có nhiều dự án phần mềm chất lượng cao được tạo bằng Python so với các ngôn ngữ lập trình đa năng khác, chẳng hạn như Java;
    • thiếu hỗ trợ thương mại cho các công cụ phát triển (mặc dù tình trạng này đang thay đổi theo thời gian);
    • phương tiện hạn chế ban đầu để làm việc với cơ sở dữ liệu;
    • Điểm chuẩn cho thấy hiệu năng của Python kém hơn so với các máy ảo Java chính thống, khiến ngôn ngữ này bị mang tiếng là chậm.

    Các dự án sử dụng Python:

    • Bản đồ Yahoo;
    • Tập đoàn Zope;
    • Tin tức hàng tuần về Linux;
    • Shopzilla ;
    • Siêu âm.

    Phổ biến

    Theo Wikipedia, Python vững chắc trong 8 ngôn ngữ lập trình phổ biến nhất theo phiên bản Chỉ số cộng đồng lập trình TIOBE. Và nếu không tính riêng các ngôn ngữ có cú pháp giống C (C++, C#, ObjectiveC, Java, v.v.) thì Python là ngôn ngữ phổ biến thứ ba.

    Cách sử dụng

    Trình thông dịch python có thể được sử dụng cả để chạy tập lệnh và ở chế độ shell tương tác.

    Nhập vào dòng lệnh:

    $ python để nhận lời nhắc của trình thông dịch: Python 2.4.3 (#1, ngày 11 tháng 11 năm 2010, 13:34:43) trên linux2 Nhập "trợ giúp", "bản quyền", "tín dụng" hoặc "giấy phép" để biết thêm thông tin. >>> Bây giờ bạn có thể gõ một dòng trong Python và nhấn Enter để thực thi nó: >>> print "Put some text here" Đặt một số văn bản vào đây

    Cần chuyên gia

    Dựa trên phân tích của Jobs Tractor về hơn 45.000 việc làm dành cho nhà phát triển được đăng trên Twitter trong năm qua, nhu cầu về lập trình viên như sau:

    • PHP – cần 8238 người;
    • Ruby – 2937 người;
    • Python – 1587 người.

    Tất nhiên, số liệu thống kê không phải là yếu tố duy nhất cần xem xét khi học ngôn ngữ lập trình.

    Ngôn ngữ lập trình nào đáng học?

    Hầu hết các lập trình viên sẽ nói với bạn rằng bạn có thể làm bất cứ điều gì bằng bất kỳ ngôn ngữ lập trình nào được mô tả trong bài viết này. Trên thực tế, không có lựa chọn nào tốt hơn hoặc tệ hơn ở đây. Tất cả các ngôn ngữ đều tốt. Nhưng khi lựa chọn ngôn ngữ, bạn nên tập trung vào mục tiêu mà mình muốn đạt được.

    Nếu bạn mới bắt đầu học lập trình web, thì sau khi nắm vững những kiến ​​​​thức cơ bản về ngôn ngữ, sớm hay muộn bạn sẽ phải đối mặt với nhu cầu học một số loại framework dựa trên nó. Các framework web giúp việc tạo ứng dụng trở nên dễ dàng hơn nhiều.

    Hầu hết các trang web đều có một bộ chức năng cơ bản rõ ràng: xử lý và ủy quyền phiên, xác thực yêu cầu, v.v. Khung này giúp bạn không phải viết lại tất cả các chức năng này khi tạo trang web. Là một lập trình viên web, bạn sẽ chỉ phải thiết kế và triển khai các chức năng về cách trang web tương tác với người dùng.

    Các khung được phát triển bao gồm các chức năng làm việc với dữ liệu người dùng (bài viết, chủ đề, bài đăng, ảnh, v.v.) được gọi là khung quản lý nội dung (Khung quản lý nội dung - CMF).

    Nếu bạn thêm vào đây các thành phần giao diện cho người dùng cuối của trang web, bạn sẽ nhận được cái gọi là hệ thống quản lý nội dung hoặc CMS (Hệ thống quản lý nội dung). CMS cho phép bạn có được một trang web có giao diện nguyên mẫu và chức năng tối thiểu ngay sau khi cài đặt hoặc sau một số cài đặt nhất định, nghĩa là hoàn toàn không cần lập trình.

    Đồng thời, hầu hết CMS đều cung cấp cho người lập trình cả giao diện lập trình CMF và giao diện để mở rộng chức năng của nó.

    Đây là bài đầu tiên trong loạt bài viết trong đó tôi sẽ nói về các tính năng của Ruby và Ruby on Rails, đồng thời chia sẻ các mẹo về nơi bắt đầu học Ruby, nơi tìm câu trả lời cho các câu hỏi, cách có được trải nghiệm bạn cần và làm thế nào bạn có thể tạo sự khác biệt với các ứng viên khác. Tôi sẽ rất vui nếu lời khuyên của tôi giúp ai đó quyết định chuyên môn của họ và chọn Ruby để học và làm việc cùng.

    Các tính năng chính và sự khác biệt của Ruby

    Tôi thường nghe câu hỏi: học Ruby có đáng không? Theo quy định, câu hỏi dựa trên những nghi ngờ: việc tìm được một công việc với chuyên ngành này dễ dàng như thế nào, liệu sẽ có những dự án thú vị hay không, v.v. Ruby là một ngôn ngữ lập trình hiện đại, không ngừng phát triển; có nhiều lĩnh vực ứng dụng cho nó. Chắc chắn bạn đã nghe nói về Chef, Vagrant, Homebrew, nhưng hầu hết chúng ta đều nghe nói về Rails. Đây là một bài đăng với lời bình luận của tác giả framework về lý do tại sao nên học Rails.

    Tất nhiên, mọi người đều tự quyết định nên sử dụng công cụ nào. Và chẳng có ích gì khi tranh cãi không ngừng về lý do tại sao công nghệ này lại tốt hơn công nghệ khác. Tôi chọn Ruby vì đây là ngôn ngữ cực kỳ biểu cảm và linh hoạt cho phép bạn giải quyết cùng một vấn đề theo nhiều cách.

    Ruby là một ngôn ngữ lập trình hướng đối tượng hoàn toàn được giải thích với kiểu gõ động mạnh mẽ. Nó kết hợp cú pháp giống Perl với cách tiếp cận hướng đối tượng. Ngoài ra, một số tính năng được mượn từ các ngôn ngữ lập trình Python, Lisp, Dylan và CLU. Việc triển khai đa nền tảng của trình thông dịch ngôn ngữ Ruby được phân phối theo phần mềm nguồn mở. Mã viết bằng Ruby có thể được hiểu ngay cả bởi một người không hiểu lập trình. Các dự án như Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb và các dự án khác đã được tạo trên RoR.

    Với sự nổi lên của Node.js, mức độ phổ biến của Ruby on Rails đã giảm đi phần nào, nhưng các công ty khởi nghiệp công nghệ thường sử dụng RoR do tính dễ tạo nguyên mẫu của nó. Ruby là ngôn ngữ phổ biến thứ 11 trong chỉ số TIOBE.

    Lợi ích của Ruby

    • Cộng đồng lớn và thân thiện.
    • Rào cản gia nhập khá cao, điều đó có nghĩa là nhà phát triển Ruby có thể có kinh nghiệm với ít nhất một ngôn ngữ lập trình khác.
    • Bạn chỉ sử dụng những thư viện và mô-đun cần thiết.
    • Có một số lượng lớn các thư viện hữu ích đã sẵn sàng để sử dụng (Ruby Gems).
    • Có rất nhiều thông tin về Ruby trên Internet, ở dạng có cấu trúc và được sàng lọc.
    • Trong bối cảnh thảo luận về Ruby, người ta không thể không nhắc đến framework phổ biến nhất Ruby on Rails.

    Bây giờ hãy nói về một số lợi ích của Ruby một cách chi tiết hơn.

    Tốc độ phát triển

    Một trong những ưu điểm của Ruby và khung RoR là tốc độ phát triển. Kinh nghiệm cá nhân và kinh nghiệm của đồng nghiệp cho thấy rằng việc giải quyết vấn đề trong Rails nhanh hơn gấp rưỡi so với các framework tương tự khác. Ruby là một công cụ rất đơn giản và có rất nhiều giải pháp có sẵn cho nhiều loại vấn đề khác nhau.

    Công cụ lưu trữ dữ liệu tiêu chuẩn

    Khi phát triển một dự án quy mô lớn, một trong những khía cạnh quan trọng nhất là bộ nhớ đệm. Ruby on Rails đạt tiêu chuẩn với các công cụ lưu trữ dữ liệu tiêu chuẩn. Nghĩa là, bạn sẽ ngay lập tức có các công cụ để lưu trữ dữ liệu vào bộ đệm trong dự án và bạn có thể dễ dàng lưu vào bộ nhớ đệm các khối mã riêng lẻ hoặc thậm chí toàn bộ trang.

    Kiểm tra trước, viết mã sau

    Thông thường, trong quá trình phát triển các dự án lớn, câu hỏi về thử nghiệm sẽ nảy sinh và không có gì lạ khi không có kinh phí bổ sung cho một nhóm người thử nghiệm riêng biệt. Rails cũng có giải pháp cho vấn đề này. Nếu bạn so sánh RoR với các khung khác trong bối cảnh thử nghiệm ứng dụng, bạn sẽ tìm thấy rất nhiều giải pháp làm sẵn cho bất kỳ loại thử nghiệm nào, có thể là tích hợp hoặc đơn vị. Tất cả các thư viện này đều hoạt động tốt. Lý tưởng nhất là trong dự án Ruby on Rails, không có mã nào được viết cho đến khi các bài kiểm tra được viết cho nó. Hệ tư tưởng RoR liên quan đến việc sử dụng ban đầu các phương pháp BDD (Phát triển theo hướng hành vi) hoặc TDD (Phát triển theo hướng thử nghiệm).

    Các tiêu chuẩn quy trình phát triển được chấp nhận phổ biến dành cho nhà phát triển Ruby

    Khi nói đến lợi ích của Ruby, tôi không thể không nhắc đến cộng đồng Ruby. Nó không ngừng lớn mạnh, phát triển và luôn sẵn sàng giúp đỡ. Luôn có người cho bạn biết cách giải quyết vấn đề tốt nhất và chia sẻ kinh nghiệm của họ trong mọi vấn đề.

    Cũng là một điểm rất quan trọng - trong cộng đồng Ruby trong nhiều năm đã có các tiêu chuẩn cho quá trình phát triển, các quy tắc/thỏa thuận cộng đồng nhất định theo đó quá trình phát triển được thực hiện, giúp đơn giản hóa công việc rất nhiều. Do các tiêu chuẩn này, mỗi dự án đều có tính cấu trúc cao, theo đó, một nhà phát triển mới trong nhóm sẽ nhanh chóng bắt kịp tốc độ và hữu ích ngay từ những ngày đầu tiên làm việc. Và hơn thế nữa: nếu dự án được bắt đầu bởi một nhóm và được hoàn thành bởi một nhóm khác, thì đây cũng không phải là vấn đề gì cả. Vì quá trình phát triển được thực hiện theo các quy tắc và thỏa thuận cộng đồng đã đề cập, nhóm mới sẽ nhanh chóng và dễ dàng hiểu dự án và hoàn thành thành công mà không mất nhiều thời gian.

    Ruby on Rails cũng có một số lượng lớn các giải pháp làm sẵn khác nhau trong phạm vi công cộng. Hầu hết các giải pháp đều đã được ai đó triển khai trước bạn và cũng được cộng đồng thử nghiệm, điều này giúp giảm nhu cầu phát triển từ đầu. Đây có thể là xác thực, ủy quyền, hệ thống nhận xét, hệ thống thanh toán, danh sách gửi thư, v.v.

    Các giải pháp làm sẵn cho dự án đa ngôn ngữ

    Rails đi kèm với các công cụ rất mạnh mẽ để bản địa hóa dự án ngay lập tức. Có thể ban đầu vừa cung cấp hỗ trợ cho một số ngôn ngữ vừa triển khai nó sau. Dự án chứa các tệp đặc biệt để dịch thuật ngữ, công cụ hiển thị mẫu bằng các ngôn ngữ khác nhau, v.v.

    Mức độ bảo vệ dữ liệu cao

    Ngày nay, các bài viết về việc hack các tài nguyên khác nhau thường được đăng tải trên mạng. Các nhà phát triển khung Ruby on Rails rất coi trọng vấn đề bảo vệ dữ liệu. RoR ban đầu bao gồm mã hóa mật khẩu, dữ liệu thẻ tín dụng và dữ liệu người dùng cá nhân khác; việc tiêm SQL và tấn công XSS cũng bị loại trừ. Tất cả các tham số đầu vào đều được thoát theo mặc định.

    Học Ruby

    Bây giờ hãy nói về cách chính xác bạn có thể thành thạo Ruby.

    Lý thuyết

    Tất nhiên, chúng ta nên bắt đầu với văn học. Tôi đề xuất các nguồn này:

    • Ruby trong 20 phút là một nguồn tài nguyên tốt cho người mới bắt đầu. Cho phép bạn làm quen với các cấu trúc cơ bản của ngôn ngữ trong vòng chưa đầy nửa giờ và bắt đầu viết các chương trình nhỏ của riêng bạn.
    • Codecademy là một nền tảng với các khóa học trực tuyến về nhiều lĩnh vực khác nhau, bao gồm cả Ruby và Rails thuần túy. Quá trình giáo dục ở đây được cấu trúc khá thú vị, tài liệu lý thuyết được cung cấp và ngay lập tức có nhiệm vụ thực tế để củng cố nó. Các nhiệm vụ cuối cùng sẽ được trả tiền, nhưng ngay cả khi không có chúng, bạn vẫn có thể đạt được các kỹ năng cần thiết.
    • Tài liệu về Ruby và Rails - tập hợp các liên kết đến nhiều trang web và sách khác nhau dành riêng cho việc nghiên cứu về Ruby và Rails.
    • Tôi đặc biệt có thể giới thiệu cuốn sách Flanagan D., Matsumoto Y. “Ngôn ngữ lập trình Ruby”. Nó được coi là một trong những thứ hay nhất, tác giả của nó là người tạo ra ngôn ngữ Ruby.
    • Google :)

    Dưới đây là một số tài nguyên để giúp bạn bắt đầu:

    • w3schools.com/sql - tại đây bạn có thể đọc, thử và kiểm tra kiến ​​thức về SQL của mình.
    • quizful.net/test - tại đây bạn có thể tìm thấy những câu hỏi thường được hỏi trong các cuộc phỏng vấn.

    Tiếng Anh

    Tôi tin rằng không có ích gì khi đi sâu vào chi tiết về điểm này, vì đây là chủ đề của một bài viết riêng. Tiếng Anh rất quan trọng và đây là một thực tế được nhiều người biết đến. Tôi chỉ muốn đề cập ngắn gọn hai điểm quan trọng nhất.

    Thứ nhất, tiếng Anh là ngôn ngữ chính của cộng đồng quốc tế, theo đó, hầu hết các tài liệu hữu ích cũng sẽ bằng tiếng Anh, nhiều tin tức, báo cáo, bài viết quan trọng cũng sẽ xuất hiện đầu tiên bằng tiếng Anh. Nếu bạn muốn biết câu trả lời cho bất kỳ câu hỏi nào, khả năng rất cao là trước hết bạn sẽ tìm thấy nó bằng tiếng Anh.

    Thứ hai, kỹ năng tiếng Anh của bạn càng tốt thì cơ hội tìm được việc làm càng cao. Hầu hết khách hàng là người nước ngoài, do đó, kiến ​​thức về tiếng Anh rất quan trọng để giao tiếp hiệu quả, hiểu rõ các thông số kỹ thuật và liên hệ tốt với khách hàng.

    Luyện tập

    Sau khi nghiên cứu một số tài nguyên, bạn nên chuyển sang phần quan trọng hơn, đó là thực hành. Có rất nhiều ví dụ về nhiệm vụ với một cửa hàng trực tuyến hoặc một blog đơn giản trên Internet (đây là một trong số đó), đặc biệt là khi nói đến Rails. Trong quá trình hoàn thành các nhiệm vụ vốn đã gần với nhiệm vụ thực tế hơn một chút, bạn chắc chắn sẽ gặp phải một số vấn đề và sau đó bạn sẽ chuyển sang rèn luyện một trong những phẩm chất quan trọng nhất - khả năng sử dụng Google. Thật không may, tôi không thể tìm thấy bất kỳ hướng dẫn hoặc khóa học nào dành riêng cho kỹ năng này, nhưng nó chắc chắn đóng một vai trò rất quan trọng trong công việc hàng ngày.

    Khóa học

    Tất nhiên, sau khi đọc lý thuyết và viết một số “dự án thú cưng”, bạn có thể thử đi phỏng vấn, nhưng thường xảy ra trường hợp kiến ​​​​thức này là chưa đủ. Điều này là do lượng ứng viên đổ về quá đông và trong cuộc cạnh tranh, mọi người đều cố gắng nổi bật và chuẩn bị tốt nhất có thể.

    Một điểm quan trọng khác trong đào tạo có thể là một lợi thế có lợi cho bạn khi tìm việc là các khóa học lập trình. Tất nhiên, trừ khi bạn có một người cố vấn sẵn sàng dành một khoảng thời gian nhất định để hoàn thành các bài tập và xem xét chúng.

    Tôi sẽ nói ngay rằng trong mọi trường hợp, tôi khuyên bạn nên tham gia các khóa học mà không có sẵn một số kiến ​​thức. Tôi coi các khóa học là một cách tuyệt vời để củng cố kiến ​​thức thu được thông qua việc tự học. Và bây giờ tôi không cố gắng quảng cáo bất kỳ trường học cụ thể nào, nhưng tôi sẽ giải thích chính xác những lợi ích có thể thu được từ việc này:

    Với khả năng cao là có bạn sẽ học được điều gì đó mà bạn chưa từng biết trước đây. Các khóa học có khối lượng tài liệu khá lớn, được trình bày dưới dạng có cấu trúc, cho phép bạn tiếp thu tài liệu tốt hơn.

    Trong suốt khóa học bạn sẽ có người hướng dẫn, người sẽ xem xét giải pháp cho vấn đề của bạn và chỉ ra những điểm yếu cũng như sai sót.

    Động lực. Điều này chủ yếu dành cho những người cần giúp đỡ về kỷ luật tự giác. Đôi khi thật khó để buộc bản thân phải làm điều gì đó, bất kể triển vọng nào đang rình rập phía trước. Khi tham gia các khóa học, bạn sẽ có thời gian biểu rõ ràng để theo dõi và các bài tập phải hoàn thành nếu không sẽ bị đuổi học. Động lực tài chính cũng đóng một vai trò ở đây trong trường hợp các khóa học trả phí. Rốt cuộc, khi bạn đưa ra số tiền khó kiếm được của mình, bạn sẽ có một thái độ hoàn toàn khác đối với vấn đề này và những suy nghĩ đơn giản là đi dạo sẽ ít nảy sinh hơn nhiều.

    Sự thuận lợi khác - giấy chứng nhận. Rõ ràng là cuối cùng bạn sẽ được đánh giá dựa trên kiến ​​​​thức của mình chứ không phải dựa trên sự hiện diện của những mảnh giấy trong sơ yếu lý lịch của bạn. Tuy nhiên, đây sẽ là một điểm cộng, đặc biệt nếu có một ứng viên có trình độ hiểu biết tương tự nhưng không có bằng chứng tài liệu.

    Cộng một dự án trên GitHubđến con heo đất của bạn. Nếu bạn là một nhà phát triển mới vào nghề, thì rất có thể dự án được viết trong các khóa học sẽ thú vị hơn từ quan điểm công nghệ so với những dự án đã được viết trước đó.

    Và điều quan trọng nhất - thuê người làm. Khi nói về các khóa học, tôi không chỉ muốn nói đến những khóa học mà bạn phải trả tiền. Thông thường các công ty tự tuyển dụng để đào tạo để sau này có thể tuyển dụng những người giỏi nhất. Đây có thể là một khóa học nội bộ hoặc một khóa thực tập/thực tập. Tùy chọn này là tốt nhất, vì bạn không phải trả bất kỳ khoản nào, bạn có được kinh nghiệm và tất cả những lợi thế trên, ngoài ra còn có triển vọng việc làm thực sự. Vào được chúng thì khó hơn, nhưng triển vọng lại có ý nghĩa hơn.

    Tổng cộng

    Ruby là một ngôn ngữ cho phép bạn làm việc mà không gặp nhiều rắc rối và ồn ào như các ngôn ngữ có kiểu gõ mạnh. Bắt đầu với Ruby rất dễ dàng, đặc biệt nếu bạn đã có kinh nghiệm phát triển bằng các ngôn ngữ lập trình khác và bạn sẽ có thể nhanh chóng tạo nguyên mẫu bằng Ruby on Rails. Ở Nhật Bản, nơi nó bắt nguồn, Ruby được sử dụng để tạo trò chơi. Ruby ngắn gọn và đọc giống tiếng Anh, giúp mã dễ hiểu cho người mới bắt đầu.

    Khi nói đến việc học Ruby, tôi muốn nhắc lại: bạn cần bắt đầu từ việc nhỏ. Đọc một vài cuốn sách, tự làm một số bài tập và sau đó, nếu bạn cảm thấy cần phải có thêm kiến ​​thức và kinh nghiệm hoặc có thêm động lực, bạn có thể tham gia các khóa học đã tự mình tích lũy được một lượng kiến ​​thức nhất định.

    Lý tưởng nhất là đây là những khóa học từ một công ty sẽ đưa ra lời đề nghị cho bạn sau khi hoàn thành nếu bạn thể hiện tốt. Một lựa chọn thay thế là các khóa học trả phí sẽ giúp bạn củng cố kiến ​​thức, thêm một dự án khác vào sơ yếu lý lịch của bạn và tích lũy kinh nghiệm, điều này quan trọng nhất khi bắt đầu. Nhưng bạn không nên mong đợi rằng sau khi hoàn thành các khóa học trả phí, bạn sẽ dễ dàng vượt qua cuộc phỏng vấn bằng cách xuất trình chứng chỉ của mình. Trong mọi trường hợp, kiến ​​thức sẽ được đánh giá.

    Đồng thời, nếu bạn có đủ động lực, sự kiên nhẫn, khả năng và kinh nghiệm với các ngôn ngữ lập trình khác, bạn có thể dễ dàng tự mình thành thạo Ruby vì có rất nhiều thông tin hữu ích và có cấu trúc tốt trên Internet. Ngoài ra, nhờ cộng đồng Ruby rộng mở và rộng lớn, bạn có thể dễ dàng tìm thấy câu trả lời trực tuyến cho nhiều câu hỏi có thể có mà khả năng cao là ai đó đã hỏi trước bạn.

    Chúc bạn học tập vui vẻ! Và trong bài viết tiếp theo chúng ta sẽ nói về mã.

    Đăng ký kênh Telegram dành cho cấp dưới của chúng tôi để không bỏ lỡ các vị trí tuyển dụng, thực tập, khóa học, bài viết thú vị.

    Ruby là một trong những ngôn ngữ lập trình trẻ nhất. Người tạo ra nó, Yukihiro Matsumoto (còn được gọi là Matz), một lập trình viên chuyên nghiệp người Nhật, cho biết:<<Я начал разработку Ruby 24 февраля 1993 года. Первая hello world программа на Ruby заработала летом того же года, а aльфа-версия была готова к декабрю 1994.>> Tên của ngôn ngữ này bắt nguồn từ tên của viên đá quý ruby ​​​​(tương tự với một ngôn ngữ lập trình được sử dụng rộng rãi khác là Perl: ngọc trai).

    Đây là cách tác giả mô tả Ruby:<<Это мощный и динамический объектно-ориентированный язык с открытыми исходниками. Ruby работает на многих платформах, включая Linux и другие реализации Unix, MS-DOS, Windows 9x/2000/NT, BeOS и MacOS. Главная цель Ruby — эффективность разработки программ, и пользователи найдут, что программирование на нем эффективно и даже забавно>> .

    Tại Nhật Bản, Ruby đã trở nên phổ biến kể từ phiên bản công khai đầu tiên vào năm 1995, nhưng việc chỉ có tài liệu bằng tiếng Nhật đã hạn chế việc áp dụng thêm nó. Chỉ đến năm 1997, mô tả về Ruby mới xuất hiện bằng tiếng Anh và đến năm 1998, diễn đàn thảo luận về Ruby mới được mở ra. Kể từ thời điểm đó, Ruby bắt đầu hành trình vòng quanh thế giới. Trong năm qua, ba cuốn sách tiếng Anh dành riêng cho ông đã xuất hiện (xem), mặc dù thật không may, chưa có cuốn nào trong số đó được dịch sang tiếng Nga. Ruby hiện được bao gồm trong hầu hết các bản phân phối Linux và cũng có sẵn cho người dùng các hệ điều hành khác.

    Xin lưu ý rằng bài viết này không phải là hướng dẫn tham khảo ngôn ngữ. Phần giới thiệu ngắn gọn có thể được tìm thấy trong sách giáo khoa điện tử và thông tin đầy đủ hơn có thể được tìm thấy trong và cũng như trên các trang Internet đã được đề cập ở trên. Mục đích chính của bài viết là cung cấp cho những người đã quen thuộc với các ngôn ngữ lập trình khác nhau một cái nhìn tổng quát về các tính năng của Ruby, thể hiện sức mạnh và vẻ đẹp của nó, giải thích rằng nó cũng tốt như ngôn ngữ lập trình đầu tiên và như một công cụ cho công việc của một lập trình viên và quản trị viên hệ thống chuyên nghiệp.

    Lập trình viên nói về Ruby

    Trong phần này, chúng tôi sẽ trình bày các tuyên bố về ngôn ngữ Ruby được thu thập từ nhiều nguồn khác nhau, tạm dừng việc xem xét các ví dụ minh họa chúng. Hầu hết các vấn đề sẽ được nêu ra đều giả định rằng người đọc đã có một số kiến ​​thức trong lĩnh vực lý thuyết ngôn ngữ và lập trình hướng đối tượng. Ruby dễ hiểu nhất đối với những người biết Smalltalk, Lisp, C, C++ và Perl.<<Джентльменский>> một bộ Perl, Java và C++ cũng là khởi đầu rất tốt cho việc học Ruby.

    Những người không thể tự hào về kiến ​​thức đó sẽ rất hài lòng khi biết rằng

    * <<если для изучения языка Perl Вам нужно потратить, скажем, три недели, то Python Вы изучите за неделю, а Ruby — за один день!>>

    * <>.

    Trong phần giới thiệu, chúng tôi đã trích dẫn Yukihiro Matsumoto, người tạo ra Ruby. Đây là những gì anh ấy nói về ngôn ngữ này. vậy là Ruby

    * có cú pháp đơn giản;

    * hỗ trợ xử lý ngoại lệ;

    * cho phép bạn xác định lại các toán tử;

    * là một ngôn ngữ hướng đối tượng thuần túy (ngôn ngữ hướng đối tượng hoàn chỉnh, đầy đủ, thuần túy), trong đó, không giống như Java hay Perl, mọi thứ đều là một đối tượng;

    * cho phép bạn làm việc với các số nguyên có kích thước tùy ý;

    * không yêu cầu khai báo biến;

    * sử dụng tiền tố (@, $, @@) để đặt phạm vi của biến;

    * hỗ trợ lập trình đa luồng.

    Một trong những bài báo đầu tiên thu hút sự chú ý đến Ruby là một bài báo hiện đã lỗi thời của Hal Fulton.<<Тридцать семь причин, по которым мне нравится Ruby>>. Dưới đây là một số trong số họ.

    Ruby là một ngôn ngữ năng động. Không giống như các ngôn ngữ tĩnh như C++ hay Java, các phương thức và biến trong Ruby có thể được thêm hoặc ghi đè khi chạy. Ví dụ: điều này cho phép tránh các chỉ thị biên dịch có điều kiện #ifdef được yêu cầu bởi ngôn ngữ C. Đây là nơi phát huy những điểm tương đồng của Ruby với các ngôn ngữ như Lisp và Smalltalk.

    Ruby là một ngôn ngữ thông dịch. Vì thuộc tính này có tác động tiêu cực đến hiệu suất nên tôi muốn đưa ra một số nhận xét. Thứ nhất (và quan trọng nhất), chu kỳ phát triển nhanh là lợi thế quan trọng nhất giúp<<перевешивает>> một số thiếu sót. Thứ hai, mặc dù Ruby không quá chậm, nhưng trong trường hợp tốc độ là thực sự cần thiết, bạn có thể viết một phần mã bằng C. Cuối cùng, thứ ba, không ai nói rằng một ngày nào đó trình biên dịch Ruby sẽ không được viết.

    Ruby có khả năng làm việc với các biểu thức thông thường. Có một thời, chúng chỉ được sử dụng trong một số tiện ích của hệ thống UNIX (grep, sed, vi). Sau đó, nhờ ngôn ngữ Perl, một số lượng đáng kể người đã nhận ra sức mạnh của nó trong việc xử lý văn bản. Ruby giúp bạn có thể khai thác sức mạnh này một cách dễ dàng hơn nữa.

    Hãy nhớ câu nói nổi tiếng của Isaac Newton<<Если я видел дальше, чем другие, то только потому, что стоял на плечах гигантов>>? Ruby chắc chắn là vậy<<стоит на плечах гигантов>>, bao gồm Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell và các ngôn ngữ khác. Ruby chứa đựng tất cả những gì tốt nhất mà nhân loại đã tích lũy được trong lĩnh vực ngôn ngữ lập trình. Đồng thời, ba nguyên tắc sau được tuân thủ: không phát minh lại bánh xe, không sửa chữa những gì không bị hỏng, sử dụng kiến ​​​​thức và kinh nghiệm có sẵn của các lập trình viên. Trong Ruby, kiến ​​thức về các tệp và luồng từ hệ điều hành UNIX và các thông số kỹ thuật của hàm printf từ thư viện đầu vào/đầu ra tiêu chuẩn của ngôn ngữ C và khả năng làm việc với các biểu thức chính quy trong Perl sẽ hữu ích.

    Ruby là một ngôn ngữ kịch bản. Điều này không nên được coi là đặc trưng của ngôn ngữ như<<игрушечный>> hoặc không đủ mạnh. Ngôn ngữ như vậy phải được thông dịch và có khả năng thay thế các tệp bó tương tác với hệ điều hành và kiểm soát hành vi của các chương trình khác.

    Ruby là một ngôn ngữ linh hoạt và linh hoạt. Với sự trợ giúp của nó, bạn có thể triển khai một cách dễ dàng cả những gì được thực hiện theo cách truyền thống bằng trình thông dịch Kornshell và những gì thường được viết bằng C.

    Xét về tính đơn giản và phong phú về khả năng làm việc với chuỗi và mảng, ngôn ngữ Ruby không có đối thủ cạnh tranh. Mảng có tính động và có thể được thao tác như tập hợp, ngăn xếp và hàng đợi. Ngoài ra còn có mảng kết hợp, cách làm việc cũng cực kỳ đơn giản và thuận tiện.

    Một số lượng lớn thư viện đã được viết cho ngôn ngữ Ruby. Chủ đề, ổ cắm, đối tượng được lưu giữa các lần chạy chương trình, chương trình CGI, cơ sở dữ liệu, GUI - tất cả những thứ này có thể được sử dụng khi lập trình trong Ruby.

    Dave Thomas và Andy Hunt, đồng tác giả của cuốn sách Ruby đầu tiên được xuất bản bằng tiếng Anh, đã nói chuyện với Tiến sĩ. Nhật ký của Dobb" (tháng 1 năm 2001) nói:<<Возьмите чисто объектно-ориентированный язык Smalltalk и избавьтесь от его причудливого синтаксиса. Добавьте комфорт и мощь языка Perl, но без всяких специальных случаев и магических преобразований. Заверните получившееся в ясный синтаксис, основанный частично на языке Eiffel, и добавьте понемногу от Scheme, CLU, Sather и Common Lisp. У вас получится Ruby.>> Trên thực tế, điều này có nghĩa là Ruby là kết quả tự nhiên và gần như tất yếu của quá trình phát triển của các ngôn ngữ lập trình hiện đại. Các tác giả của bài viết này đồng ý với quan điểm này.

    Tôi muốn nhấn mạnh rằng Ruby không phải là liều thuốc chữa bách bệnh để giải quyết mọi vấn đề của lập trình viên. Người ta không nên từ bỏ việc sử dụng các ngôn ngữ Java và C++ khi việc sử dụng chúng là hợp lý. Mặt khác, sẽ không khôn ngoan nếu đánh giá thấp ứng dụng thực tế của Ruby trong các dự án thực tế.

    Bây giờ chúng ta hãy cùng lắng nghe phát biểu của những đại diện xuất sắc nhất của cộng đồng lập trình so sánh Ruby với các ngôn ngữ khác.

    Hãy bắt đầu với ngôn ngữ Java:

    * Ruby là ngôn ngữ thông dịch;
    * trong Ruby mọi thứ đều là một đối tượng (trong Java có kiểu int và Integer, điều này gây ra những bất tiện nhất định);
    * các biến trong Ruby không được gõ tĩnh và không yêu cầu khai báo;
    * các mô-đun trong Ruby cho phép bạn sử dụng<<миксинов>> (mixins) xây dựng những điểm tương đồng với các giao diện (interface) của ngôn ngữ Java, đồng thời cho phép triển khai các phương thức trong đó.

    Bây giờ hãy so sánh nó với Perl:

    * Ruby dễ học hơn, dễ lập trình hơn và các chương trình bằng văn bản dễ bảo trì hơn;
    * trong Ruby, tiền tố (@, $, @@) mô tả phạm vi, không phải loại biến;
    * Ruby mượn các biểu thức chính quy, biến $_ và nhiều thứ khác từ Perl.

    Hãy hoàn thành việc so sánh Ruby với các ngôn ngữ khác bằng cách xem xét một trong những ngôn ngữ gần gũi nhất<<конкурентов>> - Ngôn ngữ Python. Sự so sánh này đặc biệt thú vị vì Python hiện được nhiều người coi là ứng cử viên sáng giá cho vai trò ngôn ngữ lập trình đầu tiên. Vì vậy, hãy so sánh Ruby với Python:

    * các cấu trúc và phương thức điều khiển trong ngôn ngữ Ruby kết thúc bằng từ khóa end, trong khi Python sử dụng cái gọi là<<двумерный>> cú pháp khi dấu hiệu hoàn thành là sự thay đổi số khoảng trắng ở đầu dòng tiếp theo của chương trình;
    * thay vì self trong Ruby, tiền tố @ được sử dụng để biểu thị các biến thể hiện;
    * trong Ruby, không giống như Python, các khái niệm về loại và lớp đồng nghĩa với nhau;
    * Python không hỗ trợ kế thừa và không cho phép bạn thêm phương thức vào các kiểu hiện có;
    * thuật toán thu gom rác được sử dụng trong Ruby giúp việc viết triển khai các phương thức trong C trở nên dễ dàng hơn;
    * Các tiện ích mở rộng dành cho Ruby được viết bằng C/C++ cho phép bạn xác định các lớp mới;
    *Ruby thường nhanh hơn Python.

    Và một lần nữa chúng tôi sẽ nhường chỗ cho người tạo ra ngôn ngữ. Tuyên bố của ông về kế hoạch làm việc tiếp theo trên Ruby, được thể hiện dưới dạng một trong những cấu trúc điều khiển của ngôn ngữ, sẽ cho phép chúng ta chuyển sang xem xét các ví dụ về các chương trình thực một cách suôn sẻ.

    vòng lặp đọc và trả lời thư viết mã viết tài liệu/bài báo/sách viết mã kết thúc

    Lập trình viên viết bằng Ruby

    Hãy bắt đầu với các ví dụ cho thấy kiến ​​thức về thư viện đầu vào/đầu ra của ngôn ngữ C và C++ cũng hữu ích trong Ruby.

    printf "Số: %5.2f; Dòng: %s", 1.23, "Xin chào!" endl = "n"; $stdout<< 17 << " красных шариков" << endl line = gets; print line

    Biến toàn cục đặc biệt $_ luôn chứa kết quả của thao tác đọc cuối cùng. Nó cũng được sử dụng làm đối số mặc định trong nhiều cấu trúc. Ví dụ: chương trình sau đây in tất cả các dòng từ luồng đầu vào có chứa từ Ruby.

    while được # gán chuỗi tiếp theo cho một biến $_ if /Ruby/ # khớp nó với mẫu Ruby print # in $_ end end

    ARGF.each ( |line| in dòng nếu dòng =~ /Ruby/ )

    ARGF trong Ruby là một đối tượng đại diện cho việc nối nội dung của tất cả các tệp có tên được đưa ra trên dòng lệnh hoặc đơn giản là luồng đầu vào tiêu chuẩn (trong trường hợp không có đối số).

    Đây là giao diện của một chương trình Ruby để tính giai thừa của một số được đưa ra dưới dạng đối số dòng lệnh:

    def Fact(n) return 1 if n == 0 f = 1 while n>0 f *= n n -= 1 end return f end print Fact(ARGV.to_i), "n"

    Để tính toán bằng chương trình này nằm trong tệp Fact.rb, giá trị là 100! chỉ cần chạy lệnh ruby ​​​​fact.rb 100.

    Ba chương trình bên dưới tính toán đệ quy số Fibonacci thứ 30 so sánh hiệu suất của Ruby, Python và Perl.

    # Ruby def fib(n) if n<2 n else fib(n-2)+fib(n-1) end end print fib(30), "n" # Python def fib(n): if n<2: return n else: return fib(n-2)+fib(n-1) print fib(30) # Perl sub fib { my($n)=@_; if ($n<2) { return $n; } else { return fib($n-2)+fib($n-1); } } print fib(30), "n";

    Một vấn đề kinh điển khác là sử dụng Sàng Eratosthenes để xác định danh sách tất cả các số nguyên tố không vượt quá một số nhất định (100 theo mặc định).

    max = Integer(ARGV.shift || 100) sàng = cho i trong 2 .. max sàng[i] = i kết thúc cho i trong 2 .. Math.sqrt(max) tiếp theo trừ khi sàng[i] (i*i) .step(max, i) do |j| sàng[j] = không có đầu cuối đặt sàng.compact.join ","

    Ví dụ tiếp theo, hãy xem xét giải pháp trong Ruby cho một vấn đề thường được hỏi đối với sinh viên C/C++ năm thứ nhất: đưa ra một tệp văn bản, xác định số lần xuất hiện của mỗi từ trong đó. Việc sử dụng mảng kết hợp và một số kỹ thuật chuỗi và tệp tiêu chuẩn cho phép bạn viết một chương trình cực kỳ ngắn gọn và rõ ràng.

    freq = Hash.new(0) while gets() cho từ trong $_.split(/W+/) freq += 1 đầu cuối cho từ trong freq.keys.sort! in từ, " -- ", tần số, "n" cuối

    Đây là hai ví dụ đơn giản về việc sử dụng thư viện lớp tiêu chuẩn. Kết quả của việc thực hiện chương trình đầu tiên là 7/8+1/8=1 và 7/8*1/8=7/64; cái thứ hai sẽ tính (1 + i)64.

    require "rational" a = Rational(7,8) b = Rational(1,8) print a, "+", b, "=", a+b, "; ", a, "*", b, " =", a*b, "n" require "complex" a = Complex(1,1); in a**64

    Không cần giải thích thêm, đây là hai chương trình tương đương minh họa việc ghi đè toán tử cho lớp SongList. Mảng kết hợp (băm hoặc từ điển) cho phép lập chỉ mục theo các đối tượng tùy ý, không chỉ số nguyên. Trong trường hợp này, nhà điều hành cho phép bạn tìm bài hát mong muốn không chỉ theo số mà còn theo tên của nó.

    class SongList def (key) if key.kind_of?(Integer) return @songs else for i in [email được bảo vệ] return @songs[i] if key == @songs[i].name end end return nil end end class SongList def (key) return @songs if key.kind_of?(Integer) return @songs.find ( |aSong| aSong .name == key ) end end

    Vì Ruby kế thừa những tính năng tốt nhất của nhiều ngôn ngữ nên thường có sẵn một số tùy chọn khác nhau để thực hiện các tác vụ khá chuẩn. Dưới đây là 13 (!) cách khác nhau để gõ các số từ 0 đến 9:

    tôi = 0 tôi = 0 trong khi tôi< 10 begin print i , " " print i , " " i += 1 i += 1 end end while i < 10 i = 0 i = 0 until i >= 10 bắt đầu in i, " " in i, " " i += 1 i += 1 kết thúc kết thúc cho đến khi i >= 10 for i in for i in (0..9) print i, " " print i, " " end end for i in (0...10) 10.times do |i| print i, " " print i, " " end end 0.upto(9) do |i| 9.downto(0) làm |i| print i, " " print i, " " end end (0..9).mỗi do |i| (0...10).mỗi người làm |i| print i, " " print i, " " end end i = 0 vòng lặp làm nếu i< 10 then print i, " " else break end i += 1 end

    Cuối cùng, một câu hỏi dành cho những ai chưa biết Ruby: chương trình sau sẽ in ra cái gì?

    print ["L", "R", "H", "T"].collect ( |x| x.succ )

    Nếu bạn có thể đoán được câu trả lời thì đây sẽ là sự xác nhận tốt nhất về việc Ruby là một ngôn ngữ trực quan. Nếu bạn không đoán được thì bạn sẽ có lý do khác để nghiên cứu nó.

    Ruby và người mới bắt đầu

    Ngôn ngữ này chắc chắn là một trong những ngôn ngữ lập trình đầu tiên tốt nhất. Chu trình phát triển nhanh (chỉnh sửa-chạy-chỉnh sửa), sử dụng trình thông dịch, hướng đối tượng gốc, các biến không cần khai báo - tất cả những điều này cho phép sinh viên tập trung sự chú ý vào các nguyên tắc chung của lập trình.

    Không kém phần quan trọng là tính chất đa nền tảng của Ruby và tư cách thành viên của nó trong thế giới phần mềm miễn phí. Một lập luận có sức thuyết phục khác có lợi cho nó là khả năng sử dụng ngôn ngữ này trong thực tế trong nhiều lĩnh vực khác nhau, điều này sẽ không cho phép một chuyên gia mới bắt đầu phải hối hận vì đã lãng phí thời gian.

    Có thể lưu ý rằng một số lượng đáng kể các yêu cầu được liệt kê ở trên đều được đáp ứng bởi Python, Java, C++ và thậm chí (ở mức độ thấp hơn) Delphi. Tuy nhiên, sản phẩm cuối cùng trong số đó là một sản phẩm thương mại, nên sẽ tự động bị loại khỏi quá trình xem xét. Tuy nhiên, ở Nga, ngay cả trong số những người tổ chức cuộc thi lập trình dành cho học sinh cũng có người cho rằng chi phí phân phối Delphi là khoảng 70 rúp!

    Trước tiên, chúng ta hãy thử so sánh ngôn ngữ Ruby và Java, nhìn chúng qua con mắt của một người mới bắt đầu làm quen với thế giới lập trình. Đối với một người như vậy, sự rõ ràng và ngắn gọn của các chương trình, việc không có những điều kỳ lạ và khó hiểu trong đó là vô cùng quan trọng.<<магических>> từ. Cụ thể, phiên bản Java của chương trình đầu tiên truyền thống chủ yếu bao gồm chúng!

    lớp công khai Xin chào ( public static void main(String args) ( System.out.println("Xin chào thế giới!"); ) )

    Một chương trình tương tự trong Ruby sẽ không mất nhiều thời gian để giải thích:

    đặt "Xin chào thế giới!"

    Ruby là một ngôn ngữ rất thân thiện theo nghĩa này. Một chương trình được viết bởi người mới bắt đầu có thể rất ngắn và không có gì thừa, nhưng việc tạo ra một chương trình như vậy hầu như chỉ đòi hỏi ý thức chung.

    Không giống như ngôn ngữ Java, không có vấn đề gì trong Ruby<<больших>> con số. Các chương trình tính giai thừa của một số hoặc số Fibonacci ở trên, khi viết bằng Ruby, luôn cho kết quả chính xác. Trong trường hợp ngôn ngữ Java, những hạn chế về phạm vi số nguyên có thể biểu diễn dẫn đến những đẳng thức vô lý (theo quan điểm của một học sinh hoặc sinh viên năm thứ nhất) như

    Một bất ngờ khó chịu đối với một người mới bắt đầu học lập trình!

    Một yếu tố quan trọng khác là tính đơn giản của các phương thức Ruby sử dụng để nhập dữ liệu từ bàn phím hoặc từ một tệp. Trong trường hợp ngôn ngữ Java, sự phức tạp của các thao tác này phải được che giấu cẩn thận, bảo vệ người mới bắt đầu khỏi những vấn đề không cần thiết.

    Tính nhỏ gọn của bản phân phối Ruby và dễ dàng cài đặt trên bất kỳ hệ điều hành nào cho phép học sinh hoặc sinh viên làm việc trên máy tính ở nhà mà không gặp vấn đề gì. Một lần nữa sự so sánh không có lợi cho Java!

    Python tương tự như Ruby về nhiều mặt. Trong số những khác biệt nêu trên giữa hai ngôn ngữ này, đối với tình huống đào tạo lập trình ban đầu mà chúng tôi đang xem xét, nó hóa ra lại đặc biệt quan trọng.<<двумерный>> cú pháp được sử dụng trong ngôn ngữ Python. Tính năng này ban đầu không rõ ràng và gây cản trở lúc đầu. Nói chung, lập luận chính ủng hộ Ruby như ngôn ngữ lập trình đầu tiên là sự rõ ràng và dễ dự đoán về mặt trực quan của nó chứ không phải nhiều ưu điểm khác.

    Ruby và các chuyên gia

    Ruby có gì tốt cho một lập trình viên và quản trị hệ thống chuyên nghiệp? Phần lớn đã được nói ở trên, nhưng đây là một số ví dụ thú vị hơn và nhận xét ngắn gọn.