Hướng dẫn what can java do that python cannot? - java có thể làm gì mà python không thể?

Những gì Python có thể làm Java không thể -

Nothing.

Những gì Java có thể làm nhưng Python không thể -

  • Java là một ông chủ đa luồng. Vì vậy, nếu bạn đang cố gắng viết một máy chủ web, trong đó nhiều yêu cầu đến cùng một lúc, Java chỉ có thể sinh ra nhiều luồng và CPU hoán đổi chúng. Đó là lý do tại sao hầu hết tất cả các công ty lớn [Expedia, LinkedIn, Goldman, Amazon, Netflix, City, JPMC, Visa gần như tất cả] sử dụng máy chủ web JVM cho ứng dụng chính của họ.

Cpython có một thứ gọi là Gil, ngăn chặn việc sử dụng luồng cấp độ OS một cách hiệu quả. Làm thế nào các máy chủ ứng dụng Python [Gunicorn, Django ..] Làm việc sau đó? Vâng, họ tạo ra các quy trình mới thay vì chủ đề. Chủ đề rất nhẹ, vì vậy các quy trình mới thay vì các luồng vẫn hoạt động cho đến khi ngưỡng, nhưng không phải là một giải pháp rất có thể mở rộng.

  • Tốc độ thực hiện tuyệt đối - Khi bạn dùng var a = 1. và sau đó thực hiện a = 10,07, bạn chỉ lưu trữ giá trị float trong một biến được lưu trữ trước đó một số nguyên. Khi các biến được gán một giá trị mới sau đó, Python tạo một đối tượng mới để lưu trữ giá trị. Con trỏ này sau đó được gán cho biến, đây được gọi là ràng buộc động. Liên kết động [python] chậm hơn liên kết tĩnh [Java] - vì nó yêu cầu tạo đối tượng. Và các loại nguyên thủy Java hoặc C/C ++ là thứ tự nhanh hơn vì liên kết tĩnh.

  • Không gian được sử dụng [sử dụng RAM] - Không gian mặc định Python sử dụng để lưu trữ một biến là rất lớn.

>>> import math, sys
>>> a=0
>>> sys.getsizeof[a]
24

Nhưng trong Java, bạn có thể lấy một biến kích thước byte, sẽ chỉ mất một byte. Vì vậy, không ai viết một ứng dụng trong Python nếu được yêu cầu viết phần mềm tiết kiệm bộ nhớ [nghĩ về bạn được yêu cầu tạo cơ sở dữ liệu như Cassandra, có thể thiết kế một công cụ tính toán như Spark].

  • Bao bì - Trong Java, bạn có thể tạo ra một cái gì đó giống như một cái lọ. Có thể chạy trên bất kỳ máy nào nơi JVM được cài đặt. và cái bình chứa tất cả các phụ thuộc. Trong Python, bạn không thể chỉ gửi thứ gì đó như một cái lọ, bạn sẽ phải viết một tập lệnh để cài đặt các phụ thuộc vào mọi máy bạn muốn chạy mã của mình.

Hãy suy nghĩ xem nếu Android là một ứng dụng Python, trước khi cài đặt một ứng dụng từ cửa hàng Play, bạn phải cài đặt các phụ thuộc của ứng dụng đó một cách riêng biệt.

  • Màn biểu diễn . Màn biểu diễn . Màn biểu diễn -

Hiệu quả của Java, phần lớn đến từ trình biên dịch chỉ trong thời gian [JIT] và hỗ trợ cho sự đồng thời. Trình biên dịch JIT là một phần của môi trường thời gian chạy Java. Nó cải thiện hiệu suất của các chương trình Java bằng cách biên dịch mã byte vào mã máy gốc, chỉ trong thời gian để chạy. Máy ảo Java [JVM] gọi trực tiếp mã được biên dịch. Vì mã không được giải thích, việc biên dịch không yêu cầu sử dụng thời gian và bộ nhớ của bộ xử lý. Về mặt lý thuyết, điều này có thể làm cho một chương trình Java nhanh như một ứng dụng gốc.

