Hướng dẫn python vs java syntax - cú pháp python và java

Bạn phân vân không biết nên học Python hay Java? Bạn muốn biết đâu là ngôn ngữ lập trình phù hợp nhất với bạn? Đây là câu trả lời!Python hay Java? Bạn muốn biết đâu là ngôn ngữ lập trình phù hợp nhất với bạn? Đây là câu trả lời!

Theo báo cáo Octoverse hàng năm của GitHub, Java và Python là ngôn ngữ phổ biến thứ hai và thứ ba trong năm thứ tư liên tiếp.Octoverse hàng năm của GitHub, Java và Python là ngôn ngữ phổ biến thứ hai và thứ ba trong năm thứ tư liên tiếp.

Và Python là một trong mười ngôn ngữ phát triển nhanh nhất. Trong khi hầu hết ngôn ngữ phát triển nhanh khác là các ngôn ngữ mới ra đời, thì Python lại ngược lại. Nó tồn tại còn lâu hơn cả Java.

Tại thời điểm mình viết bài này, chỉ số TIOBE cho thấy Java đứng thứ nhất và Python đứng thứ ba.TIOBE cho thấy Java đứng thứ nhất và Python đứng thứ ba.

Còn Khảo sát Hệ sinh thái lập trình viên của Jetbrains thì cho kết quả ngôn ngữ thường được các lập trình viên sử dụng trong 12 tháng qua cho thấy Java và Python đang bám sát nhau với vị trí thứ 4 và thứ 5.Jetbrains thì cho kết quả ngôn ngữ thường được các lập trình viên sử dụng trong 12 tháng qua cho thấy Java và Python đang bám sát nhau với vị trí thứ 4 và thứ 5.

Python VS Java năm 2020

Python và Java có nhiều điểm tương đồng. Cả hai ngôn ngữ đều có sự hỗ trợ đa nền tảng mạnh mẽ và các thư viện tiêu chuẩn rộng lớn.Java nhiều điểm tương đồng. Cả hai ngôn ngữ đều có sự hỗ trợ đa nền tảng mạnh mẽ và các thư viện tiêu chuẩn rộng lớn.

Cả hai đều coi (gần như) mọi thứ là đối tượng.

Cả hai ngôn ngữ đều biên dịch thành bytecode, nhưng Python (thường) được biên dịch khi chạy (runtime).

Cả hai đều là thành viên của gia đình Algol, mặc dù Python hơi lệch khỏi C / C ++ hơn Java.

Sự hỗ trợ cho Python 2.x đã kết thúc vào ngày 1 tháng 1 năm 2020.

Trong một thời gian dài, quá trình phát triển Python đã bị phân mảnh giữa phiên bản 2.7 và các phiên bản thường xuyên của các phiên bản 3.x mới.

Nhưng, với ngày kết thúc của Python 2 đã được định sẵn, cộng đồng đã tập trung vào Python 3x.

> Python 3.9 có gì hot?Python 3.9 có gì hot?

Trong khi đó, mô hình phát hành mới của Oracle giành cho Java tạo ra rất nhiều sự lo lắng, nó không chắc chắn và dấy lên nghi ngờ trong cộng đồng lập trình viên.

Mặc dù thông báo cung cấp tùy chọn miễn phí và đường dẫn nâng cấp rõ ràng, sự nhầm lẫn vẫn tiếp tục xảy ra trong hệ sinh thái Java.

Một số nhà cung cấp nền tảng, như Red Hat và Amazon, đã tham gia để hỗ trợ OpenJDK.

Nhưng cộng đồng Java thống nhất, mạnh mẽ một thời đã bị phân mảnh hơn cộng đồng Python.

Đó là một số vấn đề ở phía nhà phát hành.

Vậy thì để biết bạn NÊN HỌC NGÔN NGỮ NÀO thì tiếp tục đọc phần so sánh Python với Java qua những ví dụ dưới đây:NÊN HỌC NGÔN NGỮ NÀO thì tiếp tục đọc phần so sánh Python với Java qua những ví dụ dưới đây:

