Tại sao Python không phải là ngôn ngữ lập trình của tương lai?

AgroInfoServ: Rất nhiều người hoài cổ ngôn ngữ lập trình như FORTRAN hay BASIC. Họ biện luận rằng hệ thống thư viện khổng lồ của FORTRAN, đặc biệt là các thư viện khoa học vẫn tồn tại và được sử dụng trên toàn cầu. Họ nói FORTRAN chạy nhanh và mạnh nên nó vẫn sẽ phải tồn tại. Một số khác thì nói NASA vẫn đang dùng ngôn ngữ BASIC trong điều khiển hệ thống tối mật của họ với đĩa mềm 3.5 inches.
Chúng tôi cho rằng đa số những người đó là những người bảo thủ, ít cập nhật và thuộc về thế hệ những năm 1970. Họ quên mất một điều quan trọng là máy tính bây giờ khác xa ngày xưa, khiến cho cái gọi là "nhanh" của FORTRAN chẳng thể nào gây nên sự khác biệt với C++ hay Basic.NET. Chưa kẻ vấn đề giao diện thân thiện, kết nối Internet và lập trình di động đang là xu thế gần như bắt buộc với các lập trình viên. Một kỷ nguyên Internet vạn vật (IOT) và phân tích dữ liệu lớn (Big Data) đòi hỏi nhiều hơn một ngôn ngữ như FORTRAN.
Số phận của Python rồi cũng đến hồi kết mặc dù đóng góp của ngôn ngữ này là rất to lớn. Tính bảo mật thấp, sự yếu kém của một ngôn ngữ thông dịch, khả năng phát triển ứng dụng di động... thực sự là rào cản với ngôn ngữ này. Trong ngành phân tích dữ liệu, Python hiện đang là "ông trùm" nhưng rồi đỉnh cao cũng sẽ qua đi và Python sẽ dần bị thay thế. Chúng tôi vẫn dùng Python cho phân tích dữ liệu nhưng chúng tôi cũng đã chuẩn bị cho một tương lai không có Python.
Bài viết dưới đây được AgroInfoServ tham khảo của Rhea Moutafis từ tạp chí Towards Data Science đăng ngày 31/3/2020. Mời bạn đọc cùng nghiên cứu.
Phải mất một vài thập kỷ để được đánh giá cao, nhưng kể từ đầu năm 2010, Python đã bùng nổ - và cuối cùng đã vượt qua mức độ phổ biến của C, C #, Java và JavaScript.


Nhưng đến khi nào thì xu hướng đó sẽ tiếp tục? Khi nào Python cuối cùng sẽ được thay thế bởi các ngôn ngữ khác, và tại sao?

Dự đoán ngày kết thúc chính cho Python sẽ rất khó, giống như bạn đang viết một câu chuyện hoa học viễn tưởng. Thay vào đó, tôi sẽ đánh giá các đặc tính đang thúc đẩy sự phổ biến của Python, ngay bây giờ và những điểm yếu sẽ phá vỡ nó trong tương lai.

Điều gì làm cho Python trở nên phổ biến đến vậy?

Thành công Python Python được phản ánh trong các xu hướng Stack Overflow, đo lường số lượng thẻ trong các bài đăng trên nền tảng. Với kích thước của StackOverflow, đây là một chỉ số tốt cho sự phổ biến ngôn ngữ.

Trong khi ngôn ngữ R đã lên đỉnh và đi ngang trong vài năm qua và nhiều ngôn ngữ khác đang giảm dần, tốc độ tăng trưởng của Python dường như không thể ngăn cản. Gần 14% trong số tất cả các câu hỏi của StackOverflow được gắn thẻ Python, và xu hướng đang tăng lên. Và có một số lý do cho điều đó.

Một ngôn ngữ cũ kỹ

Python đã có từ những năm 1990. Điều đó không chỉ có nghĩa là nó đã có nhiều thời gian để phát triển. Nó cũng đã có được một cộng đồng lớn và hỗ trợ.