Trong khi các chương trình Java được biên soạn trực tiếp, Python được giải thích làm chậm các chương trình Python trong thời gian chạy. Xác định loại biến xảy ra trong thời gian chạy làm tăng khối lượng công việc của trình thông dịch. Ngoài ra, việc ghi nhớ loại đối tượng của các đối tượng được lấy từ các đối tượng container góp phần sử dụng bộ nhớ.

Chúng ta có thể tiếp tục ...

Mọi người sử dụng Python vì Python rất dễ học, dễ sử dụng. Rất nhiều thư viện cho ML / Datascience, v.v. Điều đó giúp bạn tiết kiệm mã hóa. Nhưng nếu bạn được yêu cầu viết một ứng dụng biểu diễn, có thể mở rộng, bền, dài hạn, những người hiểu Comp Sci, sẽ luôn chọn Java hoặc C/C ++

Các dự án của bạn càng lớn, bạn sẽ càng muốn các loại tĩnh. Tôi sẽ ủng hộ việc sử dụng chúng từ phút đầu tiên nhưng rất nhiều người nói khác.

Thành thật mà nói nếu bạn đang tự hỏi liệu có nên học một ngôn ngữ khác không lãng phí thời gian của bạn vào một trong hai người. Cả hai sẽ không làm cho bạn trở thành một nhà phát triển tốt hơn, hoặc khiến bạn suy nghĩ về mã khác nhau. Trừ khi có một số tính năng cụ thể cho một hệ sinh thái một ngôn ngữ thì hãy học một cái gì đó thú vị. Học một ngôn ngữ chức năng, học một Lisp, học C, học gỉ. Nếu bạn rất cần một số thư viện Java sử dụng scala hoặc clojure.

"Một ngôn ngữ không thay đổi cách bạn nghĩ về các chương trình không đáng để học" - tôi. Tôi hoàn toàn làm điều đó ngay bây giờ. Tôi không chỉ nói điều đó bởi vì tôi không thể nhớ nếu Donald Knuth nói hay không, tôi thực sự đã nói điều đó.

Python đã trở nên phổ biến hơn Java. Google Trends cho thấy sự nổi tiếng của Python đã tăng lên trên Java năm 2017:

[Source]

Xu hướng này có thể gây ra do sử dụng tuyệt vời của Python, và Java, sử dụng tốt hơn cho mã sản xuất. Có nhiều thử nghiệm hơn mã sản xuất.

Java là một ngôn ngữ được đánh máy và biên dịch tĩnh, và Python là một ngôn ngữ được đánh máy và giải thích động. Sự khác biệt duy nhất này giúp Java nhanh hơn trong thời gian chạy và dễ gỡ lỗi hơn, nhưng Python dễ sử dụng hơn và dễ đọc hơn.

Python đã trở nên phổ biến, phần lớn, do tính giao tiếp của nó; Mọi người chỉ nắm bắt nó dễ dàng hơn. Với nó, các thư viện cho Python là rất lớn, vì vậy một lập trình viên mới sẽ không phải bắt đầu lại từ đầu. Java đã cũ và vẫn được sử dụng rộng rãi, vì vậy nó cũng có rất nhiều thư viện và cộng đồng để hỗ trợ.

Bây giờ, hãy để Lừa xem theo chiều sâu này, bao gồm một số ví dụ về mã để minh họa sự khác biệt giữa Python và Java.

Tổng quan về Python

Python được phát hành lần đầu tiên vào năm 1991. Đây là một ngôn ngữ lập trình mục đích chung, cấp cao, cấp cao. Nó là hướng đối tượng.

Được thiết kế bởi Guido Van Rossum, Python thực sự có một triết lý thiết kế tập trung vào khả năng đọc mã. Cộng đồng Python sẽ phân loại mã khác nhau dựa trên mức độ pythonic của mã.

Khi nào nên sử dụng Python