Hướng dẫn python vs java syntax - cú pháp python và java

So sánh Python với Java

1. So sánh Kiểu gõ của Python với Java

Python và Java đều là ngôn ngữ lập trình hướng đối tượng, nhưng Java sử dụng các kiểu tĩnh (static type), trong khi Python là động (dybnamic).Java đều là ngôn ngữ lập trình hướng đối tượng, nhưng Java sử dụng các kiểu tĩnh (static type), trong khi Python là động (dybnamic).

Đây là sự khác biệt đáng kể nhất và ảnh hưởng đến cách bạn thiết kế, viết và khắc phục sự cố chương trình Python và Java theo cách khác nhau.

Hãy cùng xem xét hai ví dụ về code dưới đây.

Đầu tiên, trong Python, chúng ta sẽ tạo một mảng với một số dữ liệu trong đó và in nó ra console.


stuff = ["Hello, World!", "Hi there, Everyone!", 6]  = ["Hello, World!""Hi there, Everyone!"6]

for i in stuff: i in stuff:

print(i)  (i)
 


 

Tiếp theo, trong Java:

public static void main(String args[]) { static void main(String args[]) {

// Tạo một mảng String

String array[] = {"Hello, World", "Hi there, Everyone", "6"};  array[] = {"Hello, World""Hi there, Everyone""6"};

// Lặp qua các phần tử của mảng

for (String i : array) { (String i : array) {

// In ra các phần tử

System.out.println(i);.out.println(i);

}

}

}  
 

Trong Python, chúng ta đặt hai chuỗi và một số nguyên trong cùng một mảng và sau đó in nội dung.

Đối với Java, chúng ta đã khai báo mảng String và đặt ba chuỗi vào đó.

Chúng ta không thể trộn các kiểu dữ liệu của một mảng trong Java.

Viết code Java như dưới đây sẽ không thể biên dịch.

String array[] = {"Hello, World", "Hi there, Everyone", 6};   array[] = {"Hello, World""Hi there, Everyone"6};
 

Chúng ta có thể khai báo mảng là chứa Object thay vì String và thực hiện override.

Nhưng, đó không phải là cách mà các lập trình viên Java sử dụng.

Trong Python, chúng ta không phải cung cấp một kiểu dữ liệu khi chúng ta khai báo mảng và có thể đặt bất cứ thứ gì chúng ta muốn vào nó.

Nó khác với Java để đảm bảo rằng chúng ta không sử dụng sai dữ liệu.

Ví dụ, nếu chúng ta sửa đổi code ở trên để làm điều này thì sao?

stuff = ["Hello, World!", "Hi there, Everyone!", 6]  = ["Hello, World!""Hi there, Everyone!"6]

for i in stuff: i in stuff:

print(i)  (i + " Foobar!")
 


Tiếp theo, trong Java:

// Tạo một mảng String

String array[] = {"Hello, World", "Hi there, Everyone", "6"}; Dynamic type và Static type là gì?

// Lặp qua các phần tử của mảng

// In ra các phần tử

Kiểm tra tại thời gian biên dịch có lợi hay như thế nào thì vẫn còn là vấn đề tranh luận.

Nhưng rõ ràng, Static type rất chặt chẽ về mặt dữ liệu và được nhiều lập trình viên đánh giá cao.Static type rất chặt chẽ về mặt dữ liệu và được nhiều lập trình viên đánh giá cao.

Cho dù Static type có ngăn ngừa được lỗi hay không (phụ thuộc nhiều vào lập trình viên), nó vẫn sẽ làm cho chương trình chạy nhanh hơn.

Một trình biên dịch làm việc với code kiểu static type có thể tối ưu hóa tốt hơn cho nền tảng đích.

Ngoài ra, bạn tránh các lỗi runtime, được thêm một điểm cộng về hiệu suất.

Code được viết với Dynamic type có xu hướng ngắn gọn hơn các ngôn ngữ Static.Dynamic type có xu hướng ngắn gọn hơn các ngôn ngữ Static.

Bởi vì các biến không cần khai báo kiểu dữ liệu và kiểu dữ liệu có thể thay đổi.

Điều này lưu một bản sao hoặc chuyển đổi kiểu sang khai báo biến mới.

Ngoài ra, câu hỏi về khả năng đọc code xuất hiện thường xuyên trong các cuộc so sánh giữa Python và Java.khả năng đọc code xuất hiện thường xuyên trong các cuộc so sánh giữa Python và Java.

2. Khả năng đọc code và định dạng của Python so với Java

Hãy lấy một ví dụ từ Python và Java để so sánh chúng khả năng đọc và định dạng của 2 ngôn ngữ lập trình này.

Trong ví dụ dưới đây, chúng ta cần mở một tệp văn bản lớn và thu thập từng dòng thành các bộ 50 bản ghi được phân tách bằng dấu phẩy.

Đây là code Python:

def get_symbols(file_name): get_symbols(file_name):

with open(file_name, "r") as in_file: open(file_name"r"as in_file:

records = [] = []

count = 0 = 0

symbol_set = "" = ""

for line in in_file:  line in in_file:

symbol_set = symbol_set + line[:-1] + ',' = symbol_set + line[:-1] + ','

count = count + 1 = count + 1

if count % 50 == 0: count % 50 == 0:

records.append(symbol_set).append(symbol_set)

symbol_set = "" = ""

symbols.append(symbol_set) symbol_set)

return records   records
 

Còn đây là code Java:

List getSymbols(String filename) throws IOException {<StringgetSymbols(String filenamethrows IOException {

List records = new ArrayList();<Stringrecords = new ArrayList<>();

try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {  (BufferedReader reader = new BufferedReader(new FileReader(filename))) {

String line; line;

int count = 0; count = 0;

StringBuilder symbol_set = new StringBuilder(); symbol_set = new StringBuilder();

while ((line = reader.readLine()) != null) { ((line = reader.readLine()) != null) {

symbol_set.append(line).append(","); .append(line).append(",");

count++;++;

if ((count % 50) == 0) { ((count % 50) == 0) {

records.add(symbol_set.toString());.add(symbol_set.toString());

symbol_set.setLength(0);.setLength(0);

}

}

records.add(symbol_set.toString());.add(symbol_set.toString());

return records; records;

}

}  
 

Sự khác nhau về Khoảng trắng

Khoảng trắng là một phần của cú pháp Python, trong khi Java bỏ qua nó.

Python sử dụng các tab để lồng khối và dấu hai chấm để bắt đầu các vòng lặp và các khối có điều kiện.

Java bỏ qua khoảng trắng và sử dụng dấu chấm phẩy, dấu ngoặc đơn và dấu ngoặc nhọn.

Các tranh luận về việc code nào dễ đọc hơn, như tranh luận về Static type so với Dynamic type, nó là Static type so với Dynamic type, nó là

chủ quan.

Một số người nói code Python ngắn gọn và thống nhất hơn Java vì các lựa chọn định dạng của bạn bị hạn chế hơn.

Việc sử dụng khoảng trắng của Python kết thúc các cuộc tranh luận về cách định dạng mã.

Tùy chọn duy nhất bạn còn lại là cách sử dụng các dòng trống.

Đoạn code Python ngắn hơn một vài dòng so với đoạn code Java, sự khác biệt này rõ hơn trong các chương trình lớn.code Java, sự khác biệt này rõ hơn trong các chương trình lớn.

Còn Phần lớn sự khác biệt này là không thực sự gọi là cách mạng.

Nhưng nói gì thì nói, Code Python vẫn ngắn gọn hơn so với Java.

Khả năng làm việc với tập tin của Python và Java

Hãy để xem xét cách hai ngôn ngữ Python và Java xử lý tập tin.

Đây là đoạn code Python:

with open(file_name, "r") as in_file:   open(file_name"r"as in_file:
 

Đây là code Java:

try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {}   (BufferedReader reader = new BufferedReader(new FileReader(filename))) {}
 

Trong cả hai trường hợp, khai báo tạo ra một khối. Tệp cần đọc vẫn nằm trong phạm vi và các ngôn ngữ sẽ đóng nó khi thoát khỏi khối.

Trong Python, chúng ta đã mở một tệp và đọc từ nó. Khi vòng lặp đến cuối tập tin, vòng lặp sẽ thoát.

Java thì phức tạp hơn.

Chúng ta đã mở một BufferedReader bằng cách chuyển nó thành FileReader.

Chúng ta đọc qua từng dòng một. Nó có trách nhiệm kiểm tra null khi tập tin kết thúc.

while ((line = reader.readLine()) != null) {}   ((line = reader.readLine()) != null) {}
 

Điều này chứng tỏ rằng, chúng ta có thể dễ dàng xử lý các tệp văn bản trong Python hơn là Java.

Nó cho thấy Java có xu hướng "dài dòng văn tự" hơn Python.

Nếu bạn áp dụng tiêu chuẩn viết code Python, nó còn có thể ngắn gọn hơn.

Java đã phát triển trong vài lần phát hành trước đây, với việc giới thiệu try-with-resources trong Java 7 và lambda Java 8 đem đến một cách xử lý tập tin mới...

...nhưng dù sao Java vẫn là một ngôn ngữ dài dòng.

Hãy xem lại ví dụ đầu tiên của chúng ta.

Đây là Code Python:

stuff = ["Hello, World!", "Hi there, Everyone!", 6] = ["Hello, World!""Hi there, Everyone!"6]

for i in stuff: i in stuff:

print(i)  (i)
 

Đây là Code Java:

public static void main(String args[]) {  static void main(String args[]) {

String array[] = { "Hello, World", "Hi there, Everyone", "6" }; array[] = { "Hello, World""Hi there, Everyone""6" };

for (String i : array) { (String i : array) {

System.out.println(i);.out.println(i);

}

}

}  
 

Python sẽ chạy một tập lệnh từ đầu đến cuối tập tin.

Java thì yêu cầu ít nhất một điểm bắt đầu, nó luôn đọc phương thức static có tên là main trước (bất kể nó được đặt ở đâu).

JVM (máy ảo Java) chạy phương thức này trong class được truyền cho nó trên dòng lệnh.máy ảo Java) chạy phương thức này trong class được truyền cho nó trên dòng lệnh.

Đặt chúng lại cùng nhau, chúng ta thấy chương trình Python có xu hướng nhanh hơn và dễ dàng viết hơn là trong Java.

Điều này đặc biệt đúng với các chương trình tiện ích để thao tác các tệp hoặc lấy dữ liệu từ tài nguyên web.

3. So sánh hiệu năng Python và Java


Hướng dẫn python vs java syntax - cú pháp python và java

Hiệu năng của Python so với Java

Cả Java và Python đều biên dịch thành bytecode và chạy trong các máy ảo. Điều này làm cho 2 ngôn ngữ này trở nên đa nền tảng.

Nhưng có một sự khác biệt quan trọng.

Python thường biên dịch code trong thời gian chạy (runtime)

Trong khi Java biên dịch code trước runtime.

Hầu hết các JVM thực hiện biên dịch đúng lúc (Just-in-time) cho tất cả hoặc một phần chương trình thành native code, giúp cải thiện đáng kể hiệu năng.

Dòng chính của Python thì không làm điều này, nhưng một vài biến thể như PyPy thì có.PyPy thì có.

Sự khác biệt nữa là hiệu năng giữa Python và Java có cách biệt khá đáng kể trong một số trường hợp.hiệu năng giữa Python và Java có cách biệt khá đáng kể trong một số trường hợp.

Ví dụ

Một thử nghiệm binary tree đơn giản chạy trong Java nhanh gấp 10 lần trong Python.

(Xem thử nghiệm hiệu năng tại đây)tại đây)

Cuối cùng: Nên học Java hay Python?

Thông qua so sánh Python và Java ở trên bạn đã biết nên học Ngôn ngữ nào chưa?so sánh Python và Java ở trên bạn đã biết nên học Ngôn ngữ nào chưa?

Mô hình hỗ trợ mới của Oracle đầy đủ thay đổi hệ sinh thái Java. Mặc dù vẫn còn một tùy chọn miễn phí, mô hình hỗ trợ và lịch phát hành mới sẽ khiến nhiều lập trình viên thích miễn phí không thích lắm.

Các máy khách Java sẽ cần trả tiền cho Oracle để được hỗ trợ, thay đổi các phiên bản OpenJDK một cách thường xuyên hoặc dựa vào các bên thứ ba như Red Hat hoặc Amazon để sửa lỗi và cập nhật bảo mật.

Trong khi đó, ngược lại với Java, Python đã xóa bỏ một rào cản đáng kể với Python 3.

Python lần đầu tiên có một mô hình hỗ trợ thống nhất hơn Java và các nhà phát triển nguồn mở đang tập trung nỗ lực của họ vào phiên bản Python mới nhất.

Kiểu Dynamic của Python có tốt hơn cách tiếp cận Static của Java hay không là do tính chủ quan.

Có thể bạn thích phong cách tự do thì sẽ thích Python. Nhưng những lập trình viên khác thích mọi thứ được kiểm soát chặt chẽ thì sẽ thích Java.

Nhưng đối với các bạn mới bắt đầu học lập trình. Dynamic type mang lại một lợi thế lớn, nó khiến cho: Python dễ học hơn nhiều so với Java (thậm chí Python còn dễ học hơn so với PHP)Python dễ học hơn nhiều so với Java (thậm chí Python còn dễ học hơn so với PHP)

Tham khảo ngay!  
 

Còn đối với mình, sau khi đã làm việc với các dự án lớn bằng cả hai ngôn ngữ Python và Java, mình cảm thấy khi nói rằng cú pháp Python ngắn gọn hơn Java là đúng.

Dễ dàng hơn để khởi động và chạy nhanh với một dự án mới trong Python so với Java. Điểm này Python hơn Java.

Hiệu năng là thứ mà Java có lợi thế đáng kể so với Python. Trình biên dịch Just-in-time của Java mang lại cho nó một lợi thế lớn so với hiệu suất Python.

Mặc dù không có ngôn ngữ nào là tốt nhất cho tất cả các ứng dụng hiệu suất cao. Nhưng Java vẫn được xem xét trước khi cần tốc độ.

Tuy nhiên, khi xem xét đến tổng thể, lợi thế của Python vượt trội hơn những nhược điểm.

Nếu bạn chưa từng để ý đến Python vì hiệu năng của nó, hãy thử nhìn nó theo khía cạnh khác xem.

Bởi vì bây giờ Python đã khác, thị trường công nghệ cũng đã khác rồi.Python đã khác, thị trường công nghệ cũng đã khác rồi.

Thực tế #1: Không có dự án lớn nào lại chỉ dùng một công nghệ. Python và Java có thể kết hợp để tạo ra các hệ thống tốt hơn. Quan trọng là yêu cầu hệ thống thế nào mà thôi.

Thực tế #2: Hiện tại, người ta dùng JAVA để làm web, app. Python dùng để làm khoa học dữ liệu (Mặc dù python có thể làm web, nhưng nếu làm web thì PHP và JAVA có ưu thế hơn), .... Mục đích khá là khác nhau

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0383.180086

Email:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php