Vì vậy, nếu bạn có bất kỳ vấn đề nào trong khi lập trình bằng Python, tỷ lệ cược cao là bạn sẽ có thể giải quyết nó bằng một tìm kiếm Google duy nhất. Đơn giản vì ai đó đã gặp phải vấn đề của bạn và đã viết một cái gì đó hữu ích về nó.

Nó thân thiện với người mới bắt đầu

Python không chỉ thực tế là đã tồn tại trong nhiều thập kỷ, cho các lập trình viên thời gian để thực hiện các hướng dẫn tuyệt vời, hơn thế nữa, cú pháp của Python rất dễ đọc.

Để bắt đầu, ở đó, không cần chỉ định kiểu dữ liệu, bạn chỉ cần khai báo một biến; Python sẽ hiểu từ ngữ cảnh cho dù nó có một số nguyên, giá trị float, boolean hay cái gì khác. Đây là một lợi thế rất lớn cho người mới bắt đầu. Nếu bạn đã từng phải lập trình trong C ++, bạn sẽ biết chương trình của mình đã giành được phần biên dịch như thế nào vì bạn đã trao đổi một số float cho một số nguyên.

Và nếu bạn từng phải đọc mã Python và C ++ cạnh nhau, bạn sẽ biết Python dễ hiểu như thế nào. Mặc dù C ++ được thiết kế dành cho người Anh, nhưng nó lại rất khó đọc so với mã Python.

Một ngôn ngữ đa năng

Vì Python đã xuất hiện từ rất lâu, nên các nhà phát triển đã tạo ra một phần mềm cho mọi mục đích. Những ngày này, bạn có thể tìm thấy một phần mềm cho hầu hết mọi thứ.
  • Bạn muốn tính toán các con số, vectơ và ma trận? NumPy có thể là sự lựa chọn của bạn.
  • Bạn muốn làm tính toán cho công nghệ và kỹ thuật? Sử dụng SciPy.
  • Bạn muốn chơi lớn trong thao tác và phân tích dữ liệu lớn? Chơi gấu trúc Pandas đi.
  • Bạn muốn bắt đầu với Trí tuệ nhân tạo? Tại sao không sử dụng Scikit-Learn.
Bất cứ nhiệm vụ tính toán nào mà bạn đang cố gắng quản lý, rất có thể là có một gói Python cho nó. Điều này làm cho Python luôn đứng đầu trong các phát triển gần đây, có thể được nhìn thấy từ sự gia tăng của Machine Learning trong vài năm qua.

Nhược điểm của Python - và liệu chúng có gây tử vong không

Dựa trên các phân tích trước đây, bạn có thể tưởng tượng rằng Python sẽ đứng đầu trong thời gian tới. Nhưng giống như mọi công nghệ, Python có điểm yếu. Tôi sẽ đi qua những sai sót quan trọng nhất, từng cái một và đánh giá xem những thứ này có gây sự diệt vong của ngôn ngữ này hay không.

Tốc độ

Python chậm. Giống như, thực sự chậm. Trung bình, bạn sẽ cần khoảng 2 lần 10 lần để hoàn thành một nhiệm vụ với Python so với bất kỳ ngôn ngữ nào khác.

Có nhiều lý do cho điều đó. Một trong số đó là đặc điểm linh hoạt của ngôn ngữ - hãy nhớ rằng bạn không cần chỉ định các loại dữ liệu như trong các ngôn ngữ khác. Điều này có nghĩa là rất nhiều bộ nhớ cần được sử dụng, bởi vì chương trình cần dành đủ dung lượng cho mỗi biến mà nó hoạt động trong mọi trường hợp. Và rất nhiều tài nguyên chiếm dụng bộ nhớ để chuyển đổi kiểu dữ liệu trong  thời gian diễn ra tính toán. Điều này khiến nó trở nên chậm chạp.