Các thư viện Python sườn cho phép một lập trình viên bắt đầu nhanh chóng. Hiếm khi họ sẽ cần bắt đầu từ đầu. Nếu một lập trình viên muốn nhảy vào học máy, thì có một thư viện cho điều đó. Nếu họ muốn tạo ra một biểu đồ đẹp, thì có một thư viện cho điều đó. Nếu họ muốn có một thanh tiến trình được hiển thị trong CLI của họ, thì có một thư viện cho điều đó.

Nói chung, Python là LEGO của các ngôn ngữ lập trình; Tìm một hộp với hướng dẫn về cách sử dụng nó và làm việc. Có rất ít cần phải bắt đầu từ đầu.

Vì khả năng dễ đọc của nó, Python là tuyệt vời cho:

  1. Lập trình viên mới
  2. Nhận ý tưởng nhanh chóng
  3. Chia sẻ mã với những người khác

Tổng quan về Java

Java đã già. Java là một ngôn ngữ lập trình đa năng, sử dụng các lớp và, giống như Python, được định hướng đối tượng.

Java được phát triển bởi James Gosling tại Sun Microsystems, được phát hành năm 1995 như một phần của nền tảng Java của Sun Microsystem. Java đã chuyển đổi trải nghiệm web từ các trang văn bản đơn giản sang các trang với video và hoạt hình.

Khi nào nên sử dụng Java

Java được thiết kế để chạy ở bất cứ đâu. Nó sử dụng máy ảo Java [JVM] để giải thích mã biên dịch. JVM hoạt động như trình thông dịch và trình phát hiện lỗi riêng.

Với mối quan hệ với Sun Microsystems, Java là ngôn ngữ phía máy chủ được sử dụng rộng rãi nhất. Mặc dù không còn như vậy, Java đã trị vì trong một thời gian dài và thu hút một cộng đồng lớn, vì vậy nó tiếp tục có rất nhiều sự hỗ trợ.

Lập trình trong Java có thể dễ dàng vì Java có nhiều thư viện được xây dựng trên đó, giúp dễ dàng tìm thấy mã đã được viết cho một mục đích cụ thể.

Ai sử dụng Python & Java?

Python thường được sử dụng với các lập trình viên mới hoặc nhà phát triển cơ sở nhập vai trò khoa học dữ liệu. Các thư viện học máy lớn, Tensorflow và Pytorch, đều được viết bằng Python.

Python có các thư viện xử lý dữ liệu tuyệt vời với gấu trúc và dask, và khả năng trực quan hóa dữ liệu tốt với các gói như matplotlib và seeborn.

Java được sử dụng rất nhiều cho phát triển web. Nó là phổ biến hơn trong số các lập trình viên cấp cao. Nó cho phép lập trình không đồng bộ và có một cộng đồng xử lý ngôn ngữ tự nhiên kha khá.

Cả hai ngôn ngữ có thể được sử dụng trong các tương tác API và cho học máy. Java được phát triển tốt hơn để xây dựng các ứng dụng web. Thư viện Flask Python vẫn chỉ có thể xây dựng những điều cơ bản thành giao diện người dùng dựa trên Python nhưng rất tuyệt vời để tạo ra một back-end Python với điểm cuối API.

Python vs Java trong mã

Hãy cùng xem cách Java và Python hoạt động khác nhau.

Cú pháp

Bởi vì Python là một ngôn ngữ được giải thích, cú pháp của nó ngắn gọn hơn Java, giúp bắt đầu dễ dàng hơn và các chương trình thử nghiệm nhanh chóng và dễ dàng. Bạn có thể nhập các dòng ngay trong thiết bị đầu cuối, nơi Java cần biên dịch toàn bộ chương trình để chạy.

Nhập Python và sau đó 3+2 và máy tính phản hồi với 5.

python
3+2
5

