Bài viết được sự cho phép của BBT Tạp chí Lập trình
Khi nói đến việc chọn một ngôn ngữ lập trình để học, bạn hẳn sẽ đau đầu bởi số lượng không thể đo đếm được của chúng. Đó là chưa nói đến chuyện mỗi ngôn ngữ lập trình lại có những ứng dụng khác nhau trong đời sống công nghệ.
Chức năng chính của một chương trình máy tính là giải quyết một vấn đề bằng một bộ các tập lệnh (hay mã lệnh). Tuy nhiên, nếu mọi chương trình đều có thể giải quyết các vấn đề, thì tại sao chúng ta lại cần đến quá nhiều chương trình như vậy? Liệu một chương trình có thể làm được mọi thứ hay không? Để trả lời câu hỏi này, hãy cùng tìm hiểu về cách một chương trình máy tính được thực thi.
Phần cứng đảm nhiệm việc tính toán cho chương trình
Hầu như mọi quá trình tính toán dù dưới bất kỳ hình thức nào (với một số ít ngoại lệ) đều được thực hiện trong Bộ xử lý trung tâm (CPU). CPU hiện đại mà chúng ta sử dụng ngày nay có chứa nhiều thành phần vi điện tử. CPU có thể được chia ra thành nhiều đơn vị tính toán nhỏ hơn, gọi là Logical Transistor Gates, hay đơn giản hơn là logic gates (cổng logic). Chức năng chính của cổng logic là thực hiện ba toán tử chính: AND, OR và NOT.
Những toán tử logic nói trên hoạt động trên một hệ thống số là một nhị phân, vốn hoạt động trên một hệ thống số gồm các số 0 và 1. Số 0 báo hiệu không có dòng điện chạy qua bóng bán dẫn, và số 1 báo hiệu có một dòng điện chạy qua bóng bán dẫn.
Điều phi thường nhất ở đây là, chỉ cần kết hợp những toán tử logic nói trên với nhị phân, bạn sẽ có thể diễn tả tất cả các logic chúng ta từng biết, bao gồm các phép toán số học, số nguyên, và gần như mọi thứ khác bạn có thể hình dung ra. Một CPU hiện đại ngày nay có một thứ gọi là vi mã được cài đặt sẵn bên trong. Một vi mã chứa một bộ các tập lệnh cơ bản được dùng để thực hiện các tác vụ phức tạp hơn, gọi là mã máy.
Các cấp độ của phần mềm dùng để thực thi mã lệnh
Ở trên, chúng ta đã biết phần cứng đằng sau quá trình thực thi mã máy. Tiếp theo, hãy nói về các cấp độ của phần mềm cần thiết cho việc thực thi của phần mềm. Chương trình đầu tiên cần đến là Asembler (trình dịch hợp ngữ), có chức năng chuyển đổi ngôn ngữ asembly (hợp ngữ) thành mã máy. Một ngôn ngữ cấp độ assembly là một ngôn ngữ cấp thấp, đóng vai trò như một chương trình trung gian giữa một ngôn ngữ lập trình bậc cao (Python, C++, Java) và mã máy. Biểu đồ bên dưới sẽ cho thấy kiến trúc của bất kỳ phần mềm nào:
Chương trình quan trọng tiếp theo là Compiler (trình biên dịch). Compiler lấy ngôn ngữ bậc cao và chuyển nó thành hợp ngữ, và đôi lúc thành mã máy nữa. Chương trình cuối cùng (hay gói) gắn kết mọi thứ lại cùng nhau là hệ điều hành. Hệ điều hành về cơ bản là một chương trình khởi động khi máy tính khởi động và chạy cho đến khi máy tính tắt đi. Hệ điều hành còn đảm nhiệm việc quản lý các tác vụ phức tạp, như quản lý tập tin, quản lý đầu vào và đầu ra. Hệ điều hành hoạt động liên tục để mỗi khi bạn muốn thực thi một chương trình, bạn không phải gọi nó lên hết lần này đến lần khác. Nó còn giúp quá trình tương tác với các chức năng người dùng trở nên trực quan hơn, thay vì buộc bạn phải giao tiếp với máy tính dưới dạng những con số 0 và 1.
Một ngôn ngữ lập trình không thể đáp ứng được mọi nhu cầu
Như vậy, mọi ngôn ngữ lập trình dù khác nhau vẫn được thực thi theo một dạng giống nhau. Một chương trình chắc hẳn phải đáp ứng được mọi nhu cầu, đúng chứ? Không đâu. Trong một thế giới lý tưởng, chúng ta sẽ chỉ cần một chương trình cho bất kỳ thứ gì. Mọi ngôn ngữ lập trình đúng là đều phục vụ cho mục đích như nhau, dù nó là C++, Java, Python… nhưng tất cả chúng đều cần thiết vì nhiều lý do khác nhau.
Chúng ta cần các ngôn ngữ lập trình khác nhau là bởi mỗi ngôn ngữ lại có một chức năng khác nhau. Khi một ngôn ngữ lập trình được tạo ra, nó được thiết kế với dụng ý làm sao để có được nhiều chức năng nhất có thể, nhưng không một ngôn ngữ lập trình nào có thể làm được mọi thứ cả. Dưới đây là một số ngôn ngữ lập trình và chức năng cụ thể của chúng:
– Java: đây là một phần mềm đa năng chủ yếu được sử dụng cho phát triển Android. Nó đôi lúc còn được dùng để phát triển website và phần mềm nhúng. Nó được xem là một trong những ngôn ngữ lập trình phổ biến nhất.
– C++: một ngôn ngữ lập trình đa năng khác, hậu bối của ngôn ngữ lập trình C nổi tiếng. Nó hiện được sử dụng cho việc phát triển game máy tính với đồ hoạ cao cấp. C++ cực tốt trong khâu quản lý bộ nhớ và vận hành rất mượt mà. Nó còn được dùng để phát triển các hệ điều hành và các ứng dụng desktop.
– Python: lại một phần mềm đa năng khác. Nó không nhanh như các ngôn ngữ lập trình khác, nhưng lại cực kỳ xuất sắc cho phát triển website và xử lý dữ liệu. Thời gian xây dựng chương trình trong Python ngắn hơn nhiều so với các ngôn ngữ lập trình khác.
– HTML/CSS: đây không hẳn là một ngôn ngữ lập trình đa năng, mà chủ yếu được thiết kế để hướng tới việc phát triển website. Các ngôn ngữ như Python, vốn được dùng để tạo ra backend (phần tương tác với cơ sở dữ liệu) của các website, hoạt động bằng cách gửi HTML đến máy chủ. HTML cung cấp cấu trúc cho website, trong khi CSS được dùng để tạo kiểu và sắp xếp lại các thành phần trong website.
– PHP: được dùng để thêm chức năng cho một chương trình HTML. Nó cho phép bạn gọi dữ liệu và tạo HTML theo nhiều cách hữu dụng trước khi gửi đến trình duyệt của người dùng để hiển thị. Các công ty như Facebook sử dụng ngôn ngữ này rất nhiều.
– R: ngôn ngữ này trong vài năm qua đã trở nên khá nổi tiếng trong cộng đồng lập trình. Nó được sử dụng chủ yếu cho phân tích số liệu thống kê và những thứ liên quan mật thiết đến lĩnh vực này.
Như bạn đã thấy, dù mỗi ngôn ngữ lập trình đều được dùng để tính toán một số dạng dữ liệu, mỗi trong số chúng lại có chức năng và tình huống sử dụng riêng. Ngoài ra, việc lựa chọn một ngôn ngữ còn phụ thuộc vào nhu cầu của mỗi người và sự thuần thục của họ đối với những ngôn ngữ cụ thể.
Theo Vnreview
Bài viết gốc được đăng tải tại Tạp chí Lập trình
Có thể bạn quan tâm:
- Lập trình Java cho những người mới bắt đầu: học Java để làm gì?
- 10 hiểu lầm tai hại về lập trình
- Tư duy lập trình phục vụ cuộc sống
Xem thêm các việc làm Developer hấp dẫn tại TopDev