Một lý do khác là Python chỉ có thể thực thi một nhiệm vụ tại một thời điểm. Đây là hệ quả của các kiểu dữ liệu linh hoạt - Python cần đảm bảo mỗi biến chỉ có một kiểu dữ liệu và các quy trình song song có thể làm rối loạn điều đó.

Để so sánh, có thể thấy trình duyệt web trung bình của bạn có thể chạy hàng tá chủ đề khác nhau cùng một lúc. Và cùng lúc đó bạn vẫn chạy hàng tá ứng dụng song song.

Nhưng vào cuối ngày, không có vấn đề tốc độ nào. Máy tính và máy chủ đã trở nên khủng đến mức chúng tôi nói về phân số của giây. Và người dùng cuối không thực sự quan tâm liệu ứng dụng của họ tải trong 0,001 hay 0,01 giây.

Phạm vi

Ban đầu, Python rất linh hoạt. Điều này về cơ bản có nghĩa là, để giải một biểu thức, trước tiên trình biên dịch sẽ tìm kiếm khối hiện tại và sau đó thực hiện liên tiếp tất cả các hàm gọi.

Vấn đề với phạm vi động là mọi biểu thức cần phải được kiểm tra trong mọi bối cảnh có thể - thật tẻ nhạt. Đó là lý do tại sao hầu hết các ngôn ngữ lập trình hiện đại sử dụng phạm vi tĩnh.

Python đã cố gắng chuyển sang phạm vi tĩnh, nhưng làm rối tung nó lên. Thông thường, phạm vi bên trong - ví dụ các hàm lồng trong hàm khác - sẽ có thể nhìn thấy và thay đổi phạm vi bên ngoài. Trong Python, phạm vi bên trong chỉ có thể nhìn thấy phạm vi bên ngoài, nhưng không thể thay đổi chúng. Điều này dẫn đến rất nhiều nhầm lẫn.

Lambdas

Bất chấp tất cả sự linh hoạt trong Python, việc sử dụng Lambdas khá hạn chế. Lambdas chỉ có thể là biểu thức trong Python chứ không phải là câu lệnh.

Mặt khác, các khai báo và câu lệnh biến luôn là các câu lệnh. Điều này có nghĩa là Lambdas không thể được sử dụng cho chúng.

Sự khác biệt giữa biểu thức và câu lệnh này khá tùy tiện và không xảy ra trong các ngôn ngữ khác.

Khoảng trắng

Trong Python, bạn sử dụng khoảng trắng và căn lề để quy định các cấp mã khác nhau. Điều này làm cho nó hấp dẫn về mặt biểu diễn và làm trực quan để hiểu.

Các ngôn ngữ khác, ví dụ C ++, phụ thuộc nhiều hơn vào dấu ngoặc nhọn và dấu chấm phẩy. Mặc dù điều này có thể không hấp dẫn trực quan và thân thiện với người mới bắt đầu, nhưng nó làm cho mã dễ bảo trì hơn rất nhiều. Đối với các dự án lớn hơn, điều này hữu ích hơn rất nhiều.

Các ngôn ngữ mới hơn như Haskell giải quyết vấn đề này: Họ dựa vào khoảng trắng, nhưng đưa ra một cú pháp thay thế cho những người muốn đi mà không có.

Phát triển ứng dụng di động

Khi chúng tôi chứng kiến ​​sự thay đổi từ máy tính để bàn sang điện thoại thông minh, điều đó rõ ràng rằng chúng tôi cần các ngôn ngữ mạnh mẽ để xây dựng phần mềm di động.

Nhưng không có nhiều ứng dụng di động đang được phát triển với Python. Điều đó không có nghĩa là nó có thể được thực hiện - có một gói Python được gọi là Kivy cho mục đích này.

Nhưng Python đã được tạo ra không phải dành cho thiết bị di động. Vì vậy, mặc dù nó có thể tạo ra kết quả có thể vượt qua cho các tác vụ cơ bản, cách tốt nhất của bạn là sử dụng ngôn ngữ được tạo để phát triển ứng dụng di động. Một số ngôn ngữ lập trình được sử dụng rộng rãi cho thiết bị di động bao gồm React Native, Flutter, Iconic và Cordova.

