Trang chủTác giảLiên hệ

Khi bạn thích code PHP nhưng sếp bạn lại "bắt" code Ruby :))

By Nguyễn Trung Nghĩa
Published in Ruby
June 14, 2021
2 min read

Có một thực tế là nếu chúng đã quá quen hay gắn bó lâu với một điều gì đó, chắc hẳn khi tiếp xúc với những thứ mới lạ, khác với điều mình vẫn thường quen thuộc thì sự so sánh, đối chiếu sẽ tự nhiên xuất hiện. Mình nghĩ sự so sánh này là một điều tốt, nó giúp chúng ta có cái nhìn bao quát, khách quan và toàn diện hơn (à ý mình là trừ việc so sánh “nym” với “nyc” nhé :v ). Công việc coding cũng vậy, bản thân mình xuất phát điểm từ PHP và đang chuyển sang code Ruby nên mình luôn muốn biết ông thần Ruby này có những điểm gì giống và khác với PHP. Và sau đây là những ý kiến cá nhân cũng như những điều mình tìm kiếm, tham khảo được từ nhiều nguồn về 2 người anh em cùng cha khác ông nội này :D

Cùng cha

PHP và Ruby có rất nhiều điểm tương đồng, không giống nhau hoàn toàn nhưng cũng na ná nhau . Kiểu như 1 ông “có gì đâu” 1 ông “có chi mô” vậy :D

  • PHP dùng Composer, còn Ruby dùng Gem để quản lý thư viện.
  • Khai báo biến đều không cần chỉ rõ kiểu biến.
  • Kiểu dữ liệu boolean vẫn là truefalse.
  • null trong PHP thì được gọi là nil trong Ruby.
  • Ruby có thêm kiểu Hashes (cú pháp: {"a" => "b"}) về bản chất là mảng 2 chiều trong PHP (cú pháp: ["a" => "b"]).
  • Nhúng biến vào trong chuỗi dùng cặp nháy kép " (PHP: "My name is $name", Ruby: "My name is #{name}").
  • Hoặc nhúng biến vào chuỗi bằng hàm dựng sẵn thì cả 2 ngôn ngữ đều hỗ trợ hàm eval().
  • Ruby và PHP đều có Class và các Access modifiers đặc trưng của hướng đối tượng như public,protected,private.
  • … vân vân và mây mây…

Khác ông nội

  • Với Ruby mọi thứ đều là đối tượng, nên bạn có thể gọi [1,2,3].max thay vì max([1,2,3]).

  • Ruby không cần ; ở cuối dòng code.

  • Syntax trong Ruby rất linh hoạt. VD:

    if a > 0 a *= 2 end

hoặc viết thế này a *= 2 if a > 0, thích hack não thì viết thế này a *= 2 unless a <= 0 đều được @@.

  • Ruby sẽ không có abstract hay interface.

  • Hashes thì không thể chuyển thành mảng và ngược lại.

  • Cái này mới ảo: nil sẽ trả về false trong câu điều kiện nhưng 0, [], "" lại trả về true :3

  • Hàm trong Ruby ta không cần return mà mặc định biến cuối cùng của hàm chính là thứ được trả về của hàm đó.

  • Nghe chừng syntax Ruby gọn và dễ viết hơn nhưng về loại biến thì lại phức tạp hơn PHP. Nếu PHP chỉ cần dấu $ để ra biến (VD: $name) thì Ruby có đến 4 loại biến:

    name - Biến local: phạm vi sử dụng phụ thuộc vào vị trí khai báo. $name - Biến global: gọi chỗ nào cũng được. @name - Biến instance: phạm vi sử dụng trong toàn class chứa nó nhưng chỉ có giá trị trong 1 instance cụ thể được khởi tạo từ class đó. @@name - Biến class: tất cả instance khởi tạo từ 1 class sẽ dùng chung biến này (tương tự biến static trong OOP).

Và tất nhiên còn rất nhiều sự khác biệt trong cú pháp của 2 ngôn ngữ này, mình sẽ để dành và trình bày cụ thể trong một bài viết khác nhé :D


Nguyễn Trung Nghĩa

Developer

© 2021, All Rights Reserved.

Quick Links

Liên hệ quảng cáoThông tinLiên hệ

Social Media