Làm cách nào để bạn chuyển từ Java sang Ruby?
Trong hướng dẫn này, bạn sẽ tìm hiểu sự khác biệt chính là gì giữa hai ngôn ngữ để giúp bạn thực hiện một bước nhảy vọt.
Thật tuyệt vời cho nhiều người đang muốn chuyển từ Java / C # sang Ruby.
Nhưng…
Nếu bạn chỉ tò mò về sự khác biệt, thì điều này cũng dành cho bạn.
Hãy làm điều này!
Nhập tĩnh so với Nhập động
Kiểu gõ là điểm khác biệt lớn nhất và đáng chú ý nhất khi xem mã cho một trong hai ngôn ngữ lập trình.
Đây là tình huống :
- Java sử dụng tính năng nhập tĩnh
- Ruby sử dụng kiểu nhập động
Chính xác thì điều đó có nghĩa là gì?
Nhập đề cập đến cách hoạt động của các biến và đối số phương thức.
Một ngôn ngữ được định kiểu mạnh (hoặc tĩnh) phải khai báo kiểu (lớp) nào mà mọi biến có thể chấp nhận.
Có vẻ như thế này :
int n = 1;
Ở đâu int
là kiểu, trong trường hợp này là Integer
.
Tại sao điều đó lại hữu ích?
Bởi vì nếu bạn cố gắng gán bất kỳ loại đối tượng nào khác cho biến này, trình biên dịch sẽ phát sinh lỗi và chương trình của bạn thậm chí sẽ không thể chạy.
Điều này có nghĩa là bạn sẽ luôn biết mình đang làm việc với loại đối tượng nào.
Với nhược điểm là kém linh hoạt.
Ngược lại…
Nhập động là tất cả về tính linh hoạt, các biến không bị ràng buộc với một loại cụ thể, vì vậy loại có thể thay đổi.
Đây là một ví dụ :
n = 1 n = "abc"
Nhược điểm là bạn có thể gặp nhiều lỗi hơn nếu mã của bạn cẩu thả và bạn không hiểu được nhiều khi đọc mã.
Đó là một trong những điểm khác biệt chính!
Xem thêm trong phần tiếp theo.
Cú pháp:Simple Things &Boilerplate
Java là vua của boilerplate.
Boilerplate là tất cả mã "thiết lập" mà bạn phải thêm vào chỉ để làm cho mã của bạn hợp lệ về mặt cú pháp.
Kết quả là…
Java làm cho mọi thứ ĐƠN GIẢN trở nên phức tạp!
Xin chào thế giới bằng Java :
class Hello { static public void main() { System.out.println("Hello World"); } }
Sau đó, bạn phải biên dịch tệp này thành tệp lớp và chạy nó.
Hai bước!
(IDE trợ giúp việc này.)
Một điểm khác biệt nữa là các biểu thức trong Java kết thúc bằng dấu chấm phẩy, điều này không bắt buộc trong Ruby. Bạn cũng có thể bỏ ngoặc đơn trong Ruby, hầu hết thời gian.
Xin chào thế giới bằng Ruby :
puts "Hello World"
Đúng.
Thế là xong.
Có vẻ như Ruby dẫn đến mã sạch hơn. Đồng ý?
Trên hết…
Bạn có thể chạy mã này bằng một lệnh duy nhất từ một thiết bị đầu cuối!
Không cần bước biên dịch.
Chơi với mã:REPL tích hợp sẵn
Ruby đi kèm với irb, giúp việc kiểm tra một đoạn mã thực sự nhanh chóng.
Bạn thậm chí không cần lưu tệp.
Hoặc mở một trình chỉnh sửa!
Java không có tính năng này tích hợp sẵn, ít nhất là nó không có cho đến Java 9.
Tên tệp và tổ chức tệp
Java buộc một cấu trúc và tổ chức đặt tên tệp cụ thể.
Ví dụ :
Nếu bạn có một lớp (công khai) có tên Hello
, tên tệp PHẢI là Hello.java
.
Đây không phải là trường hợp của Ruby.
Ngoài ra, chúng tôi không có khái niệm về một lớp riêng trong Ruby.
Xử lý ngoại lệ
Java có hai loại ngoại lệ:
- Đã kiểm tra ngoại lệ
- Ngoại lệ bỏ chọn
Sự khác biệt?
Bạn PHẢI xử lý các ngoại lệ đã kiểm tra!
Hoặc chương trình của bạn thậm chí sẽ không chạy.
Bây giờ :
Ruby chỉ có một loại ngoại lệ.
Bạn có thể xử lý nó nếu bạn muốn, thông dịch viên sẽ không phàn nàn về điều đó, nhưng nó có thể làm hỏng chương trình của bạn.
Cấp phép trình biên dịch &ngôn ngữ
Cuối cùng, hãy nói về cấp phép.
Đây thường không phải là vấn đề với các ngôn ngữ lập trình.
Tại sao?
Bởi vì chúng là mã nguồn mở, với một người là nhà thiết kế và bảo trì chính.
Java khác ở đây.
Nó cho một tập đoàn lớn (Oracle) và có ý nghĩa đối với việc cấp phép của nó.
Thực tế :
Có hai phiên bản thời gian chạy Java, “Oracle JDK”, (nếu tôi hiểu chính xác) bắt đầu với phiên bản 9 là một sản phẩm thương mại.
Sau đó, bạn có “Open JDK”, cũng thuộc về Oracle.
Nhưng nó có giấy phép nguồn mở.
Thư viện &Phân phối Mã
Một sự khác biệt CHỦ YẾU khác, một trong những mục yêu thích của tôi (cũng là mục yêu thích của Matz) về Ruby là RubyGems.
Nó làm cho việc phân phối thư viện (như máy khách HTTP) dễ dàng hơn nhiều.
Bởi vì :
- Có một kho lưu trữ trung tâm
- Nó được tích hợp vào ngôn ngữ
- Nhiều đá quý mã nguồn mở có sẵn và dễ tìm
Theo như tôi biết, Java không có bất kỳ thứ gì gần giống với điều này, vì vậy đây là một chiến thắng lớn cho Ruby.
Tóm tắt
Bạn đã biết về sự khác biệt chính giữa Java và Ruby. Bao gồm những thứ như nhập tĩnh, bảng soạn sẵn và đặt tên tệp.
Bây giờ, bạn đã chuẩn bị tốt hơn để hiểu về Ruby để có thể đưa ra quyết định chính xác cho mình.
Cảm ơn vì đã đọc! 🙂