Cân nhắc làm điều này với Java. Java không có trình thông dịch dòng lệnh [CLI], vì vậy, để in 5 như chúng tôi đã làm ở trên, chúng tôi phải viết một chương trình hoàn chỉnh và sau đó biên dịch nó. Đây là in5.java:

public class Print5 {
public static void main[String[] args] {
System.out.println["3+2=" + [Integer.toString[3+2]]];
}
}

Để biên dịch nó, nhập javac print5.java và chạy nó với java print5.

java Print5
3+2=5

Với Java, chúng tôi đã phải tạo một chương trình hoàn chỉnh để in 5. bao gồm một lớp và chức năng chính, cho Java bắt đầu từ đâu.

Chúng tôi cũng có thể có một chức năng chính với Python, điều mà bạn thường làm khi bạn muốn vượt qua các đối số. Có vẻ như thế này:

def main[]:
print['3+2=', 3+2]
if __name__== "__main__":
main[]

Các lớp học

Mã Python chạy từ trên xuống dưới, trừ khi bạn nói nó bắt đầu từ đâu. Nhưng bạn cũng có thể tạo ra các lớp học, như có thể với Java, như thế này:

Lớp Python

class Number:
def __init__[self, left, right]:
self.left = left
self.right = right
number = Number[3, 2]
print["3+2=", number.left + number.right]

Lớp, số, có hai biến thành viên trái và phải. Trình xây dựng mặc định là __init__. Chúng tôi khởi tạo đối tượng bằng cách gọi số Constructor = Số [3, 2]. Sau đó, chúng ta có thể tham khảo các biến trong lớp là number.left và number.right. Đề cập đến các biến trực tiếp như thế này được cau mày trong Java. Thay vào đó, các hàm getter và setter được sử dụng như hình dưới đây.Number, has two member variables left and right. The default constructor is __init__. We instantiate the object by calling the constructor number = Number[3, 2]. We can then refer to the variables in the class as number.left and number.right. Referring to variables directly like this is frowned upon in Java. Instead, getter and setter functions are used as shown below.

Đây là cách bạn sẽ làm điều tương tự trong Java. Như bạn có thể thấy nó là Wordy, đó là khiếu nại chính mà mọi người có với Java. Dưới đây chúng tôi giải thích một số mã này.

Lớp Java với các chức năng Getter và Setter

class PrintNumber {
int left;
int right;
PrintNumber[int left, int right] {
this.left = left;
this.right = right;
}
public int getleft[] {
return left;
}
public int getRight[] {
return right;
}
}
public class Print5 {
public static void main[String[] args] {
PrintNumber printNumber = new PrintNumber [3,2];
String sum = Integer.toString[printNumber.getleft[]
+ printNumber.getRight[] ];
System.out.println["3+2=" + sum];
}
}

Python nhẹ nhàng trong điều trị các biến số. Ví dụ, nó có thể in các đối tượng từ điển tự động. Với Java, cần phải sử dụng một hàm đặc biệt in từ điển. Python cũng đúc các biến của một loại này sang loại khác để giúp dễ dàng in các chuỗi và số nguyên.

Mặt khác, Java có kiểm tra loại nghiêm ngặt. Điều này giúp tránh lỗi thời gian chạy. Dưới đây chúng tôi tuyên bố một loạt các chuỗi gọi là args.array of Strings called args.

String[] args

Bạn thường đặt mỗi lớp Java trong tệp riêng của mình. Nhưng ở đây chúng tôi đặt hai lớp trong một tệp để làm cho việc biên dịch và chạy mã đơn giản hơn. Chúng ta có:

class PrintNumber {
int left;
int right;
}

Lớp đó có hai biến thành viên trái và phải. Ở Python, chúng tôi không cần phải tuyên bố chúng trước. Chúng tôi chỉ làm điều đó trên đường bay bằng cách sử dụng đối tượng tự.left and right. In Python, we did not need to declare them first. We just did that on-the-fly using the self object.