Để rõ ràng, máy tính xách tay và máy tính để bàn sẽ còn tồn tại trong nhiều năm tới. Nhưng vì điện thoại di động từ lâu đã vượt qua lưu lượng máy tính để bàn, nên có thể nói rằng việc học Python là không đủ để trở thành một nhà phát triển toàn diện dày dạn kinh nghiệm.

Lỗi thời thời gian thực run-time errors

Một tập lệnh Python không được biên dịch trước và sau đó được thực thi. Thay vào đó, nó biên dịch mỗi khi bạn thực thi nó, do đó, bất kỳ lỗi mã hóa nào cũng có thể xuất hiện khi chạy. Điều này dẫn đến hiệu suất kém, tiêu tốn thời gian và cần rất nhiều bài kiểm tra. Điều này là tuyệt vời cho người mới bắt đầu vì thử nghiệm dạy họ rất nhiều. Nhưng đối với các nhà phát triển dày dạn, việc phải gỡ lỗi một chương trình phức tạp trong Python khiến chúng trở nên tồi tệ. Sự thiếu hiệu năng này là yếu tố lớn nhất đặt dấu chấm hết cho Python.

Ngôn ngữ lập trình nào có thể thay thế Python trong tương lai - và khi nào

Có một vài đối thủ cạnh tranh mới trên thị trường ngôn ngữ lập trình:
  • Rust mang đến sự an toàn mà một ngôn ngữ như Python không có - không có biến nào có thể vô tình bị ghi đè. Nhưng nó giải quyết vấn đề hiệu suất với khái niệm sở hữu và vay mượn. Đây cũng là ngôn ngữ lập trình được yêu thích nhất trong vài năm qua, theo StackOverflow Insights.
  • Go là ngôn ngữ tuyệt vời cho người mới bắt đầu như Python. Và nó đơn giản đến mức nó còn dễ dàng hơn để duy trì mã lập trình. Điểm thú vị: Các nhà phát triển Go là một trong những lập trình viên được trả lương cao nhất trên thị trường.
  • Julia là một ngôn ngữ rất mới cạnh tranh trực tiếp với Python. Nó lấp đầy khoảng trống của các tính toán kỹ thuật quy mô lớn: Thông thường, người ta sẽ sử dụng Python hoặc Matlab và vá toàn bộ mọi thứ với các thư viện C ++, cần thiết ở quy mô lớn. Bây giờ, người ta có thể sử dụng Julia thay vì tung hứng với hai ngôn ngữ kia.
Trong khi có các ngôn ngữ khác trên thị trường, Rust, Go và Julia là những ngôn ngữ sửa các bản vá lỗi yếu của Python. Tất cả các ngôn ngữ này đều vượt trội trong các công nghệ sắp ra mắt, đáng chú ý nhất là Trí tuệ nhân tạo. Mặc dù thị phần của họ vẫn còn nhỏ, như được phản ánh trong số lượng thẻ  trên StackOverflow, xu hướng cho tất cả chúng là rõ ràng: lên trên.

Với sự phổ biến phổ biến của Python tại thời điểm này, chắc chắn sẽ mất nửa thập kỷ, thậm chí có thể là toàn bộ, cho bất kỳ ngôn ngữ mới nào trong số những ngôn ngữ mới để thay thế nó.

Ngôn ngữ nào sẽ là - Rust, Go, Julia hoặc một ngôn ngữ mới của tương lai - rất khó để nói vào thời điểm này. Nhưng với các vấn đề về hiệu năng là nền tảng trong kiến trúc của Python, chắc chắn một ngôn ngữ mới sẽ chiếm lấy vị trí của nó.


*Để có thông tin chi tiết và cập nhật nhất, xin liên hệ admin của AgroInfoServ.

Đăng nhận xét

Mới hơn Cũ hơn