Học JAVA có KHÓ KHÔNG???
Bạn đang quan tâm về Java và muốn tìm hiểu xem thực sự "HỌC JAVA CÓ KHÓ KHÔNG???".
Mình cũng "đã từng" thắc mắc tương tự như bạn.
Và mình đã có câu trả lời cho riêng mình. (Sau một thời gian dài ==')
Hôm nay, mình sẽ giải thích kỹ hơn một chút về câu hỏi "Học Java có khó không?".
Vì nhiều người nói Học Python dễ nên bài viết này mình sẽ sử dụng Python để minh họa.
Tham khảo: Học Python có khó không?
Java và Python là hai trong số các ngôn ngữ lập trình phổ biến nhất kể từ năm 2019. Cả hai đều rất mạnh mẽ.
Tuy nhiên, hai ngôn ngữ này rất khác nhau.
Do đó, hầu hết những người mới bắt đầu học lập trình đều bị nhầm lẫn khi đưa ra lựa chọn giữa hai thứ này làm ngôn ngữ lập trình đầu tiên của họ.
Lưu ý: Ở đây mình không đưa ra kết luận ngôn ngữ nào tốt hơn. Cả Java và Python đều có những ưu điểm và nhược điểm riêng.
"Ngoặc nhọn" Không khiến việc Học Java khó khăn hơn. Thậm chí ngược lại.
Bạn có thể từng nghe Python dễ hơn bởi vì Python không sử dụng ngoặc nhọn "{}".
Trong khi Java sử dụng dấu ngoặc nhọn { }
như nhiều ngôn ngữ lập trình phổ biến khác như PHP, C++, C# và JavaScript.
// Java sử dụng ngoặc nhọn
// Tạo một class
public class Student {
private String firstName = "Hải";
// Phương thức
public void sayHello() {
System.out.println("Xin chào, " + firstName);
}
public static void main (String[] args) {
Stutdent myStudentInstance = new Student();
myStudentInstance.sayHello();
}
}
Python không sử dụng ngoặc nhọn, nó sử dụng thụt lề để phân chia các khối code.
# Python sử dụng thụt lề
class Student:
def __init__(self, first_name):
self.first_name = "Hải"
def say_hello(self):
print("Xin chào, " + first_name)
my_student_instance = Student()
my_student_instance.say_hello()
Nhiều lập trình viên thích thụt lề của Python. (Mình cũng thích :D)
Mặc dù Java nhiều hơn vài dấu ngoặc so với Python.
Nhưng việc viết dấu ngoặc nhọn này không có khó. Đồng ý không?
Vấn đề khó khăn chỉ xảy ra khi code gặp vấn đề.
Vì bây giờ bạn phải nhìn lại xem các đoạn code móc xích như thế nào với nhau, các lệnh nào nằm trong phạm vi nào.
Lúc này,
Với dấu ngoặc nhọn trực quan...
Mình chắc chắn, đọc code Java dễ hơn hơn là code Python.
Vấn đề này không lớn đối với người đã có kinh nghiệm. Tuy nhiên, đối với người mới học lập trình thì có thể có chút khó.
Hơn nữa, trong Python:
-
Thụt lề phải được thực hiện bằng cách ấn
tab
-
Nếu bạn thụt lề bằng khoảng trắng (ấn dấu cách
space
) thì toàn bộ logic của chương trình sẽ bị sai
Ví dụ:
def say_hello():
print("Hải") # Mình sử dụng phím tab để thụt lề
print("Ô Mai Gót") # Còn sử dụng space tạo thụt lề ở đây
# Bạn thấy có gì khác nhau không?
# KHÔNG!
# Nhưng logic lại bị sai.
Theo mình, nếu chương trình có nhiều dòng code.
Việc phân chia các đoạn code bằng thụt lề còn khó nhìn hơn so với phân chia bằng dấu ngoặc nhọn như Java.
Không hề ngược đời: Ngôn ngữ kiểu Static như Java dễ học hơn ngôn ngữ kiểu Dynamic?
Static - type vs Dynamic - type
Một lý do phổ biến nhất khiến nhiều người cho rằng học Java khó bởi vì Java là ngôn ngữ lập trình kiểu Static (Static Type Programming).
Có nghĩa là, mọi thứ trong chương trình Java phải được khai báo rõ ràng.
Trong khi trong ngôn ngữ kiểu Dynamic (Dynamic Type Programming) như Python thì không cần.
Chắc chắn, việc khai báo rõ ràng sẽ làm cho code dài hơn một chút.
Tuy nhiên, theo mình đánh giá, việc khai báo rõ ràng giúp bạn kiểm soát chương trình của mình chặt chẽ hơn nhiều.
Và vẫn phải nói lại,
Vấn đề "KHÓ" khi học lập trình thực tế là "KHÓ XỬ LÝ KHI LỖI XẢY RA"
Chứ không phải vấn đề cú pháp.
Thế nên, việc khai báo rõ ràng bạn sẽ nhận thức được tất cả mọi thứ xảy ra trong code của mình.
Hãy xem ví dụ dưới đây:
int number = 10;
char character = 'a';
Ở đây,
Ngay cả những người vừa mới tìm hiểu về lập trình cũng sẽ nhanh chóng hiểu rằng biến number
là kiểu int
, biến character
là kiểu char
.
Vì Python là ngôn ngữ kiểu Dynamic nên nó không cần khai báo kiểu dữ liệu.
Vì thế, người mới bắt đầu học có thể không nhận thức rõ loại biến họ đã khai báo.
Nó sẽ có rắc rối sau này khi có vấn đề xảy ra.
Xem ví dụ về cách bạn định nghĩa một biến trong Python bên dưới:
number = 10
character = 'a'
score = 7.5
Cách khai báo biến này chắc chắn ngắn hơn.
Nhưng liệu bạn có biết biến score
là kiểu double
hay là float
không?
Và hãy xem lại ví dụ đầu tiên, trong Java:
// Tạo một class
public class Student {
private String firstName = "Hải";
// Phương thức sayHello()
public void sayHello() {
System.out.println("Xin chào, " + firstName);
}
public static void main(String[] args) {
Student myStudentInstance = new Student();
myStudentInstance.sayHello();
}
}
Và trong Python.
# Python sử dụng thụt lề
class Student:
def __init__(self, first_name):
self.first_name = "Hải"
def say_hello(self):
print("Xin chào, " + first_name)
my_student_instance = Student()
my_student_instance.say_hello()
Như bạn thấy, trong ví dụ Java, chúng ta biết ngay là class Student
là công khai (public
), biến firstName
là private
Và hàm sayHello()
có kiểu trả về là void
.
Vậy, trong Python, bạn có thể biết được kiểu trả về của hàm say_Hello()
là gì không?
Hầu hết những người mới bắt đầu học Python không thể trả lời, nhưng những người học Java thì có.
Ở đây, mình muốn nói là.
Dù khi lập trình Java sẽ dài hơn bởi vì phải khai báo rõ ràng hơn.
Nhưng điều này không hề khó, nó có quy tắc.
Và nó làm cho code của bạn
"RÕ RÀNG - TRỰC QUAN - CHẶT CHẼ"
Và bạn sẽ DỄ xử lý mỗi khi chương trình gặp vấn đề.
Đây mới là điều các lập trình viên chuyên nghiệp cần.
Học Java không khó bởi viết Java ít lỗi ngầm hơn.
Bản chất kiểu Static của Java khiến các lập trình viên ít mắc lỗi hơn vì nó chứa các quy tắc nghiêm ngặt về lập trình, nó kiểm tra mọi thứ tại thời gian biên dịch (Compiler time).
Vì chương trình Java không thực thi ngay cả khi chỉ có một lỗi thời gian biên dịch duy nhất (lỗi xuất hiện trước khi chương trình thực thi), các lập trình viên buộc phải giải quyết tất cả các lỗi này.
Do đó, có ít khả năng xảy ra lỗi Runtime (các lỗi xuất hiện sau khi chương trình thực thi).
Điều này rất quan trọng vì các lỗi run time error rất khó bắt và gỡ lỗi so với các lỗi thời gian biên dịch (compiler error).
Với ngôn ngữ Dynamic như kiểu Python thì bạn sẽ mất nhiều thời gian để mà tìm, sửa lỗi hơn.
Thế nên, bạn biết gì rồi đấy.
Kết luận: Học Java dễ hơn bởi vì tìm và sửa lỗi dễ hơn.
Học Java không khó bởi vì Code Java dễ phân tích.
Một lần nữa, học Java không hề khó bởi vì tính nghiêm ngặt của Java khiến cho code Java dễ phân tích.
Vì thế, bạn có thể dễ dàng hiểu một ví dụ code Java.
Bạn dễ dàng nắm bắt được cách viết code của những người khác.
Từ đó, nhìn vào cách người khác code bạn cũng có thể học theo nhanh hơn.
Việc hỗ trợ nhau trong học lập trình Java cũng sẽ dễ dàng hơn bởi vì:
JAVA LÀ MINH BẠCH!
Ngược lại, kiểu Dynamic, có những thứ được ẩn (hoặc không trực quan) khiến nhiều lúc lần mò không ra đầu mối nếu như bạn không có kinh nghiệm.
Hơn nữa,
Cú pháp của Java tương đồng với nhiều ngôn ngữ phổ biến khác.
Do đó, khi chuyển từ ngôn ngữ Java sang ngôn ngữ khác bạn sẽ thấy học chúng không hề khó.
Chứ nếu bạn học ngôn ngữ kiểu Dynamic rồi chuyển sang học thêm ngôn ngữ kiểu Static thì sẽ rất vất vả.
Có nghĩa là, học Java không khó trong dài hạn.
Có chăng chỉ là cần phải ghi nhớ khá nhiều cú pháp hơn lúc mới bắt đầu mà thôi.
Tuy nhiên, cú pháp là thứ dễ học nhất trong lập trình rồi.
Bạn có câu trả lời "Học Java có khó không" chưa?
Thực tế, đối với những điều cơ bản, ngôn ngữ Java yêu cầu nhiều chặt chẽ, chỉn chu hơn một số ngôn ngữ kiểu Dynamic khác.
Một khi bạn đã quen với cú pháp Java thông qua luyện tập.
Bạn sẽ thấy việc triển khai, kiểm soát chương trình Java dễ dàng hơn khá nhiều so với ngôn ngữ kiểu Dynamic khác.
Còn, tùy thuộc vào bạn giải quyết vấn đề gì mà từng ngôn ngữ có ưu điểm, nhược điểm riêng.
Tóm lại, Học Java có khó không còn phụ thuộc vào bạn đang ở giai đoạn nào.
-
Giai đoạn mới tiếp xúc với cú pháp Java có thể sẽ Khó nếu chưa có kinh nghiệm. Tuy nhiên, giai đoạn sau, Học Java có thể dễ hơn.
-
Ngôn ngữ kiểu Dynamic thì ngược lại, có thể giai đoạn đầu dễ bởi cú pháp "Tùy tiện". Nhưng giai đoạn sau thì sẽ phát sinh nhiều vấn đề hơn là Java.
Nếu bạn muốn có người hỗ trợ để Học Java không còn khó khăn thì đăng ký tham gia ngay KHÓA HỌC JAVA Ở HÀ NỘI
---
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 làm Lập trình viên. Hành độ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: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #icthanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #python #java #php