Trong hầu hết các trường hợp, các biến Java phải là riêng tư, có nghĩa là bạn không thể tham khảo chúng trực tiếp bên ngoài lớp. Thay vào đó, bạn sử dụng các hàm getter để truy xuất giá trị của chúng. Như thế này.private, meaning you cannot refer to them directly outside of the class. Instead you use getter functions to retrieve their value. Like this.

public int getleft[] {
return left;
}

Vì vậy, trong chức năng chính, chúng tôi khởi tạo lớp đó và truy xuất các giá trị của nó:main function, we instantiate that class and retrieve its values:

python
3+2
5
0

Trường hợp Python nhẹ nhàng trong việc điều trị các biến số, Java thì không.

Ví dụ: chúng ta không thể kết nối và in số và chữ của hai chuỗi.“3+2=” + 3 + 2. So, we have to use the function above to convert each integer to a string Integer.toString[], and then print the concatenation of two strings.

Tìm hiểu cả Java & Python

Cả hai ngôn ngữ lập trình đều phù hợp với nhiều người và có các cộng đồng lớn đằng sau họ. Học một người không có nghĩa là bạn có thể học được các lập trình viên khác của người khác mạo hiểm vào nhiều ngôn ngữ. Và học nhiều có thể củng cố sự hiểu biết về ngôn ngữ lập trình hoàn toàn.

Bằng nhiều biện pháp, Python là phương pháp đơn giản hơn để học và di chuyển sang Java sau đó là có thể.

Đọc liên quan

  • BMC DevOps Blog
  • Sử dụng Python cho Dữ liệu & Phân tích lớn
  • Vai trò và trách nhiệm của nhà phát triển Java
  • 10 cuốn sách phải đọc cho các nhà phát triển Java
  • Chương trình hàng đầu & Hội nghị Dev phần mềm năm 2020
  • Java vs Go: Điều gì khác biệt?

Những bài đăng này là của riêng tôi và không nhất thiết phải đại diện cho vị trí, chiến lược hoặc ý kiến ​​của BMC.

Xem một lỗi hoặc có một gợi ý? Vui lòng cho chúng tôi biết bằng cách gửi email.

Java có thể làm gì tốt hơn Python?

Cả hai ngôn ngữ có thể được sử dụng trong các tương tác API và cho học máy. Java được phát triển tốt hơn để xây dựng các ứng dụng web. Thư viện Flask của Python vẫn chỉ có thể xây dựng những điều cơ bản thành giao diện người dùng dựa trên Python nhưng rất tuyệt vời để tạo ra một back-end Python với điểm cuối API.building web applications. Python's Flask library is still only able to build the basics to a Python-based UI but is great for creating a Python back-end with an API endpoint.

Python có thể tiếp quản Java không?

Có một số khía cạnh phổ biến giữa Java và Python nhưng chúng không giống nhau 100%. Điều này thể hiện sự không chắc chắn lớn về việc Python có thay thế Java hay không. Một nhà phát triển Java không thể chuyển tất cả mã sang Python, do đó Java vẫn ở lại.It is not possible for a Java developer to switch all the code over to Python, hence Java stays.

Python có thể làm những điều tương tự như Java không?

Cả hai ngôn ngữ đều có hỗ trợ đa nền tảng mạnh mẽ và các thư viện tiêu chuẩn rộng rãi.Cả hai đều coi [gần] mọi thứ là đối tượng.Cả hai ngôn ngữ biên dịch theo mã byte, nhưng Python [thường] được biên dịch khi chạy.Cả hai đều là thành viên của gia đình Algol, mặc dù Python đi chệch khỏi C/C ++ so với Java.Both languages compile to bytecode, but Python is [usually] compiled at runtime. They are both members of the Algol family, although Python deviates further from C/C++ than Java does.

Java có thua Python không?

Vâng, Java đã được biết là hoạt động tốt hơn Python.Nó thường nhanh hơn vì nó là một ngôn ngữ được biên dịch.. It is generally faster because it is a compiled language.

Bài Viết Liên Quan

Chủ Đề